diff --git a/examples/amm/tealscript_artifacts/ConstantProductAMM.arc56.json b/examples/amm/tealscript_artifacts/ConstantProductAMM.arc56.json index c76c75ac1..3d9fa343c 100644 --- a/examples/amm/tealscript_artifacts/ConstantProductAMM.arc56.json +++ b/examples/amm/tealscript_artifacts/ConstantProductAMM.arc56.json @@ -5017,9 +5017,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/arc58/artifacts/AbstractedAccount.arc56.json b/examples/arc58/artifacts/AbstractedAccount.arc56.json index a0e684f4b..38cdc1e23 100644 --- a/examples/arc58/artifacts/AbstractedAccount.arc56.json +++ b/examples/arc58/artifacts/AbstractedAccount.arc56.json @@ -5185,9 +5185,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/arc72/artifacts/ARC72.arc56.json b/examples/arc72/artifacts/ARC72.arc56.json index 44e2fc1ca..e63c053a9 100644 --- a/examples/arc72/artifacts/ARC72.arc56.json +++ b/examples/arc72/artifacts/ARC72.arc56.json @@ -2864,9 +2864,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/arc75/artifacts/ARC75.arc56.json b/examples/arc75/artifacts/ARC75.arc56.json index 3f02f36b5..7e608ddfd 100644 --- a/examples/arc75/artifacts/ARC75.arc56.json +++ b/examples/arc75/artifacts/ARC75.arc56.json @@ -3449,9 +3449,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/auction/tealscript_artifacts/Auction.arc56.json b/examples/auction/tealscript_artifacts/Auction.arc56.json index 7b749e4c6..92d21b766 100644 --- a/examples/auction/tealscript_artifacts/Auction.arc56.json +++ b/examples/auction/tealscript_artifacts/Auction.arc56.json @@ -2358,9 +2358,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/big_box/artifacts/BigBox.arc56.json b/examples/big_box/artifacts/BigBox.arc56.json index 07578a5b3..88e6ef6ba 100644 --- a/examples/big_box/artifacts/BigBox.arc56.json +++ b/examples/big_box/artifacts/BigBox.arc56.json @@ -2005,9 +2005,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/calculator/artifacts/Calculator.arc56.json b/examples/calculator/artifacts/Calculator.arc56.json index b05895b48..9d69c1b41 100644 --- a/examples/calculator/artifacts/Calculator.arc56.json +++ b/examples/calculator/artifacts/Calculator.arc56.json @@ -751,9 +751,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/itxns/artifacts/FactoryCaller.arc56.json b/examples/itxns/artifacts/FactoryCaller.arc56.json index abea2c967..ee0642b72 100644 --- a/examples/itxns/artifacts/FactoryCaller.arc56.json +++ b/examples/itxns/artifacts/FactoryCaller.arc56.json @@ -1162,9 +1162,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/itxns/artifacts/NFTFactory.arc56.json b/examples/itxns/artifacts/NFTFactory.arc56.json index dc641efe4..042e385c9 100644 --- a/examples/itxns/artifacts/NFTFactory.arc56.json +++ b/examples/itxns/artifacts/NFTFactory.arc56.json @@ -723,9 +723,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/lsig_with_app/artifacts/CreatorVerifier.arc56.json b/examples/lsig_with_app/artifacts/CreatorVerifier.arc56.json index 78d7c4810..0728fdc21 100644 --- a/examples/lsig_with_app/artifacts/CreatorVerifier.arc56.json +++ b/examples/lsig_with_app/artifacts/CreatorVerifier.arc56.json @@ -853,9 +853,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/merkle/artifacts/MerkleTree.arc56.json b/examples/merkle/artifacts/MerkleTree.arc56.json index 7166cfd15..fc53feab2 100644 --- a/examples/merkle/artifacts/MerkleTree.arc56.json +++ b/examples/merkle/artifacts/MerkleTree.arc56.json @@ -2238,9 +2238,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/non_abi/artifacts/NonABIExample.arc56.json b/examples/non_abi/artifacts/NonABIExample.arc56.json index 341fa681e..ca8dd5617 100644 --- a/examples/non_abi/artifacts/NonABIExample.arc56.json +++ b/examples/non_abi/artifacts/NonABIExample.arc56.json @@ -656,9 +656,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/reti/artifacts/StakingPool.arc56.json b/examples/reti/artifacts/StakingPool.arc56.json index 48d77cef8..4fcecb92b 100644 --- a/examples/reti/artifacts/StakingPool.arc56.json +++ b/examples/reti/artifacts/StakingPool.arc56.json @@ -19089,9 +19089,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/reti/artifacts/ValidatorRegistry.approval.teal b/examples/reti/artifacts/ValidatorRegistry.approval.teal index 53e389a55..cc928c3f3 100644 --- a/examples/reti/artifacts/ValidatorRegistry.approval.teal +++ b/examples/reti/artifacts/ValidatorRegistry.approval.teal @@ -1,5 +1,5 @@ #pragma version 10 -intcblock 0 1 8 24 32 18 268 6 242 3 2 10 252 260 700 100000 900 40 200 TMPL_nfdRegistryAppId 4 72 192 244 1000000 4096 5 226 300 432 892 1000 28500 50000 11 80 145 153 209 +intcblock 0 1 8 24 32 18 268 6 242 3 2 10 252 260 700 100000 900 40 200 TMPL_nfdRegistryAppId 4 72 192 244 1000000 4096 5 16 226 300 432 892 1000 28500 50000 11 80 145 153 209 bytecblock 0x76 0x 0x151f7c75 0x737073 0x7374616b6564 0x00 0x706f6f6c54656d706c617465417070726f76616c4279746573 0x6e756d5374616b657273 0x0a8101 0x692e6f776e65722e61 0x0000000000000000 0x696e6974 0x6e756d56 0x69735f76616c69645f6e66645f6170706964 0x63f3f28b // This TEAL was generated by TEALScript v0.107.0 @@ -242,7 +242,7 @@ getMbrAmounts: callsub costForBoxStorage itob intc 9 // 3 - intc 34 // 11 + intc 35 // 11 intc 0 // 0 dupn 2 intc 9 // 3 @@ -487,7 +487,7 @@ getPools: // examples/reti/validatorRegistry.algo.ts:319 // poolSet = clone(this.validatorList(validatorId).value.pools) intc 6 // headOffset - intc 29 // 432 + intc 30 // 432 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob @@ -1464,7 +1464,7 @@ changeValidatorSunsetInfo: // examples/reti/validatorRegistry.algo.ts:499 // this.validatorList(validatorId).value.config.sunsettingOn = sunsettingOn - intc 27 // 226 + intc 28 // 226 frame_dig -2 // sunsettingOn: uint64 itob bytec 0 // "v" @@ -1747,7 +1747,7 @@ changeValidatorRewardInfo: // examples/reti/validatorRegistry.algo.ts:561 // this.validatorList(validatorId).value.config.entryGatingType = EntryGatingType - intc 35 // 80 + intc 36 // 80 frame_dig -2 // EntryGatingType: uint8 itob extract 7 1 @@ -1782,7 +1782,7 @@ changeValidatorRewardInfo: // examples/reti/validatorRegistry.algo.ts:564 // this.validatorList(validatorId).value.config.gatingAssetMinBalance = GatingAssetMinBalance - intc 36 // 145 + intc 37 // 145 frame_dig -5 // GatingAssetMinBalance: uint64 itob bytec 0 // "v" @@ -2014,7 +2014,7 @@ addPool: // examples/reti/validatorRegistry.algo.ts:606 // globalNumUint: StakingPool.schema.global.numUint - intc 34 // 11 + intc 35 // 11 itxn_field GlobalNumUint // examples/reti/validatorRegistry.algo.ts:607 @@ -2047,7 +2047,7 @@ addPool: frame_dig 0 // numPools: uint64 itob itxn_field ApplicationArgs - intc 38 // 209 + intc 39 // 209 intc 2 // 8 bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType @@ -2071,6 +2071,13 @@ addPool: intc 8 // 242 frame_dig 0 // numPools: uint64 itob + dup + bitlen + intc 27 // 16 + <= + + // this.validatorList(validatorId).value.state.numPools overflowed 16 bits + assert extract 6 2 bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType @@ -2193,7 +2200,7 @@ addStake: // *if8_condition // examples/reti/validatorRegistry.algo.ts:648 // this.validatorList(validatorId).value.config.sunsettingOn > 0 - intc 27 // 226 + intc 28 // 226 intc 2 // 8 bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType @@ -2212,7 +2219,7 @@ addStake: // this.validatorList(validatorId).value.config.sunsettingOn < globals.latestTimestamp, // "can't stake with a validator that is past its sunsetting time" // ) - intc 27 // 226 + intc 28 // 226 intc 2 // 8 bytec 0 // "v" frame_dig -2 // validatorId: ValidatorIdType @@ -2505,7 +2512,7 @@ setTokenPayoutRatio: // examples/reti/validatorRegistry.algo.ts:745 // lastPayoutUpdate = this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout - intc 30 // 892 + intc 31 // 892 intc 2 // 8 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType @@ -2604,7 +2611,7 @@ setTokenPayoutRatio: *if12_end: // examples/reti/validatorRegistry.algo.ts:758 // this.validatorList(validatorId).value.tokenPayoutRatio.updatedForPayout = curRound - intc 30 // 892 + intc 31 // 892 frame_dig 1 // curRound: uint64 itob bytec 0 // "v" @@ -2970,7 +2977,7 @@ stakeRemoved: // examples/reti/validatorRegistry.algo.ts:836 // globals.opcodeBudget < 300 global OpcodeBudget - intc 28 // 300 + intc 29 // 300 < bz *if15_end @@ -3105,7 +3112,7 @@ stakeRemoved: // *if16_consequent // examples/reti/validatorRegistry.algo.ts:851 // rewardTokenID = this.validatorList(poolKey.id).value.config.rewardTokenId - intc 37 // 153 + intc 38 // 153 intc 2 // 8 bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey @@ -3280,6 +3287,13 @@ stakeRemoved: intc 1 // 1 - itob + dup + bitlen + intc 27 // 16 + <= + + // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits + assert extract 6 2 bytec 0 // "v" frame_dig -1 // poolKey: ValidatorPoolKey @@ -3499,7 +3513,7 @@ findPoolForStaker: // examples/reti/validatorRegistry.algo.ts:946 // globals.opcodeBudget < 300 global OpcodeBudget - intc 28 // 300 + intc 29 // 300 < bz *if22_end @@ -3643,7 +3657,7 @@ findPoolForStaker: // 'must stake at least the minimum for this pool' // ) frame_dig -3 // amountToStake: uint64 - intc 38 // 209 + intc 39 // 209 intc 2 // 8 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType @@ -3660,7 +3674,7 @@ findPoolForStaker: // examples/reti/validatorRegistry.algo.ts:973 // pools = clone(this.validatorList(validatorId).value.pools) intc 6 // headOffset - intc 29 // 432 + intc 30 // 432 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType itob @@ -4091,7 +4105,7 @@ emptyTokenRewards: // examples/reti/validatorRegistry.algo.ts:1047 // rewardTokenId = this.validatorList(validatorId).value.config.rewardTokenId - intc 37 // 153 + intc 38 // 153 intc 2 // 8 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType @@ -4791,6 +4805,13 @@ callPoolAddStake: + frame_dig 1 // poolNumStakers: uint64 itob + dup + bitlen + intc 27 // 16 + <= + + // this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits + assert extract 6 2 bytec 0 // "v" frame_dig -2 // poolKey: ValidatorPoolKey @@ -5392,7 +5413,7 @@ doesStakerMeetGating: // examples/reti/validatorRegistry.algo.ts:1365 // type = this.validatorList(validatorId).value.config.entryGatingType - intc 35 // 80 + intc 36 // 80 intc 1 // 1 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType @@ -5470,7 +5491,7 @@ doesStakerMeetGating: // examples/reti/validatorRegistry.algo.ts:1379 // balRequired = this.validatorList(validatorId).value.config.gatingAssetMinBalance - intc 36 // 145 + intc 37 // 145 intc 2 // 8 bytec 0 // "v" frame_dig -1 // validatorId: ValidatorIdType @@ -5923,7 +5944,7 @@ algoSaturationLevel: pushint 100 mulw intc 0 // 0 - intc 31 // 1000 + intc 32 // 1000 divmodw pop pop @@ -5958,7 +5979,7 @@ maxAllowedStake: pushint 150 mulw intc 0 // 0 - intc 31 // 1000 + intc 32 // 1000 divmodw pop pop @@ -6035,7 +6056,7 @@ minBalanceForAccount: // minBal += localInts * SSC_VALUE_UINT frame_dig 0 // minBal: uint64 frame_dig -4 // localInts: uint64 - intc 32 // 28500 + intc 33 // 28500 * + frame_bury 0 // minBal: uint64 @@ -6044,7 +6065,7 @@ minBalanceForAccount: // minBal += globalInts * SSC_VALUE_UINT frame_dig 0 // minBal: uint64 frame_dig -6 // globalInts: uint64 - intc 32 // 28500 + intc 33 // 28500 * + frame_bury 0 // minBal: uint64 @@ -6053,7 +6074,7 @@ minBalanceForAccount: // minBal += localBytes * SSC_VALUE_BYTES frame_dig 0 // minBal: uint64 frame_dig -5 // localBytes: uint64 - intc 33 // 50000 + intc 34 // 50000 * + frame_bury 0 // minBal: uint64 @@ -6062,7 +6083,7 @@ minBalanceForAccount: // minBal += globalBytes * SSC_VALUE_BYTES frame_dig 0 // minBal: uint64 frame_dig -7 // globalBytes: uint64 - intc 33 // 50000 + intc 34 // 50000 * + frame_bury 0 // minBal: uint64 diff --git a/examples/reti/artifacts/ValidatorRegistry.arc32.json b/examples/reti/artifacts/ValidatorRegistry.arc32.json index e7fb18c14..42c07d23c 100644 --- a/examples/reti/artifacts/ValidatorRegistry.arc32.json +++ b/examples/reti/artifacts/ValidatorRegistry.arc32.json @@ -221,7 +221,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgOCAyNCAzMiAxOCAyNjggNiAyNDIgMyAyIDEwIDI1MiAyNjAgNzAwIDEwMDAwMCA5MDAgNDAgMjAwIFRNUExfbmZkUmVnaXN0cnlBcHBJZCA0IDcyIDE5MiAyNDQgMTAwMDAwMCA0MDk2IDUgMjI2IDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgMHgwYTgxMDEgMHg2OTJlNmY3NzZlNjU3MjJlNjEgMHgwMDAwMDAwMDAwMDAwMDAwIDB4Njk2ZTY5NzQgMHg2ZTc1NmQ1NiAweDY5NzM1Zjc2NjE2YzY5NjQ1ZjZlNjY2NDVmNjE3MDcwNjk2NCAweDYzZjNmMjhiCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnRjIDcgLy8gNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbiAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV91cGRhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgdXBkYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKdXBkYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAyCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBZGRyZXNzLmZyb21BZGRyZXNzKCdMWjRWMklSVkxDWEZKSzRSRUpWNFRBR0VLRVlUQTJHTVI2VEMyMzQ0T0IzTDNBRjNNV1haNlpBRklRJykpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg1ZTc5NWQyMjM1NThhZTU0YWI5MTIyNmJjOTgwYzQ1MTMxMzA2OGNjOGZhNjJkNmY5YzcwNzZiZDgwYmI2NWFmIC8vIGFkZHIgIkxaNFYySVJWTENYRkpLNFJFSlY0VEFHRUtFWVRBMkdNUjZUQzIzNDRPQjNMM0FGM01XWFo2WkFGSVEiCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5kZWxldGUoKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfZGVsCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gdGhpcy5zdGFraW5nUG9vbEluaXRpYWxpemVkLnZhbHVlID0gZmFsc2UKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWludGMgMCAvLyAwCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZWMgMTEgLy8gICJpbml0IgoJaW50YyAwIC8vIDAKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTAKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTEKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlYyA0IC8vICAic3Rha2VkIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxNwoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDAgLy8gMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIyCgkvLyB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnJlcGxhY2Uob2Zmc2V0LCBkYXRhKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gb2Zmc2V0OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBkYXRhOiBieXRlcwoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCS8vIGV4ZWN1dGUgZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKCWNhbGxzdWIgZmluYWxpemVTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCk6IHZvaWQKZmluYWxpemVTdGFraW5nQ29udHJhY3Q6Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjI2CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMSAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0NgoJLy8gcmV0dXJuIHsKCS8vICAgICAgIGFkZFZhbGlkYXRvck1icjogdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSgxIC8qIHYgcHJlZml4ICovICsgbGVuPFZhbGlkYXRvcklkVHlwZT4oKSArIGxlbjxWYWxpZGF0b3JJbmZvPigpKSwKCS8vICAgICAgIGFkZFBvb2xNYnI6IHRoaXMubWluQmFsYW5jZUZvckFjY291bnQoCgkvLyAgICAgICAgIDEsCgkvLyAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAvLyBtZWFuIG91ciBjYWxsZXJzIHdvdWxkIGhhdmUgdG8gcmVmZXJlbmNlIHRoZSBib3ggQU5EIGJ1eSB1cCBpL28gLSBzbyBqdXN0IGdvIG1heCBvbiBleHRyYSBwYWdlcwoJLy8gICAgICAgICAzLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgIFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCgkvLyAgICAgICApLAoJLy8gICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgIEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UgKwoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDcgLyogJ3N0YWtlcnMnIG5hbWUgKi8gKyBsZW48U3Rha2VkSW5mbz4oKSAqIE1BWF9TVEFLRVJTX1BFUl9QT09MKSwKCS8vICAgICAgIGFkZFN0YWtlck1icjoKCS8vICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSKSwgLy8gc2l6ZSBvZiBrZXkgKyBhbGwgdmFsdWVzCgkvLyAgICAgfTsKCXB1c2hpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50YyA5IC8vIDMKCWludGMgMzQgLy8gMTEKCWludGMgMCAvLyAwCglkdXBuIDIKCWludGMgOSAvLyAzCglpbnRjIDEgLy8gMQoJY2FsbHN1YiBtaW5CYWxhbmNlRm9yQWNjb3VudAoJaXRvYgoJY29uY2F0CglpbnRjIDE1IC8vIDEwMDAwMAoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglwdXNoaW50IDE3OQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJY29uY2F0CglyZXRzdWIKCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFByb3RvY29sQ29uc3RyYWludHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCk6IENvbnN0cmFpbnRzCi8vCi8vIFJldHVybnMgdGhlIHByb3RvY29sIGNvbnN0cmFpbnRzIHNvIHRoYXQgVUlzIGNhbiBsaW1pdCB3aGF0IHVzZXJzIHNwZWNpZnkgZm9yIHZhbGlkYXRvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCmdldFByb3RvY29sQ29uc3RyYWludHM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcyCgkvLyByZXR1cm4gewoJLy8gICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICB9OwoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjkyCgkvLyByZXR1cm4gdGhpcy5udW1WYWxpZGF0b3JzLnZhbHVlOwoJYnl0ZWMgMTIgLy8gICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyOTcKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZzsKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0VmFsaWRhdG9yU3RhdGUKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JTdGF0ZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ3VyU3RhdGUKZ2V0VmFsaWRhdG9yU3RhdGU6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzAyCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZTsKCWludGMgOCAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDcKCS8vIHJldHVybiBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXJdOwoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAxNyAvLyA0MAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA1IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzE4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGVjIDEgLy8gMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxOQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjkgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyBwb29sU2V0W2ldLnBvb2xBcHBJZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMF9lbmQKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCWIgKmZvcl8wX2VuZAoKKmlmMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDUgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNwoJLy8gcmV0dXJuIHJldERhdGE7CglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NApnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM1CgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWR1cAoJYnogKnNraXBfYW5kMAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDMgLy8gMjQKCTw9CgkmJgoKKnNraXBfYW5kMDoKCS8vIHBvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZDsKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcmV0c3ViCgovLyBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQb29sSW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCAwIChwb29sS2V5KSBmb3IgZ2V0UG9vbEluZm8gbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCgljYWxsc3ViIGdldFBvb2xJbmZvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbEluZm8ocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFBvb2xJbmZvCmdldFBvb2xJbmZvOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdOwoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA1IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU1CgkvLyBudW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1NgoJLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMgPSB0aGlzLm1heEFsbG93ZWRTdGFrZSgpIC8gbnVtUG9vbHMKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CgkvCglmcmFtZV9idXJ5IDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTcKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OAoJLy8gbWF4UGVyUG9vbCA9PT0gMAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjFfZW5kCgoJLy8gKmlmMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU5CgkvLyBtYXhQZXJQb29sID0gdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKQoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjFfZW5kOgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MgoJLy8gbWF4UGVyUG9vbCA9IGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzCglmcmFtZV9kaWcgMSAvLyBoYXJkTWF4RGl2aWRlZEJldHdlZW5Qb29sczogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjQKCS8vIHJldHVybiBtYXhQZXJQb29sOwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHJldHVybiAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzOwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50YyAzIC8vIDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4MwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NAoJLy8gcmV0dXJuIFtdOwoJYnl0ZWMgMSAvLyAweAoJYiAqZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KnJldHVybgoKKmlmM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg2CgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBwb29sU2V0W2ldLmlkICE9PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkwCgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdCgoqaWY0X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkzCgkvLyByZXR1cm4gcmV0RGF0YTsKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIGdldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBSZXRyaWV2ZXMgdGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgYSBnaXZlbiB2YWxpZGF0b3IgLSByZXR1cm5pbmcgdGhlIHBvb2wgcmF0aW9zIG9mIHdob2xlIHNvIHRoYXQgdG9rZW4KLy8gcGF5b3V0cyBhY3Jvc3MgcG9vbHMgY2FuIGJlIGJhc2VkIG9uIGEgc3RhYmxlIHNuYXBob3N0IG9mIHN0YWtlLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHJldHVybiB7UG9vbFRva2VuUGF5b3V0UmF0aW99IC0gVGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgdGhlIHZhbGlkYXRvci4KZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDUKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCiphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoJY2FsbHN1YiBnZXROb2RlUG9vbEFzc2lnbm1lbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh2YWxpZGF0b3JJZDogdWludDY0KTogTm9kZVBvb2xBc3NpZ25tZW50Q29uZmlnCmdldE5vZGVQb29sQXNzaWdubWVudHM6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDEwCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxMgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50czsKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CgljYWxsc3ViIGdldE5GRFJlZ2lzdHJ5SUQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRORkRSZWdpc3RyeUlEKCk6IHVpbnQ2NApnZXRORkRSZWdpc3RyeUlEOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxNgoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZDsKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA4IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjgKCS8vIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCgljYWxsc3ViIHZhbGlkYXRlQ29uZmlnCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyOQoJLy8gYXNzZXJ0KGNvbmZpZy5vd25lciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMwCgkvLyBhc3NlcnQoY29uZmlnLm1hbmFnZXIgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzEKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IGNvbmZpZy5vd25lciwgJ3NlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yJykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgk9PQoKCS8vIHNlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoibWJyUGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJ0aGlzLmdldE1ickFtb3VudHMoKS5hZGRWYWxpZGF0b3JNYnIifQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNQoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCXB1c2hpbnQgMTAwMDAwMDAKCT4KCgkvLyBmZWUgbXVzdCBiZSAxMCBBTEdPIG9yIG1vcmUgdG8gcHJldmVudCBzcGFtbWluZyBvZiB2YWxpZGF0b3JzCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDEyIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM5CgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZWMgMTIgLy8gICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmNyZWF0ZSgpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxMDkyCglib3hfY3JlYXRlCglwb3AKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQyCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuaWQgPSB2YWxpZGF0b3JJZAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vICppZjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQ2CgkvLyBjb25maWcubmZkRm9ySW5mbyAhPT0gMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NDgKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgbmZkTmFtZSwgaXRvYihjb25maWcubmZkRm9ySW5mbyldLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKV0sCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0OQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1MAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IoY29uZmlnLm5mZEZvckluZm8pXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pXQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTMKCS8vIGFzc2VydChidG9pKHRoaXMuaXR4bi5sYXN0TG9nKSA9PT0gMSwgInByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZCIpCglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IChBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcyksCgkvLyAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2MQoJLy8gY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgOSAvLyAzCgk9PQoJZHVwCglibnogKnNraXBfb3IwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAyMCAvLyA0Cgk9PQoJfHwKCipza2lwX29yMDoKCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY1CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwgJ3Byb3ZpZGVkIE5GRCBBcHAgaWQgZm9yIGdhdGluZyBtdXN0IGJlIHZhbGlkIE5GRCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjZfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkOwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJLy8gbWFuYWdlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChtYW5hZ2VyKSBmb3IgY2hhbmdlVmFsaWRhdG9yTWFuYWdlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbWFuYWdlcjogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgVmFsaWRhdG9yIG1hbmFnZXIgZm9yIGEgc3BlY2lmaWMgVmFsaWRhdG9yIGlkLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIGNoYW5nZSB0aGUgbWFuYWdlciBmb3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gbWFuYWdlciAtIFRoZSBuZXcgbWFuYWdlciBhZGRyZXNzLgpjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciA9IG1hbmFnZXIKCWludGMgMTcgLy8gNDAKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm86CgkvLyBzdW5zZXR0aW5nVG86IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN1bnNldHRpbmdPbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgc3Vuc2V0dGluZ09uOiB1aW50NjQsIHN1bnNldHRpbmdUbzogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBVcGRhdGVzIHRoZSBzdW5zZXQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdPbiAtIFRoZSBuZXcgc3Vuc2V0IHRpbWVzdGFtcC4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdUbyAtIFRoZSBuZXcgc3Vuc2V0IHRvIHZhbGlkYXRvciBpZC4KY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCXByb3RvIDMgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50YyAyNyAvLyAyMjYKCWZyYW1lX2RpZyAtMiAvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MDAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdUbyA9IHN1bnNldHRpbmdUbwoJcHVzaGludCAyMzQKCWZyYW1lX2RpZyAtMyAvLyBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJRDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTkZECglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbmZkQXBwSUQ6IHVpbnQ2NCwgbmZkTmFtZTogc3RyaW5nKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBORkQgZm9yIGEgdmFsaWRhdG9yIGluIHRoZSB2YWxpZGF0b3JMaXN0IGNvbnRyYWN0LgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBORkQgdG8gYXNzaWduIHRvIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIE5GRCAod2hpY2ggbXVzdCBtYXRjaCkKY2hhbmdlVmFsaWRhdG9yTkZEOgoJcHJvdG8gMyAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxMwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyMAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0zIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjQKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGVjIDkgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCT09CgoJLy8gSWYgc3BlY2lmeWluZyBORkQsIGFjY291bnQgYWRkaW5nIHZhbGlkYXRvciBtdXN0IGJlIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludGMgMjEgLy8gNzIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0MAoJLy8gYXNzZXJ0KGNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglwdXNoaW50IDE3NwoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzUgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcyA9IEVudHJ5R2F0aW5nQWRkcmVzcwoJcHVzaGludCA4MQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzID0gRW50cnlHYXRpbmdBc3NldHMKCXB1c2hpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzYgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRQZXJQYXlvdXQgPSBSZXdhcmRQZXJQYXlvdXQKCXB1c2hpbnQgMTYxCglmcmFtZV9kaWcgLTYgLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkUG9vbCBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRQb29sCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkUG9vbChtYnJQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5vZGVOdW06IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBhIG5ldyBwb29sIHRvIGEgdmFsaWRhdG9yJ3MgcG9vbCBzZXQsIHJldHVybmluZyB0aGUgJ2tleScgdG8gcmVmZXJlbmNlIHRoZSBwb29sIGluIHRoZSBmdXR1cmUgZm9yIHN0YWtpbmcsIGV0Yy4KLy8gVGhlIGNhbGxlciBtdXN0IHBheSB0aGUgY29zdCBvZiB0aGUgdmFsaWRhdG9ycyBNQlIgaW5jcmVhc2UgYXMgd2VsbCBhcyB0aGUgTUJSIHRoYXQgd2lsbCBiZSBuZWVkZWQgZm9yIHRoZSBwb29sIGl0c2VsZi4KLy8KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIGNhbGwgXQovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgYWRkaW5nIGEgbmV3IHBvb2wKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIGlzIGlkIG9mIHZhbGlkYXRvciB0byBwb29sIHRvIChtdXN0IGJlIG93bmVyIG9yIG1hbmFnZXIpCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtIGlzIG5vZGUgbnVtYmVyIHRvIGFkZCB0bwovLyBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbCBrZXkgdG8gY3JlYXRlZCBwb29sCmFkZFBvb2w6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjE6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1ODgKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciwgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MgfSkKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1OTAKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTkyCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5MwoJLy8gKG51bVBvb2xzIGFzIHVpbnQ2NCkgPj0gTUFYX1BPT0xTCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnRjIDMgLy8gMjQKCT49CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gYWxyZWFkeSBhdCBtYXggcG9vbCBzaXplCgllcnIKCippZjdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5NgoJLy8gbnVtUG9vbHMgKz0gMQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5OQoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoMCwgNDA5NiksCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgIF0sCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjAwCgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnRjIDAgLy8gIE5vT3AKCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwMQoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDQwOTYsIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZSAtIDQwOTYpLAoJLy8gICAgICAgXQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDAgLy8gMAoJaW50YyAyNSAvLyA0MDk2Cglib3hfZXh0cmFjdAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDI1IC8vIDQwOTYKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJYm94X2xlbgoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplCglhc3NlcnQKCWludGMgMjUgLy8gNDA5NgoJLQoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA1CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBhCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNgoJLy8gZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnRjIDM0IC8vIDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA3CgkvLyBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnRjIDkgLy8gMwoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA5IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdCglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDM4IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgPSBudW1Qb29scyBhcyB1aW50MTYKCWludGMgOCAvLyAyNDIKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyMgoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW251bVBvb2xzIC0gMV0ucG9vbEFwcElkID0gcG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNAoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzIKCS8vIHJldHVybiB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBudW1Qb29scyBhcyB1aW50NjQsIHBvb2xBcHBJZDogdGhpcy5pdHhuIS5jcmVhdGVkQXBwbGljYXRpb25JRC5pZCB9OwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJaXRvYgoJY29uY2F0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkU3Rha2U6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA1CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NQoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjQ4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPCBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgImNhbid0IHN0YWtlIHdpdGggYSB2YWxpZGF0b3IgdGhhdCBpcyBwYXN0IGl0cyBzdW5zZXR0aW5nIHRpbWUiCgkvLyAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCTwKCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1NQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1OQoJLy8gdmVyaWZ5UGF5VHhuKHN0YWtlZEFtb3VudFBheW1lbnQsIHsKCS8vICAgICAgIHNlbmRlcjogc3Rha2VyLAoJLy8gICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCA8IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAndG90YWwgc3Rha2VkIGZvciBhbGwgb2YgYSB2YWxpZGF0b3JzIHBvb2xzIG1heSBub3QgZXhjZWVkIGhhcmQgY2FwJwoJLy8gICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzMKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzUKCS8vIHJlYWxBbW91bnQgPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9idXJ5IDEgLy8gcmVhbEFtb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NgoJLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3OAoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCSEKCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgxCgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODIKCS8vIHJlYWxBbW91bnQgLT0gbWJyQW10TGVmdEJlaGluZAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgzCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5jcmVhdGUoKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglwdXNoaW50IDE0NAoJYm94X2NyZWF0ZQoJcG9wCgoqaWY5X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODcKCS8vIGZpbmRSZXQgPSB0aGlzLmZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkLCBzdGFrZXIsIHJlYWxBbW91bnQpCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWZyYW1lX2J1cnkgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY4OAoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODkKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyMiAvLyAxOTIKCWdldGJpdAoJZnJhbWVfYnVyeSA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjkwCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmaW5kUmV0WzJdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY5MQoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk2CgkvLyB0aGlzLnVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyLCBwb29sS2V5KQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljYWxsc3ViIHVwZGF0ZVN0YWtlclBvb2xTZXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk5CgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgcG9vbEtleSwKCS8vICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sCgkvLyAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIHJldHVybiBwb29sS2V5OwoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzQKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzM1CgkvLyBhc3NlcnQocG9vbDFBcHBJRCAhPT0gMCkKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5hZGRyZXNzCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjExX2VuZAoKCS8vICppZjExX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjExX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDQKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDUKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMCAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ2CgkvLyBsYXN0UGF5b3V0VXBkYXRlICE9PSAwCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMTJfZW5kCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gKmlmMTNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ4CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpCglhc3NlcnQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjEzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJcHVzaGludCAxNjkKCWludGMgMjAgLy8gNAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTIKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NAoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbzsKCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTggLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTRfZW5kOgoKKmlmMTJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnVwZGF0ZWRGb3JQYXlvdXQgPSBjdXJSb3VuZAoJaW50YyAzMCAvLyA4OTIKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYwCgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNSAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MQoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl8yOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA1IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfMl9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY3CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgW3RoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbaV0udG90YWxBbGdvU3Rha2VkLCAxXzAwMF8wMDBdLAoJLy8gICAgICAgICBbdG90YWxTdGFrZUZvclZhbGlkYXRvcl0KCS8vICAgICAgICkKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXB1c2hpbnQgMV8wMDBfMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8ucG9vbFBjdE9mV2hvbGVbaV0gPSBvdXJQb29sUGN0T2ZXaG9sZQoJaW50YyAxNCAvLyA3MDAKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmZvcl8yX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoKKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gOAoJcmV0c3ViCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJLy8gc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYWxnb1RvQWRkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIGFsZ29Ub0FkZDogdWludDY0LCByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQsIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NCwgc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0KTogdm9pZAovLwovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIGlzIGNhbGxlZCBieSBTdGFraW5nIHBvb2xzIHRvIGluZm9ybSB0aGUgdmFsaWRhdG9yICh1cykgdGhhdCBhIHBhcnRpY3VsYXIgYW1vdW50IG9mIHRvdGFsCi8vIHN0YWtlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFZhbGlkYXRvclBvb2xLZXkgdHlwZQovLyBAcGFyYW0ge3VpbnQ2NH0gYWxnb1RvQWRkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzICh0aGF0IHNob3VsZCBiZQovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9yQ29tbWlzc2lvbiAtIHRoZSBjb21taXNzaW9uIGFtb3VudCB0aGUgdmFsaWRhdG9yIHdhcyBwYWlkLCBpZiBhbnkKLy8gQHBhcmFtIHt1aW50NjR9IHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbmsgLSBpZiB0aGUgcG9vbCB3YXMgaW4gc2F0dXJhdGVkIHN0YXRlLCB0aGUgYW1vdW50IHNlbnQgYmFjayB0byB0aGUgZmVlIHNpbmsuCi8vIHNlZW4gYXMgJ2FjY291bnRlZCBmb3IvcGVuZGluZyBzcGVudCcpCnN0YWtlVXBkYXRlZFZpYVJld2FyZHM6Cglwcm90byA1IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk0CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IGFsZ29Ub0FkZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc5OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGFsZ29Ub0FkZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDQKCS8vIHRoaXMucmV2ZXJpZnlORkRPd25lcnNoaXAocG9vbEtleS5pZCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJY2FsbHN1YiByZXZlcmlmeU5GRE93bmVyc2hpcAoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOCAvLyAzMDAKCTwKCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MzcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM5CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQzCgkvLyBhc3NlcnQoYW1vdW50UmVtb3ZlZCA+IDAgfHwgcmV3YXJkUmVtb3ZlZCA+IDAsICdzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQnKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYm56ICpza2lwX29yMgoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NDYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglieXRlYyA0IC8vICAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTAKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMTZfZWxzZQoKCS8vICppZjE2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTEKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzcgLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUyCgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JRCAhPT0gMCwgInJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuISIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuIQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAncmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQnCgkvLyAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODU5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayAtPSByZXdhcmRSZW1vdmVkCglpbnRjIDEzIC8vIDI2MAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY0CgkvLyBwb29sS2V5LnBvb2xJZCAhPT0gMQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjE3X2VuZAoKCS8vICppZjE3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NjUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg2NgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY3CgkvLyBtZXRob2RBcmdzOiBbc3Rha2VyLCByZXdhcmRUb2tlbklELCByZXdhcmRSZW1vdmVkXQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJYiAqaWYxNl9lbmQKCippZjE2X2Vsc2U6CgoqaWYxNl9lbmQ6CgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHN0YWtlclJlbW92ZWQKCWZyYW1lX2RpZyAtNSAvLyBzdGFrZXJSZW1vdmVkOiBib29sZWFuCglieiAqaWYxOF9lbmQKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk2CgkvLyByZW1vdmVSZXQgPSB0aGlzLnJlbW92ZUZyb21TdGFrZXJQb29sU2V0KHN0YWtlciwgPFZhbGlkYXRvclBvb2xLZXk+ewoJLy8gICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgcG9vbEFwcElkOiBwb29sS2V5LnBvb2xBcHBJZCwKCS8vICAgICAgIH0pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNhbGxzdWIgcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQKCWZyYW1lX2J1cnkgMSAvLyByZW1vdmVSZXQ6IChib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwMQoJLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yID0gcmVtb3ZlUmV0WzBdCglmcmFtZV9kaWcgMSAvLyByZW1vdmVSZXQ6IChib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAwIC8vIDAKCWdldGJpdAoJZnJhbWVfYnVyeSAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MDIKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjE5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwNAoJLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yCglmcmFtZV9kaWcgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCWJ6ICppZjE5X2VuZAoKCS8vICppZjE5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MDUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyAyMyAvLyAyNDQKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjE5X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwOAoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwOQoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyA3IC8vICAibnVtU3Rha2VycyIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoqaWYyMF9lbmQ6CgoqaWYxOF9lbmQ6CglyZXRzdWIKCi8vIGZpbmRQb29sRm9yU3Rha2VyKHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCkoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCiphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZXIpIGZvciBmaW5kUG9vbEZvclN0YWtlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBmaW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFRvU3Rha2U6IHVpbnQ2NCk6IFtWYWxpZGF0b3JQb29sS2V5LCBib29sZWFuLCBib29sZWFuXQovLwovLyBGaW5kcyB0aGUgcG9vbCBmb3IgYSBzdGFrZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhbGlkYXRvciBpZCwgc3Rha2VyIGFkZHJlc3MsIGFuZCBhbW91bnQgdG8gc3Rha2UuCi8vIEZpcnN0IGNoZWNrcyB0aGUgc3Rha2VycyAnYWxyZWFkeSBzdGFrZWQgbGlzdCcgZm9yIHRoZSB2YWxpZGF0b3IgcHJlZmVycmluZyB0aG9zZSAoYWRkaW5nIGlmIHBvc3NpYmxlKSB0aGVuIGFkZHMKLy8gdG8gbmV3IHBvb2wgaWYgbmVjZXNzYXJ5LgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9TdGFrZSAtIFRoZSBhbW91bnQgdG8gc3Rha2UuCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5LCBib29sZWFuLCBib29sZWFufSAtIFRoZSBwb29sIGZvciB0aGUgc3Rha2VyLCB0cnVlL2ZhbHNlIG9uIHdoZXRoZXIgdGhlIHN0YWtlciBpcyAnbmV3JwovLyB0byB0aGlzIFZBTElEQVRPUiwgYW5kIHRydWUvZmFsc2UgaWYgc3Rha2VyIGlzIG5ldyB0byB0aGUgcHJvdG9jb2wuCmZpbmRQb29sRm9yU3Rha2VyOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTMxCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzkKCS8vIG1heFBlclBvb2wgPSB0aGlzLmdldEN1ck1heFN0YWtlUGVyUG9vbCh2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGdldEN1ck1heFN0YWtlUGVyUG9vbAoJZnJhbWVfYnVyeSAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0MgoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDUKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjIyX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NgoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMjggLy8gMzAwCgk8CglieiAqaWYyMl9lbmQKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ3CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjJfZW5kOgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ5CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTMKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTUKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTU3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xTZXRbaV0ucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk2MAoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdOwoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoJc2V0Yml0CglpbnRjIDEgLy8gMQoJZnJhbWVfZGlnIDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglzZXRiaXQKCWNvbmNhdAoJYiAqZmluZFBvb2xGb3JTdGFrZXIqcmV0dXJuCgoqaWYyNV9lbmQ6CgoqaWYyNF9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ1CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjFfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk2NwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcKCS8vICAgICApCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CglpbnRjIDM4IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTczCgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjkgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NAoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA4IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc1CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NgoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NwoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgXTsKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI2X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTg1CgkvLyByZXR1cm4gW3sgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9LCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdOwoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoJc2V0Yml0CglpbnRjIDEgLy8gMQoJZnJhbWVfZGlnIDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglzZXRiaXQKCWNvbmNhdAoKKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDcKCXJldHN1YgoKLy8gbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX21vdmVQb29sVG9Ob2RlOgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcG9vbEFwcElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIG1vdmVQb29sVG9Ob2RlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBtb3ZlUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAovLwovLyBGaW5kIHRoZSBzcGVjaWZpZWQgcG9vbCAoaW4gYW55IG5vZGUgbnVtYmVyKSBhbmQgbW92ZSBpdCB0byB0aGUgc3BlY2lmaWVkIG5vZGUuCi8vIFRoZSBwb29sIGFjY291bnQgaXMgZm9yY2VkIG9mZmxpbmUgaWYgbW92ZWQgc28gcHJpb3Igbm9kZSB3aWxsIHN0aWxsIHJ1biBmb3IgMzIwIHJvdW5kcyBidXQKLy8gbmV3IGtleSBnb2VzIG9ubGluZSBvbiBuZXcgbm9kZSBzb29uIGFmdGVyICgzMjAgcm91bmRzIGFmdGVyIGl0IGdvZXMgb25saW5lKQovLyBOby1vcCBpZiBzdWNjZXNzLCBhc3NlcnRzIGlmIG5vdCBmb3VuZCBvciBjYW4ndCBtb3ZlICAobm8gc3BhY2UgaW4gdGFyZ2V0KQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSBwb29sQXBwSWQKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0KbW92ZVBvb2xUb05vZGU6Cglwcm90byAzIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMDEKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnRjIDE3IC8vIDQwCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAwNwoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cykKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDAgLy8gbm9kZVBvb2xBc3NpZ25tZW50czogKCh1aW50NjRbM10pWzhdKQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDA4CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMToKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBzcmNOb2RlSWR4IDwgTUFYX05PREVTCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMiAvLyA4Cgk8CglieiAqZm9yXzVfZW5kCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA5IC8vIDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEyCgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPT09IHBvb2xBcHBJZAoJZnJhbWVfZGlnIDAgLy8gbm9kZVBvb2xBc3NpZ25tZW50czogKCh1aW50NjRbM10pWzhdKQoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0Cgk9PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTMKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDE1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludGMgMTYgLy8gOTAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg1MWVmM2IyMSAvLyBtZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBhZGRQb29sVG9Ob2RlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjQKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmMjdfZW5kOgoKKmZvcl82X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDMKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ3CgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50YyAzNyAvLyAxNTMKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDgKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ5CgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JZCAhPT0gMCwgInRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gdGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDUwCgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDUyCgkvLyB0b2tlblJld2FyZEJhbCA9IHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU1CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnBheVRva2VuUmV3YXJkPih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbcmVjZWl2ZXIsIHJld2FyZFRva2VuSWQsIHRva2VuUmV3YXJkQmFsXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZAoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBtZXRob2RBcmdzOiBbcmVjZWl2ZXIsIHJld2FyZFRva2VuSWQsIHRva2VuUmV3YXJkQmFsXQoJZnJhbWVfZGlnIC0yIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTkKCS8vIGFzc2VydCgKCS8vICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JwoJLy8gICAgICkKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJPT0KCgkvLyBiYWxhbmNlIG9mIHJlbWFpbmluZyByZXdhcmQgdG9rZW5zIHNob3VsZCBtYXRjaCB0aGUgaGVsZCBiYWNrIGFtb3VudAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjMKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbDsKCWZyYW1lX2RpZyAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAzCglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gTG9ncyB0aGUgYWRkaXRpb24gb2YgYSBuZXcgdmFsaWRhdG9yIHRvIHRoZSBzeXN0ZW0sIGl0cyBpbml0aWFsIG93bmVyIGFuZCBtYW5hZ2VyCi8vCi8vCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIgdmVyaWZpZXMgdGhlIHBhc3NlZCBpbiBrZXkgKGZyb20gYSBzdGFraW5nIHBvb2wgY2FsbGluZyB1cyB0byB1cGRhdGUgbWV0cmljcykgaXMgdmFsaWQKLy8gYW5kIG1hdGNoZXMgdGhlIGluZm9ybWF0aW9uIHdlIGhhdmUgaW4gb3VyIHN0YXRlLiAgJ0Zha2UnIHBvb2xzIGNvdWxkIGNhbGwgdXMgdG8gdXBkYXRlIG91ciBkYXRhLCBidXQgdGhleQovLyBjYW4ndCBmYWtlIHRoZSBpZHMgYW5kIG1vc3QgaW1wb3J0YW50bHkgYXBwbGljYXRpb24gaWQoISkgb2YgdGhlIGNhbGxlciB0aGF0IGhhcyB0byBtYXRjaC4KdmVyaWZ5UG9vbEtleUNhbGxlcjoKCXByb3RvIDEgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYxCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbEtleS5wb29sSWQgPiAwICYmIChwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYpIDw9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5udW1Qb29scywKCS8vICAgICAgICdwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIHBvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjkKCS8vIGFzc2VydCgKCS8vICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc0CgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5hZGRyZXNzKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzYKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyBhc3NlcnQocG9vbEtleS5wb29sSWQgPT09IChBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpCglhc3NlcnQKCT09Cglhc3NlcnQKCXJldHN1YgoKLy8gcmV2ZXJpZnlORkRPd25lcnNoaXAodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVGhpcyBtZXRob2QgdmVyaWZpZXMgdGhlIG93bmVyc2hpcCBvZiBORkQgKE5hbWVkIEZ1bmN0aW9uIERhdGEpIGJ5IGEgdmFsaWRhdG9yLgovLyBJZiB0aGUgb3duZXJzaGlwIGlzIG5vIGxvbmdlciB2YWxpZCwgaXQgcmVtb3ZlcyB0aGUgTkZEIGZyb20gdGhlIHZhbGlkYXRvcidzIGNvbmZpZ3VyYXRpb24uCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHdob3NlIGRhdGEgc2hvdWxkIGJlIHJlLWV2YWx1YXRlZC4KcmV2ZXJpZnlORkRPd25lcnNoaXA6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODcKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyBzdG9yYWdlIGtleS8vdmFsaWRhdG9yQ29uZmlnCgoJLy8gKmlmMjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE4OAoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjI4X2VuZAoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTkxCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnRjIDIxIC8vIDcyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5MwoJLy8gdmFsaWRhdG9yQ29uZmlnLm93bmVyICE9PSBuZmRPd25lciAmJiB2YWxpZGF0b3JDb25maWcubWFuYWdlciAhPT0gbmZkT3duZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgkhPQoJZHVwCglieiAqc2tpcF9hbmQzCglpbnRjIDE3IC8vIDQwCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgkhPQoJJiYKCipza2lwX2FuZDM6CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IDAKCWludGMgMjEgLy8gNzIKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjlfZW5kOgoKKmlmMjhfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPD0gR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgJ2dhdGluZyB0eXBlIG5vdCB2YWxpZCcKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDQKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDIwIC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNDoKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDYKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoID49IE1JTl9FUE9DSF9MRU5HVEggJiYgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPD0gTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICdlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZScKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ1CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPD0KCSYmCgoqc2tpcF9hbmQ2OgoJLy8gY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gKmlmMzBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxNAoJLy8gY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE3MyA0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcywKCS8vICAgICAgICAgJ3ZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgc2V0IGlmIHBlcmNlbnQgdG8gdmFsaWRhdG9yIGlzIG5vdCAwJwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE3NyAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgc2V0IGlmIHBlcmNlbnQgdG8gdmFsaWRhdG9yIGlzIG5vdCAwCglhc3NlcnQKCippZjMwX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIwCgkvLyBhc3NlcnQoY29uZmlnLm1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMDkgOAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgZXhjZWVkcyBhbGxvd2VkIG51bWJlcicKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50YyA5IC8vIDMKCTw9CgkmJgoKKnNraXBfYW5kNzoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBleGNlZWRzIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI2CgkvLyBjb25maWcuc3Vuc2V0dGluZ09uICE9PSAwCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI2IDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMzFfZW5kCgoJLy8gKmlmMzFfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMxX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNDkKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTMKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuYWRkU3Rha2UsIHVpbnQ2ND4oewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLAoJLy8gICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICB7IGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkLCByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MgfSwKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgIF0sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTgKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTgKCS8vIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJaXR4bl9uZXh0CglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweGY5YzcwY2JkIC8vIG1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1NAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAvLyBUSElTIElTIEEgU0VORCBvZiB0aGUgYW1vdW50IHJlY2VpdmVkIHJpZ2h0IGJhY2sgb3V0IGFuZCBpbnRvIHRoZSBzdGFraW5nIHBvb2wgY29udHJhY3QgYWNjb3VudC4KCS8vICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudC5zZW5kZXIsCgkvLyAgICAgICBdCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCgoJLy8gKmlmMzJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sTnVtU3Rha2VyczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjkKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxTdGFrZXJzID0gcG9vbE51bVN0YWtlcnMgYXMgdWludDE2CglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xOdW1TdGFrZXJzOiB1aW50NjQKCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgPSBwb29sQWxnb1N0YWtlZAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc0CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzNfZW5kCgoJLy8gKmlmMzNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbFN0YWtlcnMgKz0gMQoJaW50YyAyMyAvLyAyNDQKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDEgLy8gMQoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjMzX2VuZDoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzcKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbAoJZnJhbWVfZGlnIC01IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbgoJYnogKmlmMzRfZW5kCgoJLy8gKmlmMzRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzgKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA3IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzRfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg1CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDYKCTwKCWJ6ICpmb3JfN19lbmQKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkwCgkvLyBwb29sU2V0W2ldID09PSBwb29sS2V5CglmcmFtZV9kaWcgMCAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJPT0KCWJ6ICppZjM1X2VuZAoKCS8vICppZjM1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyByZXR1cm47CglyZXRzdWIKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYnogKnNraXBfYW5kOAoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CgkmJgoKKnNraXBfYW5kODoKCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM2X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl83CgoqZm9yXzdfZW5kOgoJLy8gKmlmMzdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OAoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjM3X2VuZAoKCS8vICppZjM3X2NvbnNlcXVlbnQKCS8vIE5vIGVtcHR5IHNsb3QgYXZhaWxhYmxlIGluIHRoZSBzdGFrZXIgcG9vbCBzZXQKCWVycgoKKmlmMzdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDEKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTQKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxNQoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxNgoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE4CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCipmb3JfODoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyMAoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmMzhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjMKCS8vIGluQW55UG9vbENvdW50ICs9IDEKCWZyYW1lX2RpZyAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjQKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjUKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDBfZWxzZQoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI2CgkvLyBmb3VuZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDIgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOAoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQwX2VuZAoKKmlmNDBfZWxzZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzMwCgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQwX2VuZDoKCippZjM5X2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl84CgoqZm9yXzhfZW5kOgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzNAoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDFfZW5kCgoJLy8gKmlmNDFfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0MV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzOAoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXTsKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJc2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gNAoJcmV0c3ViCgovLyBhZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHBvb2xBcHBJZDogdWludDY0LCBub2RlTnVtOiB1aW50NjQpOiB2b2lkCmFkZFBvb2xUb05vZGU6Cglwcm90byAzIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDIKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE2IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0MwoJLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnBvb2xzUGVyTm9kZSBhcyB1aW50NjQKCXB1c2hpbnQgMjI1CglpbnRjIDEgLy8gMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ1CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ5CglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDIgLy8gOAoJPD0KCSYmCgoqc2tpcF9hbmQ5OgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl85OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGkgPCBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I6IHVpbnQ2NAoJPAoJYnogKmZvcl85X2VuZAoKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDgKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW25vZGVOdW0gLSAxXS5wb29sQXBwSWRzW2ldID0gcG9vbEFwcElkCglpbnRjIDE2IC8vIDkwMAoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWY0Ml9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfOQoKKmZvcl85X2VuZDoKCS8vIG5vIGF2YWlsYWJsZSBzcGFjZSBpbiBzcGVjaWZpZWQgbm9kZSBmb3IgdGhpcyBwb29sCgllcnIKCXJldHN1YgoKLy8gZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogdm9pZAovLwovLyBDaGVja3MgaWYgYSBzdGFrZXIgbWVldHMgdGhlIGdhdGluZyByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoZSB2YWxpZGF0b3IuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIFRoZSB2YWx1ZSB0byB2ZXJpZnkgYWdhaW5zdCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cy4KLy8gQHJldHVybnMge3ZvaWR9IG9yIGFzc2VydHMgaWYgcmVxdWlyZW1lbnRzIG5vdCBtZXQuCmRvZXNTdGFrZXJNZWV0R2F0aW5nOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY1CgkvLyB0eXBlID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdUeXBlCglpbnRjIDM1IC8vIDgwCglpbnRjIDEgLy8gMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHR5cGU6IHVpbnQ4CgoJLy8gKmlmNDNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NgoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmNDNfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzcwCgkvLyBjb25maWcgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZykKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc0CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVFNfQ1JFQVRFRF9CWSB8fAoJLy8gICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRfSUQgfHwKCS8vICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMSAvLyAxCgk9PQoJZHVwCglibnogKnNraXBfb3I0CglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxMCAvLyAyCgk9PQoJfHwKCipza2lwX29yNDoKCWR1cAoJYm56ICpza2lwX29yNQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgOSAvLyAzCgk9PQoJfHwKCipza2lwX29yNToKCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc4CgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzkKCS8vIGJhbFJlcXVpcmVkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZ2F0aW5nQXNzZXRNaW5CYWxhbmNlCglpbnRjIDM2IC8vIDE0NQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4MAoJLy8gYmFsUmVxdWlyZWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODEKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0NV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICBzdGFrZXIuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KSkgPj0gYmFsUmVxdWlyZWQsCgkvLyAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScKCS8vICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCT49CgoJLy8gbXVzdCBoYXZlIHJlcXVpcmVkIG1pbmltdW0gYmFsYW5jZSBvZiB2YWxpZGF0b3IgZGVmaW5lZCB0b2tlbiB0byBhZGQgc3Rha2UKCWFzc2VydAoKKmlmNDRfZW5kOgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4OAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ2X2VuZAoKCS8vICppZjQ2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzg5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KS5jcmVhdG9yID09PSBjb25maWcuZW50cnlHYXRpbmdBZGRyZXNzLAoJLy8gICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0Cglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgoJcG9wCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA4MSAzMgoJPT0KCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCB0aGUgdmFsaWRhdG9yIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0Nl9lbmQ6CgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk0CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk1CgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTYKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NwoJLy8gY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMTMgMzIKCWR1cAoJZnJhbWVfYnVyeSA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBhc3NldElkOiB1aW50NjQKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCipmb3JPZl8wOgoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5OAoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNDhfZW5kCgoJLy8gKmlmNDhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTkKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjQ4X2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNCAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwMwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0N19lbmQ6CgkvLyAqaWY0OV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA1CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDkgLy8gMwoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZCcKCS8vICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNDlfZW5kOgoJLy8gKmlmNTBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxMwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDIwIC8vIDQKCT09CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxNQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxNgoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKHVzZXJPZmZlcmVkTkZEQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxOQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0gcmF3Qnl0ZXMoc3Rha2VyKSB8fAoJLy8gICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KHVzZXJPZmZlcmVkTkZEQXBwSUQsIHN0YWtlciksCgkvLyAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIgoJLy8gICAgICAgKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CglieXRlYyA5IC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MjYKCS8vIGFzc2VydCgKCS8vICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwKCS8vICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTBfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDUKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgIGFwcGxpY2F0aW9uQXJnczogWydpc192YWxpZF9uZmRfYXBwaWQnLCB1c2VyT2ZmZXJlZE5GRE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAxOSAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgdXNlck9mZmVyZWRORkROYW1lLCBpdG9iKG5mZEFwcElEKV0KCWJ5dGVjIDEzIC8vICAiaXNfdmFsaWRfbmZkX2FwcGlkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NTAKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDUyCgkvLyByZXR1cm4gYnRvaSh0aGlzLml0eG4ubGFzdExvZykgPT09IDE7CglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QobmZkQXBwSUQ6IHVpbnQ2NCwgYWRkclRvRmluZDogQWRkcmVzcyk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBpcyBwcmVzZW50IGluIGFuIE5GRHMgbGlzdCBvZiB2ZXJpZmllZCBhZGRyZXNzZXMuCi8vIFRoZSBORkQgaXMgYXNzdW1lZCB0byBoYXZlIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXMgb2ZmaWNpYWwuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgYXBwbGljYXRpb24gaWQuCi8vIEBwYXJhbSB7QWRkcmVzc30gYWRkclRvRmluZCAtIFRoZSBhZGRyZXNzIHRvIGZpbmQgaW4gdGhlIHYuY2FBbGdvLjAuYXMgcHJvcGVydHkKLy8gQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgdGhlIGFkZHJlc3MgaXMgcHJlc2VudCwgYGZhbHNlYCBvdGhlcndpc2UuCmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCksCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY1CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY2CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjgKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY2FBbGdvRGF0YS5sZW5ndGg7IGkgKz0gMzIpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoKKmZvcl8xMDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzAKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ3MQoJLy8gYWRkciAhPT0gcmF3Qnl0ZXMoZ2xvYmFscy56ZXJvQWRkcmVzcykgJiYgYWRkciA9PT0gcmF3Qnl0ZXMoYWRkclRvRmluZCkKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJZHVwCglieiAqc2tpcF9hbmQxMAoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglmcmFtZV9kaWcgLTIgLy8gYWRkclRvRmluZDogQWRkcmVzcwoJPT0KCSYmCgoqc2tpcF9hbmQxMDoKCWJ6ICppZjUxX2VuZAoKCS8vICppZjUxX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDcyCgkvLyByZXR1cm4gdHJ1ZTsKCWludGMgMSAvLyAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1MV9lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjkKCS8vIGkgKz0gMzIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDMyCgkrCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgliICpmb3JfMTAKCipmb3JfMTBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzUKCS8vIHJldHVybiBmYWxzZTsKCWludGMgMCAvLyAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDg0CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0ODYKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pOwoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCXB1c2hpbnQgMTAwCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyAzMSAvLyAxMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBtYXhBbGxvd2VkU3Rha2UoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIE1BWElNVU0gYWxsb3dlZCBzdGFrZSBwZXIgdmFsaWRhdG9yIGJhc2VkIG9uIGEgcGVyY2VudGFnZSBvZiBhbGwgY3VycmVudCBvbmxpbmUgc3Rha2UuCi8vIEFkZGluZyBzdGFrZSBpcyBjb21wbGV0ZWx5IGJsb2NrZWQgYXQgdGhpcyBhbW91bnQuCm1heEFsbG93ZWRTdGFrZToKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OTQKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5NgoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSk7CglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxNTAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMxIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsZ29BbGxvd2VkUGVyUG9vbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciBwb29sIGFuZCBzdGlsbCByZWNlaXZlIGluY2VudGl2ZXMgLSB3ZSdsbCB0cmVhdCB0aGlzIGFzIHRoZSAnbWF4IHBlciBwb29sJwptYXhBbGdvQWxsb3dlZFBlclBvb2w6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUwNAoJLy8gcmV0dXJuIDcwXzAwMF8wMDBfMDAwXzAwMDsKCXB1c2hpbnQgNzBfMDAwXzAwMF8wMDBfMDAwCglyZXRzdWIKCi8vIGdldEN1cnJlbnRPbmxpbmVTdGFrZSgpOiB1aW50NjQKZ2V0Q3VycmVudE9ubGluZVN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MDkKCS8vIHJldHVybiAyXzAwMF8wMDBfMDAwXzAwMF8wMDA7CglwdXNoaW50IDJfMDAwXzAwMF8wMDBfMDAwXzAwMAoJcmV0c3ViCgovLyBtaW5CYWxhbmNlRm9yQWNjb3VudChjb250cmFjdHM6IHVpbnQ2NCwgZXh0cmFQYWdlczogdWludDY0LCBhc3NldHM6IHVpbnQ2NCwgbG9jYWxJbnRzOiB1aW50NjQsIGxvY2FsQnl0ZXM6IHVpbnQ2NCwgZ2xvYmFsSW50czogdWludDY0LCBnbG9iYWxCeXRlczogdWludDY0KTogdWludDY0Cm1pbkJhbGFuY2VGb3JBY2NvdW50OgoJcHJvdG8gNyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMQoJLy8gbWluQmFsID0gQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRQoJaW50YyAxNSAvLyAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTIyCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTUgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMwoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludGMgMTUgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyNAoJLy8gbWluQmFsICs9IGFzc2V0cyAqIEFTU0VUX0hPTERJTkdfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0zIC8vIGFzc2V0czogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjUKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMiAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjYKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnRjIDMyIC8vIDI4NTAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyNwoJLy8gbWluQmFsICs9IGxvY2FsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTUgLy8gbG9jYWxCeXRlczogdWludDY0CglpbnRjIDMzIC8vIDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyOAoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzMgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI5CgkvLyByZXR1cm4gbWluQmFsOwoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY29zdEZvckJveFN0b3JhZ2UodG90YWxOdW1CeXRlczogdWludDY0KTogdWludDY0CmNvc3RGb3JCb3hTdG9yYWdlOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURTsKCXB1c2hpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJcHVzaGludCA0MDAKCSoKCSsKCXJldHN1YgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDFiNWU4MmM2IC8vIG1ldGhvZCAiaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDc5NDcyZDgzIC8vIG1ldGhvZCAibG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkIgoJcHVzaGJ5dGVzIDB4NWY3YWNmZDkgLy8gbWV0aG9kICJmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZCIKCXB1c2hieXRlcyAweDMxNzJjYTlkIC8vIG1ldGhvZCAiZ2FzKCl2b2lkIgoJcHVzaGJ5dGVzIDB4OGE4NzE0MmQgLy8gbWV0aG9kICJnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweGQxMzY2Y2MzIC8vIG1ldGhvZCAiZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4M2IwNDVjNWMgLy8gbWV0aG9kICJnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg3NWFmZjYxZCAvLyBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4MWYyZjAxMDkgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglwdXNoYnl0ZXMgMHg5MTBlOTRhYyAvLyBtZXRob2QgImdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10iCglwdXNoYnl0ZXMgMHg1NzI3NjdkMSAvLyBtZXRob2QgImdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDliNTA0YWFmIC8vIG1ldGhvZCAiZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZmJjNjMxNzggLy8gbWV0aG9kICJnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI0NDk4Y2Y0IC8vIG1ldGhvZCAiZG9lc1N0YWtlck5lZWRUb1BheU1CUihhZGRyZXNzKWJvb2wiCglwdXNoYnl0ZXMgMHhmODQ2ZGQ3YSAvLyBtZXRob2QgImdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDgzMDUwNTAxIC8vIG1ldGhvZCAiZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXB1c2hieXRlcyAweDdiYmI2YzhkIC8vIG1ldGhvZCAiZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKSIKCXB1c2hieXRlcyAweGY4Mzk0MTRhIC8vIG1ldGhvZCAiZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MGMzMTdjZmIgLy8gbWV0aG9kICJhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0IgoJcHVzaGJ5dGVzIDB4M2UyODg5NzIgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHhkZDVmYWFkYSAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDE4YWFjN2E3IC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQiCglwdXNoYnl0ZXMgMHhmOTllZjU0ZCAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHgxMDgwOWQ0ZCAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGU3NzhkZDVhIC8vIG1ldGhvZCAiYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4YmY1MjU5ZDAgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4NGRmOGQ4NmUgLy8gbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4NDE4ZmNlZmMgLy8gbWV0aG9kICJzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhhMmRjNTFiNSAvLyBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglwdXNoYnl0ZXMgMHgyODczZjUwNCAvLyBtZXRob2QgImZpbmRQb29sRm9yU3Rha2VyKHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCkoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpIgoJcHVzaGJ5dGVzIDB4MDU0N2Y0ZmUgLy8gbWV0aG9kICJtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Y2I2NjgzNTggLy8gbWV0aG9kICJlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9sb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSAqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfZ2V0TWJyQW1vdW50cyAqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHMgKmFiaV9yb3V0ZV9nZXROdW1WYWxpZGF0b3JzICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGUgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIgKmFiaV9yb3V0ZV9nZXRQb29scyAqYWJpX3JvdXRlX2dldFBvb2xBcHBJZCAqYWJpX3JvdXRlX2dldFBvb2xJbmZvICphYmlfcm91dGVfZ2V0Q3VyTWF4U3Rha2VQZXJQb29sICphYmlfcm91dGVfZG9lc1N0YWtlck5lZWRUb1BheU1CUiAqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudCAqYWJpX3JvdXRlX2dldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzICphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRCAqYWJpX3JvdXRlX2FkZFZhbGlkYXRvciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXIgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvICphYmlfcm91dGVfYWRkUG9vbCAqYWJpX3JvdXRlX2FkZFN0YWtlICphYmlfcm91dGVfc2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX3N0YWtlVXBkYXRlZFZpYVJld2FyZHMgKmFiaV9yb3V0ZV9zdGFrZVJlbW92ZWQgKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlciAqYWJpX3JvdXRlX21vdmVQb29sVG9Ob2RlICphYmlfcm91dGVfZW1wdHlUb2tlblJld2FyZHMKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipjYWxsX1VwZGF0ZUFwcGxpY2F0aW9uOgoJcHVzaGJ5dGVzIDB4NDZmNzY1MzMgLy8gbWV0aG9kICJ1cGRhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfdXBkYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBVcGRhdGVBcHBsaWNhdGlvbgoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgOCAyNCAzMiAxOCAyNjggNiAyNDIgMyAyIDEwIDI1MiAyNjAgNzAwIDEwMDAwMCA5MDAgNDAgMjAwIFRNUExfbmZkUmVnaXN0cnlBcHBJZCA0IDcyIDE5MiAyNDQgMTAwMDAwMCA0MDk2IDUgMTYgMjI2IDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgMHgwYTgxMDEgMHg2OTJlNmY3NzZlNjU3MjJlNjEgMHgwMDAwMDAwMDAwMDAwMDAwIDB4Njk2ZTY5NzQgMHg2ZTc1NmQ1NiAweDY5NzM1Zjc2NjE2YzY5NjQ1ZjZlNjY2NDVmNjE3MDcwNjk2NCAweDYzZjNmMjhiCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnRjIDcgLy8gNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbiAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV91cGRhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgdXBkYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKdXBkYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAyCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBZGRyZXNzLmZyb21BZGRyZXNzKCdMWjRWMklSVkxDWEZKSzRSRUpWNFRBR0VLRVlUQTJHTVI2VEMyMzQ0T0IzTDNBRjNNV1haNlpBRklRJykpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg1ZTc5NWQyMjM1NThhZTU0YWI5MTIyNmJjOTgwYzQ1MTMxMzA2OGNjOGZhNjJkNmY5YzcwNzZiZDgwYmI2NWFmIC8vIGFkZHIgIkxaNFYySVJWTENYRkpLNFJFSlY0VEFHRUtFWVRBMkdNUjZUQzIzNDRPQjNMM0FGM01XWFo2WkFGSVEiCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5kZWxldGUoKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfZGVsCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gdGhpcy5zdGFraW5nUG9vbEluaXRpYWxpemVkLnZhbHVlID0gZmFsc2UKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWludGMgMCAvLyAwCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZWMgMTEgLy8gICJpbml0IgoJaW50YyAwIC8vIDAKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTAKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTEKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlYyA0IC8vICAic3Rha2VkIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxNwoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDAgLy8gMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIyCgkvLyB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnJlcGxhY2Uob2Zmc2V0LCBkYXRhKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gb2Zmc2V0OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBkYXRhOiBieXRlcwoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCS8vIGV4ZWN1dGUgZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKCWNhbGxzdWIgZmluYWxpemVTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCk6IHZvaWQKZmluYWxpemVTdGFraW5nQ29udHJhY3Q6Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjI2CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMSAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0NgoJLy8gcmV0dXJuIHsKCS8vICAgICAgIGFkZFZhbGlkYXRvck1icjogdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSgxIC8qIHYgcHJlZml4ICovICsgbGVuPFZhbGlkYXRvcklkVHlwZT4oKSArIGxlbjxWYWxpZGF0b3JJbmZvPigpKSwKCS8vICAgICAgIGFkZFBvb2xNYnI6IHRoaXMubWluQmFsYW5jZUZvckFjY291bnQoCgkvLyAgICAgICAgIDEsCgkvLyAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAvLyBtZWFuIG91ciBjYWxsZXJzIHdvdWxkIGhhdmUgdG8gcmVmZXJlbmNlIHRoZSBib3ggQU5EIGJ1eSB1cCBpL28gLSBzbyBqdXN0IGdvIG1heCBvbiBleHRyYSBwYWdlcwoJLy8gICAgICAgICAzLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgIFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCgkvLyAgICAgICApLAoJLy8gICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgIEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UgKwoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDcgLyogJ3N0YWtlcnMnIG5hbWUgKi8gKyBsZW48U3Rha2VkSW5mbz4oKSAqIE1BWF9TVEFLRVJTX1BFUl9QT09MKSwKCS8vICAgICAgIGFkZFN0YWtlck1icjoKCS8vICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSKSwgLy8gc2l6ZSBvZiBrZXkgKyBhbGwgdmFsdWVzCgkvLyAgICAgfTsKCXB1c2hpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50YyA5IC8vIDMKCWludGMgMzUgLy8gMTEKCWludGMgMCAvLyAwCglkdXBuIDIKCWludGMgOSAvLyAzCglpbnRjIDEgLy8gMQoJY2FsbHN1YiBtaW5CYWxhbmNlRm9yQWNjb3VudAoJaXRvYgoJY29uY2F0CglpbnRjIDE1IC8vIDEwMDAwMAoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglwdXNoaW50IDE3OQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJY29uY2F0CglyZXRzdWIKCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFByb3RvY29sQ29uc3RyYWludHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCk6IENvbnN0cmFpbnRzCi8vCi8vIFJldHVybnMgdGhlIHByb3RvY29sIGNvbnN0cmFpbnRzIHNvIHRoYXQgVUlzIGNhbiBsaW1pdCB3aGF0IHVzZXJzIHNwZWNpZnkgZm9yIHZhbGlkYXRvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCmdldFByb3RvY29sQ29uc3RyYWludHM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcyCgkvLyByZXR1cm4gewoJLy8gICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICB9OwoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjkyCgkvLyByZXR1cm4gdGhpcy5udW1WYWxpZGF0b3JzLnZhbHVlOwoJYnl0ZWMgMTIgLy8gICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyOTcKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZzsKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0VmFsaWRhdG9yU3RhdGUKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JTdGF0ZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ3VyU3RhdGUKZ2V0VmFsaWRhdG9yU3RhdGU6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzAyCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZTsKCWludGMgOCAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDcKCS8vIHJldHVybiBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXJdOwoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAxNyAvLyA0MAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA1IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzE4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGVjIDEgLy8gMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxOQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMzAgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyBwb29sU2V0W2ldLnBvb2xBcHBJZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMF9lbmQKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCWIgKmZvcl8wX2VuZAoKKmlmMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDUgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNwoJLy8gcmV0dXJuIHJldERhdGE7CglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NApnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM1CgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWR1cAoJYnogKnNraXBfYW5kMAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDMgLy8gMjQKCTw9CgkmJgoKKnNraXBfYW5kMDoKCS8vIHBvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZDsKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcmV0c3ViCgovLyBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQb29sSW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCAwIChwb29sS2V5KSBmb3IgZ2V0UG9vbEluZm8gbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCgljYWxsc3ViIGdldFBvb2xJbmZvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbEluZm8ocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFBvb2xJbmZvCmdldFBvb2xJbmZvOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdOwoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA1IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU1CgkvLyBudW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1NgoJLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMgPSB0aGlzLm1heEFsbG93ZWRTdGFrZSgpIC8gbnVtUG9vbHMKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CgkvCglmcmFtZV9idXJ5IDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTcKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OAoJLy8gbWF4UGVyUG9vbCA9PT0gMAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjFfZW5kCgoJLy8gKmlmMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU5CgkvLyBtYXhQZXJQb29sID0gdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKQoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjFfZW5kOgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MgoJLy8gbWF4UGVyUG9vbCA9IGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzCglmcmFtZV9kaWcgMSAvLyBoYXJkTWF4RGl2aWRlZEJldHdlZW5Qb29sczogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjQKCS8vIHJldHVybiBtYXhQZXJQb29sOwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHJldHVybiAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzOwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50YyAzIC8vIDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4MwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NAoJLy8gcmV0dXJuIFtdOwoJYnl0ZWMgMSAvLyAweAoJYiAqZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KnJldHVybgoKKmlmM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg2CgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBwb29sU2V0W2ldLmlkICE9PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkwCgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdCgoqaWY0X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkzCgkvLyByZXR1cm4gcmV0RGF0YTsKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIGdldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBSZXRyaWV2ZXMgdGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgYSBnaXZlbiB2YWxpZGF0b3IgLSByZXR1cm5pbmcgdGhlIHBvb2wgcmF0aW9zIG9mIHdob2xlIHNvIHRoYXQgdG9rZW4KLy8gcGF5b3V0cyBhY3Jvc3MgcG9vbHMgY2FuIGJlIGJhc2VkIG9uIGEgc3RhYmxlIHNuYXBob3N0IG9mIHN0YWtlLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHJldHVybiB7UG9vbFRva2VuUGF5b3V0UmF0aW99IC0gVGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgdGhlIHZhbGlkYXRvci4KZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDUKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCiphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoJY2FsbHN1YiBnZXROb2RlUG9vbEFzc2lnbm1lbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh2YWxpZGF0b3JJZDogdWludDY0KTogTm9kZVBvb2xBc3NpZ25tZW50Q29uZmlnCmdldE5vZGVQb29sQXNzaWdubWVudHM6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDEwCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxMgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50czsKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CgljYWxsc3ViIGdldE5GRFJlZ2lzdHJ5SUQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRORkRSZWdpc3RyeUlEKCk6IHVpbnQ2NApnZXRORkRSZWdpc3RyeUlEOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxNgoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZDsKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA4IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjgKCS8vIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCgljYWxsc3ViIHZhbGlkYXRlQ29uZmlnCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyOQoJLy8gYXNzZXJ0KGNvbmZpZy5vd25lciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMwCgkvLyBhc3NlcnQoY29uZmlnLm1hbmFnZXIgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzEKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IGNvbmZpZy5vd25lciwgJ3NlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yJykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgk9PQoKCS8vIHNlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoibWJyUGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJ0aGlzLmdldE1ickFtb3VudHMoKS5hZGRWYWxpZGF0b3JNYnIifQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNQoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCXB1c2hpbnQgMTAwMDAwMDAKCT4KCgkvLyBmZWUgbXVzdCBiZSAxMCBBTEdPIG9yIG1vcmUgdG8gcHJldmVudCBzcGFtbWluZyBvZiB2YWxpZGF0b3JzCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDEyIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM5CgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZWMgMTIgLy8gICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmNyZWF0ZSgpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxMDkyCglib3hfY3JlYXRlCglwb3AKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQyCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuaWQgPSB2YWxpZGF0b3JJZAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vICppZjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQ2CgkvLyBjb25maWcubmZkRm9ySW5mbyAhPT0gMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NDgKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgbmZkTmFtZSwgaXRvYihjb25maWcubmZkRm9ySW5mbyldLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKV0sCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0OQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1MAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IoY29uZmlnLm5mZEZvckluZm8pXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pXQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTMKCS8vIGFzc2VydChidG9pKHRoaXMuaXR4bi5sYXN0TG9nKSA9PT0gMSwgInByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZCIpCglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IChBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcyksCgkvLyAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2MQoJLy8gY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgOSAvLyAzCgk9PQoJZHVwCglibnogKnNraXBfb3IwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAyMCAvLyA0Cgk9PQoJfHwKCipza2lwX29yMDoKCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY1CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwgJ3Byb3ZpZGVkIE5GRCBBcHAgaWQgZm9yIGdhdGluZyBtdXN0IGJlIHZhbGlkIE5GRCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjZfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkOwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJLy8gbWFuYWdlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChtYW5hZ2VyKSBmb3IgY2hhbmdlVmFsaWRhdG9yTWFuYWdlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbWFuYWdlcjogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgVmFsaWRhdG9yIG1hbmFnZXIgZm9yIGEgc3BlY2lmaWMgVmFsaWRhdG9yIGlkLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIGNoYW5nZSB0aGUgbWFuYWdlciBmb3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gbWFuYWdlciAtIFRoZSBuZXcgbWFuYWdlciBhZGRyZXNzLgpjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciA9IG1hbmFnZXIKCWludGMgMTcgLy8gNDAKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm86CgkvLyBzdW5zZXR0aW5nVG86IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN1bnNldHRpbmdPbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgc3Vuc2V0dGluZ09uOiB1aW50NjQsIHN1bnNldHRpbmdUbzogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBVcGRhdGVzIHRoZSBzdW5zZXQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdPbiAtIFRoZSBuZXcgc3Vuc2V0IHRpbWVzdGFtcC4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdUbyAtIFRoZSBuZXcgc3Vuc2V0IHRvIHZhbGlkYXRvciBpZC4KY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCXByb3RvIDMgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50YyAyOCAvLyAyMjYKCWZyYW1lX2RpZyAtMiAvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MDAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdUbyA9IHN1bnNldHRpbmdUbwoJcHVzaGludCAyMzQKCWZyYW1lX2RpZyAtMyAvLyBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJRDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTkZECglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbmZkQXBwSUQ6IHVpbnQ2NCwgbmZkTmFtZTogc3RyaW5nKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBORkQgZm9yIGEgdmFsaWRhdG9yIGluIHRoZSB2YWxpZGF0b3JMaXN0IGNvbnRyYWN0LgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBORkQgdG8gYXNzaWduIHRvIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIE5GRCAod2hpY2ggbXVzdCBtYXRjaCkKY2hhbmdlVmFsaWRhdG9yTkZEOgoJcHJvdG8gMyAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxMwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyMAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0zIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjQKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGVjIDkgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCT09CgoJLy8gSWYgc3BlY2lmeWluZyBORkQsIGFjY291bnQgYWRkaW5nIHZhbGlkYXRvciBtdXN0IGJlIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludGMgMjEgLy8gNzIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0MAoJLy8gYXNzZXJ0KGNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglwdXNoaW50IDE3NwoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcyA9IEVudHJ5R2F0aW5nQWRkcmVzcwoJcHVzaGludCA4MQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzID0gRW50cnlHYXRpbmdBc3NldHMKCXB1c2hpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRQZXJQYXlvdXQgPSBSZXdhcmRQZXJQYXlvdXQKCXB1c2hpbnQgMTYxCglmcmFtZV9kaWcgLTYgLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkUG9vbCBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRQb29sCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkUG9vbChtYnJQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5vZGVOdW06IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBhIG5ldyBwb29sIHRvIGEgdmFsaWRhdG9yJ3MgcG9vbCBzZXQsIHJldHVybmluZyB0aGUgJ2tleScgdG8gcmVmZXJlbmNlIHRoZSBwb29sIGluIHRoZSBmdXR1cmUgZm9yIHN0YWtpbmcsIGV0Yy4KLy8gVGhlIGNhbGxlciBtdXN0IHBheSB0aGUgY29zdCBvZiB0aGUgdmFsaWRhdG9ycyBNQlIgaW5jcmVhc2UgYXMgd2VsbCBhcyB0aGUgTUJSIHRoYXQgd2lsbCBiZSBuZWVkZWQgZm9yIHRoZSBwb29sIGl0c2VsZi4KLy8KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIGNhbGwgXQovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgYWRkaW5nIGEgbmV3IHBvb2wKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIGlzIGlkIG9mIHZhbGlkYXRvciB0byBwb29sIHRvIChtdXN0IGJlIG93bmVyIG9yIG1hbmFnZXIpCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtIGlzIG5vZGUgbnVtYmVyIHRvIGFkZCB0bwovLyBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbCBrZXkgdG8gY3JlYXRlZCBwb29sCmFkZFBvb2w6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjE6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1ODgKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciwgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MgfSkKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1OTAKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTkyCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5MwoJLy8gKG51bVBvb2xzIGFzIHVpbnQ2NCkgPj0gTUFYX1BPT0xTCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnRjIDMgLy8gMjQKCT49CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gYWxyZWFkeSBhdCBtYXggcG9vbCBzaXplCgllcnIKCippZjdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5NgoJLy8gbnVtUG9vbHMgKz0gMQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5OQoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoMCwgNDA5NiksCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgIF0sCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjAwCgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnRjIDAgLy8gIE5vT3AKCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwMQoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDQwOTYsIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZSAtIDQwOTYpLAoJLy8gICAgICAgXQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDAgLy8gMAoJaW50YyAyNSAvLyA0MDk2Cglib3hfZXh0cmFjdAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDI1IC8vIDQwOTYKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJYm94X2xlbgoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplCglhc3NlcnQKCWludGMgMjUgLy8gNDA5NgoJLQoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA1CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBhCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNgoJLy8gZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnRjIDM1IC8vIDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA3CgkvLyBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnRjIDkgLy8gMwoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA5IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdCglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDM5IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgPSBudW1Qb29scyBhcyB1aW50MTYKCWludGMgOCAvLyAyNDIKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDI3IC8vIDE2Cgk8PQoKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyMgoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW251bVBvb2xzIC0gMV0ucG9vbEFwcElkID0gcG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNAoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzIKCS8vIHJldHVybiB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBudW1Qb29scyBhcyB1aW50NjQsIHBvb2xBcHBJZDogdGhpcy5pdHhuIS5jcmVhdGVkQXBwbGljYXRpb25JRC5pZCB9OwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJaXRvYgoJY29uY2F0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkU3Rha2U6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA1CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NQoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjQ4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI4IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPCBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgImNhbid0IHN0YWtlIHdpdGggYSB2YWxpZGF0b3IgdGhhdCBpcyBwYXN0IGl0cyBzdW5zZXR0aW5nIHRpbWUiCgkvLyAgICAgICApCglpbnRjIDI4IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCTwKCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1NQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1OQoJLy8gdmVyaWZ5UGF5VHhuKHN0YWtlZEFtb3VudFBheW1lbnQsIHsKCS8vICAgICAgIHNlbmRlcjogc3Rha2VyLAoJLy8gICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCA8IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAndG90YWwgc3Rha2VkIGZvciBhbGwgb2YgYSB2YWxpZGF0b3JzIHBvb2xzIG1heSBub3QgZXhjZWVkIGhhcmQgY2FwJwoJLy8gICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzMKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzUKCS8vIHJlYWxBbW91bnQgPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9idXJ5IDEgLy8gcmVhbEFtb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NgoJLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3OAoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCSEKCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgxCgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODIKCS8vIHJlYWxBbW91bnQgLT0gbWJyQW10TGVmdEJlaGluZAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgzCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5jcmVhdGUoKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglwdXNoaW50IDE0NAoJYm94X2NyZWF0ZQoJcG9wCgoqaWY5X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODcKCS8vIGZpbmRSZXQgPSB0aGlzLmZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkLCBzdGFrZXIsIHJlYWxBbW91bnQpCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWZyYW1lX2J1cnkgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY4OAoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODkKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyMiAvLyAxOTIKCWdldGJpdAoJZnJhbWVfYnVyeSA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjkwCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmaW5kUmV0WzJdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY5MQoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk2CgkvLyB0aGlzLnVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyLCBwb29sS2V5KQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljYWxsc3ViIHVwZGF0ZVN0YWtlclBvb2xTZXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk5CgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgcG9vbEtleSwKCS8vICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sCgkvLyAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIHJldHVybiBwb29sS2V5OwoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzQKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzM1CgkvLyBhc3NlcnQocG9vbDFBcHBJRCAhPT0gMCkKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5hZGRyZXNzCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjExX2VuZAoKCS8vICppZjExX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjExX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDQKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDUKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ2CgkvLyBsYXN0UGF5b3V0VXBkYXRlICE9PSAwCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMTJfZW5kCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gKmlmMTNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ4CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpCglhc3NlcnQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjEzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJcHVzaGludCAxNjkKCWludGMgMjAgLy8gNAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTIKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NAoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbzsKCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTggLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTRfZW5kOgoKKmlmMTJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnVwZGF0ZWRGb3JQYXlvdXQgPSBjdXJSb3VuZAoJaW50YyAzMSAvLyA4OTIKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYwCgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNSAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MQoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl8yOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA1IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfMl9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY3CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgW3RoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbaV0udG90YWxBbGdvU3Rha2VkLCAxXzAwMF8wMDBdLAoJLy8gICAgICAgICBbdG90YWxTdGFrZUZvclZhbGlkYXRvcl0KCS8vICAgICAgICkKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXB1c2hpbnQgMV8wMDBfMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8ucG9vbFBjdE9mV2hvbGVbaV0gPSBvdXJQb29sUGN0T2ZXaG9sZQoJaW50YyAxNCAvLyA3MDAKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmZvcl8yX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoKKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gOAoJcmV0c3ViCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJLy8gc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYWxnb1RvQWRkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIGFsZ29Ub0FkZDogdWludDY0LCByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQsIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NCwgc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0KTogdm9pZAovLwovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIGlzIGNhbGxlZCBieSBTdGFraW5nIHBvb2xzIHRvIGluZm9ybSB0aGUgdmFsaWRhdG9yICh1cykgdGhhdCBhIHBhcnRpY3VsYXIgYW1vdW50IG9mIHRvdGFsCi8vIHN0YWtlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFZhbGlkYXRvclBvb2xLZXkgdHlwZQovLyBAcGFyYW0ge3VpbnQ2NH0gYWxnb1RvQWRkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzICh0aGF0IHNob3VsZCBiZQovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9yQ29tbWlzc2lvbiAtIHRoZSBjb21taXNzaW9uIGFtb3VudCB0aGUgdmFsaWRhdG9yIHdhcyBwYWlkLCBpZiBhbnkKLy8gQHBhcmFtIHt1aW50NjR9IHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbmsgLSBpZiB0aGUgcG9vbCB3YXMgaW4gc2F0dXJhdGVkIHN0YXRlLCB0aGUgYW1vdW50IHNlbnQgYmFjayB0byB0aGUgZmVlIHNpbmsuCi8vIHNlZW4gYXMgJ2FjY291bnRlZCBmb3IvcGVuZGluZyBzcGVudCcpCnN0YWtlVXBkYXRlZFZpYVJld2FyZHM6Cglwcm90byA1IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk0CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IGFsZ29Ub0FkZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc5OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGFsZ29Ub0FkZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDQKCS8vIHRoaXMucmV2ZXJpZnlORkRPd25lcnNoaXAocG9vbEtleS5pZCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJY2FsbHN1YiByZXZlcmlmeU5GRE93bmVyc2hpcAoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MzcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM5CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQzCgkvLyBhc3NlcnQoYW1vdW50UmVtb3ZlZCA+IDAgfHwgcmV3YXJkUmVtb3ZlZCA+IDAsICdzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQnKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYm56ICpza2lwX29yMgoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NDYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglieXRlYyA0IC8vICAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTAKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMTZfZWxzZQoKCS8vICppZjE2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTEKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUyCgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JRCAhPT0gMCwgInJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuISIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuIQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAncmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQnCgkvLyAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODU5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayAtPSByZXdhcmRSZW1vdmVkCglpbnRjIDEzIC8vIDI2MAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY0CgkvLyBwb29sS2V5LnBvb2xJZCAhPT0gMQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjE3X2VuZAoKCS8vICppZjE3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NjUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg2NgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY3CgkvLyBtZXRob2RBcmdzOiBbc3Rha2VyLCByZXdhcmRUb2tlbklELCByZXdhcmRSZW1vdmVkXQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJYiAqaWYxNl9lbmQKCippZjE2X2Vsc2U6CgoqaWYxNl9lbmQ6CgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHN0YWtlclJlbW92ZWQKCWZyYW1lX2RpZyAtNSAvLyBzdGFrZXJSZW1vdmVkOiBib29sZWFuCglieiAqaWYxOF9lbmQKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAyNyAvLyAxNgoJPD0KCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTYKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICBwb29sSWQ6IHBvb2xLZXkucG9vbElkLAoJLy8gICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAxCgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IgPSByZW1vdmVSZXRbMF0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDAgLy8gMAoJZ2V0Yml0CglmcmFtZV9idXJ5IDIgLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwMgoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbCA9IHJlbW92ZVJldFsxXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMSAvLyAxCglnZXRiaXQKCWZyYW1lX2J1cnkgMyAvLyBzdGFrZXJPdXRPZlByb3RvY29sOiBib29sCgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA0CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMTlfZW5kCgoJLy8gKmlmMTlfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyAtPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMTlfZW5kOgoJLy8gKmlmMjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA4CgkvLyBzdGFrZXJPdXRPZlByb3RvY29sCglmcmFtZV9kaWcgMyAvLyBzdGFrZXJPdXRPZlByb3RvY29sOiBib29sCglieiAqaWYyMF9lbmQKCgkvLyAqaWYyMF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA5CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIwX2VuZDoKCippZjE4X2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkzMAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzEKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkzOQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQyCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0MwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ1CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NQoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzNfZW5kCgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyMl9lbmQ6CgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjIzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTIKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk1MwoJLy8gcG9vbFNldFtpXS5pZCA9PT0gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgk9PQoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk1NQoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyNV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9CgkvLyAgICAgICAgICAgICBtYXhQZXJQb29sCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CgkrCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCTw9CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTYwCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF07CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI1X2VuZDoKCippZjI0X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDUKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgoqaWYyMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTY3CgkvLyBhc3NlcnQoCgkvLyAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzMKCS8vIHBvb2xzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJaW50YyAzMCAvLyA0MzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc0CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNiAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzRfZW5kCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc2CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CgkrCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCTw9CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc3CgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IGkgKyAxLCBwb29sQXBwSWQ6IHBvb2xzW2ldLnBvb2xBcHBJZCB9LAoJLy8gICAgICAgICAgIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsCgkvLyAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICBdOwoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpdG9iCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjZfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NQoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5ODUKCS8vIHJldHVybiBbeyBpZDogdmFsaWRhdG9ySWQsIHBvb2xJZDogMCwgcG9vbEFwcElkOiAwIH0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF07CglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgoqZmluZFBvb2xGb3JTdGFrZXIqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gNwoJcmV0c3ViCgovLyBtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfbW92ZVBvb2xUb05vZGU6CgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgbW92ZVBvb2xUb05vZGUKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG1vdmVQb29sVG9Ob2RlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHBvb2xBcHBJZDogdWludDY0LCBub2RlTnVtOiB1aW50NjQpOiB2b2lkCi8vCi8vIEZpbmQgdGhlIHNwZWNpZmllZCBwb29sIChpbiBhbnkgbm9kZSBudW1iZXIpIGFuZCBtb3ZlIGl0IHRvIHRoZSBzcGVjaWZpZWQgbm9kZS4KLy8gVGhlIHBvb2wgYWNjb3VudCBpcyBmb3JjZWQgb2ZmbGluZSBpZiBtb3ZlZCBzbyBwcmlvciBub2RlIHdpbGwgc3RpbGwgcnVuIGZvciAzMjAgcm91bmRzIGJ1dAovLyBuZXcga2V5IGdvZXMgb25saW5lIG9uIG5ldyBub2RlIHNvb24gYWZ0ZXIgKDMyMCByb3VuZHMgYWZ0ZXIgaXQgZ29lcyBvbmxpbmUpCi8vIE5vLW9wIGlmIHN1Y2Nlc3MsIGFzc2VydHMgaWYgbm90IGZvdW5kIG9yIGNhbid0IG1vdmUgIChubyBzcGFjZSBpbiB0YXJnZXQpCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHBvb2xBcHBJZAovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bQptb3ZlUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAwMQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjMKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjM6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDA3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNiAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMDgKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDIgLy8gOAoJPD0KCSYmCgoqc2tpcF9hbmQxOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTAKCS8vIGZvciAobGV0IHNyY05vZGVJZHggPSAwOyBzcmNOb2RlSWR4IDwgTUFYX05PREVTOyBzcmNOb2RlSWR4ICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoKKmZvcl81OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTAKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gaSA8IE1BWF9QT09MU19QRVJfTk9ERQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDkgLy8gMwoJPAoJYnogKmZvcl82X2VuZAoKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTIKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMwoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID0gMAoJaW50YyAxNiAvLyA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDE4CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLmdvT2ZmbGluZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLAoJLy8gICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAyMwoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAyNAoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBzcmNOb2RlSWR4ICs9IDEKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoJLy8gY291bGRuJ3QgZmluZCBwb29sIGFwcCBpZCBpbiBub2RlcyB0byBtb3ZlCgllcnIKCXJldHN1YgoKLy8gZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CiphYmlfcm91dGVfZW1wdHlUb2tlblJld2FyZHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHJlY2VpdmVyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHJlY2VpdmVyKSBmb3IgZW1wdHlUb2tlblJld2FyZHMgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoJY2FsbHN1YiBlbXB0eVRva2VuUmV3YXJkcwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHJlY2VpdmVyOiBBZGRyZXNzKTogdWludDY0Ci8vCi8vIFNlbmRzIHRoZSByZXdhcmQgdG9rZW5zIGhlbGQgaW4gcG9vbCAxIHRvIHNwZWNpZmllZCByZWNlaXZlci4KLy8gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHRoZSBvd25lciB3aGVuIHRoZXkgd2FudCB0byBnZXQgcmV3YXJkIHRva2VucyAnYmFjaycgd2hpY2ggdGhleSBzZW50IHRvCi8vIHRoZSBmaXJzdCBwb29sIChsaWtlbHkgYmVjYXVzZSB2YWxpZGF0b3IgaXMgc3Vuc2V0dGluZy4gIEFueSB0b2tlbnMgY3VycmVudGx5ICdyZXNlcnZlZCcgZm9yIHN0YWtlcnMgdG8gY2xhaW0gd2lsbAovLyBOT1QgYmUgc2VudCBhcyB0aGV5IG11c3QgYmUgaGVsZCBiYWNrIGZvciBzdGFrZXJzIHRvIGxhdGVyIGNsYWltLgovLyBbIE9OTFkgT1dORVIgQ0FOIENBTExdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHJlY2VpdmVyIC0gdGhlIGFjY291bnQgdG8gc2VuZCB0aGUgdG9rZW5zIHRvIChtdXN0IGFscmVhZHkgYmUgb3B0ZWQtaW4gdG8gdGhlIHJld2FyZCB0b2tlbikKLy8gQHJldHVybnMge3VpbnQ2NH0gdGhlIGFtb3VudCBvZiByZXdhcmQgdG9rZW4gc2VudAplbXB0eVRva2VuUmV3YXJkczoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDcKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0OAoJLy8gcmV3YXJkVG9rZW5IZWxkQmFjayA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJaW50YyAxMyAvLyAyNjAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDkKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDYgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTIKCS8vIHRva2VuUmV3YXJkQmFsID0gcG9vbE9uZUFwcElkLmFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbklkKSkgLSByZXdhcmRUb2tlbkhlbGRCYWNrCglmcmFtZV9kaWcgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE0IC8vICBtZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NgoJLy8gYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkCglmcmFtZV9kaWcgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbE9uZUFwcElkLmFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbklkKSkgPT09IHJld2FyZFRva2VuSGVsZEJhY2ssCgkvLyAgICAgICAnYmFsYW5jZSBvZiByZW1haW5pbmcgcmV3YXJkIHRva2VucyBzaG91bGQgbWF0Y2ggdGhlIGhlbGQgYmFjayBhbW91bnQnCgkvLyAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2MwoJLy8gcmV0dXJuIHRva2VuUmV3YXJkQmFsOwoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyBMb2dzIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWxpZGF0b3IgdG8gdGhlIHN5c3RlbSwgaXRzIGluaXRpYWwgb3duZXIgYW5kIG1hbmFnZXIKLy8KLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjEKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBhc3NlcnQocG9vbEtleS5wb29sSWQgPD0gTUFYX1BPT0xTLCAncG9vbCBpZCBub3QgaW4gdmFsaWQgcmFuZ2UnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDMgLy8gMjQKCTw9CgoJLy8gcG9vbCBpZCBub3QgaW4gdmFsaWQgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyA4IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gcG9vbCBpZCBvdXRzaWRlIG9mIHJhbmdlIG9mIHBvb2xzIGNyZWF0ZWQgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbEtleS5wb29sQXBwSWQgPT09IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZCwKCS8vICAgICAgICJUaGUgcGFzc2VkIGluIGFwcCBpZCBkb2Vzbid0IG1hdGNoIHRoZSBwYXNzZWQgaW4gaWRzIgoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NgoJLy8gYXNzZXJ0KHBvb2xLZXkuaWQgPT09IChBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzcKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE4NwoJLy8gdmFsaWRhdG9yQ29uZmlnID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTg4CgkvLyB2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbyAhPT0gMAoJaW50YyAyMSAvLyA3MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExOTEKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyA5IC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTkzCgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gMAoJaW50YyAyMSAvLyA3MgoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyOV9lbmQ6CgoqaWYyOF9lbmQ6CglyZXRzdWIKCi8vIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdm9pZAp2YWxpZGF0ZUNvbmZpZzoKCXByb3RvIDEgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAyCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA8PSBHQVRJTkdfVFlQRV9DT05TVF9NQVgsCgkvLyAgICAgICAnZ2F0aW5nIHR5cGUgbm90IHZhbGlkJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDAgLy8gMAoJPj0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMjAgLy8gNAoJPD0KCSYmCgoqc2tpcF9hbmQ0OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJaW50YyAxIC8vIDEKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDU6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPj0gTUlOX1BDVF9UT19WQUxJREFUT1IgJiYgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA8PSBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICdjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDYKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE0CgkvLyBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAndmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjAKCS8vIGFzc2VydChjb25maWcubWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIwOSA4CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjIKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBleGNlZWRzIGFsbG93ZWQgbnVtYmVyJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kNwoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDkgLy8gMwoJPD0KCSYmCgoqc2tpcF9hbmQ3OgoJLy8gbnVtYmVyIG9mIHBvb2xzIHBlciBub2RlIGV4Y2VlZHMgYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjYKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyNwoJLy8gYXNzZXJ0KGNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwgJ3N1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldCcpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI2IDgKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQKCWFzc2VydAoKKmlmMzFfZW5kOgoJcmV0c3ViCgovLyBjYWxsUG9vbEFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSwgbWJyQW10UGFpZDogdWludDY0LCBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sZWFuLCBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIEFkZHMgYSBzdGFrZXJzIGFtb3VudCBvZiBhbGdvIHRvIGEgdmFsaWRhdG9yIHBvb2wsIHRyYW5zZmVycmluZyB0aGUgYWxnbyB3ZSByZWNlaXZlZCBmcm9tIHRoZW0gKGFscmVhZHkgdmVyaWZpZWQKLy8gYnkgb3VyIGNhbGxlcikgdG8gdGhlIHN0YWtpbmcgcG9vbCBhY2NvdW50LCBhbmQgdGhlbiB0ZWxsaW5nIGl0IGFib3V0IHRoZSBhbW91bnQgYmVpbmcgYWRkZWQgZm9yIHRoZSBzcGVjaWZpZWQKLy8gc3Rha2VyLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFRoZSBrZXkgb2YgdGhlIHZhbGlkYXRvciBwb29sLgovLyBAcGFyYW0ge3VpbnQ2NH0gbWJyQW10UGFpZCAtIEFtb3VudCB0aGUgdXNlciBpcyBsZWF2aW5nIGJlaGluZCBpbiB0aGUgdmFsaWRhdG9yIHRvIHBheSBmb3IgdGhlaXIgc3Rha2VyIE1CUiBjb3N0Ci8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSB2YWxpZGF0b3IKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvUHJvdG9jb2wgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgcHJvdG9jb2wKY2FsbFBvb2xBZGRTdGFrZToKCXByb3RvIDUgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI0OQoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OAoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OAoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjU0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1NQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICB7IGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkLCByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MgfSwKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDUwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJcHVzaGludCA1MDAKCTwKCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjgKCS8vIHBvb2xOdW1TdGFrZXJzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdudW1TdGFrZXJzJykgYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdudW1TdGFrZXJzJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xOdW1TdGFrZXJzOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2OQoJLy8gcG9vbEFsZ29TdGFrZWQgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3N0YWtlZCcpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMjcgLy8gMTYKCTw9CgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxTdGFrZXJzIG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3NAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcgoJZnJhbWVfZGlnIC00IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzICs9IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYzM19lbmQ6CgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc3CgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc4CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCSsKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjM0X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NQoJLy8gYXNzZXJ0KHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cykKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODgKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfNzoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzdfZW5kCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzNV9lbmQKCgkvLyAqaWYzNV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWYzNV9lbmQ6CgkvLyAqaWYzNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDg6CglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5NQoJLy8gZmlyc3RFbXB0eSA9IGkgKyAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoqaWYzNl9lbmQ6CgoqZm9yXzdfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNwoKKmZvcl83X2VuZDoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTgKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM3X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAxCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSBwb29sS2V5CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIHJlbW92ZUZyb21TdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFtib29sZWFuLCBib29sZWFuXQovLwovLyBSZW1vdmVzIGEgcG9vbCBrZXkgZnJvbSB0aGUgc3Rha2VyJ3MgYWN0aXZlIHBvb2wgc2V0IC0gZmFpbHMgaWYgbm90IGZvdW5kICghKQovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFRoZSBwb29sIGtleSB0aGV5IHNob3VsZCBiZSBzdG9yZWQgaW4KLy8KLy8gQHJldHVybiBbYm9vbGVhbiwgYm9vbGVhbl0gW2lzIHRoZSBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29scyBvZiB0aGUgZ2l2ZW4gVkFMSURBVE9SLCBhbmQgaXMgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHNdCnJlbW92ZUZyb21TdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE0CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTUKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTYKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOAoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjM4X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjAKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJYiAqZm9yXzhfY29udGludWUKCippZjM4X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzIzCgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI0CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI1CgkvLyBwb29sU2V0W2ldID09PSBwb29sS2V5CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJPT0KCWJ6ICppZjQwX2Vsc2UKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyNgoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjgKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0MF9lbmQKCippZjQwX2Vsc2U6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMAoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ICs9IDEKCWZyYW1lX2RpZyAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoqaWY0MF9lbmQ6CgoqaWYzOV9lbmQ6CgoqZm9yXzhfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDFfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzgKCS8vIHJldHVybiBbaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID09PSAwLCBpbkFueVBvb2xDb3VudCA9PT0gMF07CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQyCgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNiAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDMKCS8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3IgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5wb29sc1Blck5vZGUgYXMgdWludDY0CglwdXNoaW50IDIyNQoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NQoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kOQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kOToKCS8vIG5vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfOToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ3CgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW25vZGVOdW0gLSAxXS5wb29sQXBwSWRzW2ldID09PSAwCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDJfZW5kCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tub2RlTnVtIC0gMV0ucG9vbEFwcElkc1tpXSA9IHBvb2xBcHBJZAoJaW50YyAxNiAvLyA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmNDJfZW5kOgoKKmZvcl85X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzkKCipmb3JfOV9lbmQ6CgkvLyBubyBhdmFpbGFibGUgc3BhY2UgaW4gc3BlY2lmaWVkIG5vZGUgZm9yIHRoaXMgcG9vbAoJZXJyCglyZXRzdWIKCi8vIGRvZXNTdGFrZXJNZWV0R2F0aW5nKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIGEgc3Rha2VyIG1lZXRzIHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGUgdmFsaWRhdG9yLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbHVlVG9WZXJpZnkgLSBUaGUgdmFsdWUgdG8gdmVyaWZ5IGFnYWluc3QgdGhlIGdhdGluZyByZXF1aXJlbWVudHMuCi8vIEByZXR1cm5zIHt2b2lkfSBvciBhc3NlcnRzIGlmIHJlcXVpcmVtZW50cyBub3QgbWV0Lgpkb2VzU3Rha2VyTWVldEdhdGluZzoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NQoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjYKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX05PTkUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY3CgkvLyByZXR1cm47CglyZXRzdWIKCippZjQzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3MAoJLy8gY29uZmlnID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcpCglpbnRjIDAgLy8gMAoJaW50YyA4IC8vIDI0MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3NAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDkgLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OAoJLy8gYXNzZXJ0KHZhbHVlVG9WZXJpZnkgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyBiYWxSZXF1aXJlZCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmdhdGluZ0Fzc2V0TWluQmFsYW5jZQoJaW50YyAzNyAvLyAxNDUKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYmFsUmVxdWlyZWQ6IHVpbnQ2NAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODAKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzgxCgkvLyBiYWxSZXF1aXJlZCA9IDEKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDMgLy8gYmFsUmVxdWlyZWQ6IHVpbnQ2NAoKKmlmNDVfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAnbXVzdCBoYXZlIHJlcXVpcmVkIG1pbmltdW0gYmFsYW5jZSBvZiB2YWxpZGF0b3IgZGVmaW5lZCB0b2tlbiB0byBhZGQgc3Rha2UnCgkvLyAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ0X2VuZDoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODgKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxIC8vIDEKCT09CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IHRoZSB2YWxpZGF0b3IgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlJwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDZfZW5kOgoJLy8gKmlmNDdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRfSUQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEwIC8vIDIKCT09CglieiAqaWY0N19lbmQKCgkvLyAqaWY0N19jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NQoJLy8gYXNzZXJ0KHZhbHVlVG9WZXJpZnkgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk2CgkvLyBmb3VuZCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTcKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTgKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk5CgkvLyBmb3VuZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCWIgKmZvck9mXzBfZW5kCgoqaWY0OF9lbmQ6CgoqZm9yT2ZfMF9jb250aW51ZToKCS8vIGluY3JlbWVudCBvZmZzZXQgYW5kIGxvb3AgaWYgbm90IG91dCBvZiBib3VuZHMKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnRjIDIgLy8gOAoJKwoJZHVwCglpbnRjIDQgLy8gIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnRjIDIgLy8gOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIGFzc2VydChmb3VuZCwgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlJykKCWZyYW1lX2RpZyA0IC8vIGZvdW5kOiBib29sCgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDdfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA5IC8vIDMKCT09CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sIEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KS5jcmVhdG9yKSwKCS8vICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0Cglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgoJcG9wCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTMKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAyMCAvLyA0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTUKCS8vIHVzZXJPZmZlcmVkTkZEQXBwSUQgPSB2YWx1ZVRvVmVyaWZ5CglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9idXJ5IDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTYKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZCh1c2VyT2ZmZXJlZE5GREFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgcmF3Qnl0ZXMoQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcykgPT09IHJhd0J5dGVzKHN0YWtlcikgfHwKCS8vICAgICAgICAgICB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAicHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlciIKCS8vICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCT09CglkdXAKCWJueiAqc2tpcF9vcjYKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoJfHwKCipza2lwX29yNjoKCS8vIHByb3ZpZGVkIG5mZCBmb3IgZW50cnkgaXNuJ3Qgb3duZWQgb3IgbGlua2VkIHRvIHRoZSBzdGFrZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDI2CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcKCS8vICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUwX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ1CgkvLyB1c2VyT2ZmZXJlZE5GRE5hbWUgPSBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykgYXMgc3RyaW5nCglmcmFtZV9kaWcgLTEgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTZlNjE2ZDY1IC8vICJpLm5hbWUiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpCglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyB1c2VyT2ZmZXJlZE5GRE5hbWU6IHN0cmluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ3CgkvLyBzZW5kQXBwQ2FsbCh7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCksCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgdXNlck9mZmVyZWRORkROYW1lLCBpdG9iKG5mZEFwcElEKV0sCgkvLyAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKV0sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ0OQoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIHVzZXJPZmZlcmVkTkZETmFtZSwgaXRvYihuZmRBcHBJRCldCglieXRlYyAxMyAvLyAgImlzX3ZhbGlkX25mZF9hcHBpZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyB1c2VyT2ZmZXJlZE5GRE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDUwCgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ1MgoJLy8gcmV0dXJuIGJ0b2kodGhpcy5pdHhuLmxhc3RMb2cpID09PSAxOwoJaXR4biBMYXN0TG9nCglidG9pCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KG5mZEFwcElEOiB1aW50NjQsIGFkZHJUb0ZpbmQ6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgaXMgcHJlc2VudCBpbiBhbiBORkRzIGxpc3Qgb2YgdmVyaWZpZWQgYWRkcmVzc2VzLgovLyBUaGUgTkZEIGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFzIG9mZmljaWFsLgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIGFwcGxpY2F0aW9uIGlkLgovLyBAcGFyYW0ge0FkZHJlc3N9IGFkZHJUb0ZpbmQgLSBUaGUgYWRkcmVzcyB0byBmaW5kIGluIHRoZSB2LmNhQWxnby4wLmFzIHByb3BlcnR5Ci8vIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHRoZSBhZGRyZXNzIGlzIHByZXNlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLgppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3Q6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjQKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NgoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddCglwdXNoYnl0ZXMgMHg3MjY1NjE2NDVmNzA3MjZmNzA2NTcyNzQ3OSAvLyAicmVhZF9wcm9wZXJ0eSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglwdXNoYnl0ZXMgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY4CgkvLyBjYUFsZ29EYXRhID0gdGhpcy5pdHhuLmxhc3RMb2cKCWl0eG4gTGFzdExvZwoJZnJhbWVfYnVyeSAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2OQoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDcwCgkvLyBhZGRyID0gZXh0cmFjdDMoY2FBbGdvRGF0YSwgaSwgMzIpCglmcmFtZV9kaWcgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDMyCglleHRyYWN0MwoJZnJhbWVfYnVyeSAyIC8vIGFkZHI6IGJ5dGVbXQoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzEKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTA6CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ3MgoJLy8gcmV0dXJuIHRydWU7CglpbnRjIDEgLy8gMQoJYiAqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybgoKKmlmNTFfZW5kOgoKKmZvcl8xMF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDc1CgkvLyByZXR1cm4gZmFsc2U7CglpbnRjIDAgLy8gMAoKKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGFsZ29TYXR1cmF0aW9uTGV2ZWwoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIG1heGltdW0gYWxsb3dlZCBzdGFrZSBwZXIgdmFsaWRhdG9yIGJhc2VkIG9uIGEgcGVyY2VudGFnZSBvZiBhbGwgY3VycmVudCBvbmxpbmUgc3Rha2UgYmVmb3JlCi8vIHRoZSB2YWxpZGF0b3IgaXMgY29uc2lkZXJlZCBzYXR1cmF0ZWQgLSB3aGVyZSByZXdhcmRzIGFyZSBkaW1pbmlzaGVkLgovLyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIGRlZmluZWQgdHdpY2UgLSBoZXJlIGFuZCBpbiBzdGFraW5nIHBvb2wgY29udHJhY3QuICBCb3RoIG11c3QgYmUgaWRlbnRpY2FsLgphbGdvU2F0dXJhdGlvbkxldmVsOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ4NAoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDg2CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKTsKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDk0CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OTYKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9IQVJEX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pOwoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCXB1c2hpbnQgMTUwCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyAzMiAvLyAxMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBtYXhBbGdvQWxsb3dlZFBlclBvb2woKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIE1BWElNVU0gYWxsb3dlZCBzdGFrZSBwZXIgcG9vbCBhbmQgc3RpbGwgcmVjZWl2ZSBpbmNlbnRpdmVzIC0gd2UnbGwgdHJlYXQgdGhpcyBhcyB0aGUgJ21heCBwZXIgcG9vbCcKbWF4QWxnb0FsbG93ZWRQZXJQb29sOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MDQKCS8vIHJldHVybiA3MF8wMDBfMDAwXzAwMF8wMDA7CglwdXNoaW50IDcwXzAwMF8wMDBfMDAwXzAwMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTA5CgkvLyByZXR1cm4gMl8wMDBfMDAwXzAwMF8wMDBfMDAwOwoJcHVzaGludCAyXzAwMF8wMDBfMDAwXzAwMF8wMDAKCXJldHN1YgoKLy8gbWluQmFsYW5jZUZvckFjY291bnQoY29udHJhY3RzOiB1aW50NjQsIGV4dHJhUGFnZXM6IHVpbnQ2NCwgYXNzZXRzOiB1aW50NjQsIGxvY2FsSW50czogdWludDY0LCBsb2NhbEJ5dGVzOiB1aW50NjQsIGdsb2JhbEludHM6IHVpbnQ2NCwgZ2xvYmFsQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NAptaW5CYWxhbmNlRm9yQWNjb3VudDoKCXByb3RvIDcgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjEKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTUgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMgoJLy8gbWluQmFsICs9IGNvbnRyYWN0cyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIGNvbnRyYWN0czogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjMKCS8vIG1pbkJhbCArPSBleHRyYVBhZ2VzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gZXh0cmFQYWdlczogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjQKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNSAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI1CgkvLyBtaW5CYWwgKz0gbG9jYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTQgLy8gbG9jYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI2CgkvLyBtaW5CYWwgKz0gZ2xvYmFsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC02IC8vIGdsb2JhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjcKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjgKCS8vIG1pbkJhbCArPSBnbG9iYWxCeXRlcyAqIFNTQ19WQUxVRV9CWVRFUwoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNyAvLyBnbG9iYWxCeXRlczogdWludDY0CglpbnRjIDM0IC8vIDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyOQoJLy8gcmV0dXJuIG1pbkJhbDsKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTM2CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEU7CglwdXNoaW50IDI1MDAKCWZyYW1lX2RpZyAtMSAvLyB0b3RhbE51bUJ5dGVzOiB1aW50NjQKCXB1c2hpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgxYjVlODJjNiAvLyBtZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg3OTQ3MmQ4MyAvLyBtZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCXB1c2hieXRlcyAweDVmN2FjZmQ5IC8vIG1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCglwdXNoYnl0ZXMgMHgzMTcyY2E5ZCAvLyBtZXRob2QgImdhcygpdm9pZCIKCXB1c2hieXRlcyAweDhhODcxNDJkIC8vIG1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhkMTM2NmNjMyAvLyBtZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDNiMDQ1YzVjIC8vIG1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJcHVzaGJ5dGVzIDB4NzVhZmY2MWQgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4MmZhMjJjNGIgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJcHVzaGJ5dGVzIDB4OTEwZTk0YWMgLy8gbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4NTcyNzY3ZDEgLy8gbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5YjUwNGFhZiAvLyBtZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCXB1c2hieXRlcyAweGZiYzYzMTc4IC8vIG1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHgyNDQ5OGNmNCAvLyBtZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJcHVzaGJ5dGVzIDB4Zjg0NmRkN2EgLy8gbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCglwdXNoYnl0ZXMgMHg4MzA1MDUwMSAvLyBtZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg3YmJiNmM4ZCAvLyBtZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCglwdXNoYnl0ZXMgMHhmODM5NDE0YSAvLyBtZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDBjMzE3Y2ZiIC8vIG1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCXB1c2hieXRlcyAweDNlMjg4OTcyIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZGQ1ZmFhZGEgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHgxOGFhYzdhNyAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4Zjk5ZWY1NGQgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4MTA4MDlkNGQgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhlNzc4ZGQ1YSAvLyBtZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweGJmNTI1OWQwIC8vIG1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDRkZjhkODZlIC8vIG1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4YTJkYzUxYjUgLy8gbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJcHVzaGJ5dGVzIDB4Mjg3M2Y1MDQgLy8gbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCXB1c2hieXRlcyAweDA1NDdmNGZlIC8vIG1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGNiNjY4MzU4IC8vIG1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbjoKCXB1c2hieXRlcyAweDQ2Zjc2NTMzIC8vIG1ldGhvZCAidXBkYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3VwZGF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgVXBkYXRlQXBwbGljYXRpb24KCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/examples/reti/artifacts/ValidatorRegistry.arc56.json b/examples/reti/artifacts/ValidatorRegistry.arc56.json index 2a7e3475e..dacfd082f 100644 --- a/examples/reti/artifacts/ValidatorRegistry.arc56.json +++ b/examples/reti/artifacts/ValidatorRegistry.arc56.json @@ -9729,103 +9729,110 @@ "teal": 2074, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1862, - 1863, - 1864 + 1862 ] }, { "teal": 2075, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1865 + 1863 ] }, { "teal": 2076, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1866, - 1867 + 1864, + 1865 ] }, { "teal": 2077, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1868 + 1866 + ] + }, + { + "teal": 2080, + "source": "examples/reti/validatorRegistry.algo.ts:619", + "errorMessage": "this.validatorList(validatorId).value.state.numPools overflowed 16 bits", + "pc": [ + 1867 ] }, { - "teal": 2078, + "teal": 2081, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1869 + 1868, + 1869, + 1870 ] }, { - "teal": 2079, + "teal": 2082, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1870, 1871 ] }, { - "teal": 2080, + "teal": 2083, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1872 + 1872, + 1873 ] }, { "teal": 2084, - "source": "examples/reti/validatorRegistry.algo.ts:622", + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1873, 1874 ] }, { "teal": 2085, - "source": "examples/reti/validatorRegistry.algo.ts:622", + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1875, - 1876 + 1875 ] }, { - "teal": 2089, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "teal": 2086, + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1877, - 1878 + 1876, + 1877 ] }, { - "teal": 2090, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "teal": 2087, + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1879, - 1880 + 1878 ] }, { "teal": 2091, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "source": "examples/reti/validatorRegistry.algo.ts:622", "pc": [ - 1881 + 1879, + 1880 ] }, { "teal": 2092, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "source": "examples/reti/validatorRegistry.algo.ts:622", "pc": [ + 1881, 1882 ] }, { - "teal": 2093, + "teal": 2096, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1883, @@ -9833,35 +9840,29 @@ ] }, { - "teal": 2094, - "source": "examples/reti/validatorRegistry.algo.ts:623", - "pc": [ - 1885 - ] - }, - { - "teal": 2095, + "teal": 2097, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ + 1885, 1886 ] }, { - "teal": 2096, + "teal": 2098, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1887 ] }, { - "teal": 2097, + "teal": 2099, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1888 ] }, { - "teal": 2098, + "teal": 2100, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1889, @@ -9869,236 +9870,236 @@ ] }, { - "teal": 2099, + "teal": 2101, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1891 ] }, { - "teal": 2100, + "teal": 2102, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1892 ] }, { - "teal": 2101, + "teal": 2103, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1893, - 1894 + 1893 ] }, { - "teal": 2102, + "teal": 2104, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1895 + 1894 ] }, { - "teal": 2103, + "teal": 2105, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ + 1895, 1896 ] }, { - "teal": 2104, + "teal": 2106, + "source": "examples/reti/validatorRegistry.algo.ts:623", + "pc": [ + 1897 + ] + }, + { + "teal": 2107, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1897, 1898 ] }, { - "teal": 2105, + "teal": 2108, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1899 + 1899, + 1900 ] }, { "teal": 2109, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1900, 1901 ] }, { "teal": 2110, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1902, - 1903 + 1902 ] }, { "teal": 2111, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1904, - 1905 + 1903, + 1904 ] }, { "teal": 2112, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1906, - 1907, - 1908 + 1905 ] }, { "teal": 2116, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1909, - 1910 + 1906, + 1907 ] }, { "teal": 2117, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1911 + 1908, + 1909 ] }, { "teal": 2118, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1912, - 1913 + 1910, + 1911 ] }, { "teal": 2119, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ + 1912, + 1913, 1914 ] }, { - "teal": 2120, + "teal": 2123, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1915 + 1915, + 1916 ] }, { - "teal": 2121, + "teal": 2124, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1916, 1917 ] }, { - "teal": 2122, + "teal": 2125, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1918 + 1918, + 1919 ] }, { - "teal": 2123, + "teal": 2126, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1919 + 1920 ] }, { - "teal": 2126, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2127, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1920, 1921 ] }, { - "teal": 2129, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2128, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1922, 1923 ] }, { - "teal": 2130, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2129, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1924 ] }, { - "teal": 2135, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2130, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1925 ] }, { - "teal": 2138, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2133, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ 1926, - 1927, - 1928 + 1927 ] }, { - "teal": 2139, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2136, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ + 1928, 1929 ] }, { - "teal": 2142, - "source": "examples/reti/validatorRegistry.algo.ts:644", - "pc": [ - 1930, - 1931, - 1932 - ] - }, - { - "teal": 2143, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2137, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ - 1933 + 1930 ] }, { - "teal": 2146, + "teal": 2142, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1934, - 1935 + 1931 ] }, { - "teal": 2147, + "teal": 2145, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1936 + 1932, + 1933, + 1934 ] }, { - "teal": 2148, + "teal": 2146, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1937 + 1935 ] }, { "teal": 2149, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1936, + 1937, 1938 ] }, @@ -10106,19 +10107,19 @@ "teal": 2150, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1939, - 1940 + 1939 ] }, { - "teal": 2151, + "teal": 2153, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1940, 1941 ] }, { - "teal": 2152, + "teal": 2154, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1942 @@ -10127,689 +10128,695 @@ { "teal": 2155, "source": "examples/reti/validatorRegistry.algo.ts:644", - "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ 1943 ] }, { - "teal": 2158, + "teal": 2156, + "source": "examples/reti/validatorRegistry.algo.ts:644", + "pc": [ + 1944 + ] + }, + { + "teal": 2157, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1944, 1945, 1946 ] }, { - "teal": 2159, + "teal": 2158, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1947 ] }, { - "teal": 2160, + "teal": 2159, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1948 ] }, { - "teal": 2161, + "teal": 2162, "source": "examples/reti/validatorRegistry.algo.ts:644", + "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ 1949 ] }, { - "teal": 2162, + "teal": 2165, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1950 + 1950, + 1951, + 1952 ] }, { - "teal": 2174, + "teal": 2166, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1951, - 1952, 1953 ] }, { - "teal": 2177, + "teal": 2167, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1954 ] }, { - "teal": 2178, + "teal": 2168, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1955, - 1956 + 1955 ] }, { - "teal": 2182, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "teal": 2169, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1957 + 1956 ] }, { - "teal": 2183, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "teal": 2181, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1957, 1958, 1959 ] }, { "teal": 2184, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1960 ] }, { "teal": 2185, - "source": "examples/reti/validatorRegistry.algo.ts:645", - "pc": [ - 1961 - ] - }, - { - "teal": 2186, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1961, 1962 ] }, { - "teal": 2187, + "teal": 2189, "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1963 ] }, { - "teal": 2188, + "teal": 2190, "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1964 + 1964, + 1965 ] }, { "teal": 2191, "source": "examples/reti/validatorRegistry.algo.ts:645", - "errorMessage": "specified validator id isn't valid", "pc": [ - 1965 + 1966 ] }, { - "teal": 2196, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2192, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1966, 1967 ] }, { - "teal": 2197, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2193, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1968 ] }, { - "teal": 2198, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2194, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1969 ] }, { - "teal": 2199, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2195, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1970, - 1971 + 1970 ] }, { - "teal": 2200, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2198, + "source": "examples/reti/validatorRegistry.algo.ts:645", + "errorMessage": "specified validator id isn't valid", "pc": [ - 1972 + 1971 ] }, { - "teal": 2201, + "teal": 2203, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1972, 1973 ] }, { - "teal": 2202, + "teal": 2204, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1974, - 1975 + 1974 ] }, { - "teal": 2203, + "teal": 2205, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1976 + 1975 ] }, { - "teal": 2204, + "teal": 2206, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1976, 1977 ] }, { - "teal": 2205, + "teal": 2207, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1978 ] }, { - "teal": 2206, + "teal": 2208, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1979 ] }, { - "teal": 2207, + "teal": 2209, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1980, - 1981, + 1981 + ] + }, + { + "teal": 2210, + "source": "examples/reti/validatorRegistry.algo.ts:648", + "pc": [ 1982 ] }, { - "teal": 2215, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2211, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1983, - 1984 + 1983 ] }, { - "teal": 2216, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2212, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1985 + 1984 ] }, { - "teal": 2217, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2213, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1986 + 1985 ] }, { - "teal": 2218, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2214, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1986, 1987, 1988 ] }, { - "teal": 2219, + "teal": 2222, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1989 + 1989, + 1990 ] }, { - "teal": 2220, + "teal": 2223, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1990 + 1991 ] }, { - "teal": 2221, + "teal": 2224, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1991, 1992 ] }, { - "teal": 2222, + "teal": 2225, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1993 + 1993, + 1994 ] }, { - "teal": 2223, + "teal": 2226, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1994 + 1995 ] }, { - "teal": 2224, + "teal": 2227, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1995, 1996 ] }, { - "teal": 2225, + "teal": 2228, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1997 + 1997, + 1998 ] }, { - "teal": 2228, - "source": "examples/reti/validatorRegistry.algo.ts:649", - "errorMessage": "can't stake with a validator that is past its sunsetting time", + "teal": 2229, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1998 + 1999 ] }, { - "teal": 2233, - "source": "examples/reti/validatorRegistry.algo.ts:655", + "teal": 2230, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1999, 2000 ] }, { - "teal": 2234, - "source": "examples/reti/validatorRegistry.algo.ts:655", + "teal": 2231, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ 2001, 2002 ] }, { - "teal": 2242, - "source": "examples/reti/validatorRegistry.algo.ts:659", + "teal": 2232, + "source": "examples/reti/validatorRegistry.algo.ts:650", + "pc": [ + 2003 + ] + }, + { + "teal": 2235, + "source": "examples/reti/validatorRegistry.algo.ts:649", + "errorMessage": "can't stake with a validator that is past its sunsetting time", "pc": [ - 2003, 2004 ] }, { - "teal": 2243, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2240, + "source": "examples/reti/validatorRegistry.algo.ts:655", "pc": [ 2005, 2006 ] }, { - "teal": 2244, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2241, + "source": "examples/reti/validatorRegistry.algo.ts:655", "pc": [ 2007, 2008 ] }, { - "teal": 2245, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2249, + "source": "examples/reti/validatorRegistry.algo.ts:659", "pc": [ - 2009 + 2009, + 2010 ] }, { - "teal": 2248, + "teal": 2250, "source": "examples/reti/validatorRegistry.algo.ts:660", - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", "pc": [ - 2010 + 2011, + 2012 ] }, { "teal": 2251, - "source": "examples/reti/validatorRegistry.algo.ts:659", + "source": "examples/reti/validatorRegistry.algo.ts:660", "pc": [ - 2011, - 2012 + 2013, + 2014 ] }, { "teal": 2252, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "source": "examples/reti/validatorRegistry.algo.ts:660", "pc": [ - 2013, - 2014 + 2015 ] }, { - "teal": 2253, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "teal": 2255, + "source": "examples/reti/validatorRegistry.algo.ts:660", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", "pc": [ - 2015, 2016 ] }, { - "teal": 2254, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "teal": 2258, + "source": "examples/reti/validatorRegistry.algo.ts:659", "pc": [ - 2017 + 2017, + 2018 ] }, { - "teal": 2257, + "teal": 2259, "source": "examples/reti/validatorRegistry.algo.ts:661", - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 2018 - ] - }, - { - "teal": 2264, - "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ 2019, 2020 ] }, { - "teal": 2265, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2260, + "source": "examples/reti/validatorRegistry.algo.ts:661", "pc": [ - 2021 + 2021, + 2022 ] }, { - "teal": 2266, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2261, + "source": "examples/reti/validatorRegistry.algo.ts:661", "pc": [ - 2022 + 2023 ] }, { - "teal": 2267, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2264, + "source": "examples/reti/validatorRegistry.algo.ts:661", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 2023, 2024 ] }, { - "teal": 2268, + "teal": 2271, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2025 + 2025, + 2026 ] }, { - "teal": 2269, + "teal": 2272, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2026 + 2027 ] }, { - "teal": 2270, + "teal": 2273, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2027, 2028 ] }, { - "teal": 2271, + "teal": 2274, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2029 + 2029, + 2030 ] }, { - "teal": 2272, + "teal": 2275, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2030 + 2031 ] }, { - "teal": 2273, + "teal": 2276, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2031, - 2032, - 2033 + 2032 ] }, { - "teal": 2274, + "teal": 2277, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ + 2033, 2034 ] }, { - "teal": 2277, - "source": "examples/reti/validatorRegistry.algo.ts:666", - "errorMessage": "total staked for all of a validators pools may not exceed hard cap", + "teal": 2278, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ 2035 ] }, { - "teal": 2281, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2279, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2036, - 2037 + 2036 ] }, { - "teal": 2282, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2280, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ + 2037, 2038, 2039 ] }, { - "teal": 2283, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2281, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2040, - 2041, - 2042 + 2040 ] }, { - "teal": 2287, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "teal": 2284, + "source": "examples/reti/validatorRegistry.algo.ts:666", + "errorMessage": "total staked for all of a validators pools may not exceed hard cap", "pc": [ - 2043, - 2044 + 2041 ] }, { "teal": 2288, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2045, - 2046 + 2042, + 2043 ] }, { "teal": 2289, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2047, - 2048 + 2044, + 2045 ] }, { - "teal": 2293, - "source": "examples/reti/validatorRegistry.algo.ts:676", + "teal": 2290, + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2049 + 2046, + 2047, + 2048 ] }, { "teal": 2294, - "source": "examples/reti/validatorRegistry.algo.ts:676", + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ - 2050, - 2051 + 2049, + 2050 ] }, { - "teal": 2299, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2295, + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ + 2051, 2052 ] }, { - "teal": 2300, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2296, + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ 2053, 2054 ] }, { - "teal": 2301, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2300, + "source": "examples/reti/validatorRegistry.algo.ts:676", "pc": [ 2055 ] }, { - "teal": 2302, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2301, + "source": "examples/reti/validatorRegistry.algo.ts:676", "pc": [ - 2056 + 2056, + 2057 ] }, { - "teal": 2303, + "teal": 2306, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2057 + 2058 ] }, { - "teal": 2304, + "teal": 2307, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2058 + 2059, + 2060 ] }, { - "teal": 2305, + "teal": 2308, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2059 + 2061 ] }, { - "teal": 2306, + "teal": 2309, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2060, - 2061, 2062 ] }, + { + "teal": 2310, + "source": "examples/reti/validatorRegistry.algo.ts:678", + "pc": [ + 2063 + ] + }, { "teal": 2311, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2063, - 2064, - 2065 + 2064 ] }, { "teal": 2312, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2066, - 2067, - 2068 + 2065 ] }, { "teal": 2313, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2069 + 2066, + 2067, + 2068 ] }, { - "teal": 2314, + "teal": 2318, "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ + 2069, 2070, 2071 ] }, - { - "teal": 2318, - "source": "examples/reti/validatorRegistry.algo.ts:682", - "pc": [ - 2072, - 2073 - ] - }, { "teal": 2319, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2074, - 2075 + 2072, + 2073, + 2074 ] }, { "teal": 2320, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2076 + 2075 ] }, { "teal": 2321, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2077, - 2078 + 2076, + 2077 ] }, { "teal": 2325, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ + 2078, 2079 ] }, { "teal": 2326, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2080, 2081 @@ -10817,101 +10824,107 @@ }, { "teal": 2327, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2082 ] }, { "teal": 2328, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2083, - 2084, - 2085 + 2084 ] }, { - "teal": 2329, + "teal": 2332, "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2086 + 2085 ] }, { - "teal": 2330, + "teal": 2333, "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ + 2086, 2087 ] }, { - "teal": 2335, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "teal": 2334, + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2088, - 2089 + 2088 ] }, { - "teal": 2336, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "teal": 2335, + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ + 2089, 2090, 2091 ] }, + { + "teal": 2336, + "source": "examples/reti/validatorRegistry.algo.ts:683", + "pc": [ + 2092 + ] + }, { "teal": 2337, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2092, 2093 ] }, { - "teal": 2338, + "teal": 2342, "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ 2094, - 2095, - 2096 + 2095 ] }, { - "teal": 2339, + "teal": 2343, "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ - 2097, - 2098 + 2096, + 2097 ] }, { - "teal": 2345, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2344, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ - 2099, - 2100 + 2098, + 2099 ] }, { - "teal": 2346, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2345, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ + 2100, 2101, 2102 ] }, { - "teal": 2347, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2346, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ 2103, 2104 ] }, { - "teal": 2348, + "teal": 2352, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ 2105, @@ -10919,62 +10932,62 @@ ] }, { - "teal": 2349, + "teal": 2353, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2107 + 2107, + 2108 ] }, { - "teal": 2350, + "teal": 2354, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2108, - 2109 + 2109, + 2110 ] }, { - "teal": 2354, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2355, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2110, - 2111 + 2111, + 2112 ] }, { - "teal": 2355, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2356, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2112, 2113 ] }, { - "teal": 2356, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2357, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ 2114, 2115 ] }, { - "teal": 2357, + "teal": 2361, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2116, - 2117, - 2118 + 2117 ] }, { - "teal": 2358, + "teal": 2362, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ + 2118, 2119 ] }, { - "teal": 2359, + "teal": 2363, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2120, @@ -10983,60 +10996,54 @@ }, { "teal": 2364, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2122, - 2123 + 2123, + 2124 ] }, { "teal": 2365, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ - 2124, 2125 ] }, { "teal": 2366, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2126, 2127 ] }, { - "teal": 2367, + "teal": 2371, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2128, - 2129, - 2130 + 2129 ] }, { - "teal": 2368, + "teal": 2372, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ + 2130, 2131 ] }, { - "teal": 2369, - "source": "examples/reti/validatorRegistry.algo.ts:691", - "pc": [ - 2132 - ] - }, - { - "teal": 2370, + "teal": 2373, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ + 2132, 2133 ] }, { - "teal": 2371, + "teal": 2374, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2134, @@ -11046,353 +11053,353 @@ }, { "teal": 2375, - "source": "examples/reti/validatorRegistry.algo.ts:692", - "errorMessage": "No pool available with free stake. Validator needs to add another pool", + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2137 ] }, { - "teal": 2380, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "teal": 2376, + "source": "examples/reti/validatorRegistry.algo.ts:691", + "pc": [ + 2138 + ] + }, + { + "teal": 2377, + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ - 2138, 2139 ] }, { - "teal": 2381, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "teal": 2378, + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2140, - 2141 + 2141, + 2142 ] }, { "teal": 2382, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "source": "examples/reti/validatorRegistry.algo.ts:692", + "errorMessage": "No pool available with free stake. Validator needs to add another pool", "pc": [ - 2142, 2143 ] }, { - "teal": 2383, + "teal": 2387, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ 2144, - 2145, - 2146 + 2145 ] }, { - "teal": 2384, + "teal": 2388, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2147, - 2148 + 2146, + 2147 ] }, { - "teal": 2385, + "teal": 2389, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2149, - 2150, - 2151 + 2148, + 2149 ] }, { - "teal": 2395, - "source": "examples/reti/validatorRegistry.algo.ts:704", + "teal": 2390, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2152, - 2153 + 2150, + 2151, + 2152 ] }, { - "teal": 2396, - "source": "examples/reti/validatorRegistry.algo.ts:703", + "teal": 2391, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2154, - 2155 + 2153, + 2154 ] }, { - "teal": 2397, - "source": "examples/reti/validatorRegistry.algo.ts:702", + "teal": 2392, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ + 2155, 2156, 2157 ] }, { - "teal": 2398, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2402, + "source": "examples/reti/validatorRegistry.algo.ts:704", "pc": [ 2158, 2159 ] }, { - "teal": 2399, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2403, + "source": "examples/reti/validatorRegistry.algo.ts:703", "pc": [ 2160, 2161 ] }, { - "teal": 2400, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2404, + "source": "examples/reti/validatorRegistry.algo.ts:702", "pc": [ 2162, 2163 ] }, { - "teal": 2401, + "teal": 2405, "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ 2164, - 2165, - 2166 + 2165 ] }, { - "teal": 2402, - "source": "examples/reti/validatorRegistry.algo.ts:700", + "teal": 2406, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2167, - 2168 + 2166, + 2167 ] }, { - "teal": 2403, - "source": "examples/reti/validatorRegistry.algo.ts:699", + "teal": 2407, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2169, - 2170, - 2171 + 2168, + 2169 ] }, { - "teal": 2407, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2408, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2172, - 2173 + 2170, + 2171, + 2172 ] }, { - "teal": 2408, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2409, + "source": "examples/reti/validatorRegistry.algo.ts:700", "pc": [ - 2174, - 2175 + 2173, + 2174 ] }, { - "teal": 2409, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2410, + "source": "examples/reti/validatorRegistry.algo.ts:699", "pc": [ + 2175, 2176, 2177 ] }, { - "teal": 2410, + "teal": 2414, "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ 2178, - 2179, - 2180 + 2179 ] }, { - "teal": 2413, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2415, + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ - 2181, - 2182 + 2180, + 2181 ] }, { "teal": 2416, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ - 2183, - 2184 + 2182, + 2183 ] }, { "teal": 2417, - "source": "examples/reti/validatorRegistry.algo.ts:644", - "pc": [ - 2185 - ] - }, - { - "teal": 2422, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ + 2184, + 2185, 2186 ] }, { - "teal": 2425, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2420, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 2187, - 2188, - 2189 + 2188 ] }, { - "teal": 2426, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2423, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 2189, 2190 ] }, { - "teal": 2429, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2424, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 2191, - 2192, - 2193 + 2191 ] }, { - "teal": 2430, + "teal": 2429, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2194 + 2192 ] }, { - "teal": 2431, + "teal": 2432, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ + 2193, + 2194, 2195 ] }, { - "teal": 2432, + "teal": 2433, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2196 ] }, { - "teal": 2433, + "teal": 2436, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2197 + 2197, + 2198, + 2199 ] }, { - "teal": 2451, + "teal": 2437, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2198, - 2199, 2200 ] }, { - "teal": 2454, + "teal": 2438, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2201 ] }, { - "teal": 2455, + "teal": 2439, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2202, - 2203 + 2202 ] }, { - "teal": 2459, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "teal": 2440, + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2204, - 2205 + 2203 ] }, { - "teal": 2460, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "teal": 2458, + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ + 2204, + 2205, 2206 ] }, { "teal": 2461, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2207 ] }, { "teal": 2462, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2208, 2209 ] }, { - "teal": 2463, + "teal": 2466, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2210 + 2210, + 2211 ] }, { - "teal": 2464, + "teal": 2467, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2211 + 2212 ] }, { - "teal": 2465, + "teal": 2468, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2212, 2213 ] }, { - "teal": 2466, + "teal": 2469, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2214 + 2214, + 2215 ] }, { - "teal": 2467, + "teal": 2470, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2215 + 2216 ] }, { - "teal": 2468, + "teal": 2471, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2216, 2217 ] }, { "teal": 2472, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2218, 2219 @@ -11400,144 +11407,150 @@ }, { "teal": 2473, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2220 ] }, { "teal": 2474, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2221 ] }, { "teal": 2475, + "source": "examples/reti/validatorRegistry.algo.ts:734", + "pc": [ + 2222, + 2223 + ] + }, + { + "teal": 2479, "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2222 + 2224, + 2225 ] }, { "teal": 2480, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2223, - 2224 + 2226 ] }, { "teal": 2481, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2225, - 2226 + 2227 ] }, { "teal": 2482, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2227, 2228 ] }, { - "teal": 2483, + "teal": 2487, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2229 + 2229, + 2230 ] }, { - "teal": 2484, + "teal": 2488, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2230 + 2231, + 2232 ] }, { - "teal": 2485, + "teal": 2489, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2231, - 2232, - 2233 + 2233, + 2234 ] }, { "teal": 2490, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2234, 2235 ] }, { "teal": 2491, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2236, - 2237 + 2236 ] }, { "teal": 2492, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2238 + 2237, + 2238, + 2239 ] }, { - "teal": 2493, + "teal": 2497, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2239, - 2240 + 2240, + 2241 ] }, { - "teal": 2494, + "teal": 2498, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2241 + 2242, + 2243 ] }, { - "teal": 2495, + "teal": 2499, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2242 + 2244 ] }, { - "teal": 2496, + "teal": 2500, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2243, - 2244 + 2245, + 2246 ] }, { - "teal": 2497, + "teal": 2501, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2245 + 2247 ] }, { - "teal": 2498, + "teal": 2502, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2246, - 2247, 2248 ] }, { "teal": 2503, - "source": "examples/reti/validatorRegistry.algo.ts:744", + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ 2249, 2250 @@ -11545,185 +11558,185 @@ }, { "teal": 2504, - "source": "examples/reti/validatorRegistry.algo.ts:744", + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2251, - 2252 + 2251 ] }, { - "teal": 2508, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "teal": 2505, + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ + 2252, 2253, 2254 ] }, - { - "teal": 2509, - "source": "examples/reti/validatorRegistry.algo.ts:745", - "pc": [ - 2255 - ] - }, { "teal": 2510, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "source": "examples/reti/validatorRegistry.algo.ts:744", "pc": [ + 2255, 2256 ] }, { "teal": 2511, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "source": "examples/reti/validatorRegistry.algo.ts:744", "pc": [ 2257, 2258 ] }, { - "teal": 2512, + "teal": 2515, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2259 + 2259, + 2260 ] }, { - "teal": 2513, + "teal": 2516, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2260 + 2261 ] }, { - "teal": 2514, + "teal": 2517, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2261, 2262 ] }, { - "teal": 2515, + "teal": 2518, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2263 + 2263, + 2264 ] }, { - "teal": 2516, + "teal": 2519, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2264 + 2265 ] }, { - "teal": 2517, + "teal": 2520, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2265, 2266 ] }, { - "teal": 2522, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2521, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2267, 2268 ] }, { - "teal": 2523, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2522, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2269 ] }, { - "teal": 2524, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2523, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2270 ] }, { - "teal": 2525, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2524, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2271, - 2272, - 2273 + 2272 ] }, { - "teal": 2531, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2529, + "source": "examples/reti/validatorRegistry.algo.ts:746", + "pc": [ + 2273, + 2274 + ] + }, + { + "teal": 2530, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2274, 2275 ] }, { - "teal": 2532, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2531, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2285, - 2286, - 2287 + 2276 ] }, { - "teal": 2533, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2532, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2288 + 2277, + 2278, + 2279 ] }, { - "teal": 2536, + "teal": 2538, "source": "examples/reti/validatorRegistry.algo.ts:748", - "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", "pc": [ - 2289 + 2280, + 2281 ] }, { - "teal": 2537, + "teal": 2539, "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, 2290, - 2291 + 2291, + 2292, + 2293 ] }, { - "teal": 2538, + "teal": 2540, "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2292 + 2294 ] }, { - "teal": 2539, + "teal": 2543, "source": "examples/reti/validatorRegistry.algo.ts:748", + "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", "pc": [ - 2293, - 2294, 2295 ] }, { "teal": 2544, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ 2296, 2297 @@ -11731,144 +11744,138 @@ }, { "teal": 2545, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2298, - 2299 + 2298 ] }, { "teal": 2546, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2300 + 2299, + 2300, + 2301 ] }, { - "teal": 2547, + "teal": 2551, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2301, - 2302 + 2302, + 2303 ] }, { - "teal": 2548, + "teal": 2552, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2303 + 2304, + 2305 ] }, { - "teal": 2549, + "teal": 2553, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2304 + 2306 ] }, { - "teal": 2550, + "teal": 2554, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2305, - 2306 + 2307, + 2308 ] }, { - "teal": 2551, + "teal": 2555, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2307 + 2309 ] }, { - "teal": 2552, + "teal": 2556, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2308, - 2309, 2310 ] }, { "teal": 2557, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ 2311, - 2312, - 2313 + 2312 ] }, { "teal": 2558, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2314, - 2315 + 2313 ] }, { "teal": 2559, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ + 2314, + 2315, 2316 ] }, { - "teal": 2560, + "teal": 2564, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ 2317, - 2318 - ] - }, - { - "teal": 2561, - "source": "examples/reti/validatorRegistry.algo.ts:751", - "pc": [ + 2318, 2319 ] }, { - "teal": 2562, + "teal": 2565, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2320 + 2320, + 2321 ] }, { - "teal": 2563, + "teal": 2566, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2321, 2322 ] }, { - "teal": 2564, + "teal": 2567, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2323 + 2323, + 2324 ] }, { - "teal": 2565, + "teal": 2568, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2324 + 2325 ] }, { - "teal": 2566, + "teal": 2569, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2325, 2326 ] }, { "teal": 2570, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ 2327, 2328 @@ -11876,36 +11883,36 @@ }, { "teal": 2571, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2329, - 2330 + 2329 ] }, { "teal": 2572, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2331, - 2332 + 2330 ] }, { "teal": 2573, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2333 + 2331, + 2332 ] }, { - "teal": 2574, + "teal": 2577, "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ + 2333, 2334 ] }, { - "teal": 2575, + "teal": 2578, "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2335, @@ -11913,70 +11920,76 @@ ] }, { - "teal": 2580, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "teal": 2579, + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2337, 2338 ] }, + { + "teal": 2580, + "source": "examples/reti/validatorRegistry.algo.ts:752", + "pc": [ + 2339 + ] + }, { "teal": 2581, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ - 2339, 2340 ] }, { "teal": 2582, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2341, 2342 ] }, { - "teal": 2583, + "teal": 2587, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2343 + 2343, + 2344 ] }, { - "teal": 2584, + "teal": 2588, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2344 + 2345, + 2346 ] }, { - "teal": 2585, + "teal": 2589, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2345, - 2346 + 2347, + 2348 ] }, { - "teal": 2586, + "teal": 2590, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2347 + 2349 ] }, { - "teal": 2587, + "teal": 2591, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2348, - 2349, 2350 ] }, { "teal": 2592, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ 2351, 2352 @@ -11984,97 +11997,91 @@ }, { "teal": 2593, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2353, - 2354 + 2353 ] }, { "teal": 2594, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2355 + 2354, + 2355, + 2356 ] }, { - "teal": 2595, + "teal": 2599, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2356, - 2357 + 2357, + 2358 ] }, { - "teal": 2596, + "teal": 2600, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2358 + 2359, + 2360 ] }, { - "teal": 2597, + "teal": 2601, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2359 + 2361 ] }, { - "teal": 2598, + "teal": 2602, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2360, - 2361 + 2362, + 2363 ] }, { - "teal": 2599, + "teal": 2603, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2362 + 2364 ] }, { - "teal": 2600, + "teal": 2604, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2363, - 2364, 2365 ] }, { - "teal": 2607, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2605, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ 2366, 2367 ] }, { - "teal": 2608, - "source": "examples/reti/validatorRegistry.algo.ts:758", - "pc": [ - 2368, - 2369 - ] - }, - { - "teal": 2609, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2606, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2370 + 2368 ] }, { - "teal": 2610, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2607, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ + 2369, + 2370, 2371 ] }, { - "teal": 2611, + "teal": 2614, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ 2372, @@ -12082,112 +12089,112 @@ ] }, { - "teal": 2612, + "teal": 2615, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2374 + 2374, + 2375 ] }, { - "teal": 2613, + "teal": 2616, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2375 + 2376 ] }, { - "teal": 2614, + "teal": 2617, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2376, 2377 ] }, { - "teal": 2615, + "teal": 2618, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2378 + 2378, + 2379 ] }, { "teal": 2619, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2379, 2380 ] }, { "teal": 2620, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2381, - 2382 + 2381 ] }, { "teal": 2621, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ + 2382, 2383 ] }, { "teal": 2622, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2384, - 2385 + 2384 ] }, { - "teal": 2623, + "teal": 2626, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ + 2385, 2386 ] }, { - "teal": 2624, + "teal": 2627, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2387 + 2387, + 2388 ] }, { - "teal": 2625, + "teal": 2628, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2388, 2389 ] }, { - "teal": 2626, + "teal": 2629, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2390 + 2390, + 2391 ] }, { - "teal": 2627, + "teal": 2630, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2391 + 2392 ] }, { - "teal": 2628, + "teal": 2631, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2392, 2393 ] }, { "teal": 2632, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2394, 2395 @@ -12195,98 +12202,104 @@ }, { "teal": 2633, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2396 ] }, { "teal": 2634, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2397 ] }, { "teal": 2635, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2398, 2399 ] }, { - "teal": 2636, + "teal": 2639, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2400 + 2400, + 2401 ] }, { - "teal": 2637, + "teal": 2640, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2401 + 2402 ] }, { - "teal": 2638, + "teal": 2641, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2402, 2403 ] }, { - "teal": 2639, + "teal": 2642, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2404 + 2404, + 2405 ] }, { - "teal": 2640, + "teal": 2643, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2405 + 2406 ] }, { - "teal": 2641, + "teal": 2644, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2406, 2407 ] }, { "teal": 2645, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2408 + 2408, + 2409 ] }, { "teal": 2646, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2409, 2410 ] }, { - "teal": 2651, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "teal": 2647, + "source": "examples/reti/validatorRegistry.algo.ts:761", + "pc": [ + 2411 + ] + }, + { + "teal": 2648, + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2411, - 2412 + 2412, + 2413 ] }, { "teal": 2652, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2413, 2414 ] }, @@ -12294,1270 +12307,1264 @@ "teal": 2653, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2415 + 2415, + 2416 ] }, { - "teal": 2654, + "teal": 2658, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2416, 2417, 2418 ] }, { - "teal": 2661, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2659, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ 2419, 2420 ] }, { - "teal": 2662, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2660, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2421, - 2422 + 2421 ] }, { - "teal": 2663, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2661, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ + 2422, 2423, 2424 ] }, { - "teal": 2664, + "teal": 2668, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2425 + 2425, + 2426 ] }, { - "teal": 2665, + "teal": 2669, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2426 + 2427, + 2428 ] }, { - "teal": 2666, + "teal": 2670, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2427, - 2428 + 2429, + 2430 ] }, { - "teal": 2667, + "teal": 2671, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2429 + 2431 ] }, { - "teal": 2668, + "teal": 2672, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2430 + 2432 ] }, { - "teal": 2669, + "teal": 2673, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2431 + 2433, + 2434 ] }, { - "teal": 2670, + "teal": 2674, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2432, - 2433 + 2435 ] }, { - "teal": 2671, + "teal": 2675, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2434 + 2436 ] }, { - "teal": 2672, + "teal": 2676, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2435 + 2437 ] }, { - "teal": 2673, + "teal": 2677, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2436, - 2437 + 2438, + 2439 ] }, { - "teal": 2674, + "teal": 2678, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2438 + 2440 ] }, { - "teal": 2675, + "teal": 2679, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2439 + 2441 ] }, { - "teal": 2676, + "teal": 2680, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2440, - 2441, 2442, 2443 ] }, { - "teal": 2677, - "source": "examples/reti/validatorRegistry.algo.ts:767", + "teal": 2681, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2444 ] }, { - "teal": 2678, - "source": "examples/reti/validatorRegistry.algo.ts:767", + "teal": 2682, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2445 ] }, { - "teal": 2679, - "source": "examples/reti/validatorRegistry.algo.ts:769", + "teal": 2683, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2446, - 2447 + 2447, + 2448, + 2449 ] }, { - "teal": 2680, + "teal": 2684, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2448 + 2450 ] }, { - "teal": 2681, + "teal": 2685, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2449 + 2451 ] }, { - "teal": 2682, + "teal": 2686, + "source": "examples/reti/validatorRegistry.algo.ts:769", + "pc": [ + 2452, + 2453 + ] + }, + { + "teal": 2687, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2450 + 2454 ] }, { - "teal": 2683, + "teal": 2688, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2451 + 2455 ] }, { - "teal": 2684, + "teal": 2689, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2452 + 2456 ] }, { - "teal": 2687, + "teal": 2690, + "source": "examples/reti/validatorRegistry.algo.ts:767", + "pc": [ + 2457 + ] + }, + { + "teal": 2691, + "source": "examples/reti/validatorRegistry.algo.ts:767", + "pc": [ + 2458 + ] + }, + { + "teal": 2694, "source": "examples/reti/validatorRegistry.algo.ts:767", "errorMessage": "wideRatio failed", "pc": [ - 2453 + 2459 ] }, { - "teal": 2688, + "teal": 2695, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2454, - 2455 + 2460, + 2461 ] }, { - "teal": 2692, + "teal": 2699, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2456, - 2457 + 2462, + 2463 ] }, { - "teal": 2693, + "teal": 2700, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2458, - 2459 + 2464, + 2465 ] }, { - "teal": 2694, + "teal": 2701, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2460 + 2466 ] }, { - "teal": 2695, + "teal": 2702, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2461 + 2467 ] }, { - "teal": 2696, + "teal": 2703, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2462 + 2468 ] }, { - "teal": 2697, + "teal": 2704, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2463, - 2464 + 2469, + 2470 ] }, { - "teal": 2698, + "teal": 2705, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2465 + 2471 ] }, { - "teal": 2699, + "teal": 2706, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2466 + 2472 ] }, { - "teal": 2700, + "teal": 2707, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2467, - 2468 + 2473, + 2474 ] }, { - "teal": 2701, + "teal": 2708, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2469 + 2475 ] }, { - "teal": 2702, + "teal": 2709, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2470 + 2476 ] }, { - "teal": 2703, + "teal": 2710, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2471, - 2472 + 2477, + 2478 ] }, { - "teal": 2704, + "teal": 2711, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2473 + 2479 ] }, { - "teal": 2709, + "teal": 2716, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2474, - 2475 + 2480, + 2481 ] }, { - "teal": 2710, + "teal": 2717, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2476 + 2482 ] }, { - "teal": 2711, + "teal": 2718, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2477 + 2483 ] }, { - "teal": 2712, + "teal": 2719, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2478, - 2479 + 2484, + 2485 ] }, { - "teal": 2713, + "teal": 2720, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2480, - 2481, - 2482 + 2486, + 2487, + 2488 ] }, { - "teal": 2718, + "teal": 2725, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2483, - 2484 + 2489, + 2490 ] }, { - "teal": 2719, + "teal": 2726, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2485, - 2486 + 2491, + 2492 ] }, { - "teal": 2720, + "teal": 2727, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2487 + 2493 ] }, { - "teal": 2721, + "teal": 2728, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2488, - 2489 + 2494, + 2495 ] }, { - "teal": 2722, + "teal": 2729, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2490 + 2496 ] }, { - "teal": 2723, + "teal": 2730, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2491 + 2497 ] }, { - "teal": 2724, + "teal": 2731, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2492, - 2493 + 2498, + 2499 ] }, { - "teal": 2725, + "teal": 2732, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2494 + 2500 ] }, { - "teal": 2729, + "teal": 2736, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2495, - 2496 + 2501, + 2502 ] }, { - "teal": 2732, + "teal": 2739, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2497, - 2498 + 2503, + 2504 ] }, { - "teal": 2733, + "teal": 2740, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2499 + 2505 ] }, { - "teal": 2738, + "teal": 2745, "source": "examples/reti/validatorRegistry.algo.ts:792", "pc": [ - 2500, - 2501, - 2502 + 2506, + 2507, + 2508 ] }, { - "teal": 2739, + "teal": 2746, "source": "examples/reti/validatorRegistry.algo.ts:792", "pc": [ - 2503 + 2509 ] }, { - "teal": 2742, + "teal": 2749, "source": "examples/reti/validatorRegistry.algo.ts:791", "pc": [ - 2504, - 2505, - 2506 + 2510, + 2511, + 2512 ] }, { - "teal": 2743, + "teal": 2750, "source": "examples/reti/validatorRegistry.algo.ts:791", "pc": [ - 2507 + 2513 ] }, { - "teal": 2746, + "teal": 2753, "source": "examples/reti/validatorRegistry.algo.ts:790", "pc": [ - 2508, - 2509, - 2510 + 2514, + 2515, + 2516 ] }, { - "teal": 2747, + "teal": 2754, "source": "examples/reti/validatorRegistry.algo.ts:790", "pc": [ - 2511 + 2517 ] }, { - "teal": 2750, + "teal": 2757, "source": "examples/reti/validatorRegistry.algo.ts:789", "pc": [ - 2512, - 2513, - 2514 + 2518, + 2519, + 2520 ] }, { - "teal": 2751, + "teal": 2758, "source": "examples/reti/validatorRegistry.algo.ts:789", "pc": [ - 2515 + 2521 ] }, { - "teal": 2754, + "teal": 2761, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2516, - 2517, - 2518 + 2522, + 2523, + 2524 ] }, { - "teal": 2755, + "teal": 2762, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2519 + 2525 ] }, { - "teal": 2756, + "teal": 2763, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2520 + 2526 ] }, { - "teal": 2757, + "teal": 2764, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2521 + 2527 ] }, { - "teal": 2758, + "teal": 2765, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2522 + 2528 ] }, { - "teal": 2761, + "teal": 2768, "source": "examples/reti/validatorRegistry.algo.ts:788", "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", "pc": [ - 2523 + 2529 ] }, { - "teal": 2764, + "teal": 2771, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2524, - 2525, - 2526 + 2530, + 2531, + 2532 ] }, { - "teal": 2765, + "teal": 2772, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2527 + 2533 ] }, { - "teal": 2766, + "teal": 2773, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2528 + 2534 ] }, { - "teal": 2780, + "teal": 2787, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2529, - 2530, - 2531 + 2535, + 2536, + 2537 ] }, { - "teal": 2784, + "teal": 2791, "source": "examples/reti/validatorRegistry.algo.ts:794", "pc": [ - 2532, - 2533 + 2538, + 2539 ] }, { - "teal": 2785, + "teal": 2792, "source": "examples/reti/validatorRegistry.algo.ts:794", "pc": [ - 2534, - 2535, - 2536 + 2540, + 2541, + 2542 ] }, { - "teal": 2789, + "teal": 2796, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2537, - 2538 + 2543, + 2544 ] }, { - "teal": 2790, + "teal": 2797, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2539, - 2540 + 2545, + 2546 ] }, { - "teal": 2791, + "teal": 2798, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2541, - 2542, - 2543 + 2547, + 2548, + 2549 ] }, { - "teal": 2792, + "teal": 2799, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2544 + 2550 ] }, { - "teal": 2793, + "teal": 2800, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2545 + 2551 ] }, { - "teal": 2794, + "teal": 2801, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2546 + 2552 ] }, { - "teal": 2795, + "teal": 2802, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2547, - 2548 + 2553, + 2554 ] }, { - "teal": 2796, + "teal": 2803, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2549 + 2555 ] }, { - "teal": 2797, + "teal": 2804, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2550 + 2556 ] }, { - "teal": 2798, + "teal": 2805, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2551, - 2552 - ] - }, - { - "teal": 2799, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2553 - ] - }, - { - "teal": 2800, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2554, - 2555 - ] - }, - { - "teal": 2801, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2556, - 2557 - ] - }, - { - "teal": 2802, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2558, - 2559, - 2560 - ] - }, - { - "teal": 2803, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2561 - ] - }, - { - "teal": 2804, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2562 - ] - }, - { - "teal": 2805, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2563 + 2557, + 2558 ] }, { "teal": 2806, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2564, - 2565 + 2559 ] }, { "teal": 2807, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2566 + 2560, + 2561 ] }, { "teal": 2808, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2567 + 2562, + 2563 ] }, { "teal": 2809, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2568, - 2569 + 2564, + 2565, + 2566 ] }, { "teal": 2810, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2570 + 2567 ] }, { "teal": 2811, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2571 + 2568 ] }, { "teal": 2812, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2572 + 2569 ] }, { "teal": 2813, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2573, - 2574 + 2570, + 2571 ] }, { "teal": 2814, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2575, - 2576, - 2577 + 2572 ] }, { "teal": 2815, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2578 + 2573 ] }, { "teal": 2816, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2579 + 2574, + 2575 ] }, { "teal": 2817, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2580 + 2576 ] }, { "teal": 2818, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2581, - 2582 + 2577 ] }, { "teal": 2819, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2583 + 2578 ] }, { "teal": 2820, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2584 + 2579, + 2580 ] }, { "teal": 2821, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2585, - 2586 + 2581, + 2582, + 2583 ] }, { "teal": 2822, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2587 + 2584 ] }, { "teal": 2823, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2588 + 2585 ] }, { "teal": 2824, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2589 + 2586 ] }, { "teal": 2825, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2590, - 2591 + 2587, + 2588 ] }, { "teal": 2826, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2592, - 2593, - 2594 + 2589 ] }, { "teal": 2827, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2595 + 2590 ] }, { "teal": 2828, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2596 + 2591, + 2592 ] }, { "teal": 2829, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2597 + 2593 ] }, { "teal": 2830, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2598, - 2599 + 2594 ] }, { "teal": 2831, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2600 + 2595 ] }, { - "teal": 2835, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2832, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2601, - 2602 + 2596, + 2597 ] }, { - "teal": 2836, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2833, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2603 + 2598, + 2599, + 2600 ] }, { - "teal": 2837, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2834, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2604 + 2601 ] }, { - "teal": 2838, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2835, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2605 + 2602 ] }, { - "teal": 2839, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2836, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2606, - 2607 + 2603 ] }, { - "teal": 2840, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2837, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2608, - 2609, - 2610 + 2604, + 2605 ] }, { - "teal": 2841, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2838, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2611 + 2606 ] }, { "teal": 2842, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2612 + 2607, + 2608 ] }, { "teal": 2843, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2613 + 2609 ] }, { "teal": 2844, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2614, - 2615 + 2610 ] }, { "teal": 2845, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2616 + 2611 ] }, { "teal": 2846, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2617 + 2612, + 2613 ] }, { "teal": 2847, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2618, - 2619 + 2614, + 2615, + 2616 ] }, { "teal": 2848, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2620 + 2617 ] }, { "teal": 2849, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2621 + 2618 ] }, { "teal": 2850, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2622 + 2619 ] }, { "teal": 2851, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2623, - 2624 + 2620, + 2621 ] }, { "teal": 2852, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2625, - 2626, - 2627 + 2622 ] }, { "teal": 2853, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2628 + 2623 ] }, { "teal": 2854, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2629 + 2624, + 2625 ] }, { "teal": 2855, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2630 + 2626 ] }, { "teal": 2856, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2631, - 2632 + 2627 ] }, { "teal": 2857, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2633 + 2628 ] }, { - "teal": 2861, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2858, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2634, - 2635 + 2629, + 2630 ] }, { - "teal": 2862, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2859, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2636 + 2631, + 2632, + 2633 ] }, { - "teal": 2863, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2860, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2637 + 2634 ] }, { - "teal": 2864, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2861, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2638 + 2635 ] }, { - "teal": 2865, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2862, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2639, - 2640 + 2636 ] }, { - "teal": 2866, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2863, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2641, - 2642, - 2643 + 2637, + 2638 ] }, { - "teal": 2867, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2864, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2644 + 2639 ] }, { "teal": 2868, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2645 + 2640, + 2641 ] }, { "teal": 2869, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2646 + 2642 ] }, { "teal": 2870, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2647, - 2648 + 2643 ] }, { "teal": 2871, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2649 + 2644 ] }, { "teal": 2872, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2650 + 2645, + 2646 ] }, { "teal": 2873, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2651, - 2652 + 2647, + 2648, + 2649 ] }, { "teal": 2874, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2653 + 2650 ] }, { "teal": 2875, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2654 + 2651 ] }, { "teal": 2876, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2655 + 2652 ] }, { "teal": 2877, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2656, - 2657 + 2653, + 2654 ] }, { "teal": 2878, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2658, - 2659, - 2660 + 2655 ] }, { "teal": 2879, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2661 + 2656 ] }, { "teal": 2880, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2662 + 2657, + 2658 ] }, { "teal": 2881, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2663 + 2659 ] }, { "teal": 2882, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2664, - 2665 + 2660 ] }, { "teal": 2883, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ + 2661 + ] + }, + { + "teal": 2884, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2662, + 2663 + ] + }, + { + "teal": 2885, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2664, + 2665, 2666 ] }, + { + "teal": 2886, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2667 + ] + }, { "teal": 2887, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2667, 2668 ] }, { "teal": 2888, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2669 ] }, { "teal": 2889, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2670, 2671 @@ -13565,13 +13572,13 @@ }, { "teal": 2890, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2672 ] }, { - "teal": 2891, + "teal": 2894, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2673, @@ -13579,399 +13586,405 @@ ] }, { - "teal": 2892, + "teal": 2895, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2675 ] }, { - "teal": 2893, + "teal": 2896, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2676 + 2676, + 2677 ] }, { "teal": 2897, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2677, 2678 ] }, { "teal": 2898, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2679, - 2680, - 2681 + 2680 ] }, { "teal": 2899, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2682 + 2681 ] }, { "teal": 2900, + "source": "examples/reti/validatorRegistry.algo.ts:801", + "pc": [ + 2682 + ] + }, + { + "teal": 2904, "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ 2683, - 2684, - 2685 + 2684 ] }, { - "teal": 2901, - "source": "examples/reti/validatorRegistry.algo.ts:787", + "teal": 2905, + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2686 + 2685, + 2686, + 2687 ] }, { "teal": 2906, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2687, - 2688, - 2689 + 2688 ] }, { "teal": 2907, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2690 + 2689, + 2690, + 2691 ] }, { "teal": 2908, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2691 + 2692 ] }, { - "teal": 2909, + "teal": 2913, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2692 + 2693, + 2694, + 2695 ] }, { - "teal": 2910, + "teal": 2914, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2693 + 2696 ] }, { - "teal": 2913, + "teal": 2915, "source": "examples/reti/validatorRegistry.algo.ts:834", - "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", "pc": [ - 2694 + 2697 ] }, { - "teal": 2914, + "teal": 2916, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2695 + 2698 ] }, { - "teal": 2915, + "teal": 2917, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2696 + 2699 ] }, { - "teal": 2918, - "source": "examples/reti/validatorRegistry.algo.ts:833", + "teal": 2920, + "source": "examples/reti/validatorRegistry.algo.ts:834", + "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", "pc": [ - 2697, - 2698, - 2699 + 2700 ] }, { - "teal": 2919, - "source": "examples/reti/validatorRegistry.algo.ts:833", + "teal": 2921, + "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2700 + 2701 ] }, { "teal": 2922, - "source": "examples/reti/validatorRegistry.algo.ts:832", + "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2701, - 2702, - 2703 + 2702 ] }, { - "teal": 2923, - "source": "examples/reti/validatorRegistry.algo.ts:832", + "teal": 2925, + "source": "examples/reti/validatorRegistry.algo.ts:833", "pc": [ - 2704 + 2703, + 2704, + 2705 ] }, { "teal": 2926, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "source": "examples/reti/validatorRegistry.algo.ts:833", "pc": [ - 2705, - 2706, - 2707 + 2706 ] }, { - "teal": 2927, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "teal": 2929, + "source": "examples/reti/validatorRegistry.algo.ts:832", "pc": [ - 2708 + 2707, + 2708, + 2709 ] }, { - "teal": 2928, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "teal": 2930, + "source": "examples/reti/validatorRegistry.algo.ts:832", "pc": [ - 2709 + 2710 ] }, { - "teal": 2929, + "teal": 2933, "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2710, - 2711 + 2711, + 2712, + 2713 ] }, { - "teal": 2930, + "teal": 2934, "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2712 + 2714 ] }, { - "teal": 2933, + "teal": 2935, "source": "examples/reti/validatorRegistry.algo.ts:831", - "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", "pc": [ - 2713 + 2715 ] }, { "teal": 2936, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2714, - 2715, - 2716 + 2716, + 2717 ] }, { "teal": 2937, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2717 + 2718 ] }, { - "teal": 2938, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "teal": 2940, + "source": "examples/reti/validatorRegistry.algo.ts:831", + "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", "pc": [ - 2718 + 2719 ] }, { - "teal": 2939, + "teal": 2943, "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2719 + 2720, + 2721, + 2722 ] }, { - "teal": 2940, + "teal": 2944, "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2720 + 2723 ] }, { - "teal": 2943, + "teal": 2945, "source": "examples/reti/validatorRegistry.algo.ts:830", - "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", "pc": [ - 2721 + 2724 ] }, { "teal": 2946, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2722, - 2723, - 2724 + 2725 ] }, { "teal": 2947, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2725 + 2726 ] }, { - "teal": 2948, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "teal": 2950, + "source": "examples/reti/validatorRegistry.algo.ts:830", + "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", "pc": [ - 2726 + 2727 ] }, { - "teal": 2963, + "teal": 2953, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2727, 2728, - 2729 + 2729, + 2730 ] }, { - "teal": 2966, + "teal": 2954, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2730 + 2731 ] }, { - "teal": 2967, + "teal": 2955, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2731, 2732 ] }, { - "teal": 2972, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "teal": 2970, + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ 2733, - 2734 + 2734, + 2735 ] }, { "teal": 2973, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2735, 2736 ] }, { "teal": 2974, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2737 + 2737, + 2738 ] }, { - "teal": 2975, + "teal": 2979, "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2738, 2739, 2740 ] }, { "teal": 2980, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2741 + 2741, + 2742 ] }, { "teal": 2981, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2742, 2743 ] }, { "teal": 2982, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ 2744, - 2745 + 2745, + 2746 ] }, { - "teal": 2983, + "teal": 2987, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2746 + 2747 ] }, { - "teal": 2984, + "teal": 2988, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2747, - 2748 + 2748, + 2749 ] }, { - "teal": 2985, + "teal": 2989, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2749, - 2750 + 2750, + 2751 ] }, { - "teal": 2986, + "teal": 2990, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2751 + 2752 ] }, { - "teal": 2987, + "teal": 2991, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2752, - 2753 + 2753, + 2754 ] }, { - "teal": 2988, + "teal": 2992, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2754, - 2755 + 2755, + 2756 ] }, { - "teal": 2989, + "teal": 2993, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2756, 2757 ] }, { - "teal": 2990, + "teal": 2994, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ 2758, @@ -13979,615 +13992,609 @@ ] }, { - "teal": 2991, + "teal": 2995, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2760 + 2760, + 2761 ] }, { "teal": 2996, - "source": "examples/reti/validatorRegistry.algo.ts:839", + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2761, - 2762 + 2762, + 2763 ] }, { "teal": 2997, - "source": "examples/reti/validatorRegistry.algo.ts:839", + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2763, 2764, 2765 ] }, { - "teal": 3001, - "source": "examples/reti/validatorRegistry.algo.ts:843", - "pc": [ - 2766, - 2767 - ] - }, - { - "teal": 3002, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "teal": 2998, + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2768 + 2766 ] }, { "teal": 3003, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "source": "examples/reti/validatorRegistry.algo.ts:839", "pc": [ - 2769 + 2767, + 2768 ] }, { "teal": 3004, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "source": "examples/reti/validatorRegistry.algo.ts:839", "pc": [ - 2770 + 2769, + 2770, + 2771 ] }, { - "teal": 3005, + "teal": 3008, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2771, 2772, 2773 ] }, { - "teal": 3006, + "teal": 3009, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2774, - 2775 + 2774 ] }, { - "teal": 3007, + "teal": 3010, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2776 + 2775 ] }, { - "teal": 3008, + "teal": 3011, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2777 + 2776 ] }, { - "teal": 3009, + "teal": 3012, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2778 + 2777, + 2778, + 2779 ] }, { "teal": 3013, "source": "examples/reti/validatorRegistry.algo.ts:843", - "errorMessage": "should only be called if algo or reward was removed", - "pc": [ - 2779 - ] - }, - { - "teal": 3017, - "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ 2780, 2781 ] }, { - "teal": 3018, - "source": "examples/reti/validatorRegistry.algo.ts:846", - "pc": [ - 2782, - 2783 - ] - }, - { - "teal": 3019, - "source": "examples/reti/validatorRegistry.algo.ts:846", - "pc": [ - 2784, - 2785, - 2786 - ] - }, - { - "teal": 3020, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3014, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2787 + 2782 ] }, { - "teal": 3021, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3015, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2788 + 2783 ] }, { - "teal": 3022, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3016, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2789 + 2784 ] }, { - "teal": 3023, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3020, + "source": "examples/reti/validatorRegistry.algo.ts:843", + "errorMessage": "should only be called if algo or reward was removed", "pc": [ - 2790, - 2791 + 2785 ] }, { "teal": 3024, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2792 + 2786, + 2787 ] }, { "teal": 3025, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2793 + 2788, + 2789 ] }, { "teal": 3026, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2794, - 2795 + 2790, + 2791, + 2792 ] }, { "teal": 3027, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2796 + 2793 ] }, { "teal": 3028, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2797, - 2798 + 2794 ] }, { "teal": 3029, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2799, - 2800 + 2795 ] }, { "teal": 3030, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2801, - 2802, - 2803 + 2796, + 2797 ] }, { "teal": 3031, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2804 + 2798 ] }, { "teal": 3032, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2805 + 2799 ] }, { "teal": 3033, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2806 + 2800, + 2801 ] }, { "teal": 3034, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2807, - 2808 + 2802 ] }, { "teal": 3035, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2809 + 2803, + 2804 ] }, { "teal": 3036, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2810 + 2805, + 2806 ] }, { "teal": 3037, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2811, - 2812 + 2807, + 2808, + 2809 ] }, { "teal": 3038, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2813 + 2810 ] }, { "teal": 3039, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2814 + 2811 ] }, { "teal": 3040, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2815 + 2812 ] }, { "teal": 3041, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2816, - 2817 + 2813, + 2814 ] }, { "teal": 3042, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2818, - 2819, - 2820 + 2815 ] }, { "teal": 3043, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2821 + 2816 ] }, { "teal": 3044, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2822 + 2817, + 2818 ] }, { "teal": 3045, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2823 + 2819 ] }, { "teal": 3046, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2824, - 2825 + 2820 ] }, { "teal": 3047, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2826 + 2821 ] }, { "teal": 3048, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2827 + 2822, + 2823 ] }, { "teal": 3049, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2828, - 2829 + 2824, + 2825, + 2826 ] }, { "teal": 3050, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2830 + 2827 ] }, { "teal": 3051, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2831 + 2828 ] }, { "teal": 3052, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2832 + 2829 ] }, { "teal": 3053, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2833, - 2834 + 2830, + 2831 ] }, { "teal": 3054, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2835, - 2836, - 2837 + 2832 ] }, { "teal": 3055, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2838 + 2833 ] }, { "teal": 3056, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2839 + 2834, + 2835 ] }, { "teal": 3057, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2840 + 2836 ] }, { "teal": 3058, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2841, - 2842 + 2837 ] }, { "teal": 3059, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2843 + 2838 ] }, { - "teal": 3063, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3060, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2844, - 2845 + 2839, + 2840 ] }, { - "teal": 3064, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3061, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2846 + 2841, + 2842, + 2843 ] }, { - "teal": 3065, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3062, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2847 + 2844 ] }, { - "teal": 3066, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3063, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2848 + 2845 ] }, { - "teal": 3067, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3064, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2849, - 2850 + 2846 ] }, { - "teal": 3068, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3065, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2851, - 2852, - 2853 + 2847, + 2848 ] }, { - "teal": 3069, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3066, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2854 + 2849 ] }, { "teal": 3070, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2855 + 2850, + 2851 ] }, { "teal": 3071, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2856 + 2852 ] }, { "teal": 3072, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2857, - 2858 + 2853 ] }, { "teal": 3073, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2859 + 2854 ] }, { "teal": 3074, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2860 + 2855, + 2856 ] }, { "teal": 3075, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2861, - 2862 + 2857, + 2858, + 2859 ] }, { "teal": 3076, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2863 + 2860 ] }, { "teal": 3077, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2864 + 2861 ] }, { "teal": 3078, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2865 + 2862 ] }, { "teal": 3079, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2866, - 2867 + 2863, + 2864 ] }, { "teal": 3080, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2868, - 2869, - 2870 + 2865 ] }, { "teal": 3081, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2871 + 2866 ] }, { "teal": 3082, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2872 + 2867, + 2868 ] }, { "teal": 3083, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2873 + 2869 ] }, { "teal": 3084, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2874, - 2875 + 2870 ] }, { "teal": 3085, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ + 2871 + ] + }, + { + "teal": 3086, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2872, + 2873 + ] + }, + { + "teal": 3087, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2874, + 2875, 2876 ] }, + { + "teal": 3088, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2877 + ] + }, { "teal": 3089, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2877, 2878 ] }, { "teal": 3090, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2879 ] }, { "teal": 3091, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2880, 2881 @@ -14595,13 +14602,13 @@ }, { "teal": 3092, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2882 ] }, { - "teal": 3093, + "teal": 3096, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ 2883, @@ -14609,143 +14616,143 @@ ] }, { - "teal": 3094, + "teal": 3097, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ 2885 ] }, { - "teal": 3095, + "teal": 3098, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2886 + 2886, + 2887 ] }, { - "teal": 3100, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "teal": 3099, + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2887, 2888 ] }, + { + "teal": 3100, + "source": "examples/reti/validatorRegistry.algo.ts:848", + "pc": [ + 2889, + 2890 + ] + }, { "teal": 3101, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2889 + 2891 ] }, { "teal": 3102, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2890 + 2892 ] }, { - "teal": 3103, + "teal": 3107, "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 2891, - 2892, - 2893 + 2893, + 2894 ] }, { "teal": 3108, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 2894, 2895 ] }, { "teal": 3109, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ 2896 ] }, { "teal": 3110, - "source": "examples/reti/validatorRegistry.algo.ts:851", - "pc": [ - 2897 - ] - }, - { - "teal": 3111, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ + 2897, 2898, 2899 ] }, { - "teal": 3112, + "teal": 3115, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2900, - 2901, - 2902 + 2901 ] }, { - "teal": 3113, + "teal": 3116, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2903 + 2902 ] }, { - "teal": 3114, + "teal": 3117, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2904 + 2903 ] }, { - "teal": 3115, + "teal": 3118, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ + 2904, 2905 ] }, { - "teal": 3116, + "teal": 3119, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2906, - 2907 + 2907, + 2908 ] }, { - "teal": 3117, + "teal": 3120, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2908 + 2909 ] }, { - "teal": 3118, + "teal": 3121, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2909 + 2910 ] }, { - "teal": 3119, + "teal": 3122, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2910, 2911 ] }, { "teal": 3123, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2912, 2913 @@ -14753,342 +14760,342 @@ }, { "teal": 3124, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2914 ] }, { "teal": 3125, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2915 ] }, { - "teal": 3128, - "source": "examples/reti/validatorRegistry.algo.ts:852", - "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", + "teal": 3126, + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2916 + 2916, + 2917 ] }, { - "teal": 3135, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3130, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2917, - 2918 + 2918, + 2919 ] }, { - "teal": 3136, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3131, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2919 + 2920 ] }, { - "teal": 3137, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3132, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2920 + 2921 ] }, { - "teal": 3138, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3135, + "source": "examples/reti/validatorRegistry.algo.ts:852", + "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", "pc": [ - 2921, 2922 ] }, { - "teal": 3139, + "teal": 3142, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ 2923, - 2924, - 2925 + 2924 ] }, { - "teal": 3140, + "teal": 3143, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2926 + 2925 ] }, { - "teal": 3141, + "teal": 3144, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2927 + 2926 ] }, { - "teal": 3142, + "teal": 3145, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ + 2927, 2928 ] }, { - "teal": 3143, + "teal": 3146, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ 2929, - 2930 + 2930, + 2931 ] }, { - "teal": 3144, + "teal": 3147, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2931 + 2932 ] }, { - "teal": 3145, + "teal": 3148, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2932 + 2933 ] }, { - "teal": 3146, + "teal": 3149, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2933, 2934 ] }, { - "teal": 3147, + "teal": 3150, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2935 + 2935, + 2936 ] }, { - "teal": 3150, - "source": "examples/reti/validatorRegistry.algo.ts:853", - "errorMessage": "reward being removed must be covered by hold back amount", + "teal": 3151, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2936 + 2937 ] }, { - "teal": 3154, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3152, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2937, 2938 ] }, { - "teal": 3155, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3153, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2939 + 2939, + 2940 ] }, { - "teal": 3156, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3154, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2940 + 2941 ] }, { "teal": 3157, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "source": "examples/reti/validatorRegistry.algo.ts:853", + "errorMessage": "reward being removed must be covered by hold back amount", "pc": [ - 2941 + 2942 ] }, { - "teal": 3158, + "teal": 3161, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2942, - 2943 + 2943, + 2944 ] }, { - "teal": 3159, + "teal": 3162, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2944, - 2945, - 2946 + 2945 ] }, { - "teal": 3160, + "teal": 3163, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2947 + 2946 ] }, { - "teal": 3161, + "teal": 3164, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2948 + 2947 ] }, { - "teal": 3162, + "teal": 3165, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ + 2948, 2949 ] }, { - "teal": 3163, + "teal": 3166, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2950, - 2951 + 2951, + 2952 ] }, { - "teal": 3164, + "teal": 3167, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2952 + 2953 ] }, { - "teal": 3165, + "teal": 3168, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2953 + 2954 ] }, { - "teal": 3166, + "teal": 3169, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2954, 2955 ] }, { - "teal": 3167, + "teal": 3170, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2956 + 2956, + 2957 ] }, { - "teal": 3168, + "teal": 3171, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2957 + 2958 ] }, { - "teal": 3169, + "teal": 3172, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2958 + 2959 ] }, { - "teal": 3170, + "teal": 3173, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2959, - 2960 + 2960, + 2961 ] }, { - "teal": 3171, + "teal": 3174, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2961, - 2962, - 2963 + 2962 ] }, { - "teal": 3172, + "teal": 3175, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2964 + 2963 ] }, { - "teal": 3173, + "teal": 3176, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2965 + 2964 ] }, { - "teal": 3174, + "teal": 3177, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ + 2965, 2966 ] }, { - "teal": 3175, + "teal": 3178, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2967, - 2968 + 2968, + 2969 ] }, { - "teal": 3176, + "teal": 3179, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2969 + 2970 ] }, { - "teal": 3181, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "teal": 3180, + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2970, 2971 ] }, + { + "teal": 3181, + "source": "examples/reti/validatorRegistry.algo.ts:859", + "pc": [ + 2972 + ] + }, { "teal": 3182, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2972, 2973, 2974 ] }, { "teal": 3183, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2975 ] }, { - "teal": 3184, - "source": "examples/reti/validatorRegistry.algo.ts:864", - "pc": [ - 2976 - ] - }, - { - "teal": 3185, + "teal": 3188, "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ + 2976, 2977 ] }, { - "teal": 3186, + "teal": 3189, "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2978, @@ -15097,38 +15104,44 @@ ] }, { - "teal": 3194, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3190, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2981 ] }, { - "teal": 3195, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3191, + "source": "examples/reti/validatorRegistry.algo.ts:864", + "pc": [ + 2982 + ] + }, + { + "teal": 3192, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ - 2982, 2983 ] }, { - "teal": 3196, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3193, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2984, - 2985 + 2985, + 2986 ] }, { - "teal": 3197, + "teal": 3201, "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ - 2986, 2987 ] }, { - "teal": 3198, + "teal": 3202, "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2988, @@ -15136,98 +15149,92 @@ ] }, { - "teal": 3202, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "teal": 3203, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2990, 2991 ] }, - { - "teal": 3203, - "source": "examples/reti/validatorRegistry.algo.ts:866", - "pc": [ - 2992 - ] - }, { "teal": 3204, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ + 2992, 2993 ] }, { "teal": 3205, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2994, 2995 ] }, { - "teal": 3206, + "teal": 3209, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 2996, - 2997, - 2998 + 2997 ] }, { - "teal": 3207, + "teal": 3210, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 2999 + 2998 ] }, { - "teal": 3208, + "teal": 3211, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3000 + 2999 ] }, { - "teal": 3209, + "teal": 3212, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ + 3000, 3001 ] }, { - "teal": 3210, + "teal": 3213, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 3002, - 3003 + 3003, + 3004 ] }, { - "teal": 3211, + "teal": 3214, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3004 + 3005 ] }, { - "teal": 3212, + "teal": 3215, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3005 + 3006 ] }, { - "teal": 3213, + "teal": 3216, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3006, 3007 ] }, { "teal": 3217, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 3008, 3009 @@ -15235,9111 +15242,9197 @@ }, { "teal": 3218, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3010, - 3011 + 3010 ] }, { "teal": 3219, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3012, - 3013 + 3011 ] }, { "teal": 3220, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3014 + 3012, + 3013 ] }, { - "teal": 3221, + "teal": 3224, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3015, - 3016 + 3014, + 3015 ] }, { - "teal": 3222, + "teal": 3225, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3017, - 3018 + 3016, + 3017 ] }, { - "teal": 3223, + "teal": 3226, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ + 3018, 3019 ] }, { - "teal": 3224, + "teal": 3227, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3020, - 3021 + 3020 ] }, { - "teal": 3227, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3228, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ + 3021, 3022 ] }, { - "teal": 3228, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3229, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3023, 3024 ] }, { - "teal": 3231, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3230, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3025 ] }, { - "teal": 3234, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "teal": 3231, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3026, - 3027, + 3027 + ] + }, + { + "teal": 3234, + "source": "examples/reti/validatorRegistry.algo.ts:865", + "pc": [ 3028 ] }, { - "teal": 3242, - "source": "examples/reti/validatorRegistry.algo.ts:892", + "teal": 3235, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 3029, 3030 ] }, { - "teal": 3243, - "source": "examples/reti/validatorRegistry.algo.ts:892", + "teal": 3238, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ - 3031, - 3032, - 3033 + 3031 ] }, { - "teal": 3248, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "teal": 3241, + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 3034, - 3035 + 3032, + 3033, + 3034 ] }, { "teal": 3249, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "source": "examples/reti/validatorRegistry.algo.ts:892", "pc": [ - 3036, - 3037 + 3035, + 3036 ] }, { "teal": 3250, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "source": "examples/reti/validatorRegistry.algo.ts:892", "pc": [ + 3037, 3038, - 3039, - 3040 + 3039 ] }, { - "teal": 3251, + "teal": 3255, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3040, 3041 ] }, { - "teal": 3252, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3042 - ] - }, - { - "teal": 3253, + "teal": 3256, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3042, 3043 ] }, { - "teal": 3254, + "teal": 3257, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3044, - 3045 - ] - }, - { - "teal": 3255, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ + 3045, 3046 ] }, { - "teal": 3256, + "teal": 3258, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3047 ] }, { - "teal": 3257, + "teal": 3259, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3048 ] }, { - "teal": 3258, + "teal": 3260, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3049 ] }, { - "teal": 3259, + "teal": 3261, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3050, 3051 ] }, - { - "teal": 3260, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3052, - 3053 - ] - }, - { - "teal": 3261, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3054, - 3055, - 3056 - ] - }, { "teal": 3262, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3057 + 3052 ] }, { "teal": 3263, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3058 + 3053 ] }, { "teal": 3264, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3059 + 3054 ] }, { "teal": 3265, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3060, - 3061 + 3055 ] }, { "teal": 3266, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3062 + 3056, + 3057 ] }, { "teal": 3267, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3063 + 3058, + 3059 ] }, { "teal": 3268, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3064 + 3060, + 3061, + 3062 ] }, { "teal": 3269, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3065 + 3063 ] }, { "teal": 3270, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3066, - 3067 + 3064 ] }, { "teal": 3271, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3068 + 3065 ] }, { "teal": 3272, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3069, - 3070 + 3066, + 3067 ] }, { "teal": 3273, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3071, - 3072, - 3073 + 3068 ] }, { "teal": 3274, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3074 + 3069 ] }, { "teal": 3275, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3075 + 3070 ] }, { "teal": 3276, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3076 + 3071 ] }, { "teal": 3277, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3077, - 3078 + 3072, + 3073 ] }, { "teal": 3278, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3079 + 3074 ] }, { "teal": 3279, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3080 + 3075, + 3076 ] }, { "teal": 3280, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3081 + 3077, + 3078, + 3079 ] }, { "teal": 3281, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3082 + 3080 ] }, { "teal": 3282, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3083 + 3081 ] }, { "teal": 3283, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3084, - 3085, - 3086 + 3082 ] }, { "teal": 3284, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3087 + 3083, + 3084 ] }, { "teal": 3285, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3088, - 3089 + 3085 ] }, { "teal": 3286, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3090, - 3091, - 3092 + 3086 ] }, { "teal": 3287, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3093 + 3087 ] }, { "teal": 3288, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3094 + 3088 ] }, { "teal": 3289, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3095 + 3089 ] }, { "teal": 3290, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3096, - 3097 + 3090 ] }, { "teal": 3291, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3091 + ] + }, + { + "teal": 3292, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3092, + 3093 + ] + }, + { + "teal": 3293, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3094 + ] + }, + { + "teal": 3296, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "errorMessage": "this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits", + "pc": [ + 3095 + ] + }, + { + "teal": 3297, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3096, + 3097, 3098 ] }, + { + "teal": 3298, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3099 + ] + }, { "teal": 3299, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3099, - 3100 + 3100, + 3101 ] }, { "teal": 3300, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3101, 3102, - 3103 + 3103, + 3104 ] }, { "teal": 3301, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3104 + 3105 ] }, { "teal": 3302, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3105 + 3106 ] }, { "teal": 3303, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3106, 3107 ] }, { "teal": 3304, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3108, - 3109, - 3110 + 3109 ] }, { "teal": 3305, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3111 + 3110 ] }, { - "teal": 3306, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "teal": 3313, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ + 3111, 3112 ] }, { - "teal": 3307, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "teal": 3314, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3113 + 3113, + 3114, + 3115 ] }, { - "teal": 3308, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3315, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3114, - 3115 + 3116 ] }, { - "teal": 3309, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3316, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3116, - 3117, - 3118 + 3117 ] }, { - "teal": 3310, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3317, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ + 3118, 3119 ] }, { - "teal": 3311, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3318, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3120 + 3120, + 3121, + 3122 ] }, { - "teal": 3312, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3319, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3121 + 3123 ] }, { - "teal": 3313, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3320, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3122, - 3123 + 3124 ] }, { - "teal": 3314, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3321, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3124, - 3125, - 3126 + 3125 ] }, { - "teal": 3315, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3322, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3127, - 3128 + 3126, + 3127 ] }, { - "teal": 3319, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3323, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ + 3128, 3129, 3130 ] }, { - "teal": 3320, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3324, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3131, - 3132 + 3131 ] }, { - "teal": 3321, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3325, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3133, - 3134 + 3132 ] }, { - "teal": 3322, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3326, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3135 + 3133 ] }, { - "teal": 3323, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3327, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ - 3136 + 3134, + 3135 ] }, { - "teal": 3324, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3328, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ + 3136, 3137, 3138 ] }, { - "teal": 3328, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3329, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ 3139, 3140 ] }, { - "teal": 3329, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3333, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3141, 3142 ] }, { - "teal": 3330, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3334, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3143, 3144 ] }, { - "teal": 3331, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3335, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3145 + 3145, + 3146 ] }, { - "teal": 3332, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3336, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3146 + 3147 ] }, { - "teal": 3333, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3337, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3147, 3148 ] }, { "teal": 3338, - "source": "examples/reti/validatorRegistry.algo.ts:904", + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3149, 3150 ] }, { - "teal": 3339, - "source": "examples/reti/validatorRegistry.algo.ts:904", + "teal": 3342, + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ 3151, - 3152, - 3153 + 3152 + ] + }, + { + "teal": 3343, + "source": "examples/reti/validatorRegistry.algo.ts:902", + "pc": [ + 3153, + 3154 ] }, { "teal": 3344, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3154, - 3155 + 3155, + 3156 ] }, { "teal": 3345, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3156 + 3157 ] }, { "teal": 3346, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3157 + 3158 ] }, { "teal": 3347, + "source": "examples/reti/validatorRegistry.algo.ts:902", + "pc": [ + 3159, + 3160 + ] + }, + { + "teal": 3352, + "source": "examples/reti/validatorRegistry.algo.ts:904", + "pc": [ + 3161, + 3162 + ] + }, + { + "teal": 3353, + "source": "examples/reti/validatorRegistry.algo.ts:904", + "pc": [ + 3163, + 3164, + 3165 + ] + }, + { + "teal": 3358, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3158 + 3166, + 3167 ] }, { - "teal": 3348, + "teal": 3359, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3159, - 3160 + 3168 ] }, { - "teal": 3349, + "teal": 3360, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3161, - 3162, - 3163 + 3169 ] }, { - "teal": 3350, + "teal": 3361, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3164 + 3170 ] }, { - "teal": 3351, + "teal": 3362, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3165 + 3171, + 3172 ] }, { - "teal": 3352, + "teal": 3363, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3166 + 3173, + 3174, + 3175 ] }, { - "teal": 3353, + "teal": 3364, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3167, - 3168 + 3176 ] }, { - "teal": 3354, + "teal": 3365, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3169 + 3177 ] }, { - "teal": 3355, + "teal": 3366, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3170 + 3178 ] }, { - "teal": 3356, + "teal": 3367, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3171 + 3179, + 3180 ] }, { - "teal": 3357, + "teal": 3368, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3172 + 3181 ] }, { - "teal": 3358, + "teal": 3369, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3173 + 3182 ] }, { - "teal": 3359, + "teal": 3370, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3174 + 3183 ] }, { - "teal": 3360, + "teal": 3371, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3175, - 3176 + 3184 ] }, { - "teal": 3361, + "teal": 3372, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3177, - 3178, - 3179 + 3185 ] }, { - "teal": 3362, + "teal": 3373, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3180 + 3186 ] }, { - "teal": 3363, + "teal": 3374, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3181 + 3187, + 3188 ] }, { - "teal": 3364, + "teal": 3375, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3182 + 3189, + 3190, + 3191 ] }, { - "teal": 3365, + "teal": 3376, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3183, - 3184 + 3192 ] }, { - "teal": 3366, + "teal": 3377, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3185 + 3193 ] }, { - "teal": 3372, + "teal": 3378, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3194 + ] + }, + { + "teal": 3379, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3195, + 3196 + ] + }, + { + "teal": 3380, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3197 + ] + }, + { + "teal": 3386, "source": "examples/reti/validatorRegistry.algo.ts:908", "pc": [ - 3186, - 3187 + 3198, + 3199 ] }, { - "teal": 3373, + "teal": 3387, "source": "examples/reti/validatorRegistry.algo.ts:908", "pc": [ - 3188, - 3189, - 3190 + 3200, + 3201, + 3202 ] }, { - "teal": 3378, + "teal": 3392, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3191, - 3192 + 3203, + 3204 ] }, { - "teal": 3379, + "teal": 3393, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3193 + 3205 ] }, { - "teal": 3380, + "teal": 3394, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3194 + 3206 ] }, { - "teal": 3381, + "teal": 3395, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3195 + 3207 ] }, { - "teal": 3382, + "teal": 3396, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3196, - 3197 + 3208, + 3209 ] }, { - "teal": 3383, + "teal": 3397, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3198 + 3210 ] }, { - "teal": 3384, + "teal": 3398, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3199 + 3211 ] }, { - "teal": 3389, + "teal": 3403, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 3200 + 3212 ] }, { - "teal": 3394, + "teal": 3408, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3201 + 3213 ] }, { - "teal": 3397, + "teal": 3411, "source": "examples/reti/validatorRegistry.algo.ts:928", "pc": [ - 3202, - 3203, - 3204 + 3214, + 3215, + 3216 ] }, { - "teal": 3398, + "teal": 3412, "source": "examples/reti/validatorRegistry.algo.ts:928", "pc": [ - 3205 + 3217 ] }, { - "teal": 3401, + "teal": 3415, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3206, - 3207, - 3208 + 3218, + 3219, + 3220 ] }, { - "teal": 3402, + "teal": 3416, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3209 + 3221 ] }, { - "teal": 3403, + "teal": 3417, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3210 + 3222 ] }, { - "teal": 3404, + "teal": 3418, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3211, - 3212 + 3223, + 3224 ] }, { - "teal": 3405, + "teal": 3419, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3213 + 3225 ] }, { - "teal": 3408, + "teal": 3422, "source": "examples/reti/validatorRegistry.algo.ts:927", "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", "pc": [ - 3214 + 3226 ] }, { - "teal": 3411, + "teal": 3425, "source": "examples/reti/validatorRegistry.algo.ts:926", "pc": [ - 3215, - 3216, - 3217 + 3227, + 3228, + 3229 ] }, { - "teal": 3412, + "teal": 3426, "source": "examples/reti/validatorRegistry.algo.ts:926", "pc": [ - 3218 + 3230 ] }, { - "teal": 3415, + "teal": 3429, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3219, - 3220, - 3221 + 3231, + 3232, + 3233 ] }, { - "teal": 3416, + "teal": 3430, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3222 + 3234 ] }, { - "teal": 3417, + "teal": 3431, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3223 + 3235 ] }, { - "teal": 3418, + "teal": 3432, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3224 + 3236 ] }, { - "teal": 3419, + "teal": 3433, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3225 + 3237 ] }, { - "teal": 3433, + "teal": 3447, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3226, - 3227, - 3228 + 3238, + 3239, + 3240 ] }, { - "teal": 3436, + "teal": 3450, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3229 + 3241 ] }, { - "teal": 3437, + "teal": 3451, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3230, - 3231 + 3242, + 3243 ] }, { - "teal": 3441, + "teal": 3455, "source": "examples/reti/validatorRegistry.algo.ts:930", "pc": [ - 3232 + 3244 ] }, { - "teal": 3442, + "teal": 3456, "source": "examples/reti/validatorRegistry.algo.ts:930", "pc": [ - 3233, - 3234 + 3245, + 3246 ] }, { - "teal": 3446, + "teal": 3460, "source": "examples/reti/validatorRegistry.algo.ts:931", "pc": [ - 3235 + 3247 ] }, { - "teal": 3447, + "teal": 3461, "source": "examples/reti/validatorRegistry.algo.ts:931", "pc": [ - 3236, - 3237 + 3248, + 3249 ] }, { - "teal": 3451, + "teal": 3465, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3238, - 3239 + 3250, + 3251 ] }, { - "teal": 3452, + "teal": 3466, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3240, - 3241, - 3242 + 3252, + 3253, + 3254 ] }, { - "teal": 3453, + "teal": 3467, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3243, - 3244 + 3255, + 3256 ] }, { - "teal": 3458, + "teal": 3472, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3245 + 3257 ] }, { - "teal": 3459, + "teal": 3473, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3246, - 3247 + 3258, + 3259 ] }, { - "teal": 3460, + "teal": 3474, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3248 + 3260 ] }, { - "teal": 3461, + "teal": 3475, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3249 + 3261 ] }, { - "teal": 3462, + "teal": 3476, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3250 + 3262 ] }, { - "teal": 3463, + "teal": 3477, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3251 + 3263 ] }, { - "teal": 3464, + "teal": 3478, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3252, - 3253, - 3254 + 3264, + 3265, + 3266 ] }, { - "teal": 3469, + "teal": 3483, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3255 + 3267 ] }, { - "teal": 3470, + "teal": 3484, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3256, - 3257 + 3268, + 3269 ] }, { - "teal": 3471, + "teal": 3485, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3258 + 3270 ] }, { - "teal": 3472, + "teal": 3486, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3259 + 3271 ] }, { - "teal": 3475, + "teal": 3489, "source": "examples/reti/validatorRegistry.algo.ts:943", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 3260 + 3272 ] }, { - "teal": 3476, + "teal": 3490, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3261, - 3262 + 3273, + 3274 ] }, { - "teal": 3480, + "teal": 3494, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3263, - 3264 + 3275, + 3276 ] }, { - "teal": 3481, + "teal": 3495, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3265 + 3277 ] }, { - "teal": 3482, + "teal": 3496, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3266 + 3278 ] }, { - "teal": 3483, + "teal": 3497, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3267 + 3279 ] }, { - "teal": 3487, + "teal": 3501, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3268 + 3280 ] }, { - "teal": 3488, + "teal": 3502, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3269, - 3270 + 3281, + 3282 ] }, { - "teal": 3493, + "teal": 3507, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3271, - 3272 + 3283, + 3284 ] }, { - "teal": 3494, + "teal": 3508, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3273, - 3274 + 3285, + 3286 ] }, { - "teal": 3495, + "teal": 3509, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3275 + 3287 ] }, { - "teal": 3496, + "teal": 3510, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3276, - 3277, - 3278 + 3288, + 3289, + 3290 ] }, { - "teal": 3501, + "teal": 3515, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3279, - 3280 + 3291, + 3292 ] }, { - "teal": 3502, + "teal": 3516, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3281, - 3282 + 3293, + 3294 ] }, { - "teal": 3503, + "teal": 3517, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3283 + 3295 ] }, { - "teal": 3504, + "teal": 3518, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3284, - 3285, - 3286 + 3296, + 3297, + 3298 ] }, { - "teal": 3509, + "teal": 3523, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3287 + 3299 ] }, { - "teal": 3510, + "teal": 3524, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3288, - 3289 + 3300, + 3301 ] }, { - "teal": 3511, + "teal": 3525, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3290, - 3291 + 3302, + 3303 ] }, { - "teal": 3512, + "teal": 3526, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3292 + 3304 ] }, { - "teal": 3513, + "teal": 3527, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3293, - 3294 + 3305, + 3306 ] }, { - "teal": 3514, + "teal": 3528, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3295, - 3296 + 3307, + 3308 ] }, { - "teal": 3515, + "teal": 3529, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3297 + 3309 ] }, { - "teal": 3516, + "teal": 3530, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3298, - 3299 + 3310, + 3311 ] }, { - "teal": 3517, + "teal": 3531, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3300, - 3301 + 3312, + 3313 ] }, { - "teal": 3518, + "teal": 3532, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3302, - 3303 + 3314, + 3315 ] }, { - "teal": 3519, + "teal": 3533, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3304, - 3305 + 3316, + 3317 ] }, { - "teal": 3520, + "teal": 3534, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3306 + 3318 ] }, { - "teal": 3526, + "teal": 3540, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3307, - 3308 + 3319, + 3320 ] }, { - "teal": 3527, + "teal": 3541, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3309, - 3310 + 3321, + 3322 ] }, { - "teal": 3528, + "teal": 3542, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3311 + 3323 ] }, { - "teal": 3529, + "teal": 3543, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3312 + 3324 ] }, { - "teal": 3530, + "teal": 3544, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3313 + 3325 ] }, { - "teal": 3531, + "teal": 3545, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3314 + 3326 ] }, { - "teal": 3532, + "teal": 3546, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3315 + 3327 ] }, { - "teal": 3533, + "teal": 3547, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3316 + 3328 ] }, { - "teal": 3534, + "teal": 3548, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3317 + 3329 ] }, { - "teal": 3535, + "teal": 3549, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3318 + 3330 ] }, { - "teal": 3536, + "teal": 3550, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3319 + 3331 ] }, { - "teal": 3537, + "teal": 3551, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3320, - 3321, - 3322 + 3332, + 3333, + 3334 ] }, { - "teal": 3540, + "teal": 3554, "source": "examples/reti/validatorRegistry.algo.ts:950", "pc": [ - 3323, - 3324, - 3325 + 3335, + 3336, + 3337 ] }, { - "teal": 3545, + "teal": 3559, "source": "examples/reti/validatorRegistry.algo.ts:952", "pc": [ - 3326 + 3338 ] }, { - "teal": 3546, + "teal": 3560, "source": "examples/reti/validatorRegistry.algo.ts:952", "pc": [ - 3327, - 3328 + 3339, + 3340 ] }, { - "teal": 3551, + "teal": 3565, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3329, - 3330 + 3341, + 3342 ] }, { - "teal": 3552, + "teal": 3566, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3331, - 3332 + 3343, + 3344 ] }, { - "teal": 3553, + "teal": 3567, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3333 + 3345 ] }, { - "teal": 3554, + "teal": 3568, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3334 + 3346 ] }, { - "teal": 3555, + "teal": 3569, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3335 + 3347 ] }, { - "teal": 3556, + "teal": 3570, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3336 + 3348 ] }, { - "teal": 3557, + "teal": 3571, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3337 + 3349 ] }, { - "teal": 3558, + "teal": 3572, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3338 + 3350 ] }, { - "teal": 3559, + "teal": 3573, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3339 + 3351 ] }, { - "teal": 3560, + "teal": 3574, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3340, - 3341 + 3352, + 3353 ] }, { - "teal": 3561, + "teal": 3575, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3342 + 3354 ] }, { - "teal": 3562, + "teal": 3576, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3343, - 3344, - 3345 + 3355, + 3356, + 3357 ] }, { - "teal": 3567, + "teal": 3581, "source": "examples/reti/validatorRegistry.algo.ts:955", "pc": [ - 3346 + 3358 ] }, { - "teal": 3568, + "teal": 3582, "source": "examples/reti/validatorRegistry.algo.ts:955", "pc": [ - 3347, - 3348 + 3359, + 3360 ] }, { - "teal": 3574, + "teal": 3588, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3349, - 3350 + 3361, + 3362 ] }, { - "teal": 3575, + "teal": 3589, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3351, - 3352 + 3363, + 3364 ] }, { - "teal": 3576, + "teal": 3590, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3353, - 3354 + 3365, + 3366 ] }, { - "teal": 3577, + "teal": 3591, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3355 + 3367 ] }, { - "teal": 3578, + "teal": 3592, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3356 + 3368 ] }, { - "teal": 3579, + "teal": 3593, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3357 + 3369 ] }, { - "teal": 3580, + "teal": 3594, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3358 + 3370 ] }, { - "teal": 3581, + "teal": 3595, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3359 + 3371 ] }, { - "teal": 3582, + "teal": 3596, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3360 + 3372 ] }, { - "teal": 3583, + "teal": 3597, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3361 + 3373 ] }, { - "teal": 3584, + "teal": 3598, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3362 + 3374 ] }, { - "teal": 3585, + "teal": 3599, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3363 + 3375 ] }, { - "teal": 3586, + "teal": 3600, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3364, - 3365 + 3376, + 3377 ] }, { - "teal": 3587, + "teal": 3601, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3366 + 3378 ] }, { - "teal": 3588, + "teal": 3602, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3367 + 3379 ] }, { - "teal": 3589, + "teal": 3603, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3368, - 3369 + 3380, + 3381 ] }, { - "teal": 3590, + "teal": 3604, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3370 + 3382 ] }, { - "teal": 3591, + "teal": 3605, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3371 + 3383 ] }, { - "teal": 3592, + "teal": 3606, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3372 + 3384 ] }, { - "teal": 3593, + "teal": 3607, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3373, - 3374 + 3385, + 3386 ] }, { - "teal": 3594, + "teal": 3608, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3375 + 3387 ] }, { - "teal": 3595, + "teal": 3609, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3376 + 3388 ] }, { - "teal": 3596, + "teal": 3610, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3377, - 3378 + 3389, + 3390 ] }, { - "teal": 3597, + "teal": 3611, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3379 + 3391 ] }, { - "teal": 3598, + "teal": 3612, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3380 + 3392 ] }, { - "teal": 3599, + "teal": 3613, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3381, - 3382 + 3393, + 3394 ] }, { - "teal": 3600, + "teal": 3614, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3383 + 3395 ] }, { - "teal": 3601, + "teal": 3615, "source": "examples/reti/validatorRegistry.algo.ts:958", "pc": [ - 3384, - 3385 + 3396, + 3397 ] }, { - "teal": 3602, + "teal": 3616, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3386 + 3398 ] }, { - "teal": 3603, + "teal": 3617, "source": "examples/reti/validatorRegistry.algo.ts:956", "pc": [ - 3387, - 3388, - 3389 + 3399, + 3400, + 3401 ] }, { - "teal": 3608, + "teal": 3622, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3390, - 3391 + 3402, + 3403 ] }, { - "teal": 3609, + "teal": 3623, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3392, - 3393 + 3404, + 3405 ] }, { - "teal": 3610, + "teal": 3624, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3394 + 3406 ] }, { - "teal": 3611, + "teal": 3625, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3395 + 3407 ] }, { - "teal": 3612, + "teal": 3626, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3396 + 3408 ] }, { - "teal": 3613, + "teal": 3627, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3397 + 3409 ] }, { - "teal": 3614, + "teal": 3628, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3398, - 3399 + 3410, + 3411 ] }, { - "teal": 3615, + "teal": 3629, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3400 + 3412 ] }, { - "teal": 3616, + "teal": 3630, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3401, - 3402 + 3413, + 3414 ] }, { - "teal": 3617, + "teal": 3631, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3403 + 3415 ] }, { - "teal": 3618, + "teal": 3632, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3404 + 3416 ] }, { - "teal": 3619, + "teal": 3633, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3405, - 3406 + 3417, + 3418 ] }, { - "teal": 3620, + "teal": 3634, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3407 + 3419 ] }, { - "teal": 3621, + "teal": 3635, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3408 + 3420 ] }, { - "teal": 3622, + "teal": 3636, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3409, - 3410, - 3411 + 3421, + 3422, + 3423 ] }, { - "teal": 3631, + "teal": 3645, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3412, - 3413 + 3424, + 3425 ] }, { - "teal": 3632, + "teal": 3646, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3414 + 3426 ] }, { - "teal": 3633, + "teal": 3647, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3415 + 3427 ] }, { - "teal": 3634, + "teal": 3648, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3416, - 3417 + 3428, + 3429 ] }, { - "teal": 3635, + "teal": 3649, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3418, - 3419, - 3420 + 3430, + 3431, + 3432 ] }, { - "teal": 3645, + "teal": 3659, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3421, - 3422 + 3433, + 3434 ] }, { - "teal": 3646, + "teal": 3660, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3423, - 3424 + 3435, + 3436 ] }, { - "teal": 3647, + "teal": 3661, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3425 + 3437 ] }, { - "teal": 3648, + "teal": 3662, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3426 + 3438 ] }, { - "teal": 3649, + "teal": 3663, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3427, - 3428 + 3439, + 3440 ] }, { - "teal": 3650, + "teal": 3664, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3429 + 3441 ] }, { - "teal": 3651, + "teal": 3665, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3430 + 3442 ] }, { - "teal": 3652, + "teal": 3666, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3431, - 3432 + 3443, + 3444 ] }, { - "teal": 3653, + "teal": 3667, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3433 + 3445 ] }, { - "teal": 3654, + "teal": 3668, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3434 + 3446 ] }, { - "teal": 3655, + "teal": 3669, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3435 + 3447 ] }, { - "teal": 3658, + "teal": 3672, "source": "examples/reti/validatorRegistry.algo.ts:967", "errorMessage": "must stake at least the minimum for this pool", "pc": [ - 3436 + 3448 ] }, { - "teal": 3662, + "teal": 3676, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3437, - 3438 + 3449, + 3450 ] }, { - "teal": 3663, + "teal": 3677, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3439, - 3440 + 3451, + 3452 ] }, { - "teal": 3664, + "teal": 3678, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3441 + 3453 ] }, { - "teal": 3665, + "teal": 3679, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3442, - 3443 + 3454, + 3455 ] }, { - "teal": 3666, + "teal": 3680, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3444 + 3456 ] }, { - "teal": 3667, + "teal": 3681, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3445 + 3457 ] }, { - "teal": 3668, + "teal": 3682, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3446, - 3447 + 3458, + 3459 ] }, { - "teal": 3669, + "teal": 3683, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3448 + 3460 ] }, { - "teal": 3670, + "teal": 3684, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3449, - 3450 + 3461, + 3462 ] }, { - "teal": 3674, + "teal": 3688, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3451, - 3452 + 3463, + 3464 ] }, { - "teal": 3675, + "teal": 3689, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3453, - 3454 + 3465, + 3466 ] }, { - "teal": 3676, + "teal": 3690, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3455 + 3467 ] }, { - "teal": 3677, + "teal": 3691, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3456, - 3457 + 3468, + 3469 ] }, { - "teal": 3678, + "teal": 3692, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3458 + 3470 ] }, { - "teal": 3679, + "teal": 3693, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3459 + 3471 ] }, { - "teal": 3680, + "teal": 3694, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3460, - 3461 + 3472, + 3473 ] }, { - "teal": 3681, + "teal": 3695, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3462 + 3474 ] }, { - "teal": 3682, + "teal": 3696, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3463 + 3475 ] }, { - "teal": 3683, + "teal": 3697, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3464, - 3465 + 3476, + 3477 ] }, { - "teal": 3687, + "teal": 3701, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3466 + 3478 ] }, { - "teal": 3688, + "teal": 3702, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3467, - 3468 + 3479, + 3480 ] }, { - "teal": 3693, + "teal": 3707, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3469, - 3470 + 3481, + 3482 ] }, { - "teal": 3694, + "teal": 3708, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3471, - 3472 + 3483, + 3484 ] }, { - "teal": 3695, + "teal": 3709, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3473 + 3485 ] }, { - "teal": 3696, + "teal": 3710, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3474, - 3475, - 3476 + 3486, + 3487, + 3488 ] }, { - "teal": 3701, + "teal": 3715, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3477, - 3478 + 3489, + 3490 ] }, { - "teal": 3702, + "teal": 3716, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3479, - 3480 + 3491, + 3492 ] }, { - "teal": 3703, + "teal": 3717, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3481, - 3482 + 3493, + 3494 ] }, { - "teal": 3704, + "teal": 3718, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3483 + 3495 ] }, { - "teal": 3705, + "teal": 3719, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3484, - 3485 + 3496, + 3497 ] }, { - "teal": 3706, + "teal": 3720, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3486 + 3498 ] }, { - "teal": 3707, + "teal": 3721, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3487 + 3499 ] }, { - "teal": 3708, + "teal": 3722, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3488 + 3500 ] }, { - "teal": 3709, + "teal": 3723, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3489 + 3501 ] }, { - "teal": 3710, + "teal": 3724, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3490, - 3491 + 3502, + 3503 ] }, { - "teal": 3711, + "teal": 3725, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3492 + 3504 ] }, { - "teal": 3712, + "teal": 3726, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3493, - 3494 + 3505, + 3506 ] }, { - "teal": 3713, + "teal": 3727, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3495 + 3507 ] }, { - "teal": 3714, + "teal": 3728, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3496, - 3497, - 3498 + 3508, + 3509, + 3510 ] }, { - "teal": 3723, + "teal": 3737, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3499, - 3500 + 3511, + 3512 ] }, { - "teal": 3724, + "teal": 3738, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3501 + 3513 ] }, { - "teal": 3725, + "teal": 3739, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3502, - 3503 + 3514, + 3515 ] }, { - "teal": 3726, + "teal": 3740, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3504 + 3516 ] }, { - "teal": 3727, + "teal": 3741, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3505 + 3517 ] }, { - "teal": 3728, + "teal": 3742, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3506 + 3518 ] }, { - "teal": 3729, + "teal": 3743, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3507 + 3519 ] }, { - "teal": 3730, + "teal": 3744, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3508, - 3509 + 3520, + 3521 ] }, { - "teal": 3731, + "teal": 3745, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3510, - 3511 + 3522, + 3523 ] }, { - "teal": 3732, + "teal": 3746, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3512, - 3513 + 3524, + 3525 ] }, { - "teal": 3733, + "teal": 3747, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3514 + 3526 ] }, { - "teal": 3734, + "teal": 3748, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3515 + 3527 ] }, { - "teal": 3735, + "teal": 3749, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3516 + 3528 ] }, { - "teal": 3736, + "teal": 3750, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3517 + 3529 ] }, { - "teal": 3737, + "teal": 3751, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3518 + 3530 ] }, { - "teal": 3738, + "teal": 3752, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3519 + 3531 ] }, { - "teal": 3739, + "teal": 3753, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3520 + 3532 ] }, { - "teal": 3740, + "teal": 3754, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3521 + 3533 ] }, { - "teal": 3741, + "teal": 3755, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3522, - 3523 + 3534, + 3535 ] }, { - "teal": 3742, + "teal": 3756, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3524 + 3536 ] }, { - "teal": 3743, + "teal": 3757, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3525, - 3526 + 3537, + 3538 ] }, { - "teal": 3744, + "teal": 3758, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3527 + 3539 ] }, { - "teal": 3745, + "teal": 3759, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3528 + 3540 ] }, { - "teal": 3746, + "teal": 3760, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3529, - 3530 + 3541, + 3542 ] }, { - "teal": 3747, + "teal": 3761, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3531 + 3543 ] }, { - "teal": 3748, + "teal": 3762, "source": "examples/reti/validatorRegistry.algo.ts:977", "pc": [ - 3532 + 3544 ] }, { - "teal": 3749, + "teal": 3763, "source": "examples/reti/validatorRegistry.algo.ts:977", "pc": [ - 3533, - 3534, - 3535 + 3545, + 3546, + 3547 ] }, { - "teal": 3756, + "teal": 3770, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3536, - 3537 + 3548, + 3549 ] }, { - "teal": 3757, + "teal": 3771, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3538 + 3550 ] }, { - "teal": 3758, + "teal": 3772, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3539 + 3551 ] }, { - "teal": 3759, + "teal": 3773, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3540, - 3541 + 3552, + 3553 ] }, { - "teal": 3760, + "teal": 3774, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3542, - 3543, - 3544 + 3554, + 3555, + 3556 ] }, { - "teal": 3765, + "teal": 3779, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3545, - 3546 + 3557, + 3558 ] }, { - "teal": 3766, + "teal": 3780, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3547 + 3559 ] }, { - "teal": 3767, + "teal": 3781, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3548, - 3549 + 3560, + 3561 ] }, { - "teal": 3768, + "teal": 3782, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3550 + 3562 ] }, { - "teal": 3769, + "teal": 3783, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3551, - 3552 + 3563, + 3564 ] }, { - "teal": 3770, + "teal": 3784, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3553 + 3565 ] }, { - "teal": 3771, + "teal": 3785, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3554, - 3555 + 3566, + 3567 ] }, { - "teal": 3772, + "teal": 3786, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3556 + 3568 ] }, { - "teal": 3773, + "teal": 3787, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3557, - 3558 + 3569, + 3570 ] }, { - "teal": 3774, + "teal": 3788, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3559 + 3571 ] }, { - "teal": 3775, + "teal": 3789, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3560 + 3572 ] }, { - "teal": 3776, + "teal": 3790, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3561, - 3562 + 3573, + 3574 ] }, { - "teal": 3777, + "teal": 3791, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3563 + 3575 ] }, { - "teal": 3778, + "teal": 3792, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3564 + 3576 ] }, { - "teal": 3782, + "teal": 3796, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3565, - 3566 + 3577, + 3578 ] }, { - "teal": 3785, + "teal": 3799, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3567, - 3568 + 3579, + 3580 ] }, { - "teal": 3786, + "teal": 3800, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3569 + 3581 ] }, { - "teal": 3791, + "teal": 3805, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3570, - 3571, - 3572 + 3582, + 3583, + 3584 ] }, { - "teal": 3792, + "teal": 3806, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3573 + 3585 ] }, { - "teal": 3795, + "teal": 3809, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3574, - 3575, - 3576 + 3586, + 3587, + 3588 ] }, { - "teal": 3796, + "teal": 3810, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3577 + 3589 ] }, { - "teal": 3799, + "teal": 3813, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3578, - 3579, - 3580 + 3590, + 3591, + 3592 ] }, { - "teal": 3800, + "teal": 3814, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3581 + 3593 ] }, { - "teal": 3803, + "teal": 3817, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3582, - 3583, - 3584 + 3594, + 3595, + 3596 ] }, { - "teal": 3804, + "teal": 3818, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3585 + 3597 ] }, { - "teal": 3805, + "teal": 3819, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3586 + 3598 ] }, { - "teal": 3819, + "teal": 3833, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3587, - 3588, - 3589 + 3599, + 3600, + 3601 ] }, { - "teal": 3822, + "teal": 3836, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3590 + 3602 ] }, { - "teal": 3823, + "teal": 3837, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3591, - 3592 + 3603, + 3604 ] }, { - "teal": 3831, + "teal": 3845, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3593, - 3594 + 3605, + 3606 ] }, { - "teal": 3832, + "teal": 3846, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3595 + 3607 ] }, { - "teal": 3833, + "teal": 3847, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3596, - 3597 + 3608, + 3609 ] }, { - "teal": 3834, + "teal": 3848, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3598 + 3610 ] }, { - "teal": 3835, + "teal": 3849, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3599, - 3600 + 3611, + 3612 ] }, { - "teal": 3836, + "teal": 3850, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3601 + 3613 ] }, { - "teal": 3837, + "teal": 3851, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3602 + 3614 ] }, { - "teal": 3838, + "teal": 3852, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3603, - 3604 + 3615, + 3616 ] }, { - "teal": 3839, + "teal": 3853, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3605 + 3617 ] }, { - "teal": 3840, + "teal": 3854, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3606 + 3618 ] }, { - "teal": 3841, + "teal": 3855, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3607 + 3619 ] }, { - "teal": 3842, + "teal": 3856, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3608, - 3609, - 3610 + 3620, + 3621, + 3622 ] }, { - "teal": 3843, + "teal": 3857, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3611, - 3612 + 3623, + 3624 ] }, { - "teal": 3844, + "teal": 3858, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3613, - 3614 + 3625, + 3626 ] }, { - "teal": 3845, + "teal": 3859, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3615, - 3616 + 3627, + 3628 ] }, { - "teal": 3846, + "teal": 3860, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3617 + 3629 ] }, { - "teal": 3847, + "teal": 3861, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3618, - 3619 + 3630, + 3631 ] }, { - "teal": 3848, + "teal": 3862, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3620 + 3632 ] }, { - "teal": 3849, + "teal": 3863, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3621 + 3633 ] }, { - "teal": 3850, + "teal": 3864, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3622, - 3623 + 3634, + 3635 ] }, { - "teal": 3851, + "teal": 3865, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3624 + 3636 ] }, { - "teal": 3852, + "teal": 3866, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3625 + 3637 ] }, { - "teal": 3853, + "teal": 3867, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3626 + 3638 ] }, { - "teal": 3857, + "teal": 3871, "source": "examples/reti/validatorRegistry.algo.ts:1001", "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 3627 + 3639 ] }, { - "teal": 3861, + "teal": 3875, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3628, - 3629 + 3640, + 3641 ] }, { - "teal": 3862, + "teal": 3876, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3630, - 3631 + 3642, + 3643 ] }, { - "teal": 3863, + "teal": 3877, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3632 + 3644 ] }, { - "teal": 3864, + "teal": 3878, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3633, - 3634 + 3645, + 3646 ] }, { - "teal": 3865, + "teal": 3879, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3635 + 3647 ] }, { - "teal": 3866, + "teal": 3880, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3636 + 3648 ] }, { - "teal": 3867, + "teal": 3881, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3637, - 3638 + 3649, + 3650 ] }, { - "teal": 3868, + "teal": 3882, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3639 + 3651 ] }, { - "teal": 3869, + "teal": 3883, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3640, - 3641 + 3652, + 3653 ] }, { - "teal": 3873, + "teal": 3887, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3642, - 3643 + 3654, + 3655 ] }, { - "teal": 3874, + "teal": 3888, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3644 + 3656 ] }, { - "teal": 3875, + "teal": 3889, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3645 + 3657 ] }, { - "teal": 3876, + "teal": 3890, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3646 + 3658 ] }, { - "teal": 3877, + "teal": 3891, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3647, - 3648, - 3649 + 3659, + 3660, + 3661 ] }, { - "teal": 3878, + "teal": 3892, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3650, - 3651 + 3662, + 3663 ] }, { - "teal": 3879, + "teal": 3893, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3652 + 3664 ] }, { - "teal": 3880, + "teal": 3894, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3653 + 3665 ] }, { - "teal": 3881, + "teal": 3895, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3654 + 3666 ] }, { - "teal": 3885, + "teal": 3899, "source": "examples/reti/validatorRegistry.algo.ts:1008", "errorMessage": "node number out of allowable range", "pc": [ - 3655 + 3667 ] }, { - "teal": 3889, + "teal": 3903, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3656 + 3668 ] }, { - "teal": 3890, + "teal": 3904, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3657, - 3658 + 3669, + 3670 ] }, { - "teal": 3895, + "teal": 3909, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3659, - 3660 + 3671, + 3672 ] }, { - "teal": 3896, + "teal": 3910, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3661 + 3673 ] }, { - "teal": 3897, + "teal": 3911, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3662 + 3674 ] }, { - "teal": 3898, + "teal": 3912, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3663, - 3664, - 3665 + 3675, + 3676, + 3677 ] }, { - "teal": 3902, + "teal": 3916, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3666 + 3678 ] }, { - "teal": 3903, + "teal": 3917, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3667, - 3668 + 3679, + 3680 ] }, { - "teal": 3908, + "teal": 3922, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3669, - 3670 + 3681, + 3682 ] }, { - "teal": 3909, + "teal": 3923, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3671, - 3672 + 3683, + 3684 ] }, { - "teal": 3910, + "teal": 3924, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3673 + 3685 ] }, { - "teal": 3911, + "teal": 3925, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3674, - 3675, - 3676 + 3686, + 3687, + 3688 ] }, { - "teal": 3916, + "teal": 3930, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3677, - 3678 + 3689, + 3690 ] }, { - "teal": 3917, + "teal": 3931, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3679 + 3691 ] }, { - "teal": 3918, + "teal": 3932, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3680, - 3681 + 3692, + 3693 ] }, { - "teal": 3919, + "teal": 3933, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3682 + 3694 ] }, { - "teal": 3920, + "teal": 3934, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3683 + 3695 ] }, { - "teal": 3921, + "teal": 3935, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3684 + 3696 ] }, { - "teal": 3922, + "teal": 3936, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3685 + 3697 ] }, { - "teal": 3923, + "teal": 3937, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3686 + 3698 ] }, { - "teal": 3924, + "teal": 3938, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3687, - 3688 + 3699, + 3700 ] }, { - "teal": 3925, + "teal": 3939, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3689 + 3701 ] }, { - "teal": 3926, + "teal": 3940, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3690 + 3702 ] }, { - "teal": 3927, + "teal": 3941, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3691 + 3703 ] }, { - "teal": 3928, + "teal": 3942, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3692 + 3704 ] }, { - "teal": 3929, + "teal": 3943, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3693 + 3705 ] }, { - "teal": 3930, + "teal": 3944, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3694 + 3706 ] }, { - "teal": 3931, + "teal": 3945, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3695, - 3696 + 3707, + 3708 ] }, { - "teal": 3932, + "teal": 3946, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3697 + 3709 ] }, { - "teal": 3933, + "teal": 3947, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3698, - 3699, - 3700 + 3710, + 3711, + 3712 ] }, { - "teal": 3938, + "teal": 3952, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3701, - 3702 + 3713, + 3714 ] }, { - "teal": 3939, + "teal": 3953, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3703 + 3715 ] }, { - "teal": 3940, + "teal": 3954, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3704 + 3716 ] }, { - "teal": 3941, + "teal": 3955, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3705, - 3706 + 3717, + 3718 ] }, { - "teal": 3942, + "teal": 3956, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3707 + 3719 ] }, { - "teal": 3945, + "teal": 3959, "source": "examples/reti/validatorRegistry.algo.ts:1013", "errorMessage": "can't move to same node", "pc": [ - 3708 + 3720 ] }, { - "teal": 3949, + "teal": 3963, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3709, - 3710 + 3721, + 3722 ] }, { - "teal": 3950, + "teal": 3964, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3711, - 3712 + 3723, + 3724 ] }, { - "teal": 3951, + "teal": 3965, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3713 + 3725 ] }, { - "teal": 3952, + "teal": 3966, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3714 + 3726 ] }, { - "teal": 3953, + "teal": 3967, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3715 + 3727 ] }, { - "teal": 3954, + "teal": 3968, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3716 + 3728 ] }, { - "teal": 3955, + "teal": 3969, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3717 + 3729 ] }, { - "teal": 3956, + "teal": 3970, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3718, - 3719 + 3730, + 3731 ] }, { - "teal": 3957, + "teal": 3971, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3720 + 3732 ] }, { - "teal": 3958, + "teal": 3972, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3721 + 3733 ] }, { - "teal": 3959, + "teal": 3973, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3722 + 3734 ] }, { - "teal": 3960, + "teal": 3974, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3723, - 3724 + 3735, + 3736 ] }, { - "teal": 3961, + "teal": 3975, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3725 + 3737 ] }, { - "teal": 3962, + "teal": 3976, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3726, - 3727 + 3738, + 3739 ] }, { - "teal": 3963, + "teal": 3977, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3728 + 3740 ] }, { - "teal": 3964, + "teal": 3978, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3729 + 3741 ] }, { - "teal": 3965, + "teal": 3979, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3730, - 3731 + 3742, + 3743 ] }, { - "teal": 3966, + "teal": 3980, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3732 + 3744 ] }, { - "teal": 3972, + "teal": 3986, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3733 + 3745 ] }, { - "teal": 3973, + "teal": 3987, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3734, - 3735 + 3746, + 3747 ] }, { - "teal": 3974, + "teal": 3988, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3736, - 3737 + 3748, + 3749 ] }, { - "teal": 3975, + "teal": 3989, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3738, - 3739, - 3740, - 3741, - 3742, - 3743 + 3750, + 3751, + 3752, + 3753, + 3754, + 3755 ] }, { - "teal": 3976, + "teal": 3990, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3744, - 3745 + 3756, + 3757 ] }, { - "teal": 3980, + "teal": 3994, "source": "examples/reti/validatorRegistry.algo.ts:1019", "pc": [ - 3746, - 3747 + 3758, + 3759 ] }, { - "teal": 3981, + "teal": 3995, "source": "examples/reti/validatorRegistry.algo.ts:1019", "pc": [ - 3748, - 3749 + 3760, + 3761 ] }, { - "teal": 3984, + "teal": 3998, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3750 + 3762 ] }, { - "teal": 3985, + "teal": 3999, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3751, - 3752 + 3763, + 3764 ] }, { - "teal": 3988, + "teal": 4002, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3753 + 3765 ] }, { - "teal": 3992, + "teal": 4006, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3754, - 3755 + 3766, + 3767 ] }, { - "teal": 3993, + "teal": 4007, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3756, - 3757 + 3768, + 3769 ] }, { - "teal": 3994, + "teal": 4008, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3758, - 3759 + 3770, + 3771 ] }, { - "teal": 3995, + "teal": 4009, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3760, - 3761, - 3762 + 3772, + 3773, + 3774 ] }, { - "teal": 3999, + "teal": 4013, "source": "examples/reti/validatorRegistry.algo.ts:1024", "pc": [ - 3763 + 3775 ] }, { - "teal": 4006, + "teal": 4020, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3764, - 3765 + 3776, + 3777 ] }, { - "teal": 4007, + "teal": 4021, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3766 + 3778 ] }, { - "teal": 4008, + "teal": 4022, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3767 + 3779 ] }, { - "teal": 4009, + "teal": 4023, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3768, - 3769 + 3780, + 3781 ] }, { - "teal": 4010, + "teal": 4024, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3770, - 3771, - 3772 + 3782, + 3783, + 3784 ] }, { - "teal": 4017, + "teal": 4031, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3773, - 3774 + 3785, + 3786 ] }, { - "teal": 4018, + "teal": 4032, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3775 + 3787 ] }, { - "teal": 4019, + "teal": 4033, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3776 + 3788 ] }, { - "teal": 4020, + "teal": 4034, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3777, - 3778 + 3789, + 3790 ] }, { - "teal": 4021, + "teal": 4035, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3779, - 3780, - 3781 + 3791, + 3792, + 3793 ] }, { - "teal": 4025, + "teal": 4039, "source": "examples/reti/validatorRegistry.algo.ts:1028", "errorMessage": "couldn't find pool app id in nodes to move", "pc": [ - 3782 + 3794 ] }, { - "teal": 4026, + "teal": 4040, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3783 + 3795 ] }, { - "teal": 4031, + "teal": 4045, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3784 + 3796 ] }, { - "teal": 4034, + "teal": 4048, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3785, - 3786, - 3787 + 3797, + 3798, + 3799 ] }, { - "teal": 4035, + "teal": 4049, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3788 + 3800 ] }, { - "teal": 4036, + "teal": 4050, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3789 + 3801 ] }, { - "teal": 4037, + "teal": 4051, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3790, - 3791 + 3802, + 3803 ] }, { - "teal": 4038, + "teal": 4052, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3792 + 3804 ] }, { - "teal": 4041, + "teal": 4055, "source": "examples/reti/validatorRegistry.algo.ts:1042", "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", "pc": [ - 3793 + 3805 ] }, { - "teal": 4044, + "teal": 4058, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3794, - 3795, - 3796 + 3806, + 3807, + 3808 ] }, { - "teal": 4045, + "teal": 4059, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3797 + 3809 ] }, { - "teal": 4048, + "teal": 4062, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3798, - 3799, - 3800 + 3810, + 3811, + 3812 ] }, { - "teal": 4049, + "teal": 4063, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3801 + 3813 ] }, { - "teal": 4050, + "teal": 4064, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3802 + 3814 ] }, { - "teal": 4051, + "teal": 4065, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3803 + 3815 ] }, { - "teal": 4052, + "teal": 4066, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3804 + 3816 ] }, { - "teal": 4053, + "teal": 4067, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3805 + 3817 ] }, { - "teal": 4067, + "teal": 4081, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3806, - 3807, - 3808 + 3818, + 3819, + 3820 ] }, { - "teal": 4070, + "teal": 4084, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3809 + 3821 ] }, { - "teal": 4071, + "teal": 4085, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3810, - 3811 + 3822, + 3823 ] }, { - "teal": 4078, + "teal": 4092, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3812, - 3813 + 3824, + 3825 ] }, { - "teal": 4079, + "teal": 4093, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3814 + 3826 ] }, { - "teal": 4080, + "teal": 4094, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3815, - 3816 + 3827, + 3828 ] }, { - "teal": 4081, + "teal": 4095, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3817 + 3829 ] }, { - "teal": 4082, + "teal": 4096, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3818, - 3819 + 3830, + 3831 ] }, { - "teal": 4083, + "teal": 4097, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3820 + 3832 ] }, { - "teal": 4084, + "teal": 4098, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3821 + 3833 ] }, { - "teal": 4085, + "teal": 4099, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3822, - 3823 + 3834, + 3835 ] }, { - "teal": 4086, + "teal": 4100, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3824 + 3836 ] }, { - "teal": 4087, + "teal": 4101, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3825 + 3837 ] }, { - "teal": 4090, + "teal": 4104, "source": "examples/reti/validatorRegistry.algo.ts:1043", "errorMessage": "can only be called by validator owner", "pc": [ - 3826 + 3838 ] }, { - "teal": 4094, + "teal": 4108, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3827, - 3828 + 3839, + 3840 ] }, { - "teal": 4095, + "teal": 4109, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3829 + 3841 ] }, { - "teal": 4096, + "teal": 4110, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3830 + 3842 ] }, { - "teal": 4097, + "teal": 4111, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3831, - 3832 + 3843, + 3844 ] }, { - "teal": 4098, + "teal": 4112, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3833 + 3845 ] }, { - "teal": 4099, + "teal": 4113, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3834 + 3846 ] }, { - "teal": 4100, + "teal": 4114, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3835, - 3836 + 3847, + 3848 ] }, { - "teal": 4101, + "teal": 4115, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3837 + 3849 ] }, { - "teal": 4102, + "teal": 4116, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3838 + 3850 ] }, { - "teal": 4103, + "teal": 4117, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3839, - 3840 + 3851, + 3852 ] }, { - "teal": 4107, + "teal": 4121, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3841, - 3842 + 3853, + 3854 ] }, { - "teal": 4108, + "teal": 4122, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3843 + 3855 ] }, { - "teal": 4109, + "teal": 4123, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3844 + 3856 ] }, { - "teal": 4110, + "teal": 4124, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3845, - 3846 + 3857, + 3858 ] }, { - "teal": 4111, + "teal": 4125, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3847 + 3859 ] }, { - "teal": 4112, + "teal": 4126, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3848 + 3860 ] }, { - "teal": 4113, + "teal": 4127, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3849, - 3850 + 3861, + 3862 ] }, { - "teal": 4114, + "teal": 4128, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3851 + 3863 ] }, { - "teal": 4115, + "teal": 4129, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3852 + 3864 ] }, { - "teal": 4116, + "teal": 4130, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3853, - 3854 + 3865, + 3866 ] }, { - "teal": 4120, + "teal": 4134, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3855, - 3856 + 3867, + 3868 ] }, { - "teal": 4121, + "teal": 4135, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3857 + 3869 ] }, { - "teal": 4122, + "teal": 4136, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3858 + 3870 ] }, { - "teal": 4125, + "teal": 4139, "source": "examples/reti/validatorRegistry.algo.ts:1049", "errorMessage": "this validator doesn't have a reward token defined", "pc": [ - 3859 + 3871 ] }, { - "teal": 4129, + "teal": 4143, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3860, - 3861 + 3872, + 3873 ] }, { - "teal": 4130, + "teal": 4144, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3862 + 3874 ] }, { - "teal": 4131, + "teal": 4145, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3863 + 3875 ] }, { - "teal": 4132, + "teal": 4146, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3864, - 3865 + 3876, + 3877 ] }, { - "teal": 4133, + "teal": 4147, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3866 + 3878 ] }, { - "teal": 4134, + "teal": 4148, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3867 + 3879 ] }, { - "teal": 4135, + "teal": 4149, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3868, - 3869 + 3880, + 3881 ] }, { - "teal": 4136, + "teal": 4150, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3870 + 3882 ] }, { - "teal": 4137, + "teal": 4151, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3871 + 3883 ] }, { - "teal": 4138, + "teal": 4152, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3872, - 3873 + 3884, + 3885 ] }, { - "teal": 4142, + "teal": 4156, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3874, - 3875 + 3886, + 3887 ] }, { - "teal": 4143, + "teal": 4157, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3876, - 3877 + 3888, + 3889 ] }, { - "teal": 4144, + "teal": 4158, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3878 + 3890 ] }, { - "teal": 4145, + "teal": 4159, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3879, - 3880 + 3891, + 3892 ] }, { - "teal": 4146, + "teal": 4160, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3881, - 3882 + 3893, + 3894 ] }, { - "teal": 4147, + "teal": 4161, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3883 + 3895 ] }, { - "teal": 4148, + "teal": 4162, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3884, - 3885 + 3896, + 3897 ] }, { - "teal": 4149, + "teal": 4163, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3886 + 3898 ] }, { - "teal": 4150, + "teal": 4164, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3887, - 3888 + 3899, + 3900 ] }, { - "teal": 4157, + "teal": 4171, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3889 + 3901 ] }, { - "teal": 4158, + "teal": 4172, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3890, - 3891 + 3902, + 3903 ] }, { - "teal": 4159, + "teal": 4173, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3892, - 3893 + 3904, + 3905 ] }, { - "teal": 4160, + "teal": 4174, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3894, - 3895 + 3906, + 3907 ] }, { - "teal": 4161, + "teal": 4175, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3896, - 3897 + 3908, + 3909 ] }, { - "teal": 4165, + "teal": 4179, "source": "examples/reti/validatorRegistry.algo.ts:1056", "pc": [ - 3898, - 3899 + 3910, + 3911 ] }, { - "teal": 4166, + "teal": 4180, "source": "examples/reti/validatorRegistry.algo.ts:1056", "pc": [ - 3900, - 3901 + 3912, + 3913 ] }, { - "teal": 4170, + "teal": 4184, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3902, - 3903 + 3914, + 3915 ] }, { - "teal": 4171, + "teal": 4185, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3904, - 3905 + 3916, + 3917 ] }, { - "teal": 4172, + "teal": 4186, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3906, - 3907 + 3918, + 3919 ] }, { - "teal": 4173, + "teal": 4187, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3908 + 3920 ] }, { - "teal": 4174, + "teal": 4188, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3909, - 3910 + 3921, + 3922 ] }, { - "teal": 4175, + "teal": 4189, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3911, - 3912 + 3923, + 3924 ] }, { - "teal": 4176, + "teal": 4190, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3913 + 3925 ] }, { - "teal": 4177, + "teal": 4191, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3914, - 3915 + 3926, + 3927 ] }, { - "teal": 4180, + "teal": 4194, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3916 + 3928 ] }, { - "teal": 4181, + "teal": 4195, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3917, - 3918 + 3929, + 3930 ] }, { - "teal": 4184, + "teal": 4198, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3919 + 3931 ] }, { - "teal": 4191, + "teal": 4205, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3920, - 3921 + 3932, + 3933 ] }, { - "teal": 4192, + "teal": 4206, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3922, - 3923 + 3934, + 3935 ] }, { - "teal": 4193, + "teal": 4207, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3924 + 3936 ] }, { - "teal": 4194, + "teal": 4208, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3925, - 3926 + 3937, + 3938 ] }, { - "teal": 4195, + "teal": 4209, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3927, - 3928 + 3939, + 3940 ] }, { - "teal": 4196, + "teal": 4210, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3929 + 3941 ] }, { - "teal": 4197, + "teal": 4211, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3930, - 3931 + 3942, + 3943 ] }, { - "teal": 4198, + "teal": 4212, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3932 + 3944 ] }, { - "teal": 4201, + "teal": 4215, "source": "examples/reti/validatorRegistry.algo.ts:1059", "errorMessage": "balance of remaining reward tokens should match the held back amount", "pc": [ - 3933 + 3945 ] }, { - "teal": 4205, + "teal": 4219, "source": "examples/reti/validatorRegistry.algo.ts:1063", "pc": [ - 3934, - 3935 + 3946, + 3947 ] }, { - "teal": 4208, + "teal": 4222, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3936, - 3937 + 3948, + 3949 ] }, { - "teal": 4211, + "teal": 4225, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3938, - 3939 + 3950, + 3951 ] }, { - "teal": 4212, + "teal": 4226, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3940 + 3952 ] }, { - "teal": 4223, + "teal": 4237, "source": "examples/reti/validatorRegistry.algo.ts:1160", "pc": [ - 3941, - 3942, - 3943 + 3953, + 3954, + 3955 ] }, { - "teal": 4227, + "teal": 4241, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3944 + 3956 ] }, { - "teal": 4228, + "teal": 4242, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3945, - 3946 + 3957, + 3958 ] }, { - "teal": 4229, + "teal": 4243, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3947, - 3948, - 3949 + 3959, + 3960, + 3961 ] }, { - "teal": 4230, + "teal": 4244, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3950 + 3962 ] }, { - "teal": 4231, + "teal": 4245, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3951 + 3963 ] }, { - "teal": 4232, + "teal": 4246, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3952 + 3964 ] }, { - "teal": 4233, + "teal": 4247, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3953 + 3965 ] }, { - "teal": 4234, + "teal": 4248, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3954 + 3966 ] }, { - "teal": 4235, + "teal": 4249, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3955 + 3967 ] }, { - "teal": 4238, + "teal": 4252, "source": "examples/reti/validatorRegistry.algo.ts:1161", "errorMessage": "the specified validator id isn't valid", "pc": [ - 3956 + 3968 ] }, { - "teal": 4242, + "teal": 4256, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3957, - 3958 + 3969, + 3970 ] }, { - "teal": 4243, + "teal": 4257, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3959, - 3960, - 3961 + 3971, + 3972, + 3973 ] }, { - "teal": 4244, + "teal": 4258, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3962 + 3974 ] }, { - "teal": 4245, + "teal": 4259, "source": "examples/reti/validatorRegistry.algo.ts:32", "pc": [ - 3963 + 3975 ] }, { - "teal": 4246, + "teal": 4260, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3964 + 3976 ] }, { - "teal": 4249, + "teal": 4263, "source": "examples/reti/validatorRegistry.algo.ts:1162", "errorMessage": "pool id not in valid range", "pc": [ - 3965 + 3977 ] }, { - "teal": 4256, + "teal": 4270, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3966, - 3967 + 3978, + 3979 ] }, { - "teal": 4257, + "teal": 4271, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3968, - 3969, - 3970 + 3980, + 3981, + 3982 ] }, { - "teal": 4258, + "teal": 4272, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3971 + 3983 ] }, { - "teal": 4259, + "teal": 4273, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3972 + 3984 ] }, { - "teal": 4260, + "teal": 4274, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3973 + 3985 ] }, { - "teal": 4261, + "teal": 4275, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3974 + 3986 ] }, { - "teal": 4262, + "teal": 4276, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3975, - 3976, - 3977 + 3987, + 3988, + 3989 ] }, { - "teal": 4263, + "teal": 4277, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3978, - 3979 + 3990, + 3991 ] }, { - "teal": 4264, + "teal": 4278, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3980, - 3981, - 3982 + 3992, + 3993, + 3994 ] }, { - "teal": 4265, + "teal": 4279, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3983 + 3995 ] }, { - "teal": 4266, + "teal": 4280, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3984, - 3985 + 3996, + 3997 ] }, { - "teal": 4267, + "teal": 4281, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3986, - 3987 + 3998, + 3999 ] }, { - "teal": 4268, + "teal": 4282, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3988 + 4000 ] }, { - "teal": 4269, + "teal": 4283, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3989, - 3990 + 4001, + 4002 ] }, { - "teal": 4270, + "teal": 4284, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3991, - 3992, - 3993 + 4003, + 4004, + 4005 ] }, { - "teal": 4271, + "teal": 4285, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3994 + 4006 ] }, { - "teal": 4272, + "teal": 4286, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3995 + 4007 ] }, { - "teal": 4273, + "teal": 4287, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3996 + 4008 ] }, { - "teal": 4274, + "teal": 4288, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3997, - 3998 + 4009, + 4010 ] }, { - "teal": 4275, + "teal": 4289, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3999 + 4011 ] }, { - "teal": 4276, + "teal": 4290, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4000 + 4012 ] }, { - "teal": 4277, + "teal": 4291, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4001 + 4013 ] }, { - "teal": 4278, + "teal": 4292, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4002 + 4014 ] }, { - "teal": 4282, + "teal": 4296, "source": "examples/reti/validatorRegistry.algo.ts:1163", "errorMessage": "pool id outside of range of pools created for this validator", "pc": [ - 4003 + 4015 ] }, { - "teal": 4289, + "teal": 4303, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4004, - 4005 + 4016, + 4017 ] }, { - "teal": 4290, + "teal": 4304, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4006, - 4007, - 4008 + 4018, + 4019, + 4020 ] }, { - "teal": 4291, + "teal": 4305, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4009 + 4021 ] }, { - "teal": 4292, + "teal": 4306, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4010, - 4011 + 4022, + 4023 ] }, { - "teal": 4293, + "teal": 4307, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4012, - 4013 + 4024, + 4025 ] }, { - "teal": 4294, + "teal": 4308, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4014, - 4015, - 4016 + 4026, + 4027, + 4028 ] }, { - "teal": 4295, + "teal": 4309, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4017 + 4029 ] }, { - "teal": 4296, + "teal": 4310, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4018 + 4030 ] }, { - "teal": 4297, + "teal": 4311, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4019 + 4031 ] }, { - "teal": 4298, + "teal": 4312, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4020, - 4021 + 4032, + 4033 ] }, { - "teal": 4299, + "teal": 4313, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4022 + 4034 ] }, { - "teal": 4300, + "teal": 4314, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4023 + 4035 ] }, { - "teal": 4301, + "teal": 4315, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4024 + 4036 ] }, { - "teal": 4302, + "teal": 4316, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4025 + 4037 ] }, { - "teal": 4303, + "teal": 4317, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4026 + 4038 ] }, { - "teal": 4304, + "teal": 4318, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4027 + 4039 ] }, { - "teal": 4305, + "teal": 4319, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4028, - 4029 + 4040, + 4041 ] }, { - "teal": 4306, + "teal": 4320, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4030, - 4031, - 4032 + 4042, + 4043, + 4044 ] }, { - "teal": 4307, + "teal": 4321, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4033 + 4045 ] }, { - "teal": 4308, + "teal": 4322, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4034 + 4046 ] }, { - "teal": 4309, + "teal": 4323, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4035 + 4047 ] }, { - "teal": 4310, + "teal": 4324, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4036, - 4037 + 4048, + 4049 ] }, { - "teal": 4311, + "teal": 4325, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4038 + 4050 ] }, { - "teal": 4312, + "teal": 4326, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4039 + 4051 ] }, { - "teal": 4313, + "teal": 4327, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4040 + 4052 ] }, { - "teal": 4316, + "teal": 4330, "source": "examples/reti/validatorRegistry.algo.ts:1169", "errorMessage": "The passed in app id doesn't match the passed in ids", "pc": [ - 4041 + 4053 ] }, { - "teal": 4320, + "teal": 4334, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4042, - 4043 + 4054, + 4055 ] }, { - "teal": 4321, + "teal": 4335, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4044, - 4045 + 4056, + 4057 ] }, { - "teal": 4322, + "teal": 4336, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4046, - 4047, - 4048 + 4058, + 4059, + 4060 ] }, { - "teal": 4323, + "teal": 4337, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4049 + 4061 ] }, { - "teal": 4324, + "teal": 4338, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4050, - 4051 + 4062, + 4063 ] }, { - "teal": 4325, + "teal": 4339, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4052 + 4064 ] }, { - "teal": 4326, + "teal": 4340, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4053 + 4065 ] }, { - "teal": 4327, + "teal": 4341, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4054 + 4066 ] }, { - "teal": 4331, + "teal": 4345, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4055, - 4056 + 4067, + 4068 ] }, { - "teal": 4332, + "teal": 4346, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4057, - 4058, - 4059 + 4069, + 4070, + 4071 ] }, { - "teal": 4333, + "teal": 4347, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4060 + 4072 ] }, { - "teal": 4334, + "teal": 4348, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4061, - 4062 + 4073, + 4074 ] }, { - "teal": 4335, + "teal": 4349, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4063, - 4064, - 4065 + 4075, + 4076, + 4077 ] }, { - "teal": 4336, + "teal": 4350, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4066 + 4078 ] }, { - "teal": 4337, + "teal": 4351, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4067, - 4068, - 4069, - 4070, - 4071, - 4072, - 4073, - 4074, - 4075, - 4076, - 4077, - 4078, - 4079 + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4090, + 4091 ] }, { - "teal": 4338, + "teal": 4352, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4080 + 4092 ] }, { - "teal": 4341, + "teal": 4355, "source": "examples/reti/validatorRegistry.algo.ts:1176", "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", "pc": [ - 4081 + 4093 ] }, { - "teal": 4342, + "teal": 4356, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4082 + 4094 ] }, { - "teal": 4343, + "teal": 4357, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4083 + 4095 ] }, { - "teal": 4347, + "teal": 4361, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4084, - 4085 + 4096, + 4097 ] }, { - "teal": 4348, + "teal": 4362, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4086, - 4087, - 4088 + 4098, + 4099, + 4100 ] }, { - "teal": 4349, + "teal": 4363, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4089 + 4101 ] }, { - "teal": 4350, + "teal": 4364, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4090, - 4091 + 4102, + 4103 ] }, { - "teal": 4351, + "teal": 4365, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4092, - 4093, - 4094 + 4104, + 4105, + 4106 ] }, { - "teal": 4352, + "teal": 4366, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4095 + 4107 ] }, { - "teal": 4353, + "teal": 4367, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103 + 4108, + 4109, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115 ] }, { - "teal": 4354, + "teal": 4368, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4104 + 4116 ] }, { - "teal": 4357, + "teal": 4371, "source": "examples/reti/validatorRegistry.algo.ts:1177", "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", "pc": [ - 4105 + 4117 ] }, { - "teal": 4358, + "teal": 4372, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4106 + 4118 ] }, { - "teal": 4359, + "teal": 4373, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4107 + 4119 ] }, { - "teal": 4360, + "teal": 4374, "source": "examples/reti/validatorRegistry.algo.ts:1160", "pc": [ - 4108 + 4120 ] }, { - "teal": 4369, + "teal": 4383, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4109, - 4110, - 4111 + 4121, + 4122, + 4123 ] }, { - "teal": 4372, + "teal": 4386, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4112 + 4124 ] }, { - "teal": 4373, + "teal": 4387, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4113 + 4125 ] }, { - "teal": 4377, + "teal": 4391, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4114 + 4126 ] }, { - "teal": 4378, + "teal": 4392, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4115, - 4116 + 4127, + 4128 ] }, { - "teal": 4379, + "teal": 4393, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4117 + 4129 ] }, { - "teal": 4380, + "teal": 4394, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4118 + 4130 ] }, { - "teal": 4381, + "teal": 4395, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4119, - 4120 + 4131, + 4132 ] }, { - "teal": 4386, + "teal": 4400, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4121, - 4122 + 4133, + 4134 ] }, { - "teal": 4387, + "teal": 4401, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4123 + 4135 ] }, { - "teal": 4388, + "teal": 4402, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4124 + 4136 ] }, { - "teal": 4389, + "teal": 4403, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4125, - 4126 + 4137, + 4138 ] }, { - "teal": 4390, + "teal": 4404, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4127 + 4139 ] }, { - "teal": 4391, + "teal": 4405, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4128 + 4140 ] }, { - "teal": 4392, + "teal": 4406, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4129, - 4130 + 4141, + 4142 ] }, { - "teal": 4393, + "teal": 4407, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4131 + 4143 ] }, { - "teal": 4394, + "teal": 4408, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4132 + 4144 ] }, { - "teal": 4395, + "teal": 4409, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4133 + 4145 ] }, { - "teal": 4396, + "teal": 4410, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4134 + 4146 ] }, { - "teal": 4397, + "teal": 4411, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4135, - 4136, - 4137 + 4147, + 4148, + 4149 ] }, { - "teal": 4402, + "teal": 4416, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4138, - 4139 + 4150, + 4151 ] }, { - "teal": 4403, + "teal": 4417, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4140 + 4152 ] }, { - "teal": 4404, + "teal": 4418, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4141 + 4153 ] }, { - "teal": 4405, + "teal": 4419, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4142, - 4143 + 4154, + 4155 ] }, { - "teal": 4406, + "teal": 4420, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4144 + 4156 ] }, { - "teal": 4407, + "teal": 4421, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4145 + 4157 ] }, { - "teal": 4408, + "teal": 4422, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4146, - 4147 + 4158, + 4159 ] }, { - "teal": 4409, + "teal": 4423, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4148 + 4160 ] }, { - "teal": 4410, + "teal": 4424, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4149 + 4161 ] }, { - "teal": 4411, + "teal": 4425, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4150, - 4151 + 4162, + 4163 ] }, { - "teal": 4412, + "teal": 4426, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4152 + 4164 ] }, { - "teal": 4415, + "teal": 4429, "source": "examples/reti/validatorRegistry.algo.ts:1191", "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", "pc": [ - 4153 + 4165 ] }, { - "teal": 4416, + "teal": 4430, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4154, - 4155 + 4166, + 4167 ] }, { - "teal": 4421, + "teal": 4435, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4156 + 4168 ] }, { - "teal": 4422, + "teal": 4436, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4157, - 4158 + 4169, + 4170 ] }, { - "teal": 4423, + "teal": 4437, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4159 + 4171 ] }, { - "teal": 4424, + "teal": 4438, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4160, - 4161 + 4172, + 4173 ] }, { - "teal": 4425, + "teal": 4439, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4162 + 4174 ] }, { - "teal": 4426, + "teal": 4440, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4163 + 4175 ] }, { - "teal": 4427, + "teal": 4441, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4164, - 4165 + 4176, + 4177 ] }, { - "teal": 4428, + "teal": 4442, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4166 + 4178 ] }, { - "teal": 4429, + "teal": 4443, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4167, - 4168 + 4179, + 4180 ] }, { - "teal": 4430, + "teal": 4444, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4169 + 4181 ] }, { - "teal": 4431, + "teal": 4445, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4170 + 4182 ] }, { - "teal": 4432, + "teal": 4446, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4171, - 4172, - 4173 + 4183, + 4184, + 4185 ] }, { - "teal": 4433, + "teal": 4447, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4174, - 4175 + 4186, + 4187 ] }, { - "teal": 4434, + "teal": 4448, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4176, - 4177 + 4188, + 4189 ] }, { - "teal": 4435, + "teal": 4449, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4178 + 4190 ] }, { - "teal": 4436, + "teal": 4450, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4179, - 4180 + 4191, + 4192 ] }, { - "teal": 4437, + "teal": 4451, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4181 + 4193 ] }, { - "teal": 4438, + "teal": 4452, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4182 + 4194 ] }, { - "teal": 4439, + "teal": 4453, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4183, - 4184 + 4195, + 4196 ] }, { - "teal": 4440, + "teal": 4454, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4185 + 4197 ] }, { - "teal": 4441, + "teal": 4455, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4186, - 4187 + 4198, + 4199 ] }, { - "teal": 4442, + "teal": 4456, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4188 + 4200 ] }, { - "teal": 4443, + "teal": 4457, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4189 + 4201 ] }, { - "teal": 4446, + "teal": 4460, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4190, - 4191, - 4192 + 4202, + 4203, + 4204 ] }, { - "teal": 4451, + "teal": 4465, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4193, - 4194 + 4205, + 4206 ] }, { - "teal": 4452, + "teal": 4466, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4195, - 4196 + 4207, + 4208 ] }, { - "teal": 4453, + "teal": 4467, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4197 + 4209 ] }, { - "teal": 4454, + "teal": 4468, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4198, - 4199 + 4210, + 4211 ] }, { - "teal": 4455, + "teal": 4469, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4200 + 4212 ] }, { - "teal": 4456, + "teal": 4470, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4201 + 4213 ] }, { - "teal": 4457, + "teal": 4471, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4202, - 4203 + 4214, + 4215 ] }, { - "teal": 4458, + "teal": 4472, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4204 + 4216 ] }, { - "teal": 4463, + "teal": 4477, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4205 + 4217 ] }, { - "teal": 4467, + "teal": 4481, "source": "examples/reti/validatorRegistry.algo.ts:1200", "pc": [ - 4206, - 4207, - 4208 + 4218, + 4219, + 4220 ] }, { - "teal": 4474, + "teal": 4488, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4209, - 4210 - ] + 4221, + 4222 + ] }, { - "teal": 4475, + "teal": 4489, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4211, - 4212, - 4213 + 4223, + 4224, + 4225 ] }, { - "teal": 4476, + "teal": 4490, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4214 + 4226 ] }, { - "teal": 4477, + "teal": 4491, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4215 + 4227 ] }, { - "teal": 4478, + "teal": 4492, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4216 + 4228 ] }, { - "teal": 4479, + "teal": 4493, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4217 + 4229 ] }, { - "teal": 4480, + "teal": 4494, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4218, - 4219, - 4220 + 4230, + 4231, + 4232 ] }, { - "teal": 4481, + "teal": 4495, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4221, - 4222 + 4233, + 4234 ] }, { - "teal": 4482, + "teal": 4496, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4223, - 4224, - 4225 + 4235, + 4236, + 4237 ] }, { - "teal": 4483, + "teal": 4497, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4226 + 4238 ] }, { - "teal": 4484, + "teal": 4498, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4227, - 4228 + 4239, + 4240 ] }, { - "teal": 4485, + "teal": 4499, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4229 + 4241 ] }, { - "teal": 4486, + "teal": 4500, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4230 + 4242 ] }, { - "teal": 4490, + "teal": 4504, "source": "examples/reti/validatorRegistry.algo.ts:1202", "errorMessage": "gating type not valid", "pc": [ - 4231 + 4243 ] }, { - "teal": 4497, + "teal": 4511, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4232, - 4233 + 4244, + 4245 ] }, { - "teal": 4498, + "teal": 4512, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4234, - 4235, - 4236 + 4246, + 4247, + 4248 ] }, { - "teal": 4499, + "teal": 4513, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4237 + 4249 ] }, { - "teal": 4500, + "teal": 4514, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4238 + 4250 ] }, { - "teal": 4501, + "teal": 4515, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4239 + 4251 ] }, { - "teal": 4502, + "teal": 4516, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4240 + 4252 ] }, { - "teal": 4503, + "teal": 4517, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4241, - 4242, - 4243 + 4253, + 4254, + 4255 ] }, { - "teal": 4504, + "teal": 4518, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4244, - 4245 + 4256, + 4257 ] }, { - "teal": 4505, + "teal": 4519, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4246, - 4247, - 4248 + 4258, + 4259, + 4260 ] }, { - "teal": 4506, + "teal": 4520, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4249 + 4261 ] }, { - "teal": 4507, + "teal": 4521, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4250, - 4251 + 4262, + 4263 ] }, { - "teal": 4508, + "teal": 4522, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4252 + 4264 ] }, { - "teal": 4509, + "teal": 4523, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4253 + 4265 ] }, { - "teal": 4513, + "teal": 4527, "source": "examples/reti/validatorRegistry.algo.ts:1206", "errorMessage": "epoch length not in allowable range", "pc": [ - 4254 + 4266 ] }, { - "teal": 4520, + "teal": 4534, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4255, - 4256 + 4267, + 4268 ] }, { - "teal": 4521, + "teal": 4535, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4257, - 4258, - 4259 + 4269, + 4270, + 4271 ] }, { - "teal": 4522, + "teal": 4536, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4260 + 4272 ] }, { - "teal": 4523, + "teal": 4537, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4261 + 4273 ] }, { - "teal": 4524, + "teal": 4538, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4262 + 4274 ] }, { - "teal": 4525, + "teal": 4539, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4263 + 4275 ] }, { - "teal": 4526, + "teal": 4540, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4264, - 4265, - 4266 + 4276, + 4277, + 4278 ] }, { - "teal": 4527, + "teal": 4541, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4267, - 4268 + 4279, + 4280 ] }, { - "teal": 4528, + "teal": 4542, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4269, - 4270, - 4271 + 4281, + 4282, + 4283 ] }, { - "teal": 4529, + "teal": 4543, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4272 + 4284 ] }, { - "teal": 4530, + "teal": 4544, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4273, - 4274 + 4285, + 4286 ] }, { - "teal": 4531, + "teal": 4545, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4275 + 4287 ] }, { - "teal": 4532, + "teal": 4546, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4276 + 4288 ] }, { - "teal": 4536, + "teal": 4550, "source": "examples/reti/validatorRegistry.algo.ts:1210", "errorMessage": "commission percentage not valid", "pc": [ - 4277 + 4289 ] }, { - "teal": 4541, + "teal": 4555, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4278, - 4279 + 4290, + 4291 ] }, { - "teal": 4542, + "teal": 4556, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4280, - 4281, - 4282 + 4292, + 4293, + 4294 ] }, { - "teal": 4543, + "teal": 4557, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4283 + 4295 ] }, { - "teal": 4544, + "teal": 4558, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4284 + 4296 ] }, { - "teal": 4545, + "teal": 4559, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4285 + 4297 ] }, { - "teal": 4546, + "teal": 4560, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4286, - 4287, - 4288 + 4298, + 4299, + 4300 ] }, { - "teal": 4554, + "teal": 4568, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4289, - 4290 + 4301, + 4302 ] }, { - "teal": 4555, + "teal": 4569, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4291, - 4292, - 4293 + 4303, + 4304, + 4305 ] }, { - "teal": 4556, + "teal": 4570, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4294, - 4295 + 4306, + 4307 ] }, { - "teal": 4557, + "teal": 4571, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4296 + 4308 ] }, { - "teal": 4560, + "teal": 4574, "source": "examples/reti/validatorRegistry.algo.ts:1215", "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", "pc": [ - 4297 + 4309 ] }, { - "teal": 4565, + "teal": 4579, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4298, - 4299 + 4310, + 4311 ] }, { - "teal": 4566, + "teal": 4580, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4300, - 4301, - 4302 + 4312, + 4313, + 4314 ] }, { - "teal": 4567, + "teal": 4581, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4303 + 4315 ] }, { - "teal": 4568, + "teal": 4582, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4304, - 4305 + 4316, + 4317 ] }, { - "teal": 4569, + "teal": 4583, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4306 + 4318 ] }, { - "teal": 4572, + "teal": 4586, "source": "examples/reti/validatorRegistry.algo.ts:1220", "errorMessage": "staking pool must have minimum entry of 1 algo", "pc": [ - 4307 + 4319 ] }, { - "teal": 4579, + "teal": 4593, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4308, - 4309 + 4320, + 4321 ] }, { - "teal": 4580, + "teal": 4594, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4310, - 4311, - 4312 + 4322, + 4323, + 4324 ] }, { - "teal": 4581, + "teal": 4595, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4313 + 4325 ] }, { - "teal": 4582, + "teal": 4596, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4314 + 4326 ] }, { - "teal": 4583, + "teal": 4597, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4315 + 4327 ] }, { - "teal": 4584, + "teal": 4598, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4316 + 4328 ] }, { - "teal": 4585, + "teal": 4599, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4317, - 4318, - 4319 + 4329, + 4330, + 4331 ] }, { - "teal": 4586, + "teal": 4600, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4320, - 4321 + 4332, + 4333 ] }, { - "teal": 4587, + "teal": 4601, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4322, - 4323, - 4324 + 4334, + 4335, + 4336 ] }, { - "teal": 4588, + "teal": 4602, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4325 + 4337 ] }, { - "teal": 4589, + "teal": 4603, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4326, - 4327 + 4338, + 4339 ] }, { - "teal": 4590, + "teal": 4604, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4328 + 4340 ] }, { - "teal": 4591, + "teal": 4605, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4329 + 4341 ] }, { - "teal": 4595, + "teal": 4609, "source": "examples/reti/validatorRegistry.algo.ts:1222", "errorMessage": "number of pools per node exceeds allowed number", "pc": [ - 4330 + 4342 ] }, { - "teal": 4600, + "teal": 4614, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4331, - 4332 + 4343, + 4344 ] }, { - "teal": 4601, + "teal": 4615, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4333, - 4334, - 4335 + 4345, + 4346, + 4347 ] }, { - "teal": 4602, + "teal": 4616, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4336 + 4348 ] }, { - "teal": 4603, + "teal": 4617, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4337 + 4349 ] }, { - "teal": 4604, + "teal": 4618, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4338 + 4350 ] }, { - "teal": 4605, + "teal": 4619, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4339, - 4340, - 4341 + 4351, + 4352, + 4353 ] }, { - "teal": 4610, + "teal": 4624, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4342, - 4343 + 4354, + 4355 ] }, { - "teal": 4611, + "teal": 4625, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4344, - 4345, - 4346 + 4356, + 4357, + 4358 ] }, { - "teal": 4612, + "teal": 4626, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4347 + 4359 ] }, { - "teal": 4613, + "teal": 4627, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4348, - 4349 + 4360, + 4361 ] }, { - "teal": 4614, + "teal": 4628, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4350 + 4362 ] }, { - "teal": 4617, + "teal": 4631, "source": "examples/reti/validatorRegistry.algo.ts:1227", "errorMessage": "sunsettingOn must be later than now if set", "pc": [ - 4351 + 4363 ] }, { - "teal": 4620, + "teal": 4634, "source": "examples/reti/validatorRegistry.algo.ts:1200", "pc": [ - 4352 + 4364 ] }, { - "teal": 4634, + "teal": 4648, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4353, - 4354, - 4355 + 4365, + 4366, + 4367 ] }, { - "teal": 4637, + "teal": 4651, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4356 + 4368 ] }, { - "teal": 4638, + "teal": 4652, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4357, - 4358 + 4369, + 4370 ] }, { - "teal": 4642, + "teal": 4656, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4359, - 4360 + 4371, + 4372 ] }, { - "teal": 4643, + "teal": 4657, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4361, - 4362 + 4373, + 4374 ] }, { - "teal": 4644, + "teal": 4658, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4363, - 4364, - 4365 + 4375, + 4376, + 4377 ] }, { - "teal": 4645, + "teal": 4659, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4366 + 4378 ] }, { - "teal": 4646, + "teal": 4660, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4367 + 4379 ] }, { - "teal": 4647, + "teal": 4661, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4368 + 4380 ] }, { - "teal": 4648, + "teal": 4662, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4369, - 4370 + 4381, + 4382 ] }, { - "teal": 4649, + "teal": 4663, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4371 + 4383 ] }, { - "teal": 4650, + "teal": 4664, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4372 + 4384 ] }, { - "teal": 4651, + "teal": 4665, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4373 + 4385 ] }, { - "teal": 4652, + "teal": 4666, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4374 + 4386 ] }, { - "teal": 4653, + "teal": 4667, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4375 + 4387 ] }, { - "teal": 4654, + "teal": 4668, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4376 + 4388 ] }, { - "teal": 4655, + "teal": 4669, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4377, - 4378 + 4389, + 4390 ] }, { - "teal": 4656, + "teal": 4670, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4379, - 4380, - 4381 + 4391, + 4392, + 4393 ] }, { - "teal": 4657, + "teal": 4671, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4382 + 4394 ] }, { - "teal": 4658, + "teal": 4672, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4383 + 4395 ] }, { - "teal": 4659, + "teal": 4673, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4384 + 4396 ] }, { - "teal": 4660, + "teal": 4674, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4385, - 4386 + 4397, + 4398 ] }, { - "teal": 4661, + "teal": 4675, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4387 + 4399 ] }, { - "teal": 4662, + "teal": 4676, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4388 + 4400 ] }, { - "teal": 4663, + "teal": 4677, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4389, - 4390 + 4401, + 4402 ] }, { - "teal": 4676, + "teal": 4690, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4391 + 4403 ] }, { - "teal": 4677, + "teal": 4691, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4392 + 4404 ] }, { - "teal": 4678, + "teal": 4692, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4393, - 4394 + 4405, + 4406 ] }, { - "teal": 4682, + "teal": 4696, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4395, - 4396 + 4407, + 4408 ] }, { - "teal": 4683, + "teal": 4697, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4397, - 4398 + 4409, + 4410 ] }, { - "teal": 4684, + "teal": 4698, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4399, - 4400 + 4411, + 4412 ] }, { - "teal": 4685, + "teal": 4699, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4401 + 4413 ] }, { - "teal": 4686, + "teal": 4700, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4402, - 4403 + 4414, + 4415 ] }, { - "teal": 4690, + "teal": 4704, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4404, - 4405 + 4416, + 4417 ] }, { - "teal": 4691, + "teal": 4705, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4406, - 4407 + 4418, + 4419 ] }, { - "teal": 4692, + "teal": 4706, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4408 + 4420 ] }, { - "teal": 4693, + "teal": 4707, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4409, - 4410 + 4421, + 4422 ] }, { - "teal": 4696, + "teal": 4710, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4411 + 4423 ] }, { - "teal": 4697, + "teal": 4711, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4412, - 4413 + 4424, + 4425 ] }, { - "teal": 4698, + "teal": 4712, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4414 + 4426 ] }, { - "teal": 4699, + "teal": 4713, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4415, - 4416 + 4427, + 4428 ] }, { - "teal": 4700, + "teal": 4714, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4417, - 4418 + 4429, + 4430 ] }, { - "teal": 4701, + "teal": 4715, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4419, - 4420, - 4421, - 4422, - 4423, - 4424 + 4431, + 4432, + 4433, + 4434, + 4435, + 4436 ] }, { - "teal": 4702, + "teal": 4716, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4425, - 4426 + 4437, + 4438 ] }, { - "teal": 4706, + "teal": 4720, "source": "examples/reti/validatorRegistry.algo.ts:1254", "pc": [ - 4427, - 4428 + 4439, + 4440 ] }, { - "teal": 4707, + "teal": 4721, "source": "examples/reti/validatorRegistry.algo.ts:1254", "pc": [ - 4429, - 4430 + 4441, + 4442 ] }, { - "teal": 4717, + "teal": 4731, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4431, - 4432 + 4443, + 4444 ] }, { - "teal": 4718, + "teal": 4732, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4433, - 4434 + 4445, + 4446 ] }, { - "teal": 4719, + "teal": 4733, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4435, - 4436 + 4447, + 4448 ] }, { - "teal": 4722, + "teal": 4736, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4437 + 4449 ] }, { - "teal": 4723, + "teal": 4737, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4438, - 4439 + 4450, + 4451 ] }, { - "teal": 4726, + "teal": 4740, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4440 + 4452 ] }, { - "teal": 4727, + "teal": 4741, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4441, - 4442 + 4453, + 4454 ] }, { - "teal": 4728, + "teal": 4742, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4443 + 4455 ] }, { - "teal": 4729, + "teal": 4743, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4444 + 4456 ] }, { - "teal": 4730, + "teal": 4744, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4445, - 4446 + 4457, + 4458 ] }, { - "teal": 4731, + "teal": 4745, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4447, - 4448, - 4449 + 4459, + 4460, + 4461 ] }, { - "teal": 4732, + "teal": 4746, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4450 + 4462 ] }, { - "teal": 4737, + "teal": 4751, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4451, - 4452 + 4463, + 4464 ] }, { - "teal": 4738, + "teal": 4752, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4453, - 4454, - 4455 + 4465, + 4466, + 4467 ] }, { - "teal": 4739, + "teal": 4753, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4456 + 4468 ] }, { - "teal": 4740, + "teal": 4754, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4457, - 4458, - 4459 + 4469, + 4470, + 4471 ] }, { - "teal": 4745, + "teal": 4759, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4460 + 4472 ] }, { - "teal": 4746, + "teal": 4760, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4461, - 4462 + 4473, + 4474 ] }, { - "teal": 4747, + "teal": 4761, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4463, - 4464 + 4475, + 4476 ] }, { - "teal": 4748, + "teal": 4762, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4465 + 4477 ] }, { - "teal": 4749, + "teal": 4763, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4466, - 4467 + 4478, + 4479 ] }, { - "teal": 4750, + "teal": 4764, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4468, - 4469 + 4480, + 4481 ] }, { - "teal": 4751, + "teal": 4765, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4470 + 4482 ] }, { - "teal": 4752, + "teal": 4766, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4471, - 4472 + 4483, + 4484 ] }, { - "teal": 4753, + "teal": 4767, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4473, - 4474 + 4485, + 4486 ] }, { - "teal": 4754, + "teal": 4768, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4475, - 4476 + 4487, + 4488 ] }, { - "teal": 4755, + "teal": 4769, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4477, - 4478 + 4489, + 4490 ] }, { - "teal": 4756, + "teal": 4770, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4479 + 4491 ] }, { - "teal": 4761, + "teal": 4775, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4480, - 4481 + 4492, + 4493 ] }, { - "teal": 4762, + "teal": 4776, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4482, - 4483 + 4494, + 4495 ] }, { - "teal": 4763, + "teal": 4777, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4484 + 4496 ] }, { - "teal": 4766, + "teal": 4780, "source": "examples/reti/validatorRegistry.algo.ts:1268", "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", "pc": [ - 4485 + 4497 ] }, { - "teal": 4767, + "teal": 4781, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4486, - 4487 + 4498, + 4499 ] }, { - "teal": 4771, + "teal": 4785, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4488, - 4489 + 4500, + 4501 ] }, { - "teal": 4772, + "teal": 4786, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4490, - 4491 + 4502, + 4503 ] }, { - "teal": 4773, + "teal": 4787, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4492 + 4504 ] }, { - "teal": 4776, + "teal": 4790, "source": "examples/reti/validatorRegistry.algo.ts:1269", "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", "pc": [ - 4493 + 4505 ] }, { - "teal": 4777, + "teal": 4791, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4494, - 4495 + 4506, + 4507 ] }, { - "teal": 4781, + "teal": 4795, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4496, - 4497 + 4508, + 4509 ] }, { - "teal": 4782, + "teal": 4796, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4498, - 4499 + 4510, + 4511 ] }, { - "teal": 4783, + "teal": 4797, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4500, - 4501, - 4502 + 4512, + 4513, + 4514 ] }, { - "teal": 4784, + "teal": 4798, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4503 + 4515 ] }, { - "teal": 4785, + "teal": 4799, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4504 + 4516 ] }, { - "teal": 4786, + "teal": 4800, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4505 + 4517 ] }, { - "teal": 4787, + "teal": 4801, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4506, - 4507 + 4518, + 4519 ] }, { - "teal": 4788, + "teal": 4802, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4508 + 4520 ] }, { - "teal": 4789, + "teal": 4803, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4509 + 4521 ] }, { - "teal": 4790, + "teal": 4804, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4510 + 4522 ] }, { - "teal": 4791, + "teal": 4805, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4511 + 4523 ] }, { - "teal": 4792, + "teal": 4806, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4512, - 4513 + 4524, + 4525 ] }, { - "teal": 4793, + "teal": 4807, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4514 + 4526 ] }, { - "teal": 4794, + "teal": 4808, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4515, - 4516, - 4517 + 4527 ] }, { - "teal": 4795, + "teal": 4809, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4518 + 4528 ] }, { - "teal": 4796, + "teal": 4810, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4519, - 4520 + 4529, + 4530 ] }, { - "teal": 4797, + "teal": 4811, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4521, - 4522, - 4523 + 4531 ] }, { - "teal": 4798, + "teal": 4814, "source": "examples/reti/validatorRegistry.algo.ts:1270", + "errorMessage": "this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits", "pc": [ - 4524 + 4532 ] }, { - "teal": 4799, + "teal": 4815, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4525 + 4533, + 4534, + 4535 ] }, { - "teal": 4800, + "teal": 4816, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4526 + 4536 ] }, { - "teal": 4801, + "teal": 4817, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4527, - 4528 + 4537, + 4538 ] }, { - "teal": 4802, + "teal": 4818, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4529 + 4539, + 4540, + 4541 ] }, { - "teal": 4806, + "teal": 4819, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4542 + ] + }, + { + "teal": 4820, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4543 + ] + }, + { + "teal": 4821, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4544 + ] + }, + { + "teal": 4822, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4545, + 4546 + ] + }, + { + "teal": 4823, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4547 + ] + }, + { + "teal": 4827, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4530, - 4531 + 4548, + 4549 ] }, { - "teal": 4807, + "teal": 4828, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4532, - 4533 + 4550, + 4551 ] }, { - "teal": 4808, + "teal": 4829, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4534, - 4535, - 4536 + 4552, + 4553, + 4554 ] }, { - "teal": 4809, + "teal": 4830, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4537 + 4555 ] }, { - "teal": 4810, + "teal": 4831, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4538 + 4556 ] }, { - "teal": 4811, + "teal": 4832, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4539 + 4557 ] }, { - "teal": 4812, + "teal": 4833, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4540, - 4541 + 4558, + 4559 ] }, { - "teal": 4813, + "teal": 4834, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4542 + 4560 ] }, { - "teal": 4814, + "teal": 4835, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4543 + 4561 ] }, { - "teal": 4815, + "teal": 4836, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4544, - 4545 + 4562, + 4563 ] }, { - "teal": 4816, + "teal": 4837, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4546 + 4564 ] }, { - "teal": 4817, + "teal": 4838, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4547, - 4548 + 4565, + 4566 ] }, { - "teal": 4818, + "teal": 4839, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4549 + 4567 ] }, { - "teal": 4819, + "teal": 4840, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4550 + 4568 ] }, { - "teal": 4820, + "teal": 4841, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4551, - 4552 + 4569, + 4570 ] }, { - "teal": 4821, + "teal": 4842, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4553, - 4554, - 4555 + 4571, + 4572, + 4573 ] }, { - "teal": 4822, + "teal": 4843, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4556 + 4574 ] }, { - "teal": 4823, + "teal": 4844, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4557 + 4575 ] }, { - "teal": 4824, + "teal": 4845, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4558 + 4576 ] }, { - "teal": 4825, + "teal": 4846, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4559, - 4560 + 4577, + 4578 ] }, { - "teal": 4826, + "teal": 4847, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4561 + 4579 ] }, { - "teal": 4831, + "teal": 4852, "source": "examples/reti/validatorRegistry.algo.ts:1274", "pc": [ - 4562, - 4563 + 4580, + 4581 ] }, { - "teal": 4832, + "teal": 4853, "source": "examples/reti/validatorRegistry.algo.ts:1274", "pc": [ - 4564, - 4565, - 4566 + 4582, + 4583, + 4584 ] }, { - "teal": 4837, + "teal": 4858, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4567, - 4568 + 4585, + 4586 ] }, { - "teal": 4838, + "teal": 4859, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4569 + 4587 ] }, { - "teal": 4839, + "teal": 4860, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4570 + 4588 ] }, { - "teal": 4840, + "teal": 4861, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4571 + 4589 ] }, { - "teal": 4841, + "teal": 4862, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4572, - 4573 + 4590, + 4591 ] }, { - "teal": 4842, + "teal": 4863, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4574, - 4575, - 4576 + 4592, + 4593, + 4594 ] }, { - "teal": 4843, + "teal": 4864, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4577 + 4595 ] }, { - "teal": 4844, + "teal": 4865, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4578 + 4596 ] }, { - "teal": 4845, + "teal": 4866, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4579 + 4597 ] }, { - "teal": 4846, + "teal": 4867, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4580, - 4581 + 4598, + 4599 ] }, { - "teal": 4847, + "teal": 4868, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4582 + 4600 ] }, { - "teal": 4848, + "teal": 4869, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4583 + 4601 ] }, { - "teal": 4849, + "teal": 4870, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4584 + 4602 ] }, { - "teal": 4850, + "teal": 4871, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4585 + 4603 ] }, { - "teal": 4851, + "teal": 4872, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4586 + 4604 ] }, { - "teal": 4852, + "teal": 4873, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4587 + 4605 ] }, { - "teal": 4853, + "teal": 4874, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4588, - 4589 + 4606, + 4607 ] }, { - "teal": 4854, + "teal": 4875, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4590, - 4591, - 4592 + 4608, + 4609, + 4610 ] }, { - "teal": 4855, + "teal": 4876, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4593 + 4611 ] }, { - "teal": 4856, + "teal": 4877, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4594 + 4612 ] }, { - "teal": 4857, + "teal": 4878, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4595 + 4613 ] }, { - "teal": 4858, + "teal": 4879, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4596, - 4597 + 4614, + 4615 ] }, { - "teal": 4859, + "teal": 4880, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4598 + 4616 ] }, { - "teal": 4865, + "teal": 4886, "source": "examples/reti/validatorRegistry.algo.ts:1277", "pc": [ - 4599, - 4600 + 4617, + 4618 ] }, { - "teal": 4866, + "teal": 4887, "source": "examples/reti/validatorRegistry.algo.ts:1277", "pc": [ - 4601, - 4602, - 4603 + 4619, + 4620, + 4621 ] }, { - "teal": 4871, + "teal": 4892, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4604, - 4605 + 4622, + 4623 ] }, { - "teal": 4872, + "teal": 4893, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4606 + 4624 ] }, { - "teal": 4873, + "teal": 4894, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4607 + 4625 ] }, { - "teal": 4874, + "teal": 4895, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4608 + 4626 ] }, { - "teal": 4875, + "teal": 4896, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4609, - 4610 + 4627, + 4628 ] }, { - "teal": 4876, + "teal": 4897, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4611 + 4629 ] }, { - "teal": 4877, + "teal": 4898, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4612 + 4630 ] }, { - "teal": 4882, + "teal": 4903, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4613, - 4614 + 4631, + 4632 ] }, { - "teal": 4883, + "teal": 4904, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4615 + 4633 ] }, { - "teal": 4884, + "teal": 4905, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4616 + 4634 ] }, { - "teal": 4885, + "teal": 4906, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4617 + 4635 ] }, { - "teal": 4886, + "teal": 4907, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4618, - 4619 + 4636, + 4637 ] }, { - "teal": 4887, + "teal": 4908, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4620, - 4621, - 4622 + 4638, + 4639, + 4640 ] }, { - "teal": 4888, + "teal": 4909, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4623 + 4641 ] }, { - "teal": 4889, + "teal": 4910, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4624 + 4642 ] }, { - "teal": 4890, + "teal": 4911, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4625 + 4643 ] }, { - "teal": 4891, + "teal": 4912, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4626, - 4627 + 4644, + 4645 ] }, { - "teal": 4892, + "teal": 4913, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4628 + 4646 ] }, { - "teal": 4893, + "teal": 4914, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4629 + 4647 ] }, { - "teal": 4894, + "teal": 4915, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4630, - 4631 + 4648, + 4649 ] }, { - "teal": 4895, + "teal": 4916, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4632, - 4633 + 4650, + 4651 ] }, { - "teal": 4896, + "teal": 4917, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4634, - 4635 + 4652, + 4653 ] }, { - "teal": 4897, + "teal": 4918, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4636 + 4654 ] }, { - "teal": 4898, + "teal": 4919, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4637 + 4655 ] }, { - "teal": 4899, + "teal": 4920, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4638 + 4656 ] }, { - "teal": 4900, + "teal": 4921, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4639 + 4657 ] }, { - "teal": 4901, + "teal": 4922, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4640, - 4641 + 4658, + 4659 ] }, { - "teal": 4902, + "teal": 4923, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4642, - 4643, - 4644 + 4660, + 4661, + 4662 ] }, { - "teal": 4903, + "teal": 4924, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4645 + 4663 ] }, { - "teal": 4904, + "teal": 4925, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4646 + 4664 ] }, { - "teal": 4905, + "teal": 4926, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4647 + 4665 ] }, { - "teal": 4906, + "teal": 4927, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4648, - 4649 + 4666, + 4667 ] }, { - "teal": 4907, + "teal": 4928, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4650 + 4668 ] }, { - "teal": 4911, + "teal": 4932, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4651, - 4652 + 4669, + 4670 ] }, { - "teal": 4912, + "teal": 4933, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4653 + 4671 ] }, { - "teal": 4913, + "teal": 4934, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4654, - 4655 + 4672, + 4673 ] }, { - "teal": 4914, + "teal": 4935, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4656, - 4657 + 4674, + 4675 ] }, { - "teal": 4915, + "teal": 4936, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4658, - 4659 + 4676, + 4677 ] }, { - "teal": 4916, + "teal": 4937, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4660 + 4678 ] }, { - "teal": 4917, + "teal": 4938, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4661 + 4679 ] }, { - "teal": 4918, + "teal": 4939, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4662, - 4663 + 4680, + 4681 ] }, { - "teal": 4919, + "teal": 4940, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4664 + 4682 ] }, { - "teal": 4920, + "teal": 4941, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4665 + 4683 ] }, { - "teal": 4921, + "teal": 4942, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4666 + 4684 ] }, { - "teal": 4925, + "teal": 4946, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4667, - 4668, - 4669 + 4685, + 4686, + 4687 ] }, { - "teal": 4928, + "teal": 4949, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4670 + 4688 ] }, { - "teal": 4929, + "teal": 4950, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4671, - 4672 + 4689, + 4690 ] }, { - "teal": 4933, + "teal": 4954, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4673 + 4691 ] }, { - "teal": 4934, + "teal": 4955, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4674, - 4675 + 4692, + 4693 ] }, { - "teal": 4935, + "teal": 4956, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4676 + 4694 ] }, { - "teal": 4936, + "teal": 4957, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4677 + 4695 ] }, { - "teal": 4937, + "teal": 4958, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4678 + 4696 ] }, { - "teal": 4938, + "teal": 4959, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4679 + 4697 ] }, { - "teal": 4939, + "teal": 4960, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4680 + 4698 ] }, { - "teal": 4943, + "teal": 4964, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4681 + 4699 ] }, { - "teal": 4944, + "teal": 4965, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4682, - 4683 + 4700, + 4701 ] }, { - "teal": 4945, + "teal": 4966, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4684 + 4702 ] }, { - "teal": 4946, + "teal": 4967, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4685 + 4703 ] }, { - "teal": 4949, + "teal": 4970, "source": "examples/reti/validatorRegistry.algo.ts:1287", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 4686 + 4704 ] }, { - "teal": 4950, + "teal": 4971, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4687, - 4688 + 4705, + 4706 ] }, { - "teal": 4954, + "teal": 4975, "source": "examples/reti/validatorRegistry.algo.ts:1288", "pc": [ - 4689 + 4707 ] }, { - "teal": 4955, + "teal": 4976, "source": "examples/reti/validatorRegistry.algo.ts:1288", "pc": [ - 4690, - 4691 + 4708, + 4709 ] }, { - "teal": 4959, + "teal": 4980, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4692 + 4710 ] }, { - "teal": 4960, + "teal": 4981, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4693, - 4694 + 4711, + 4712 ] }, { - "teal": 4965, + "teal": 4986, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4695, - 4696 + 4713, + 4714 ] }, { - "teal": 4966, + "teal": 4987, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4697, - 4698 + 4715, + 4716 ] }, { - "teal": 4967, + "teal": 4988, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4699 + 4717 ] }, { - "teal": 4968, + "teal": 4989, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4700, - 4701, - 4702 + 4718, + 4719, + 4720 ] }, { - "teal": 4973, + "teal": 4994, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4703, - 4704 + 4721, + 4722 ] }, { - "teal": 4974, + "teal": 4995, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4705, - 4706 + 4723, + 4724 ] }, { - "teal": 4975, + "teal": 4996, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4707 + 4725 ] }, { - "teal": 4976, + "teal": 4997, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4708 + 4726 ] }, { - "teal": 4977, + "teal": 4998, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4709 + 4727 ] }, { - "teal": 4978, + "teal": 4999, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4710 + 4728 ] }, { - "teal": 4979, + "teal": 5000, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4711, - 4712 + 4729, + 4730 ] }, { - "teal": 4980, + "teal": 5001, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4713 + 4731 ] }, { - "teal": 4981, + "teal": 5002, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4714, - 4715, - 4716 + 4732, + 4733, + 4734 ] }, { - "teal": 4986, + "teal": 5007, "source": "examples/reti/validatorRegistry.algo.ts:1292", "pc": [ - 4717 + 4735 ] }, { - "teal": 4992, + "teal": 5013, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4718, - 4719 + 4736, + 4737 ] }, { - "teal": 4993, + "teal": 5014, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4720 + 4738 ] }, { - "teal": 4994, + "teal": 5015, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4721 + 4739 ] }, { - "teal": 4995, + "teal": 5016, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4722 + 4740 ] }, { - "teal": 4996, + "teal": 5017, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4723, - 4724, - 4725 + 4741, + 4742, + 4743 ] }, { - "teal": 4997, + "teal": 5018, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4726, - 4727 + 4744, + 4745 ] }, { - "teal": 4998, + "teal": 5019, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4728, - 4729 + 4746, + 4747 ] }, { - "teal": 4999, + "teal": 5020, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4730 + 4748 ] }, { - "teal": 5000, + "teal": 5021, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4731 + 4749 ] }, { - "teal": 5001, + "teal": 5022, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4732 + 4750 ] }, { - "teal": 5002, + "teal": 5023, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4733 + 4751 ] }, { - "teal": 5003, + "teal": 5024, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4734 + 4752 ] }, { - "teal": 5004, + "teal": 5025, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4735 + 4753 ] }, { - "teal": 5005, + "teal": 5026, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4736 + 4754 ] }, { - "teal": 5006, + "teal": 5027, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4737 + 4755 ] }, { - "teal": 5007, + "teal": 5028, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4738 + 4756 ] }, { - "teal": 5008, + "teal": 5029, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4739 + 4757 ] }, { - "teal": 5011, + "teal": 5032, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4740, - 4741, - 4742 + 4758, + 4759, + 4760 ] }, { - "teal": 5016, + "teal": 5037, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4743, - 4744 + 4761, + 4762 ] }, { - "teal": 5017, + "teal": 5038, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4745 + 4763 ] }, { - "teal": 5018, + "teal": 5039, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4746 + 4764 ] }, { - "teal": 5019, + "teal": 5040, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4747, - 4748 + 4765, + 4766 ] }, { - "teal": 5026, + "teal": 5047, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4749, - 4750 + 4767, + 4768 ] }, { - "teal": 5027, + "teal": 5048, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4751 + 4769 ] }, { - "teal": 5028, + "teal": 5049, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4752 + 4770 ] }, { - "teal": 5029, + "teal": 5050, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4753, - 4754 + 4771, + 4772 ] }, { - "teal": 5030, + "teal": 5051, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4755, - 4756, - 4757 + 4773, + 4774, + 4775 ] }, { - "teal": 5036, + "teal": 5057, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4758, - 4759 + 4776, + 4777 ] }, { - "teal": 5037, + "teal": 5058, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4760 + 4778 ] }, { - "teal": 5038, + "teal": 5059, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4761 + 4779 ] }, { - "teal": 5039, + "teal": 5060, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4762, - 4763, - 4764 + 4780, + 4781, + 4782 ] }, { - "teal": 5043, + "teal": 5064, "source": "examples/reti/validatorRegistry.algo.ts:1299", "errorMessage": "No empty slot available in the staker pool set", "pc": [ - 4765 + 4783 ] }, { - "teal": 5048, + "teal": 5069, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4766, - 4767 + 4784, + 4785 ] }, { - "teal": 5049, + "teal": 5070, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4768 + 4786 ] }, { - "teal": 5050, + "teal": 5071, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4769 + 4787 ] }, { - "teal": 5051, + "teal": 5072, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4770 + 4788 ] }, { - "teal": 5052, + "teal": 5073, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4771 + 4789 ] }, { - "teal": 5053, + "teal": 5074, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4772, - 4773 + 4790, + 4791 ] }, { - "teal": 5054, + "teal": 5075, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4774 + 4792 ] }, { - "teal": 5055, + "teal": 5076, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4775, - 4776 + 4793, + 4794 ] }, { - "teal": 5056, + "teal": 5077, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4777 + 4795 ] }, { - "teal": 5057, + "teal": 5078, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4778, - 4779 + 4796, + 4797 ] }, { - "teal": 5058, + "teal": 5079, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4780 + 4798 ] }, { - "teal": 5059, + "teal": 5080, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4781 + 4799 ] }, { - "teal": 5070, + "teal": 5091, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4782, - 4783, - 4784 + 4800, + 4801, + 4802 ] }, { - "teal": 5073, + "teal": 5094, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4785 + 4803 ] }, { - "teal": 5074, + "teal": 5095, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4786, - 4787 + 4804, + 4805 ] }, { - "teal": 5078, + "teal": 5099, "source": "examples/reti/validatorRegistry.algo.ts:1314", "pc": [ - 4788 + 4806 ] }, { - "teal": 5079, + "teal": 5100, "source": "examples/reti/validatorRegistry.algo.ts:1314", "pc": [ - 4789, - 4790 + 4807, + 4808 ] }, { - "teal": 5083, + "teal": 5104, "source": "examples/reti/validatorRegistry.algo.ts:1315", "pc": [ - 4791 + 4809 ] }, { - "teal": 5084, + "teal": 5105, "source": "examples/reti/validatorRegistry.algo.ts:1315", "pc": [ - 4792, - 4793 + 4810, + 4811 ] }, { - "teal": 5088, + "teal": 5109, "source": "examples/reti/validatorRegistry.algo.ts:1316", "pc": [ - 4794 + 4812 ] }, { - "teal": 5089, + "teal": 5110, "source": "examples/reti/validatorRegistry.algo.ts:1316", "pc": [ - 4795, - 4796 + 4813, + 4814 ] }, { - "teal": 5093, + "teal": 5114, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4797 + 4815 ] }, { - "teal": 5094, + "teal": 5115, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4798, - 4799 + 4816, + 4817 ] }, { - "teal": 5095, + "teal": 5116, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4800 + 4818 ] }, { - "teal": 5096, + "teal": 5117, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4801 + 4819 ] }, { - "teal": 5099, + "teal": 5120, "source": "examples/reti/validatorRegistry.algo.ts:1318", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 4802 + 4820 ] }, { - "teal": 5100, + "teal": 5121, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4803, - 4804 + 4821, + 4822 ] }, { - "teal": 5104, + "teal": 5125, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4805 + 4823 ] }, { - "teal": 5105, + "teal": 5126, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4806, - 4807 + 4824, + 4825 ] }, { - "teal": 5110, + "teal": 5131, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4808, - 4809 + 4826, + 4827 ] }, { - "teal": 5111, + "teal": 5132, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4810, - 4811 + 4828, + 4829 ] }, { - "teal": 5112, + "teal": 5133, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4812 + 4830 ] }, { - "teal": 5113, + "teal": 5134, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4813, - 4814, - 4815 + 4831, + 4832, + 4833 ] }, { - "teal": 5118, + "teal": 5139, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4816, - 4817 + 4834, + 4835 ] }, { - "teal": 5119, + "teal": 5140, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4818, - 4819 + 4836, + 4837 ] }, { - "teal": 5120, + "teal": 5141, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4820 + 4838 ] }, { - "teal": 5121, + "teal": 5142, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4821 + 4839 ] }, { - "teal": 5122, + "teal": 5143, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4822 + 4840 ] }, { - "teal": 5123, + "teal": 5144, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4823 + 4841 ] }, { - "teal": 5124, + "teal": 5145, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4824 + 4842 ] }, { - "teal": 5125, + "teal": 5146, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4825 + 4843 ] }, { - "teal": 5126, + "teal": 5147, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4826 + 4844 ] }, { - "teal": 5127, + "teal": 5148, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4827 + 4845 ] }, { - "teal": 5128, + "teal": 5149, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4828 + 4846 ] }, { - "teal": 5129, + "teal": 5150, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4829, - 4830, - 4831 + 4847, + 4848, + 4849 ] }, { - "teal": 5132, + "teal": 5153, "source": "examples/reti/validatorRegistry.algo.ts:1321", "pc": [ - 4832, - 4833, - 4834 + 4850, + 4851, + 4852 ] }, { - "teal": 5137, + "teal": 5158, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4835, - 4836 + 4853, + 4854 ] }, { - "teal": 5138, + "teal": 5159, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4837 + 4855 ] }, { - "teal": 5139, + "teal": 5160, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4838 + 4856 ] }, { - "teal": 5140, + "teal": 5161, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4839, - 4840 + 4857, + 4858 ] }, { - "teal": 5145, + "teal": 5166, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4841, - 4842 + 4859, + 4860 ] }, { - "teal": 5146, + "teal": 5167, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4843, - 4844 + 4861, + 4862 ] }, { - "teal": 5147, + "teal": 5168, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4845 + 4863 ] }, { - "teal": 5148, + "teal": 5169, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4846 + 4864 ] }, { - "teal": 5149, + "teal": 5170, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4847 + 4865 ] }, { - "teal": 5150, + "teal": 5171, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4848 + 4866 ] }, { - "teal": 5151, + "teal": 5172, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4849 + 4867 ] }, { - "teal": 5152, + "teal": 5173, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4850 + 4868 ] }, { - "teal": 5153, + "teal": 5174, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4851 + 4869 ] }, { - "teal": 5154, + "teal": 5175, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4852, - 4853 + 4870, + 4871 ] }, { - "teal": 5155, + "teal": 5176, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4854, - 4855, - 4856 + 4872, + 4873, + 4874 ] }, { - "teal": 5156, + "teal": 5177, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4857 + 4875 ] }, { - "teal": 5157, + "teal": 5178, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4858 + 4876 ] }, { - "teal": 5158, + "teal": 5179, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4859, - 4860, - 4861 + 4877, + 4878, + 4879 ] }, { - "teal": 5164, + "teal": 5185, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4862, - 4863 + 4880, + 4881 ] }, { - "teal": 5165, + "teal": 5186, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4864, - 4865 + 4882, + 4883 ] }, { - "teal": 5166, + "teal": 5187, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4866 + 4884 ] }, { - "teal": 5167, + "teal": 5188, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4867 + 4885 ] }, { - "teal": 5168, + "teal": 5189, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4868 + 4886 ] }, { - "teal": 5169, + "teal": 5190, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4869 + 4887 ] }, { - "teal": 5170, + "teal": 5191, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4870, - 4871 + 4888, + 4889 ] }, { - "teal": 5171, + "teal": 5192, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4872 + 4890 ] }, { - "teal": 5172, + "teal": 5193, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4873, - 4874, - 4875 + 4891, + 4892, + 4893 ] }, { - "teal": 5177, + "teal": 5198, "source": "examples/reti/validatorRegistry.algo.ts:1326", "pc": [ - 4876 + 4894 ] }, { - "teal": 5178, + "teal": 5199, "source": "examples/reti/validatorRegistry.algo.ts:1326", "pc": [ - 4877, - 4878 + 4895, + 4896 ] }, { - "teal": 5182, + "teal": 5203, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4879, - 4880 + 4897, + 4898 ] }, { - "teal": 5183, + "teal": 5204, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4881 + 4899 ] }, { - "teal": 5184, + "teal": 5205, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4882 + 4900 ] }, { - "teal": 5185, + "teal": 5206, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4883, - 4884, - 4885, - 4886, - 4887, - 4888, - 4889, - 4890, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, 4901, 4902, 4903, @@ -24347,2574 +24440,2562 @@ 4905, 4906, 4907, - 4908 + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4922, + 4923, + 4924, + 4925, + 4926 ] }, { - "teal": 5186, + "teal": 5207, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4909 + 4927 ] }, { - "teal": 5187, + "teal": 5208, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4910, - 4911 + 4928, + 4929 ] }, { - "teal": 5188, + "teal": 5209, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4912 + 4930 ] }, { - "teal": 5189, + "teal": 5210, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4913, - 4914 + 4931, + 4932 ] }, { - "teal": 5190, + "teal": 5211, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4915 + 4933 ] }, { - "teal": 5191, + "teal": 5212, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4916, - 4917, - 4918 + 4934, + 4935, + 4936 ] }, { - "teal": 5196, + "teal": 5217, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4919, - 4920 + 4937, + 4938 ] }, { - "teal": 5197, + "teal": 5218, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4921 + 4939 ] }, { - "teal": 5198, + "teal": 5219, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4922 + 4940 ] }, { - "teal": 5199, + "teal": 5220, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4923, - 4924 + 4941, + 4942 ] }, { - "teal": 5208, + "teal": 5229, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4925, - 4926 + 4943, + 4944 ] }, { - "teal": 5209, + "teal": 5230, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4927 + 4945 ] }, { - "teal": 5210, + "teal": 5231, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4928 + 4946 ] }, { - "teal": 5211, + "teal": 5232, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4929, - 4930 + 4947, + 4948 ] }, { - "teal": 5212, + "teal": 5233, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4931, - 4932, - 4933 + 4949, + 4950, + 4951 ] }, { - "teal": 5218, + "teal": 5239, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4934, - 4935 + 4952, + 4953 ] }, { - "teal": 5219, + "teal": 5240, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4936 + 4954 ] }, { - "teal": 5220, + "teal": 5241, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4937, - 4938, - 4939 + 4955, + 4956, + 4957 ] }, { - "teal": 5224, + "teal": 5245, "source": "examples/reti/validatorRegistry.algo.ts:1335", "errorMessage": "No matching slot found when told to remove a pool from the stakers set", "pc": [ - 4940 + 4958 ] }, { - "teal": 5229, + "teal": 5250, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4941, - 4942 + 4959, + 4960 ] }, { - "teal": 5230, + "teal": 5251, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4943 + 4961 ] }, { - "teal": 5231, + "teal": 5252, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4944, - 4945 + 4962, + 4963 ] }, { - "teal": 5232, + "teal": 5253, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4946 + 4964 ] }, { - "teal": 5233, + "teal": 5254, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4947 + 4965 ] }, { - "teal": 5234, + "teal": 5255, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4948 + 4966 ] }, { - "teal": 5235, + "teal": 5256, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4949 + 4967 ] }, { - "teal": 5236, + "teal": 5257, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4950, - 4951 + 4968, + 4969 ] }, { - "teal": 5237, + "teal": 5258, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4952 + 4970 ] }, { - "teal": 5238, + "teal": 5259, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4953 + 4971 ] }, { - "teal": 5239, + "teal": 5260, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4954 + 4972 ] }, { - "teal": 5242, + "teal": 5263, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4955, - 4956 + 4973, + 4974 ] }, { - "teal": 5245, + "teal": 5266, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4957, - 4958 + 4975, + 4976 ] }, { - "teal": 5246, + "teal": 5267, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4959 + 4977 ] }, { - "teal": 5250, + "teal": 5271, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4960, - 4961, - 4962 + 4978, + 4979, + 4980 ] }, { - "teal": 5253, + "teal": 5274, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4963 + 4981 ] }, { - "teal": 5254, + "teal": 5275, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4964, - 4965 + 4982, + 4983 ] }, { - "teal": 5258, + "teal": 5279, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4966, - 4967 + 4984, + 4985 ] }, { - "teal": 5259, + "teal": 5280, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4968, - 4969 + 4986, + 4987 ] }, { - "teal": 5260, + "teal": 5281, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4970 + 4988 ] }, { - "teal": 5261, + "teal": 5282, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4971, - 4972 + 4989, + 4990 ] }, { - "teal": 5262, + "teal": 5283, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4973 + 4991 ] }, { - "teal": 5263, + "teal": 5284, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4974 + 4992 ] }, { - "teal": 5264, + "teal": 5285, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4975, - 4976 + 4993, + 4994 ] }, { - "teal": 5265, + "teal": 5286, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4977 + 4995 ] }, { - "teal": 5266, + "teal": 5287, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4978, - 4979 + 4996, + 4997 ] }, { - "teal": 5270, + "teal": 5291, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4980, - 4981, - 4982 + 4998, + 4999, + 5000 ] }, { - "teal": 5271, + "teal": 5292, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4983 + 5001 ] }, { - "teal": 5272, + "teal": 5293, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4984 + 5002 ] }, { - "teal": 5273, + "teal": 5294, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4985, - 4986 + 5003, + 5004 ] }, { - "teal": 5274, + "teal": 5295, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4987 + 5005 ] }, { - "teal": 5275, + "teal": 5296, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4988 + 5006 ] }, { - "teal": 5276, + "teal": 5297, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4989, - 4990 + 5007, + 5008 ] }, { - "teal": 5277, + "teal": 5298, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4991 + 5009 ] }, { - "teal": 5278, + "teal": 5299, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4992 + 5010 ] }, { - "teal": 5279, + "teal": 5300, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4993, - 4994 + 5011, + 5012 ] }, { - "teal": 5283, + "teal": 5304, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4995, - 4996 + 5013, + 5014 ] }, { - "teal": 5284, + "teal": 5305, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4997 + 5015 ] }, { - "teal": 5285, + "teal": 5306, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4998 + 5016 ] }, { - "teal": 5286, + "teal": 5307, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4999 + 5017 ] }, { - "teal": 5287, + "teal": 5308, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5000, - 5001, - 5002 + 5018, + 5019, + 5020 ] }, { - "teal": 5288, + "teal": 5309, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5003, - 5004 + 5021, + 5022 ] }, { - "teal": 5289, + "teal": 5310, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5005 + 5023 ] }, { - "teal": 5290, + "teal": 5311, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5006 + 5024 ] }, { - "teal": 5291, + "teal": 5312, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5007 + 5025 ] }, { - "teal": 5295, + "teal": 5316, "source": "examples/reti/validatorRegistry.algo.ts:1345", "errorMessage": "node number not in valid range", "pc": [ - 5008 + 5026 ] }, { - "teal": 5299, + "teal": 5320, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5009 + 5027 ] }, { - "teal": 5300, + "teal": 5321, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5010, - 5011 + 5028, + 5029 ] }, { - "teal": 5305, + "teal": 5326, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5012, - 5013 + 5030, + 5031 ] }, { - "teal": 5306, + "teal": 5327, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5014, - 5015 + 5032, + 5033 ] }, { - "teal": 5307, + "teal": 5328, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5016 + 5034 ] }, { - "teal": 5308, + "teal": 5329, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5017, - 5018, - 5019 + 5035, + 5036, + 5037 ] }, { - "teal": 5313, + "teal": 5334, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5020, - 5021 + 5038, + 5039 ] }, { - "teal": 5314, + "teal": 5335, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5022 + 5040 ] }, { - "teal": 5315, + "teal": 5336, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5023, - 5024 + 5041, + 5042 ] }, { - "teal": 5316, + "teal": 5337, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5025 + 5043 ] }, { - "teal": 5317, + "teal": 5338, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5026 + 5044 ] }, { - "teal": 5318, + "teal": 5339, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5027 + 5045 ] }, { - "teal": 5319, + "teal": 5340, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5028 + 5046 ] }, { - "teal": 5320, + "teal": 5341, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5029 + 5047 ] }, { - "teal": 5321, + "teal": 5342, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5030 + 5048 ] }, { - "teal": 5322, + "teal": 5343, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5031 + 5049 ] }, { - "teal": 5323, + "teal": 5344, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5032, - 5033 + 5050, + 5051 ] }, { - "teal": 5324, + "teal": 5345, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5034 + 5052 ] }, { - "teal": 5325, + "teal": 5346, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5035 + 5053 ] }, { - "teal": 5326, + "teal": 5347, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5036 + 5054 ] }, { - "teal": 5327, + "teal": 5348, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5037 + 5055 ] }, { - "teal": 5328, + "teal": 5349, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5038 + 5056 ] }, { - "teal": 5329, + "teal": 5350, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5039 + 5057 ] }, { - "teal": 5330, + "teal": 5351, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5040 + 5058 ] }, { - "teal": 5331, + "teal": 5352, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5041 + 5059 ] }, { - "teal": 5332, + "teal": 5353, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5042, - 5043, - 5044 + 5060, + 5061, + 5062 ] }, { - "teal": 5337, + "teal": 5358, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5045, - 5046 + 5063, + 5064 ] }, { - "teal": 5338, + "teal": 5359, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5047, - 5048 + 5065, + 5066 ] }, { - "teal": 5339, + "teal": 5360, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5049 + 5067 ] }, { - "teal": 5340, + "teal": 5361, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5050 + 5068 ] }, { - "teal": 5341, + "teal": 5362, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5051 + 5069 ] }, { - "teal": 5342, + "teal": 5363, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5052 + 5070 ] }, { - "teal": 5343, + "teal": 5364, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5053 + 5071 ] }, { - "teal": 5344, + "teal": 5365, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5054 + 5072 ] }, { - "teal": 5345, + "teal": 5366, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5055 + 5073 ] }, { - "teal": 5346, + "teal": 5367, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5056, - 5057 + 5074, + 5075 ] }, { - "teal": 5347, + "teal": 5368, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5058 + 5076 ] }, { - "teal": 5348, + "teal": 5369, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5059 + 5077 ] }, { - "teal": 5349, + "teal": 5370, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5060 + 5078 ] }, { - "teal": 5350, + "teal": 5371, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5061, - 5062 + 5079, + 5080 ] }, { - "teal": 5351, + "teal": 5372, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5063 + 5081 ] }, { - "teal": 5352, + "teal": 5373, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5064 + 5082 ] }, { - "teal": 5353, + "teal": 5374, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5065, - 5066 + 5083, + 5084 ] }, { - "teal": 5354, + "teal": 5375, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5067 + 5085 ] }, { - "teal": 5355, + "teal": 5376, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5068 + 5086 ] }, { - "teal": 5356, + "teal": 5377, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5069, - 5070 + 5087, + 5088 ] }, { - "teal": 5357, + "teal": 5378, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5071 + 5089 ] }, { - "teal": 5361, + "teal": 5382, "source": "examples/reti/validatorRegistry.algo.ts:1351", "pc": [ - 5072 + 5090 ] }, { - "teal": 5368, + "teal": 5389, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5073, - 5074 + 5091, + 5092 ] }, { - "teal": 5369, + "teal": 5390, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5075 + 5093 ] }, { - "teal": 5370, + "teal": 5391, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5076 + 5094 ] }, { - "teal": 5371, + "teal": 5392, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5077, - 5078 + 5095, + 5096 ] }, { - "teal": 5372, + "teal": 5393, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5079, - 5080, - 5081 + 5097, + 5098, + 5099 ] }, { - "teal": 5376, + "teal": 5397, "source": "examples/reti/validatorRegistry.algo.ts:1354", "errorMessage": "no available space in specified node for this pool", "pc": [ - 5082 + 5100 ] }, { - "teal": 5377, + "teal": 5398, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 5083 + 5101 ] }, { - "teal": 5387, + "teal": 5408, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5084, - 5085, - 5086 + 5102, + 5103, + 5104 ] }, { - "teal": 5390, + "teal": 5411, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5087 + 5105 ] }, { - "teal": 5391, + "teal": 5412, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5088, - 5089 + 5106, + 5107 ] }, { - "teal": 5395, + "teal": 5416, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5090, - 5091 + 5108, + 5109 ] }, { - "teal": 5396, + "teal": 5417, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5092 + 5110 ] }, { - "teal": 5397, + "teal": 5418, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5093 + 5111 ] }, { - "teal": 5398, + "teal": 5419, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5094, - 5095 + 5112, + 5113 ] }, { - "teal": 5399, + "teal": 5420, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5096 + 5114 ] }, { - "teal": 5400, + "teal": 5421, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5097 + 5115 ] }, { - "teal": 5401, + "teal": 5422, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5098, - 5099 + 5116, + 5117 ] }, { - "teal": 5402, + "teal": 5423, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5100 + 5118 ] }, { - "teal": 5403, + "teal": 5424, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5101 + 5119 ] }, { - "teal": 5404, + "teal": 5425, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5102, - 5103 + 5120, + 5121 ] }, { - "teal": 5409, + "teal": 5430, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5104, - 5105 + 5122, + 5123 ] }, { - "teal": 5410, + "teal": 5431, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5106 + 5124 ] }, { - "teal": 5411, + "teal": 5432, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5107 + 5125 ] }, { - "teal": 5412, + "teal": 5433, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5108, - 5109, - 5110 + 5126, + 5127, + 5128 ] }, { - "teal": 5417, + "teal": 5438, "source": "examples/reti/validatorRegistry.algo.ts:1367", "pc": [ - 5111 + 5129 ] }, { - "teal": 5422, + "teal": 5443, "source": "examples/reti/validatorRegistry.algo.ts:1369", "pc": [ - 5112, - 5113 + 5130, + 5131 ] }, { - "teal": 5423, + "teal": 5444, "source": "examples/reti/validatorRegistry.algo.ts:1369", "pc": [ - 5114, - 5115 + 5132, + 5133 ] }, { - "teal": 5427, + "teal": 5448, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5116 + 5134 ] }, { - "teal": 5428, + "teal": 5449, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5117, - 5118 + 5135, + 5136 ] }, { - "teal": 5429, + "teal": 5450, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5119 + 5137 ] }, { - "teal": 5430, + "teal": 5451, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5120, - 5121 + 5138, + 5139 ] }, { - "teal": 5431, + "teal": 5452, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5122 + 5140 ] }, { - "teal": 5432, + "teal": 5453, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5123 + 5141 ] }, { - "teal": 5433, + "teal": 5454, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5124, - 5125 + 5142, + 5143 ] }, { - "teal": 5434, + "teal": 5455, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5126 + 5144 ] }, { - "teal": 5435, + "teal": 5456, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5127, - 5128 + 5145, + 5146 ] }, { - "teal": 5442, + "teal": 5463, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5129, - 5130 + 5147, + 5148 ] }, { - "teal": 5443, + "teal": 5464, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5131 + 5149 ] }, { - "teal": 5444, + "teal": 5465, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5132 + 5150 ] }, { - "teal": 5445, + "teal": 5466, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5133 + 5151 ] }, { - "teal": 5446, + "teal": 5467, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5134, - 5135, - 5136 + 5152, + 5153, + 5154 ] }, { - "teal": 5447, + "teal": 5468, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5137, - 5138 + 5155, + 5156 ] }, { - "teal": 5448, + "teal": 5469, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5139, - 5140 + 5157, + 5158 ] }, { - "teal": 5449, + "teal": 5470, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5141 + 5159 ] }, { - "teal": 5450, + "teal": 5471, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5142 + 5160 ] }, { - "teal": 5453, + "teal": 5474, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5143 + 5161 ] }, { - "teal": 5454, + "teal": 5475, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5144, - 5145, - 5146 + 5162, + 5163, + 5164 ] }, { - "teal": 5455, + "teal": 5476, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5147, - 5148 + 5165, + 5166 ] }, { - "teal": 5456, + "teal": 5477, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5149, - 5150 + 5167, + 5168 ] }, { - "teal": 5457, + "teal": 5478, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5151 + 5169 ] }, { - "teal": 5458, + "teal": 5479, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5152 + 5170 ] }, { - "teal": 5461, + "teal": 5482, "source": "examples/reti/validatorRegistry.algo.ts:1373", "pc": [ - 5153, - 5154, - 5155 + 5171, + 5172, + 5173 ] }, { - "teal": 5466, + "teal": 5487, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5156, - 5157 + 5174, + 5175 ] }, { - "teal": 5467, + "teal": 5488, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5158 + 5176 ] }, { - "teal": 5468, + "teal": 5489, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5159 + 5177 ] }, { - "teal": 5469, + "teal": 5490, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5160 + 5178 ] }, { - "teal": 5473, + "teal": 5494, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5161, - 5162 + 5179, + 5180 ] }, { - "teal": 5474, + "teal": 5495, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5163 + 5181 ] }, { - "teal": 5475, + "teal": 5496, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5164 + 5182 ] }, { - "teal": 5476, + "teal": 5497, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5165, - 5166 + 5183, + 5184 ] }, { - "teal": 5477, + "teal": 5498, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5167 + 5185 ] }, { - "teal": 5478, + "teal": 5499, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5168 + 5186 ] }, { - "teal": 5479, + "teal": 5500, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5169, - 5170 + 5187, + 5188 ] }, { - "teal": 5480, + "teal": 5501, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5171 + 5189 ] }, { - "teal": 5481, + "teal": 5502, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5172 + 5190 ] }, { - "teal": 5482, + "teal": 5503, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5173, - 5174 + 5191, + 5192 ] }, { - "teal": 5487, + "teal": 5508, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5175, - 5176 + 5193, + 5194 ] }, { - "teal": 5488, + "teal": 5509, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5177 + 5195 ] }, { - "teal": 5489, + "teal": 5510, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5178 + 5196 ] }, { - "teal": 5490, + "teal": 5511, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5179, - 5180, - 5181 + 5197, + 5198, + 5199 ] }, { - "teal": 5495, + "teal": 5516, "source": "examples/reti/validatorRegistry.algo.ts:1381", "pc": [ - 5182 + 5200 ] }, { - "teal": 5496, + "teal": 5517, "source": "examples/reti/validatorRegistry.algo.ts:1381", "pc": [ - 5183, - 5184 + 5201, + 5202 ] }, { - "teal": 5504, + "teal": 5525, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5185, - 5186 + 5203, + 5204 ] }, { - "teal": 5505, + "teal": 5526, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5187, - 5188 + 5205, + 5206 ] }, { - "teal": 5506, + "teal": 5527, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5189, - 5190 + 5207, + 5208 ] }, { - "teal": 5507, + "teal": 5528, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5191 + 5209 ] }, { - "teal": 5508, + "teal": 5529, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5192, - 5193 + 5210, + 5211 ] }, { - "teal": 5509, + "teal": 5530, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5194 + 5212 ] }, { - "teal": 5512, + "teal": 5533, "source": "examples/reti/validatorRegistry.algo.ts:1383", "errorMessage": "must have required minimum balance of validator defined token to add stake", "pc": [ - 5195 + 5213 ] }, { - "teal": 5518, + "teal": 5539, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5196, - 5197 + 5214, + 5215 ] }, { - "teal": 5519, + "teal": 5540, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5198 + 5216 ] }, { - "teal": 5520, + "teal": 5541, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5199 + 5217 ] }, { - "teal": 5521, + "teal": 5542, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5200, - 5201, - 5202 + 5218, + 5219, + 5220 ] }, { - "teal": 5529, + "teal": 5550, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5203, - 5204 + 5221, + 5222 ] }, { - "teal": 5530, + "teal": 5551, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5205, - 5206 + 5223, + 5224 ] }, { - "teal": 5531, + "teal": 5552, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5207 + 5225 ] }, { - "teal": 5532, + "teal": 5553, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5208, - 5209 + 5226, + 5227 ] }, { - "teal": 5533, + "teal": 5554, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5210, - 5211, - 5212 + 5228, + 5229, + 5230 ] }, { - "teal": 5534, + "teal": 5555, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5213 + 5231 ] }, { - "teal": 5537, + "teal": 5558, "source": "examples/reti/validatorRegistry.algo.ts:1389", "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", "pc": [ - 5214 + 5232 ] }, { - "teal": 5543, + "teal": 5564, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5215, - 5216 + 5233, + 5234 ] }, { - "teal": 5544, + "teal": 5565, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5217, - 5218 + 5235, + 5236 ] }, { - "teal": 5545, + "teal": 5566, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5219 + 5237 ] }, { - "teal": 5546, + "teal": 5567, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5220, - 5221, - 5222 + 5238, + 5239, + 5240 ] }, { - "teal": 5551, + "teal": 5572, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5223, - 5224 + 5241, + 5242 ] }, { - "teal": 5552, + "teal": 5573, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5225 + 5243 ] }, { - "teal": 5553, + "teal": 5574, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5226 + 5244 ] }, { - "teal": 5554, + "teal": 5575, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5227 + 5245 ] }, { - "teal": 5558, + "teal": 5579, "source": "examples/reti/validatorRegistry.algo.ts:1396", "pc": [ - 5228 + 5246 ] }, { - "teal": 5559, + "teal": 5580, "source": "examples/reti/validatorRegistry.algo.ts:1396", "pc": [ - 5229, - 5230 + 5247, + 5248 ] }, { - "teal": 5563, + "teal": 5584, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5231, - 5232 + 5249, + 5250 ] }, { - "teal": 5564, + "teal": 5585, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5233, - 5234, - 5235 + 5251, + 5252, + 5253 ] }, { - "teal": 5565, + "teal": 5586, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5236 + 5254 ] }, { - "teal": 5566, + "teal": 5587, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5237, - 5238 + 5255, + 5256 ] }, { - "teal": 5567, + "teal": 5588, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5239, - 5240, - 5241 + 5257, + 5258, + 5259 ] }, { - "teal": 5568, + "teal": 5589, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5242 + 5260 ] }, { - "teal": 5569, + "teal": 5590, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5243, - 5244 + 5261, + 5262 ] }, { - "teal": 5570, + "teal": 5591, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5245 + 5263 ] }, { - "teal": 5571, + "teal": 5592, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5246, - 5247 + 5264, + 5265 ] }, { - "teal": 5577, + "teal": 5598, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5248, - 5249 + 5266, + 5267 ] }, { - "teal": 5578, + "teal": 5599, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5250, - 5251 + 5268, + 5269 ] }, { - "teal": 5579, + "teal": 5600, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5252 + 5270 ] }, { - "teal": 5580, + "teal": 5601, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5253, - 5254, - 5255 + 5271, + 5272, + 5273 ] }, { - "teal": 5585, + "teal": 5606, "source": "examples/reti/validatorRegistry.algo.ts:1399", "pc": [ - 5256 + 5274 ] }, { - "teal": 5586, + "teal": 5607, "source": "examples/reti/validatorRegistry.algo.ts:1399", "pc": [ - 5257, - 5258 + 5275, + 5276 ] }, { - "teal": 5587, + "teal": 5608, "source": "examples/reti/validatorRegistry.algo.ts:1400", "pc": [ - 5259, - 5260, - 5261 + 5277, + 5278, + 5279 ] }, { - "teal": 5593, + "teal": 5614, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5262, - 5263 + 5280, + 5281 ] }, { - "teal": 5594, + "teal": 5615, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5264 + 5282 ] }, { - "teal": 5595, + "teal": 5616, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5265 + 5283 ] }, { - "teal": 5596, + "teal": 5617, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5266 + 5284 ] }, { - "teal": 5597, + "teal": 5618, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5267, - 5268 + 5285, + 5286 ] }, { - "teal": 5598, + "teal": 5619, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5269 + 5287 ] }, { - "teal": 5599, + "teal": 5620, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5270, - 5271, - 5272 + 5288, + 5289, + 5290 ] }, { - "teal": 5600, + "teal": 5621, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5273, - 5274 + 5291, + 5292 ] }, { - "teal": 5601, + "teal": 5622, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5275, - 5276 + 5293, + 5294 ] }, { - "teal": 5602, + "teal": 5623, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5277, - 5278 + 5295, + 5296 ] }, { - "teal": 5603, + "teal": 5624, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5279 + 5297 ] }, { - "teal": 5604, + "teal": 5625, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5280 + 5298 ] }, { - "teal": 5605, + "teal": 5626, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5281 + 5299 ] }, { - "teal": 5606, + "teal": 5627, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5282, - 5283 + 5300, + 5301 ] }, { - "teal": 5607, + "teal": 5628, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5284, - 5285, - 5286 + 5302, + 5303, + 5304 ] }, { - "teal": 5612, + "teal": 5633, "source": "examples/reti/validatorRegistry.algo.ts:1403", "pc": [ - 5287, - 5288 + 5305, + 5306 ] }, { - "teal": 5615, + "teal": 5636, "source": "examples/reti/validatorRegistry.algo.ts:1403", "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", "pc": [ - 5289 + 5307 ] }, { - "teal": 5621, + "teal": 5642, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5290, - 5291 + 5308, + 5309 ] }, { - "teal": 5622, + "teal": 5643, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5292, - 5293 + 5310, + 5311 ] }, { - "teal": 5623, + "teal": 5644, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5294 + 5312 ] }, { - "teal": 5624, + "teal": 5645, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5295, - 5296, - 5297 + 5313, + 5314, + 5315 ] }, { - "teal": 5632, + "teal": 5653, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5298, - 5299 + 5316, + 5317 ] }, { - "teal": 5633, + "teal": 5654, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5300, - 5301 + 5318, + 5319 ] }, { - "teal": 5634, + "teal": 5655, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5302 + 5320 ] }, { - "teal": 5635, + "teal": 5656, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5303, - 5304 + 5321, + 5322 ] }, { - "teal": 5636, + "teal": 5657, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5305, - 5306, - 5307 + 5323, + 5324, + 5325 ] }, { - "teal": 5637, + "teal": 5658, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5308 + 5326 ] }, { - "teal": 5638, + "teal": 5659, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5309, - 5310, - 5311 + 5327, + 5328, + 5329 ] }, { - "teal": 5641, + "teal": 5662, "source": "examples/reti/validatorRegistry.algo.ts:1408", "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", "pc": [ - 5312 + 5330 ] }, { - "teal": 5647, + "teal": 5668, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5313, - 5314 + 5331, + 5332 ] }, { - "teal": 5648, + "teal": 5669, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5315, - 5316 + 5333, + 5334 ] }, { - "teal": 5649, + "teal": 5670, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5317 + 5335 ] }, { - "teal": 5650, + "teal": 5671, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5318, - 5319, - 5320 + 5336, + 5337, + 5338 ] }, { - "teal": 5655, + "teal": 5676, "source": "examples/reti/validatorRegistry.algo.ts:1415", "pc": [ - 5321, - 5322 + 5339, + 5340 ] }, { - "teal": 5656, + "teal": 5677, "source": "examples/reti/validatorRegistry.algo.ts:1415", "pc": [ - 5323, - 5324 + 5341, + 5342 ] }, { - "teal": 5660, + "teal": 5681, "source": "examples/reti/validatorRegistry.algo.ts:1416", "pc": [ - 5325, - 5326 + 5343, + 5344 ] }, { - "teal": 5661, + "teal": 5682, "source": "examples/reti/validatorRegistry.algo.ts:1416", "pc": [ - 5327, - 5328, - 5329 + 5345, + 5346, + 5347 ] }, { - "teal": 5664, + "teal": 5685, "source": "examples/reti/validatorRegistry.algo.ts:1416", "errorMessage": "provided NFD must be valid", "pc": [ - 5330 + 5348 ] }, { - "teal": 5672, + "teal": 5693, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5331, - 5332 + 5349, + 5350 ] }, { - "teal": 5673, + "teal": 5694, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5333, - 5334 + 5351, + 5352 ] }, { - "teal": 5674, + "teal": 5695, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5335 + 5353 ] }, { - "teal": 5677, + "teal": 5698, "source": "examples/reti/validatorRegistry.algo.ts:1420", "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", "pc": [ - 5336 + 5354 ] }, { - "teal": 5678, + "teal": 5699, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5337, - 5338 + 5355, + 5356 ] }, { - "teal": 5679, + "teal": 5700, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5339 + 5357 ] }, { - "teal": 5680, + "teal": 5701, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5340 + 5358 ] }, { - "teal": 5681, + "teal": 5702, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5341, - 5342, - 5343 + 5359, + 5360, + 5361 ] }, { - "teal": 5682, + "teal": 5703, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5344, - 5345 + 5362, + 5363 ] }, { - "teal": 5683, + "teal": 5704, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5346, - 5347 + 5364, + 5365 ] }, { - "teal": 5684, + "teal": 5705, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5348, - 5349, - 5350 + 5366, + 5367, + 5368 ] }, { - "teal": 5685, + "teal": 5706, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5351 + 5369 ] }, { - "teal": 5689, + "teal": 5710, "source": "examples/reti/validatorRegistry.algo.ts:1419", "errorMessage": "provided nfd for entry isn't owned or linked to the staker", "pc": [ - 5352 + 5370 ] }, { - "teal": 5697, + "teal": 5718, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5353, - 5354 + 5371, + 5372 ] }, { - "teal": 5698, + "teal": 5719, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5355, - 5356, - 5357, - 5358, - 5359, - 5360, - 5361, - 5362, - 5363, - 5364, - 5365, - 5366, - 5367, - 5368, - 5369 + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387 ] }, { - "teal": 5699, + "teal": 5720, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5370 + 5388 ] }, { - "teal": 5702, + "teal": 5723, "source": "examples/reti/validatorRegistry.algo.ts:1427", "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", "pc": [ - 5371 + 5389 ] }, { - "teal": 5703, + "teal": 5724, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5372 + 5390 ] }, { - "teal": 5704, + "teal": 5725, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5373, - 5374 + 5391, + 5392 ] }, { - "teal": 5705, + "teal": 5726, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5375, - 5376, - 5377 + 5393, + 5394, + 5395 ] }, { - "teal": 5706, + "teal": 5727, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5378 + 5396 ] }, { - "teal": 5707, + "teal": 5728, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5379 + 5397 ] }, { - "teal": 5710, + "teal": 5731, "source": "examples/reti/validatorRegistry.algo.ts:1426", "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", "pc": [ - 5380 + 5398 ] }, { - "teal": 5713, + "teal": 5734, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5381 + 5399 ] }, { - "teal": 5725, + "teal": 5746, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5382, - 5383, - 5384 + 5400, + 5401, + 5402 ] }, { - "teal": 5728, + "teal": 5749, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5385 + 5403 ] }, { - "teal": 5732, + "teal": 5753, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5386, - 5387 + 5404, + 5405 ] }, { - "teal": 5733, + "teal": 5754, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5388, - 5389, - 5390, - 5391, - 5392, - 5393, - 5394, - 5395 + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413 ] }, { - "teal": 5734, + "teal": 5755, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5396 + 5414 ] }, { - "teal": 5737, + "teal": 5758, "source": "examples/reti/validatorRegistry.algo.ts:1445", "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", "pc": [ - 5397 + 5415 ] }, { - "teal": 5738, + "teal": 5759, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5398, - 5399 + 5416, + 5417 ] }, { - "teal": 5746, + "teal": 5767, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5400 + 5418 ] }, { - "teal": 5747, + "teal": 5768, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5401, - 5402 + 5419, + 5420 ] }, { - "teal": 5748, + "teal": 5769, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5403, - 5404 + 5421, + 5422 ] }, { - "teal": 5752, + "teal": 5773, "source": "examples/reti/validatorRegistry.algo.ts:1448", "pc": [ - 5405, - 5406 + 5423, + 5424 ] }, { - "teal": 5753, + "teal": 5774, "source": "examples/reti/validatorRegistry.algo.ts:1448", "pc": [ - 5407, - 5408 + 5425, + 5426 ] }, { - "teal": 5757, + "teal": 5778, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5409, - 5410 + 5427, + 5428 ] }, { - "teal": 5758, + "teal": 5779, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5411, - 5412 + 5429, + 5430 ] }, { - "teal": 5759, + "teal": 5780, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5413, - 5414 + 5431, + 5432 ] }, { - "teal": 5760, + "teal": 5781, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5415, - 5416 + 5433, + 5434 ] }, { - "teal": 5761, + "teal": 5782, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5417, - 5418 + 5435, + 5436 ] }, { - "teal": 5762, + "teal": 5783, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5419 + 5437 ] }, { - "teal": 5763, + "teal": 5784, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5420, - 5421 + 5438, + 5439 ] }, { - "teal": 5767, + "teal": 5788, "source": "examples/reti/validatorRegistry.algo.ts:1450", "pc": [ - 5422, - 5423 + 5440, + 5441 ] }, { - "teal": 5768, + "teal": 5789, "source": "examples/reti/validatorRegistry.algo.ts:1450", "pc": [ - 5424, - 5425 + 5442, + 5443 ] }, { - "teal": 5771, + "teal": 5792, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5426 + 5444 ] }, { - "teal": 5772, + "teal": 5793, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5427, - 5428 + 5445, + 5446 ] }, { - "teal": 5775, + "teal": 5796, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5429 + 5447 ] }, { - "teal": 5779, + "teal": 5800, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5430, - 5431 + 5448, + 5449 ] }, { - "teal": 5780, + "teal": 5801, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5432 + 5450 ] }, { - "teal": 5781, + "teal": 5802, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5433 + 5451 ] }, { - "teal": 5782, + "teal": 5803, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5434 + 5452 ] }, { - "teal": 5785, + "teal": 5806, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5435, - 5436 + 5453, + 5454 ] }, { - "teal": 5786, + "teal": 5807, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5437 + 5455 ] }, { - "teal": 5797, + "teal": 5818, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5438, - 5439, - 5440 + 5456, + 5457, + 5458 ] }, { - "teal": 5800, + "teal": 5821, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5441 + 5459 ] }, { - "teal": 5801, + "teal": 5822, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5442, - 5443 + 5460, + 5461 ] }, { - "teal": 5808, + "teal": 5829, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5444 + 5462 ] }, { - "teal": 5809, + "teal": 5830, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5445, - 5446 + 5463, + 5464 ] }, { - "teal": 5810, + "teal": 5831, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5447, - 5448 + 5465, + 5466 ] }, { - "teal": 5814, + "teal": 5835, "source": "examples/reti/validatorRegistry.algo.ts:1465", "pc": [ - 5449, - 5450 + 5467, + 5468 ] }, { - "teal": 5815, + "teal": 5836, "source": "examples/reti/validatorRegistry.algo.ts:1465", "pc": [ - 5451, - 5452 - ] - }, - { - "teal": 5819, - "source": "examples/reti/validatorRegistry.algo.ts:1466", - "pc": [ - 5453, - 5454, - 5455, - 5456, - 5457, - 5458, - 5459, - 5460, - 5461, - 5462, - 5463, - 5464, - 5465, - 5466, - 5467 - ] - }, - { - "teal": 5820, - "source": "examples/reti/validatorRegistry.algo.ts:1466", - "pc": [ - 5468, - 5469 + 5469, + 5470 ] }, { - "teal": 5821, + "teal": 5840, "source": "examples/reti/validatorRegistry.algo.ts:1466", "pc": [ - 5470, 5471, 5472, 5473, @@ -26928,1142 +27009,1136 @@ 5481, 5482, 5483, - 5484 + 5484, + 5485 ] }, { - "teal": 5822, + "teal": 5841, + "source": "examples/reti/validatorRegistry.algo.ts:1466", + "pc": [ + 5486, + 5487 + ] + }, + { + "teal": 5842, + "source": "examples/reti/validatorRegistry.algo.ts:1466", + "pc": [ + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5498, + 5499, + 5500, + 5501, + 5502 + ] + }, + { + "teal": 5843, "source": "examples/reti/validatorRegistry.algo.ts:1466", "pc": [ - 5485, - 5486 + 5503, + 5504 ] }, { - "teal": 5825, + "teal": 5846, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5487 + 5505 ] }, { - "teal": 5826, + "teal": 5847, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5488, - 5489 + 5506, + 5507 ] }, { - "teal": 5829, + "teal": 5850, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5490 + 5508 ] }, { - "teal": 5833, + "teal": 5854, "source": "examples/reti/validatorRegistry.algo.ts:1468", "pc": [ - 5491, - 5492 + 5509, + 5510 ] }, { - "teal": 5834, + "teal": 5855, "source": "examples/reti/validatorRegistry.algo.ts:1468", "pc": [ - 5493, - 5494 + 5511, + 5512 ] }, { - "teal": 5838, + "teal": 5859, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5495 + 5513 ] }, { - "teal": 5839, + "teal": 5860, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5496, - 5497 + 5514, + 5515 ] }, { - "teal": 5844, + "teal": 5865, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5498, - 5499 + 5516, + 5517 ] }, { - "teal": 5845, + "teal": 5866, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5500, - 5501 + 5518, + 5519 ] }, { - "teal": 5846, + "teal": 5867, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5502 + 5520 ] }, { - "teal": 5847, + "teal": 5868, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5503 + 5521 ] }, { - "teal": 5848, + "teal": 5869, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5504, - 5505, - 5506 + 5522, + 5523, + 5524 ] }, { - "teal": 5852, + "teal": 5873, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5507, - 5508 + 5525, + 5526 ] }, { - "teal": 5853, + "teal": 5874, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5509, - 5510 + 5527, + 5528 ] }, { - "teal": 5854, + "teal": 5875, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5511, - 5512 + 5529, + 5530 ] }, { - "teal": 5855, + "teal": 5876, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5513 + 5531 ] }, { - "teal": 5856, + "teal": 5877, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5514, - 5515 + 5532, + 5533 ] }, { - "teal": 5861, + "teal": 5882, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5516, - 5517 + 5534, + 5535 ] }, { - "teal": 5862, + "teal": 5883, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5518, - 5519 + 5536, + 5537 ] }, { - "teal": 5863, + "teal": 5884, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5520 + 5538 ] }, { - "teal": 5864, + "teal": 5885, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5521 + 5539 ] }, { - "teal": 5865, + "teal": 5886, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5522, - 5523, - 5524 + 5540, + 5541, + 5542 ] }, { - "teal": 5866, + "teal": 5887, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5525, - 5526 + 5543, + 5544 ] }, { - "teal": 5867, + "teal": 5888, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5527, - 5528 + 5545, + 5546 ] }, { - "teal": 5868, + "teal": 5889, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5529 + 5547 ] }, { - "teal": 5869, + "teal": 5890, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5530 + 5548 ] }, { - "teal": 5872, + "teal": 5893, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5531, - 5532, - 5533 + 5549, + 5550, + 5551 ] }, { - "teal": 5877, + "teal": 5898, "source": "examples/reti/validatorRegistry.algo.ts:1472", "pc": [ - 5534 + 5552 ] }, { - "teal": 5878, + "teal": 5899, "source": "examples/reti/validatorRegistry.algo.ts:1472", "pc": [ - 5535, - 5536, - 5537 + 5553, + 5554, + 5555 ] }, { - "teal": 5885, + "teal": 5906, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5538, - 5539 + 5556, + 5557 ] }, { - "teal": 5886, + "teal": 5907, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5540, - 5541 + 5558, + 5559 ] }, { - "teal": 5887, + "teal": 5908, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5542 + 5560 ] }, { - "teal": 5888, + "teal": 5909, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5543, - 5544 + 5561, + 5562 ] }, { - "teal": 5889, + "teal": 5910, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5545, - 5546, - 5547 + 5563, + 5564, + 5565 ] }, { - "teal": 5894, + "teal": 5915, "source": "examples/reti/validatorRegistry.algo.ts:1475", "pc": [ - 5548 + 5566 ] }, { - "teal": 5898, + "teal": 5919, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5549, - 5550 + 5567, + 5568 ] }, { - "teal": 5901, + "teal": 5922, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5551, - 5552 + 5569, + 5570 ] }, { - "teal": 5902, + "teal": 5923, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5553 + 5571 ] }, { - "teal": 5910, + "teal": 5931, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5554, - 5555, - 5556 + 5572, + 5573, + 5574 ] }, { - "teal": 5913, + "teal": 5934, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5557 + 5575 ] }, { - "teal": 5917, + "teal": 5938, "source": "examples/reti/validatorRegistry.algo.ts:1484", "pc": [ - 5558, - 5559, - 5560 + 5576, + 5577, + 5578 ] }, { - "teal": 5918, + "teal": 5939, "source": "examples/reti/validatorRegistry.algo.ts:1484", "pc": [ - 5561, - 5562 + 5579, + 5580 ] }, { - "teal": 5922, + "teal": 5943, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5563, - 5564 + 5581, + 5582 ] }, { - "teal": 5923, + "teal": 5944, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5565, - 5566 + 5583, + 5584 ] }, { - "teal": 5924, + "teal": 5945, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5567 + 5585 ] }, { - "teal": 5925, + "teal": 5946, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5568 + 5586 ] }, { - "teal": 5926, + "teal": 5947, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5569, - 5570 + 5587, + 5588 ] }, { - "teal": 5927, + "teal": 5948, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5571 + 5589 ] }, { - "teal": 5928, + "teal": 5949, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5572 + 5590 ] }, { - "teal": 5929, + "teal": 5950, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5573 + 5591 ] }, { - "teal": 5930, + "teal": 5951, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5574 + 5592 ] }, { - "teal": 5931, + "teal": 5952, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5575 + 5593 ] }, { - "teal": 5934, + "teal": 5955, "source": "examples/reti/validatorRegistry.algo.ts:1486", "errorMessage": "wideRatio failed", "pc": [ - 5576 + 5594 ] }, { - "teal": 5937, + "teal": 5958, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5577, - 5578 + 5595, + 5596 ] }, { - "teal": 5938, + "teal": 5959, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5579 + 5597 ] }, { - "teal": 5945, + "teal": 5966, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5580, - 5581, - 5582 + 5598, + 5599, + 5600 ] }, { - "teal": 5948, + "teal": 5969, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5583 + 5601 ] }, { - "teal": 5952, + "teal": 5973, "source": "examples/reti/validatorRegistry.algo.ts:1494", "pc": [ - 5584, - 5585, - 5586 + 5602, + 5603, + 5604 ] }, { - "teal": 5953, + "teal": 5974, "source": "examples/reti/validatorRegistry.algo.ts:1494", "pc": [ - 5587, - 5588 + 5605, + 5606 ] }, { - "teal": 5957, + "teal": 5978, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5589, - 5590 + 5607, + 5608 ] }, { - "teal": 5958, + "teal": 5979, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5591, - 5592, - 5593 + 5609, + 5610, + 5611 ] }, { - "teal": 5959, + "teal": 5980, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5594 + 5612 ] }, { - "teal": 5960, + "teal": 5981, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5595 + 5613 ] }, { - "teal": 5961, + "teal": 5982, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5596, - 5597 + 5614, + 5615 ] }, { - "teal": 5962, + "teal": 5983, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5598 + 5616 ] }, { - "teal": 5963, + "teal": 5984, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5599 + 5617 ] }, { - "teal": 5964, + "teal": 5985, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5600 + 5618 ] }, { - "teal": 5965, + "teal": 5986, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5601 + 5619 ] }, { - "teal": 5966, + "teal": 5987, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5602 + 5620 ] }, { - "teal": 5969, + "teal": 5990, "source": "examples/reti/validatorRegistry.algo.ts:1496", "errorMessage": "wideRatio failed", "pc": [ - 5603 + 5621 ] }, { - "teal": 5972, + "teal": 5993, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5604, - 5605 + 5622, + 5623 ] }, { - "teal": 5973, + "teal": 5994, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5606 + 5624 ] }, { - "teal": 5979, + "teal": 6000, "source": "examples/reti/validatorRegistry.algo.ts:1502", "pc": [ - 5607, - 5608, - 5609 + 5625, + 5626, + 5627 ] }, { - "teal": 5983, + "teal": 6004, "source": "examples/reti/validatorRegistry.algo.ts:1504", "pc": [ - 5610, - 5611, - 5612, - 5613, - 5614, - 5615, - 5616, - 5617 + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635 ] }, { - "teal": 5984, + "teal": 6005, "source": "examples/reti/validatorRegistry.algo.ts:1502", "pc": [ - 5618 + 5636 ] }, { - "teal": 5988, + "teal": 6009, "source": "examples/reti/validatorRegistry.algo.ts:1507", "pc": [ - 5619, - 5620, - 5621 + 5637, + 5638, + 5639 ] }, { - "teal": 5992, + "teal": 6013, "source": "examples/reti/validatorRegistry.algo.ts:1509", "pc": [ - 5622, - 5623, - 5624, - 5625, - 5626, - 5627, - 5628, - 5629, - 5630 + 5640, + 5641, + 5642, + 5643, + 5644, + 5645, + 5646, + 5647, + 5648 ] }, { - "teal": 5993, + "teal": 6014, "source": "examples/reti/validatorRegistry.algo.ts:1507", "pc": [ - 5631 + 5649 ] }, { - "teal": 5997, + "teal": 6018, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5632, - 5633, - 5634 + 5650, + 5651, + 5652 ] }, { - "teal": 6000, + "teal": 6021, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5635 + 5653 ] }, { - "teal": 6004, + "teal": 6025, "source": "examples/reti/validatorRegistry.algo.ts:1521", "pc": [ - 5636, - 5637 + 5654, + 5655 ] }, { - "teal": 6005, + "teal": 6026, "source": "examples/reti/validatorRegistry.algo.ts:1521", "pc": [ - 5638, - 5639 + 5656, + 5657 ] }, { - "teal": 6009, + "teal": 6030, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5640, - 5641 + 5658, + 5659 ] }, { - "teal": 6010, + "teal": 6031, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5642, - 5643 + 5660, + 5661 ] }, { - "teal": 6011, + "teal": 6032, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5644, - 5645 + 5662, + 5663 ] }, { - "teal": 6012, + "teal": 6033, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5646 + 5664 ] }, { - "teal": 6013, + "teal": 6034, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5647 + 5665 ] }, { - "teal": 6014, + "teal": 6035, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5648, - 5649 + 5666, + 5667 ] }, { - "teal": 6018, + "teal": 6039, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5650, - 5651 + 5668, + 5669 ] }, { - "teal": 6019, + "teal": 6040, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5652, - 5653 + 5670, + 5671 ] }, { - "teal": 6020, + "teal": 6041, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5654, - 5655 + 5672, + 5673 ] }, { - "teal": 6021, + "teal": 6042, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5656 + 5674 ] }, { - "teal": 6022, + "teal": 6043, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5657 + 5675 ] }, { - "teal": 6023, + "teal": 6044, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5658, - 5659 + 5676, + 5677 ] }, { - "teal": 6027, + "teal": 6048, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5660, - 5661 + 5678, + 5679 ] }, { - "teal": 6028, + "teal": 6049, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5662, - 5663 + 5680, + 5681 ] }, { - "teal": 6029, + "teal": 6050, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5664, - 5665 + 5682, + 5683 ] }, { - "teal": 6030, + "teal": 6051, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5666 + 5684 ] }, { - "teal": 6031, + "teal": 6052, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5667 + 5685 ] }, { - "teal": 6032, + "teal": 6053, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5668, - 5669 + 5686, + 5687 ] }, { - "teal": 6036, + "teal": 6057, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5670, - 5671 + 5688, + 5689 ] }, { - "teal": 6037, + "teal": 6058, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5672, - 5673 + 5690, + 5691 ] }, { - "teal": 6038, + "teal": 6059, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5674, - 5675 + 5692, + 5693 ] }, { - "teal": 6039, + "teal": 6060, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5676 + 5694 ] }, { - "teal": 6040, + "teal": 6061, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5677 + 5695 ] }, { - "teal": 6041, + "teal": 6062, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5678, - 5679 + 5696, + 5697 ] }, { - "teal": 6045, + "teal": 6066, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5680, - 5681 + 5698, + 5699 ] }, { - "teal": 6046, + "teal": 6067, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5682, - 5683 + 5700, + 5701 ] }, { - "teal": 6047, + "teal": 6068, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5684, - 5685 + 5702, + 5703 ] }, { - "teal": 6048, + "teal": 6069, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5686 + 5704 ] }, { - "teal": 6049, + "teal": 6070, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5687 + 5705 ] }, { - "teal": 6050, + "teal": 6071, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5688, - 5689 + 5706, + 5707 ] }, { - "teal": 6054, + "teal": 6075, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5690, - 5691 + 5708, + 5709 ] }, { - "teal": 6055, + "teal": 6076, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5692, - 5693 + 5710, + 5711 ] }, { - "teal": 6056, + "teal": 6077, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5694, - 5695 + 5712, + 5713 ] }, { - "teal": 6057, + "teal": 6078, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5696 + 5714 ] }, { - "teal": 6058, + "teal": 6079, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5697 + 5715 ] }, { - "teal": 6059, + "teal": 6080, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5698, - 5699 + 5716, + 5717 ] }, { - "teal": 6063, + "teal": 6084, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5700, - 5701 + 5718, + 5719 ] }, { - "teal": 6064, + "teal": 6085, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5702, - 5703 + 5720, + 5721 ] }, { - "teal": 6065, + "teal": 6086, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5704, - 5705 + 5722, + 5723 ] }, { - "teal": 6066, + "teal": 6087, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5706 + 5724 ] }, { - "teal": 6067, + "teal": 6088, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5707 + 5725 ] }, { - "teal": 6068, + "teal": 6089, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5708, - 5709 + 5726, + 5727 ] }, { - "teal": 6072, + "teal": 6093, "source": "examples/reti/validatorRegistry.algo.ts:1529", "pc": [ - 5710, - 5711 + 5728, + 5729 ] }, { - "teal": 6075, + "teal": 6096, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5712, - 5713 + 5730, + 5731 ] }, { - "teal": 6076, + "teal": 6097, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5714 + 5732 ] }, { - "teal": 6080, + "teal": 6101, "source": "examples/reti/validatorRegistry.algo.ts:1532", "pc": [ - 5715, - 5716, - 5717 + 5733, + 5734, + 5735 ] }, { - "teal": 6084, + "teal": 6105, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5718, - 5719, - 5720 + 5736, + 5737, + 5738 ] }, { - "teal": 6085, + "teal": 6106, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5721, - 5722 + 5739, + 5740 ] }, { - "teal": 6086, + "teal": 6107, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5723, - 5724, - 5725 + 5741, + 5742, + 5743 ] }, { - "teal": 6087, + "teal": 6108, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5726 + 5744 ] }, { - "teal": 6088, + "teal": 6109, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5727 + 5745 ] }, { - "teal": 6089, + "teal": 6110, "source": "examples/reti/validatorRegistry.algo.ts:1532", "pc": [ - 5728 + 5746 ] }, { - "teal": 6092, + "teal": 6113, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5729, - 5730, - 5731, - 5732, - 5733, - 5734 + 5747, + 5748, + 5749, + 5750, + 5751, + 5752 ] }, { - "teal": 6093, + "teal": 6114, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5735, - 5736, - 5737 + 5753, + 5754, + 5755 ] }, { - "teal": 6094, + "teal": 6115, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5738, - 5739, - 5740, - 5741 + 5756, + 5757, + 5758, + 5759 ] }, { - "teal": 6097, + "teal": 6118, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 5742 - ] - }, - { - "teal": 6100, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5743, - 5744, - 5745, - 5746, - 5747, - 5748 - ] - }, - { - "teal": 6101, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5749, - 5750, - 5751, - 5752, - 5753, - 5754 - ] - }, - { - "teal": 6102, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5755, - 5756, - 5757, - 5758, - 5759, 5760 ] }, { - "teal": 6103, + "teal": 6121, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5761, @@ -28075,7 +28150,7 @@ ] }, { - "teal": 6104, + "teal": 6122, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5767, @@ -28087,7 +28162,7 @@ ] }, { - "teal": 6105, + "teal": 6123, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5773, @@ -28099,7 +28174,7 @@ ] }, { - "teal": 6106, + "teal": 6124, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5779, @@ -28111,7 +28186,7 @@ ] }, { - "teal": 6107, + "teal": 6125, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5785, @@ -28123,7 +28198,7 @@ ] }, { - "teal": 6108, + "teal": 6126, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5791, @@ -28135,7 +28210,7 @@ ] }, { - "teal": 6109, + "teal": 6127, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5797, @@ -28147,7 +28222,7 @@ ] }, { - "teal": 6110, + "teal": 6128, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5803, @@ -28159,7 +28234,7 @@ ] }, { - "teal": 6111, + "teal": 6129, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5809, @@ -28171,7 +28246,7 @@ ] }, { - "teal": 6112, + "teal": 6130, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5815, @@ -28183,7 +28258,7 @@ ] }, { - "teal": 6113, + "teal": 6131, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5821, @@ -28195,7 +28270,7 @@ ] }, { - "teal": 6114, + "teal": 6132, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5827, @@ -28207,7 +28282,7 @@ ] }, { - "teal": 6115, + "teal": 6133, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5833, @@ -28219,7 +28294,7 @@ ] }, { - "teal": 6116, + "teal": 6134, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5839, @@ -28231,7 +28306,7 @@ ] }, { - "teal": 6117, + "teal": 6135, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5845, @@ -28243,7 +28318,7 @@ ] }, { - "teal": 6118, + "teal": 6136, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5851, @@ -28255,7 +28330,7 @@ ] }, { - "teal": 6119, + "teal": 6137, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5857, @@ -28267,7 +28342,7 @@ ] }, { - "teal": 6120, + "teal": 6138, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5863, @@ -28279,7 +28354,7 @@ ] }, { - "teal": 6121, + "teal": 6139, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5869, @@ -28291,7 +28366,7 @@ ] }, { - "teal": 6122, + "teal": 6140, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5875, @@ -28303,7 +28378,7 @@ ] }, { - "teal": 6123, + "teal": 6141, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5881, @@ -28315,7 +28390,7 @@ ] }, { - "teal": 6124, + "teal": 6142, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5887, @@ -28327,7 +28402,7 @@ ] }, { - "teal": 6125, + "teal": 6143, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5893, @@ -28339,7 +28414,7 @@ ] }, { - "teal": 6126, + "teal": 6144, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5899, @@ -28351,7 +28426,7 @@ ] }, { - "teal": 6127, + "teal": 6145, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5905, @@ -28363,7 +28438,7 @@ ] }, { - "teal": 6128, + "teal": 6146, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5911, @@ -28375,7 +28450,7 @@ ] }, { - "teal": 6129, + "teal": 6147, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5917, @@ -28387,7 +28462,7 @@ ] }, { - "teal": 6130, + "teal": 6148, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5923, @@ -28399,7 +28474,7 @@ ] }, { - "teal": 6131, + "teal": 6149, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5929, @@ -28411,7 +28486,7 @@ ] }, { - "teal": 6132, + "teal": 6150, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5935, @@ -28423,36 +28498,54 @@ ] }, { - "teal": 6133, + "teal": 6151, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5941, 5942, - 5943 + 5943, + 5944, + 5945, + 5946 ] }, { - "teal": 6134, + "teal": 6152, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5944, - 5945, - 5946, 5947, 5948, 5949, 5950, 5951, - 5952, + 5952 + ] + }, + { + "teal": 6153, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5953, 5954, 5955, 5956, 5957, - 5958, + 5958 + ] + }, + { + "teal": 6154, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5959, 5960, - 5961, + 5961 + ] + }, + { + "teal": 6155, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5962, 5963, 5964, @@ -28502,54 +28595,72 @@ 6008, 6009, 6010, - 6011 + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6029 ] }, { - "teal": 6137, + "teal": 6158, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 6012 + 6030 ] }, { - "teal": 6140, + "teal": 6161, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6013, - 6014, - 6015, - 6016, - 6017, - 6018 + 6031, + 6032, + 6033, + 6034, + 6035, + 6036 ] }, { - "teal": 6141, + "teal": 6162, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6019, - 6020, - 6021 + 6037, + 6038, + 6039 ] }, { - "teal": 6142, + "teal": 6163, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6022, - 6023, - 6024, - 6025 + 6040, + 6041, + 6042, + 6043 ] }, { - "teal": 6145, + "teal": 6166, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for call UpdateApplication", "pc": [ - 6026 + 6044 ] } ], @@ -28561,7 +28672,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgOCAyNCAzMiAxOCAyNjggNiAyNDIgMyAyIDEwIDI1MiAyNjAgNzAwIDEwMDAwMCA5MDAgNDAgMjAwIFRNUExfbmZkUmVnaXN0cnlBcHBJZCA0IDcyIDE5MiAyNDQgMTAwMDAwMCA0MDk2IDUgMjI2IDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgMHgwYTgxMDEgMHg2OTJlNmY3NzZlNjU3MjJlNjEgMHgwMDAwMDAwMDAwMDAwMDAwIDB4Njk2ZTY5NzQgMHg2ZTc1NmQ1NiAweDY5NzM1Zjc2NjE2YzY5NjQ1ZjZlNjY2NDVmNjE3MDcwNjk2NCAweDYzZjNmMjhiCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnRjIDcgLy8gNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbiAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV91cGRhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgdXBkYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKdXBkYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAyCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBZGRyZXNzLmZyb21BZGRyZXNzKCdMWjRWMklSVkxDWEZKSzRSRUpWNFRBR0VLRVlUQTJHTVI2VEMyMzQ0T0IzTDNBRjNNV1haNlpBRklRJykpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg1ZTc5NWQyMjM1NThhZTU0YWI5MTIyNmJjOTgwYzQ1MTMxMzA2OGNjOGZhNjJkNmY5YzcwNzZiZDgwYmI2NWFmIC8vIGFkZHIgIkxaNFYySVJWTENYRkpLNFJFSlY0VEFHRUtFWVRBMkdNUjZUQzIzNDRPQjNMM0FGM01XWFo2WkFGSVEiCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5kZWxldGUoKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfZGVsCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gdGhpcy5zdGFraW5nUG9vbEluaXRpYWxpemVkLnZhbHVlID0gZmFsc2UKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWludGMgMCAvLyAwCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZWMgMTEgLy8gICJpbml0IgoJaW50YyAwIC8vIDAKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTAKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTEKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlYyA0IC8vICAic3Rha2VkIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxNwoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDAgLy8gMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIyCgkvLyB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnJlcGxhY2Uob2Zmc2V0LCBkYXRhKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gb2Zmc2V0OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBkYXRhOiBieXRlcwoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCS8vIGV4ZWN1dGUgZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKCWNhbGxzdWIgZmluYWxpemVTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCk6IHZvaWQKZmluYWxpemVTdGFraW5nQ29udHJhY3Q6Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjI2CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMSAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0NgoJLy8gcmV0dXJuIHsKCS8vICAgICAgIGFkZFZhbGlkYXRvck1icjogdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSgxIC8qIHYgcHJlZml4ICovICsgbGVuPFZhbGlkYXRvcklkVHlwZT4oKSArIGxlbjxWYWxpZGF0b3JJbmZvPigpKSwKCS8vICAgICAgIGFkZFBvb2xNYnI6IHRoaXMubWluQmFsYW5jZUZvckFjY291bnQoCgkvLyAgICAgICAgIDEsCgkvLyAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAvLyBtZWFuIG91ciBjYWxsZXJzIHdvdWxkIGhhdmUgdG8gcmVmZXJlbmNlIHRoZSBib3ggQU5EIGJ1eSB1cCBpL28gLSBzbyBqdXN0IGdvIG1heCBvbiBleHRyYSBwYWdlcwoJLy8gICAgICAgICAzLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgIFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCgkvLyAgICAgICApLAoJLy8gICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgIEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UgKwoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDcgLyogJ3N0YWtlcnMnIG5hbWUgKi8gKyBsZW48U3Rha2VkSW5mbz4oKSAqIE1BWF9TVEFLRVJTX1BFUl9QT09MKSwKCS8vICAgICAgIGFkZFN0YWtlck1icjoKCS8vICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSKSwgLy8gc2l6ZSBvZiBrZXkgKyBhbGwgdmFsdWVzCgkvLyAgICAgfTsKCXB1c2hpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50YyA5IC8vIDMKCWludGMgMzQgLy8gMTEKCWludGMgMCAvLyAwCglkdXBuIDIKCWludGMgOSAvLyAzCglpbnRjIDEgLy8gMQoJY2FsbHN1YiBtaW5CYWxhbmNlRm9yQWNjb3VudAoJaXRvYgoJY29uY2F0CglpbnRjIDE1IC8vIDEwMDAwMAoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglwdXNoaW50IDE3OQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJY29uY2F0CglyZXRzdWIKCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFByb3RvY29sQ29uc3RyYWludHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCk6IENvbnN0cmFpbnRzCi8vCi8vIFJldHVybnMgdGhlIHByb3RvY29sIGNvbnN0cmFpbnRzIHNvIHRoYXQgVUlzIGNhbiBsaW1pdCB3aGF0IHVzZXJzIHNwZWNpZnkgZm9yIHZhbGlkYXRvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCmdldFByb3RvY29sQ29uc3RyYWludHM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcyCgkvLyByZXR1cm4gewoJLy8gICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICB9OwoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjkyCgkvLyByZXR1cm4gdGhpcy5udW1WYWxpZGF0b3JzLnZhbHVlOwoJYnl0ZWMgMTIgLy8gICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyOTcKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZzsKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0VmFsaWRhdG9yU3RhdGUKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JTdGF0ZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ3VyU3RhdGUKZ2V0VmFsaWRhdG9yU3RhdGU6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzAyCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZTsKCWludGMgOCAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDcKCS8vIHJldHVybiBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXJdOwoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAxNyAvLyA0MAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA1IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzE4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGVjIDEgLy8gMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxOQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjkgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyBwb29sU2V0W2ldLnBvb2xBcHBJZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMF9lbmQKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCWIgKmZvcl8wX2VuZAoKKmlmMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDUgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNwoJLy8gcmV0dXJuIHJldERhdGE7CglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NApnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM1CgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWR1cAoJYnogKnNraXBfYW5kMAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDMgLy8gMjQKCTw9CgkmJgoKKnNraXBfYW5kMDoKCS8vIHBvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZDsKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcmV0c3ViCgovLyBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQb29sSW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCAwIChwb29sS2V5KSBmb3IgZ2V0UG9vbEluZm8gbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCgljYWxsc3ViIGdldFBvb2xJbmZvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbEluZm8ocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFBvb2xJbmZvCmdldFBvb2xJbmZvOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdOwoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA1IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU1CgkvLyBudW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1NgoJLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMgPSB0aGlzLm1heEFsbG93ZWRTdGFrZSgpIC8gbnVtUG9vbHMKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CgkvCglmcmFtZV9idXJ5IDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTcKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OAoJLy8gbWF4UGVyUG9vbCA9PT0gMAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjFfZW5kCgoJLy8gKmlmMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU5CgkvLyBtYXhQZXJQb29sID0gdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKQoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjFfZW5kOgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MgoJLy8gbWF4UGVyUG9vbCA9IGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzCglmcmFtZV9kaWcgMSAvLyBoYXJkTWF4RGl2aWRlZEJldHdlZW5Qb29sczogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjQKCS8vIHJldHVybiBtYXhQZXJQb29sOwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHJldHVybiAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzOwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50YyAzIC8vIDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4MwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NAoJLy8gcmV0dXJuIFtdOwoJYnl0ZWMgMSAvLyAweAoJYiAqZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KnJldHVybgoKKmlmM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg2CgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBwb29sU2V0W2ldLmlkICE9PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkwCgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdCgoqaWY0X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkzCgkvLyByZXR1cm4gcmV0RGF0YTsKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIGdldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBSZXRyaWV2ZXMgdGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgYSBnaXZlbiB2YWxpZGF0b3IgLSByZXR1cm5pbmcgdGhlIHBvb2wgcmF0aW9zIG9mIHdob2xlIHNvIHRoYXQgdG9rZW4KLy8gcGF5b3V0cyBhY3Jvc3MgcG9vbHMgY2FuIGJlIGJhc2VkIG9uIGEgc3RhYmxlIHNuYXBob3N0IG9mIHN0YWtlLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHJldHVybiB7UG9vbFRva2VuUGF5b3V0UmF0aW99IC0gVGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgdGhlIHZhbGlkYXRvci4KZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDUKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCiphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoJY2FsbHN1YiBnZXROb2RlUG9vbEFzc2lnbm1lbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh2YWxpZGF0b3JJZDogdWludDY0KTogTm9kZVBvb2xBc3NpZ25tZW50Q29uZmlnCmdldE5vZGVQb29sQXNzaWdubWVudHM6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDEwCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxMgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50czsKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CgljYWxsc3ViIGdldE5GRFJlZ2lzdHJ5SUQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRORkRSZWdpc3RyeUlEKCk6IHVpbnQ2NApnZXRORkRSZWdpc3RyeUlEOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxNgoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZDsKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA4IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjgKCS8vIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCgljYWxsc3ViIHZhbGlkYXRlQ29uZmlnCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyOQoJLy8gYXNzZXJ0KGNvbmZpZy5vd25lciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMwCgkvLyBhc3NlcnQoY29uZmlnLm1hbmFnZXIgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzEKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IGNvbmZpZy5vd25lciwgJ3NlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yJykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgk9PQoKCS8vIHNlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoibWJyUGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJ0aGlzLmdldE1ickFtb3VudHMoKS5hZGRWYWxpZGF0b3JNYnIifQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNQoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCXB1c2hpbnQgMTAwMDAwMDAKCT4KCgkvLyBmZWUgbXVzdCBiZSAxMCBBTEdPIG9yIG1vcmUgdG8gcHJldmVudCBzcGFtbWluZyBvZiB2YWxpZGF0b3JzCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDEyIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM5CgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZWMgMTIgLy8gICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmNyZWF0ZSgpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxMDkyCglib3hfY3JlYXRlCglwb3AKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQyCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuaWQgPSB2YWxpZGF0b3JJZAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vICppZjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQ2CgkvLyBjb25maWcubmZkRm9ySW5mbyAhPT0gMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NDgKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgbmZkTmFtZSwgaXRvYihjb25maWcubmZkRm9ySW5mbyldLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKV0sCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0OQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1MAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IoY29uZmlnLm5mZEZvckluZm8pXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pXQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTMKCS8vIGFzc2VydChidG9pKHRoaXMuaXR4bi5sYXN0TG9nKSA9PT0gMSwgInByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZCIpCglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IChBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcyksCgkvLyAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2MQoJLy8gY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgOSAvLyAzCgk9PQoJZHVwCglibnogKnNraXBfb3IwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAyMCAvLyA0Cgk9PQoJfHwKCipza2lwX29yMDoKCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY1CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwgJ3Byb3ZpZGVkIE5GRCBBcHAgaWQgZm9yIGdhdGluZyBtdXN0IGJlIHZhbGlkIE5GRCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjZfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkOwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJLy8gbWFuYWdlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChtYW5hZ2VyKSBmb3IgY2hhbmdlVmFsaWRhdG9yTWFuYWdlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbWFuYWdlcjogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgVmFsaWRhdG9yIG1hbmFnZXIgZm9yIGEgc3BlY2lmaWMgVmFsaWRhdG9yIGlkLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIGNoYW5nZSB0aGUgbWFuYWdlciBmb3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gbWFuYWdlciAtIFRoZSBuZXcgbWFuYWdlciBhZGRyZXNzLgpjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciA9IG1hbmFnZXIKCWludGMgMTcgLy8gNDAKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm86CgkvLyBzdW5zZXR0aW5nVG86IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN1bnNldHRpbmdPbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgc3Vuc2V0dGluZ09uOiB1aW50NjQsIHN1bnNldHRpbmdUbzogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBVcGRhdGVzIHRoZSBzdW5zZXQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdPbiAtIFRoZSBuZXcgc3Vuc2V0IHRpbWVzdGFtcC4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdUbyAtIFRoZSBuZXcgc3Vuc2V0IHRvIHZhbGlkYXRvciBpZC4KY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCXByb3RvIDMgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50YyAyNyAvLyAyMjYKCWZyYW1lX2RpZyAtMiAvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MDAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdUbyA9IHN1bnNldHRpbmdUbwoJcHVzaGludCAyMzQKCWZyYW1lX2RpZyAtMyAvLyBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJRDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTkZECglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbmZkQXBwSUQ6IHVpbnQ2NCwgbmZkTmFtZTogc3RyaW5nKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBORkQgZm9yIGEgdmFsaWRhdG9yIGluIHRoZSB2YWxpZGF0b3JMaXN0IGNvbnRyYWN0LgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBORkQgdG8gYXNzaWduIHRvIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIE5GRCAod2hpY2ggbXVzdCBtYXRjaCkKY2hhbmdlVmFsaWRhdG9yTkZEOgoJcHJvdG8gMyAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxMwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyMAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0zIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjQKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGVjIDkgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCT09CgoJLy8gSWYgc3BlY2lmeWluZyBORkQsIGFjY291bnQgYWRkaW5nIHZhbGlkYXRvciBtdXN0IGJlIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludGMgMjEgLy8gNzIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0MAoJLy8gYXNzZXJ0KGNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglwdXNoaW50IDE3NwoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzUgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcyA9IEVudHJ5R2F0aW5nQWRkcmVzcwoJcHVzaGludCA4MQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzID0gRW50cnlHYXRpbmdBc3NldHMKCXB1c2hpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzYgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRQZXJQYXlvdXQgPSBSZXdhcmRQZXJQYXlvdXQKCXB1c2hpbnQgMTYxCglmcmFtZV9kaWcgLTYgLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkUG9vbCBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRQb29sCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkUG9vbChtYnJQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5vZGVOdW06IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBhIG5ldyBwb29sIHRvIGEgdmFsaWRhdG9yJ3MgcG9vbCBzZXQsIHJldHVybmluZyB0aGUgJ2tleScgdG8gcmVmZXJlbmNlIHRoZSBwb29sIGluIHRoZSBmdXR1cmUgZm9yIHN0YWtpbmcsIGV0Yy4KLy8gVGhlIGNhbGxlciBtdXN0IHBheSB0aGUgY29zdCBvZiB0aGUgdmFsaWRhdG9ycyBNQlIgaW5jcmVhc2UgYXMgd2VsbCBhcyB0aGUgTUJSIHRoYXQgd2lsbCBiZSBuZWVkZWQgZm9yIHRoZSBwb29sIGl0c2VsZi4KLy8KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIGNhbGwgXQovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgYWRkaW5nIGEgbmV3IHBvb2wKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIGlzIGlkIG9mIHZhbGlkYXRvciB0byBwb29sIHRvIChtdXN0IGJlIG93bmVyIG9yIG1hbmFnZXIpCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtIGlzIG5vZGUgbnVtYmVyIHRvIGFkZCB0bwovLyBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbCBrZXkgdG8gY3JlYXRlZCBwb29sCmFkZFBvb2w6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjE6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1ODgKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciwgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MgfSkKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1OTAKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTkyCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5MwoJLy8gKG51bVBvb2xzIGFzIHVpbnQ2NCkgPj0gTUFYX1BPT0xTCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnRjIDMgLy8gMjQKCT49CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gYWxyZWFkeSBhdCBtYXggcG9vbCBzaXplCgllcnIKCippZjdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5NgoJLy8gbnVtUG9vbHMgKz0gMQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5OQoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoMCwgNDA5NiksCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgIF0sCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjAwCgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnRjIDAgLy8gIE5vT3AKCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwMQoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDQwOTYsIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZSAtIDQwOTYpLAoJLy8gICAgICAgXQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDAgLy8gMAoJaW50YyAyNSAvLyA0MDk2Cglib3hfZXh0cmFjdAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDI1IC8vIDQwOTYKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJYm94X2xlbgoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplCglhc3NlcnQKCWludGMgMjUgLy8gNDA5NgoJLQoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA1CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBhCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNgoJLy8gZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnRjIDM0IC8vIDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA3CgkvLyBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnRjIDkgLy8gMwoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA5IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdCglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDM4IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgPSBudW1Qb29scyBhcyB1aW50MTYKCWludGMgOCAvLyAyNDIKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyMgoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW251bVBvb2xzIC0gMV0ucG9vbEFwcElkID0gcG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNAoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzIKCS8vIHJldHVybiB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBudW1Qb29scyBhcyB1aW50NjQsIHBvb2xBcHBJZDogdGhpcy5pdHhuIS5jcmVhdGVkQXBwbGljYXRpb25JRC5pZCB9OwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJaXRvYgoJY29uY2F0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkU3Rha2U6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA1CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NQoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjQ4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPCBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgImNhbid0IHN0YWtlIHdpdGggYSB2YWxpZGF0b3IgdGhhdCBpcyBwYXN0IGl0cyBzdW5zZXR0aW5nIHRpbWUiCgkvLyAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCTwKCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1NQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1OQoJLy8gdmVyaWZ5UGF5VHhuKHN0YWtlZEFtb3VudFBheW1lbnQsIHsKCS8vICAgICAgIHNlbmRlcjogc3Rha2VyLAoJLy8gICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCA8IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAndG90YWwgc3Rha2VkIGZvciBhbGwgb2YgYSB2YWxpZGF0b3JzIHBvb2xzIG1heSBub3QgZXhjZWVkIGhhcmQgY2FwJwoJLy8gICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzMKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzUKCS8vIHJlYWxBbW91bnQgPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9idXJ5IDEgLy8gcmVhbEFtb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NgoJLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3OAoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCSEKCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgxCgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODIKCS8vIHJlYWxBbW91bnQgLT0gbWJyQW10TGVmdEJlaGluZAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgzCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5jcmVhdGUoKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglwdXNoaW50IDE0NAoJYm94X2NyZWF0ZQoJcG9wCgoqaWY5X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODcKCS8vIGZpbmRSZXQgPSB0aGlzLmZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkLCBzdGFrZXIsIHJlYWxBbW91bnQpCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWZyYW1lX2J1cnkgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY4OAoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODkKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyMiAvLyAxOTIKCWdldGJpdAoJZnJhbWVfYnVyeSA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjkwCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmaW5kUmV0WzJdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY5MQoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk2CgkvLyB0aGlzLnVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyLCBwb29sS2V5KQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljYWxsc3ViIHVwZGF0ZVN0YWtlclBvb2xTZXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk5CgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgcG9vbEtleSwKCS8vICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sCgkvLyAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIHJldHVybiBwb29sS2V5OwoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzQKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzM1CgkvLyBhc3NlcnQocG9vbDFBcHBJRCAhPT0gMCkKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5hZGRyZXNzCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjExX2VuZAoKCS8vICppZjExX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjExX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDQKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDUKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMCAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ2CgkvLyBsYXN0UGF5b3V0VXBkYXRlICE9PSAwCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMTJfZW5kCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gKmlmMTNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ4CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpCglhc3NlcnQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjEzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJcHVzaGludCAxNjkKCWludGMgMjAgLy8gNAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTIKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NAoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbzsKCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTggLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTRfZW5kOgoKKmlmMTJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnVwZGF0ZWRGb3JQYXlvdXQgPSBjdXJSb3VuZAoJaW50YyAzMCAvLyA4OTIKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYwCgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNSAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MQoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl8yOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA1IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfMl9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY3CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgW3RoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbaV0udG90YWxBbGdvU3Rha2VkLCAxXzAwMF8wMDBdLAoJLy8gICAgICAgICBbdG90YWxTdGFrZUZvclZhbGlkYXRvcl0KCS8vICAgICAgICkKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXB1c2hpbnQgMV8wMDBfMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8ucG9vbFBjdE9mV2hvbGVbaV0gPSBvdXJQb29sUGN0T2ZXaG9sZQoJaW50YyAxNCAvLyA3MDAKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmZvcl8yX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoKKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gOAoJcmV0c3ViCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJLy8gc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYWxnb1RvQWRkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIGFsZ29Ub0FkZDogdWludDY0LCByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQsIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NCwgc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0KTogdm9pZAovLwovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIGlzIGNhbGxlZCBieSBTdGFraW5nIHBvb2xzIHRvIGluZm9ybSB0aGUgdmFsaWRhdG9yICh1cykgdGhhdCBhIHBhcnRpY3VsYXIgYW1vdW50IG9mIHRvdGFsCi8vIHN0YWtlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFZhbGlkYXRvclBvb2xLZXkgdHlwZQovLyBAcGFyYW0ge3VpbnQ2NH0gYWxnb1RvQWRkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzICh0aGF0IHNob3VsZCBiZQovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9yQ29tbWlzc2lvbiAtIHRoZSBjb21taXNzaW9uIGFtb3VudCB0aGUgdmFsaWRhdG9yIHdhcyBwYWlkLCBpZiBhbnkKLy8gQHBhcmFtIHt1aW50NjR9IHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbmsgLSBpZiB0aGUgcG9vbCB3YXMgaW4gc2F0dXJhdGVkIHN0YXRlLCB0aGUgYW1vdW50IHNlbnQgYmFjayB0byB0aGUgZmVlIHNpbmsuCi8vIHNlZW4gYXMgJ2FjY291bnRlZCBmb3IvcGVuZGluZyBzcGVudCcpCnN0YWtlVXBkYXRlZFZpYVJld2FyZHM6Cglwcm90byA1IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk0CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IGFsZ29Ub0FkZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc5OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGFsZ29Ub0FkZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDQKCS8vIHRoaXMucmV2ZXJpZnlORkRPd25lcnNoaXAocG9vbEtleS5pZCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJY2FsbHN1YiByZXZlcmlmeU5GRE93bmVyc2hpcAoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOCAvLyAzMDAKCTwKCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MzcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM5CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQzCgkvLyBhc3NlcnQoYW1vdW50UmVtb3ZlZCA+IDAgfHwgcmV3YXJkUmVtb3ZlZCA+IDAsICdzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQnKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYm56ICpza2lwX29yMgoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NDYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglieXRlYyA0IC8vICAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTAKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMTZfZWxzZQoKCS8vICppZjE2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTEKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzcgLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUyCgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JRCAhPT0gMCwgInJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuISIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuIQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAncmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQnCgkvLyAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODU5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayAtPSByZXdhcmRSZW1vdmVkCglpbnRjIDEzIC8vIDI2MAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY0CgkvLyBwb29sS2V5LnBvb2xJZCAhPT0gMQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjE3X2VuZAoKCS8vICppZjE3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NjUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg2NgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY3CgkvLyBtZXRob2RBcmdzOiBbc3Rha2VyLCByZXdhcmRUb2tlbklELCByZXdhcmRSZW1vdmVkXQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJYiAqaWYxNl9lbmQKCippZjE2X2Vsc2U6CgoqaWYxNl9lbmQ6CgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHN0YWtlclJlbW92ZWQKCWZyYW1lX2RpZyAtNSAvLyBzdGFrZXJSZW1vdmVkOiBib29sZWFuCglieiAqaWYxOF9lbmQKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk2CgkvLyByZW1vdmVSZXQgPSB0aGlzLnJlbW92ZUZyb21TdGFrZXJQb29sU2V0KHN0YWtlciwgPFZhbGlkYXRvclBvb2xLZXk+ewoJLy8gICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgcG9vbEFwcElkOiBwb29sS2V5LnBvb2xBcHBJZCwKCS8vICAgICAgIH0pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNhbGxzdWIgcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQKCWZyYW1lX2J1cnkgMSAvLyByZW1vdmVSZXQ6IChib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwMQoJLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yID0gcmVtb3ZlUmV0WzBdCglmcmFtZV9kaWcgMSAvLyByZW1vdmVSZXQ6IChib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAwIC8vIDAKCWdldGJpdAoJZnJhbWVfYnVyeSAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MDIKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjE5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwNAoJLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yCglmcmFtZV9kaWcgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCWJ6ICppZjE5X2VuZAoKCS8vICppZjE5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MDUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyAyMyAvLyAyNDQKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjE5X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwOAoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwOQoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlIC09IDEKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyA3IC8vICAibnVtU3Rha2VycyIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoqaWYyMF9lbmQ6CgoqaWYxOF9lbmQ6CglyZXRzdWIKCi8vIGZpbmRQb29sRm9yU3Rha2VyKHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCkoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCiphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChzdGFrZXIpIGZvciBmaW5kUG9vbEZvclN0YWtlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBmaW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBzdGFrZXI6IEFkZHJlc3MsIGFtb3VudFRvU3Rha2U6IHVpbnQ2NCk6IFtWYWxpZGF0b3JQb29sS2V5LCBib29sZWFuLCBib29sZWFuXQovLwovLyBGaW5kcyB0aGUgcG9vbCBmb3IgYSBzdGFrZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhbGlkYXRvciBpZCwgc3Rha2VyIGFkZHJlc3MsIGFuZCBhbW91bnQgdG8gc3Rha2UuCi8vIEZpcnN0IGNoZWNrcyB0aGUgc3Rha2VycyAnYWxyZWFkeSBzdGFrZWQgbGlzdCcgZm9yIHRoZSB2YWxpZGF0b3IgcHJlZmVycmluZyB0aG9zZSAoYWRkaW5nIGlmIHBvc3NpYmxlKSB0aGVuIGFkZHMKLy8gdG8gbmV3IHBvb2wgaWYgbmVjZXNzYXJ5LgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWRkcmVzcyBvZiB0aGUgc3Rha2VyLgovLyBAcGFyYW0ge3VpbnQ2NH0gYW1vdW50VG9TdGFrZSAtIFRoZSBhbW91bnQgdG8gc3Rha2UuCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5LCBib29sZWFuLCBib29sZWFufSAtIFRoZSBwb29sIGZvciB0aGUgc3Rha2VyLCB0cnVlL2ZhbHNlIG9uIHdoZXRoZXIgdGhlIHN0YWtlciBpcyAnbmV3JwovLyB0byB0aGlzIFZBTElEQVRPUiwgYW5kIHRydWUvZmFsc2UgaWYgc3Rha2VyIGlzIG5ldyB0byB0aGUgcHJvdG9jb2wuCmZpbmRQb29sRm9yU3Rha2VyOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzAKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTMxCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzkKCS8vIG1heFBlclBvb2wgPSB0aGlzLmdldEN1ck1heFN0YWtlUGVyUG9vbCh2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGdldEN1ck1heFN0YWtlUGVyUG9vbAoJZnJhbWVfYnVyeSAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0MgoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkICE9PSAwKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCipmb3JfMzoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDUKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjIyX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NgoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMjggLy8gMzAwCgk8CglieiAqaWYyMl9lbmQKCgkvLyAqaWYyMl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ3CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMjJfZW5kOgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ5CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjIzX2VuZAoKCS8vICppZjIzX2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTMKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHZhbGlkYXRvcklkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJPT0KCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTUKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTU3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xTZXRbaV0ucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PQoJLy8gICAgICAgICAgICAgbWF4UGVyUG9vbAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjVfZW5kCgoJLy8gKmlmMjVfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk2MAoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdOwoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoJc2V0Yml0CglpbnRjIDEgLy8gMQoJZnJhbWVfZGlnIDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglzZXRiaXQKCWNvbmNhdAoJYiAqZmluZFBvb2xGb3JTdGFrZXIqcmV0dXJuCgoqaWYyNV9lbmQ6CgoqaWYyNF9lbmQ6CgoqZm9yXzNfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ1CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl8zCgoqZm9yXzNfZW5kOgoKKmlmMjFfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk2NwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcKCS8vICAgICApCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CglpbnRjIDM4IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTczCgkvLyBwb29scyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjkgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NAoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA4IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc1CgkvLyBpIDwgY3VyTnVtUG9vbHMKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoJPAoJYnogKmZvcl80X2VuZAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NgoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjZfZW5kCgoJLy8gKmlmMjZfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NwoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgXTsKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI2X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTg1CgkvLyByZXR1cm4gW3sgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9LCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdOwoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoJc2V0Yml0CglpbnRjIDEgLy8gMQoJZnJhbWVfZGlnIDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglzZXRiaXQKCWNvbmNhdAoKKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDcKCXJldHN1YgoKLy8gbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX21vdmVQb29sVG9Ob2RlOgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gcG9vbEFwcElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIG1vdmVQb29sVG9Ob2RlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBtb3ZlUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAovLwovLyBGaW5kIHRoZSBzcGVjaWZpZWQgcG9vbCAoaW4gYW55IG5vZGUgbnVtYmVyKSBhbmQgbW92ZSBpdCB0byB0aGUgc3BlY2lmaWVkIG5vZGUuCi8vIFRoZSBwb29sIGFjY291bnQgaXMgZm9yY2VkIG9mZmxpbmUgaWYgbW92ZWQgc28gcHJpb3Igbm9kZSB3aWxsIHN0aWxsIHJ1biBmb3IgMzIwIHJvdW5kcyBidXQKLy8gbmV3IGtleSBnb2VzIG9ubGluZSBvbiBuZXcgbm9kZSBzb29uIGFmdGVyICgzMjAgcm91bmRzIGFmdGVyIGl0IGdvZXMgb25saW5lKQovLyBOby1vcCBpZiBzdWNjZXNzLCBhc3NlcnRzIGlmIG5vdCBmb3VuZCBvciBjYW4ndCBtb3ZlICAobm8gc3BhY2UgaW4gdGFyZ2V0KQovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gQ0hBTkdFIF0KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSBwb29sQXBwSWQKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0KbW92ZVBvb2xUb05vZGU6Cglwcm90byAzIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMDEKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJZHVwCglibnogKnNraXBfb3IzCgl0eG4gU2VuZGVyCglpbnRjIDE3IC8vIDQwCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09Cgl8fAoKKnNraXBfb3IzOgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAwNwoJLy8gbm9kZVBvb2xBc3NpZ25tZW50cyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cykKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDAgLy8gbm9kZVBvb2xBc3NpZ25tZW50czogKCh1aW50NjRbM10pWzhdKQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDA4CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMToKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBmb3IgKGxldCBzcmNOb2RlSWR4ID0gMDsgc3JjTm9kZUlkeCA8IE1BWF9OT0RFUzsgc3JjTm9kZUlkeCArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCipmb3JfNToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBzcmNOb2RlSWR4IDwgTUFYX05PREVTCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMiAvLyA4Cgk8CglieiAqZm9yXzVfZW5kCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGkgPCBNQVhfUE9PTFNfUEVSX05PREUKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA5IC8vIDMKCTwKCWJ6ICpmb3JfNl9lbmQKCgkvLyAqaWYyN19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEyCgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPT09IHBvb2xBcHBJZAoJZnJhbWVfZGlnIDAgLy8gbm9kZVBvb2xBc3NpZ25tZW50czogKCh1aW50NjRbM10pWzhdKQoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0Cgk9PQoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTMKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDE1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9IDAKCWludGMgMTYgLy8gOTAwCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5nb09mZmxpbmU+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg1MWVmM2IyMSAvLyBtZXRob2QgImdvT2ZmbGluZSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBhZGRQb29sVG9Ob2RlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjQKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmMjdfZW5kOgoKKmZvcl82X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTEKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzYKCipmb3JfNl9lbmQ6CgoqZm9yXzVfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDMKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ3CgkvLyByZXdhcmRUb2tlbklkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucmV3YXJkVG9rZW5JZAoJaW50YyAzNyAvLyAxNTMKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDgKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ5CgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JZCAhPT0gMCwgInRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gdGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDUwCgkvLyBwb29sT25lQXBwSWQgPSBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDUyCgkvLyB0b2tlblJld2FyZEJhbCA9IHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpIC0gcmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgktCglmcmFtZV9idXJ5IDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU1CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnBheVRva2VuUmV3YXJkPih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbcmVjZWl2ZXIsIHJld2FyZFRva2VuSWQsIHRva2VuUmV3YXJkQmFsXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTYKCS8vIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZAoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDU3CgkvLyBtZXRob2RBcmdzOiBbcmVjZWl2ZXIsIHJld2FyZFRva2VuSWQsIHRva2VuUmV3YXJkQmFsXQoJZnJhbWVfZGlnIC0yIC8vIHJlY2VpdmVyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTkKCS8vIGFzc2VydCgKCS8vICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JwoJLy8gICAgICkKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJPT0KCgkvLyBiYWxhbmNlIG9mIHJlbWFpbmluZyByZXdhcmQgdG9rZW5zIHNob3VsZCBtYXRjaCB0aGUgaGVsZCBiYWNrIGFtb3VudAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNjMKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbDsKCWZyYW1lX2RpZyAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAzCglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gTG9ncyB0aGUgYWRkaXRpb24gb2YgYSBuZXcgdmFsaWRhdG9yIHRvIHRoZSBzeXN0ZW0sIGl0cyBpbml0aWFsIG93bmVyIGFuZCBtYW5hZ2VyCi8vCi8vCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIgdmVyaWZpZXMgdGhlIHBhc3NlZCBpbiBrZXkgKGZyb20gYSBzdGFraW5nIHBvb2wgY2FsbGluZyB1cyB0byB1cGRhdGUgbWV0cmljcykgaXMgdmFsaWQKLy8gYW5kIG1hdGNoZXMgdGhlIGluZm9ybWF0aW9uIHdlIGhhdmUgaW4gb3VyIHN0YXRlLiAgJ0Zha2UnIHBvb2xzIGNvdWxkIGNhbGwgdXMgdG8gdXBkYXRlIG91ciBkYXRhLCBidXQgdGhleQovLyBjYW4ndCBmYWtlIHRoZSBpZHMgYW5kIG1vc3QgaW1wb3J0YW50bHkgYXBwbGljYXRpb24gaWQoISkgb2YgdGhlIGNhbGxlciB0aGF0IGhhcyB0byBtYXRjaC4KdmVyaWZ5UG9vbEtleUNhbGxlcjoKCXByb3RvIDEgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYxCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLmV4aXN0cywgInRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MgoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbEtleS5wb29sSWQgPiAwICYmIChwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYpIDw9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5udW1Qb29scywKCS8vICAgICAgICdwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIHBvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjkKCS8vIGFzc2VydCgKCS8vICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk9PQoKCS8vIFRoZSBwYXNzZWQgaW4gYXBwIGlkIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhc3NlZCBpbiBpZHMKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc0CgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5hZGRyZXNzKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzYKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyBhc3NlcnQocG9vbEtleS5wb29sSWQgPT09IChBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzA2ZjZmNmM0OTY0IC8vICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3Bvb2xJZCcpCglhc3NlcnQKCT09Cglhc3NlcnQKCXJldHN1YgoKLy8gcmV2ZXJpZnlORkRPd25lcnNoaXAodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVGhpcyBtZXRob2QgdmVyaWZpZXMgdGhlIG93bmVyc2hpcCBvZiBORkQgKE5hbWVkIEZ1bmN0aW9uIERhdGEpIGJ5IGEgdmFsaWRhdG9yLgovLyBJZiB0aGUgb3duZXJzaGlwIGlzIG5vIGxvbmdlciB2YWxpZCwgaXQgcmVtb3ZlcyB0aGUgTkZEIGZyb20gdGhlIHZhbGlkYXRvcidzIGNvbmZpZ3VyYXRpb24uCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHdob3NlIGRhdGEgc2hvdWxkIGJlIHJlLWV2YWx1YXRlZC4KcmV2ZXJpZnlORkRPd25lcnNoaXA6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODcKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyBzdG9yYWdlIGtleS8vdmFsaWRhdG9yQ29uZmlnCgoJLy8gKmlmMjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE4OAoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjI4X2VuZAoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTkxCgkvLyBuZmRPd25lciA9IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzCglpbnRjIDIxIC8vIDcyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5MwoJLy8gdmFsaWRhdG9yQ29uZmlnLm93bmVyICE9PSBuZmRPd25lciAmJiB2YWxpZGF0b3JDb25maWcubWFuYWdlciAhPT0gbmZkT3duZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgkhPQoJZHVwCglieiAqc2tpcF9hbmQzCglpbnRjIDE3IC8vIDQwCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgkhPQoJJiYKCipza2lwX2FuZDM6CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IDAKCWludGMgMjEgLy8gNzIKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMjlfZW5kOgoKKmlmMjhfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPD0gR0FUSU5HX1RZUEVfQ09OU1RfTUFYLAoJLy8gICAgICAgJ2dhdGluZyB0eXBlIG5vdCB2YWxpZCcKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDQKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDIwIC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNDoKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDYKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoID49IE1JTl9FUE9DSF9MRU5HVEggJiYgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPD0gTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICdlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZScKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ1CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTY5IDQKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPD0KCSYmCgoqc2tpcF9hbmQ1OgoJLy8gZXBvY2ggbGVuZ3RoIG5vdCBpbiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ2CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPD0KCSYmCgoqc2tpcF9hbmQ2OgoJLy8gY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gKmlmMzBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxNAoJLy8gY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciAhPT0gMAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE3MyA0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcywKCS8vICAgICAgICAgJ3ZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgc2V0IGlmIHBlcmNlbnQgdG8gdmFsaWRhdG9yIGlzIG5vdCAwJwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE3NyAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgc2V0IGlmIHBlcmNlbnQgdG8gdmFsaWRhdG9yIGlzIG5vdCAwCglhc3NlcnQKCippZjMwX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIwCgkvLyBhc3NlcnQoY29uZmlnLm1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMDkgOAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk+PQoKCS8vIHN0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgZXhjZWVkcyBhbGxvd2VkIG51bWJlcicKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50YyA5IC8vIDMKCTw9CgkmJgoKKnNraXBfYW5kNzoKCS8vIG51bWJlciBvZiBwb29scyBwZXIgbm9kZSBleGNlZWRzIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI2CgkvLyBjb25maWcuc3Vuc2V0dGluZ09uICE9PSAwCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI2IDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMzFfZW5kCgoJLy8gKmlmMzFfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIGFzc2VydChjb25maWcuc3Vuc2V0dGluZ09uID4gZ2xvYmFscy5sYXRlc3RUaW1lc3RhbXAsICdzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQnKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNiA4CglidG9pCglnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCgk+CgoJLy8gc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0Cglhc3NlcnQKCippZjMxX2VuZDoKCXJldHN1YgoKLy8gY2FsbFBvb2xBZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIG1ickFtdFBhaWQ6IHVpbnQ2NCwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbiwgaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sZWFuKTogdm9pZAovLwovLyBBZGRzIGEgc3Rha2VycyBhbW91bnQgb2YgYWxnbyB0byBhIHZhbGlkYXRvciBwb29sLCB0cmFuc2ZlcnJpbmcgdGhlIGFsZ28gd2UgcmVjZWl2ZWQgZnJvbSB0aGVtIChhbHJlYWR5IHZlcmlmaWVkCi8vIGJ5IG91ciBjYWxsZXIpIHRvIHRoZSBzdGFraW5nIHBvb2wgYWNjb3VudCwgYW5kIHRoZW4gdGVsbGluZyBpdCBhYm91dCB0aGUgYW1vdW50IGJlaW5nIGFkZGVkIGZvciB0aGUgc3BlY2lmaWVkCi8vIHN0YWtlci4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgLSBwYXltZW50IGNvbWluZyBmcm9tIHN0YWtlciB0byBwbGFjZSBpbnRvIGEgcG9vbAovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KLy8gQHBhcmFtIHt1aW50NjR9IG1ickFtdFBhaWQgLSBBbW91bnQgdGhlIHVzZXIgaXMgbGVhdmluZyBiZWhpbmQgaW4gdGhlIHZhbGlkYXRvciB0byBwYXkgZm9yIHRoZWlyIHN0YWtlciBNQlIgY29zdAovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgdmFsaWRhdG9yCi8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1Byb3RvY29sIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHByb3RvY29sCmNhbGxQb29sQWRkU3Rha2U6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNDkKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTMKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuYWRkU3Rha2UsIHVpbnQ2ND4oewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLAoJLy8gICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICB7IGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkLCByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MgfSwKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgIF0sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTgKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTgKCS8vIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJaXR4bl9uZXh0CglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweGY5YzcwY2JkIC8vIG1ldGhvZCAiYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1NAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAvLyBUSElTIElTIEEgU0VORCBvZiB0aGUgYW1vdW50IHJlY2VpdmVkIHJpZ2h0IGJhY2sgb3V0IGFuZCBpbnRvIHRoZSBzdGFraW5nIHBvb2wgY29udHJhY3QgYWNjb3VudC4KCS8vICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudC5zZW5kZXIsCgkvLyAgICAgICBdCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCgoJLy8gKmlmMzJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBwb29sTnVtU3Rha2VycyA9IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnbnVtU3Rha2VycycpCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sTnVtU3Rha2VyczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjkKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxTdGFrZXJzID0gcG9vbE51bVN0YWtlcnMgYXMgdWludDE2CglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xOdW1TdGFrZXJzOiB1aW50NjQKCWl0b2IKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgPSBwb29sQWxnb1N0YWtlZAoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc0CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzNfZW5kCgoJLy8gKmlmMzNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbFN0YWtlcnMgKz0gMQoJaW50YyAyMyAvLyAyNDQKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDEgLy8gMQoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjMzX2VuZDoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzcKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbAoJZnJhbWVfZGlnIC01IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbgoJYnogKmlmMzRfZW5kCgoJLy8gKmlmMzRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzgKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA3IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzRfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS50b3RhbEFsZ29TdGFrZWQgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4MQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIHVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAp1cGRhdGVTdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg1CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODkKCS8vIGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDYKCTwKCWJ6ICpmb3JfN19lbmQKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkwCgkvLyBwb29sU2V0W2ldID09PSBwb29sS2V5CglmcmFtZV9kaWcgMCAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJPT0KCWJ6ICppZjM1X2VuZAoKCS8vICppZjM1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyByZXR1cm47CglyZXRzdWIKCippZjM1X2VuZDoKCS8vICppZjM2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYnogKnNraXBfYW5kOAoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CgkmJgoKKnNraXBfYW5kODoKCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk1CgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM2X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl83CgoqZm9yXzdfZW5kOgoJLy8gKmlmMzdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OAoJLy8gZmlyc3RFbXB0eSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjM3X2VuZAoKCS8vICppZjM3X2NvbnNlcXVlbnQKCS8vIE5vIGVtcHR5IHNsb3QgYXZhaWxhYmxlIGluIHRoZSBzdGFrZXIgcG9vbCBzZXQKCWVycgoKKmlmMzdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDEKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTQKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxNQoJLy8gaW5BbnlQb29sQ291bnQgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxNgoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE4CgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCipmb3JfODoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyMAoJLy8gcG9vbFNldFtpXS5pZCA9PT0gMAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgliICpmb3JfOF9jb250aW51ZQoKKmlmMzhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjMKCS8vIGluQW55UG9vbENvdW50ICs9IDEKCWZyYW1lX2RpZyAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gaW5BbnlQb29sQ291bnQ6IHVpbnQ2NAoKCS8vICppZjM5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjQKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vICppZjQwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjUKCS8vIHBvb2xTZXRbaV0gPT09IHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5Cgk9PQoJYnogKmlmNDBfZWxzZQoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI2CgkvLyBmb3VuZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDIgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyOAoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQwX2VuZAoKKmlmNDBfZWxzZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzMwCgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgKz0gMQoJZnJhbWVfZGlnIDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50OiB1aW50NjQKCippZjQwX2VuZDoKCippZjM5X2VuZDoKCipmb3JfOF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE5CgkvLyBpICs9IDEKCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgNCAvLyBpOiB1aW50NjQKCWIgKmZvcl84CgoqZm9yXzhfZW5kOgoJLy8gKmlmNDFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzNAoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDFfZW5kCgoJLy8gKmlmNDFfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0MV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzOAoJLy8gcmV0dXJuIFtpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPT09IDAsIGluQW55UG9vbENvdW50ID09PSAwXTsKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJc2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gNAoJcmV0c3ViCgovLyBhZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHBvb2xBcHBJZDogdWludDY0LCBub2RlTnVtOiB1aW50NjQpOiB2b2lkCmFkZFBvb2xUb05vZGU6Cglwcm90byAzIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDIKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE2IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0MwoJLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnBvb2xzUGVyTm9kZSBhcyB1aW50NjQKCXB1c2hpbnQgMjI1CglpbnRjIDEgLy8gMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ1CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQ5CglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDIgLy8gOAoJPD0KCSYmCgoqc2tpcF9hbmQ5OgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl85OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGkgPCBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I6IHVpbnQ2NAoJPAoJYnogKmZvcl85X2VuZAoKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDgKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW25vZGVOdW0gLSAxXS5wb29sQXBwSWRzW2ldID0gcG9vbEFwcElkCglpbnRjIDE2IC8vIDkwMAoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWY0Ml9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfOQoKKmZvcl85X2VuZDoKCS8vIG5vIGF2YWlsYWJsZSBzcGFjZSBpbiBzcGVjaWZpZWQgbm9kZSBmb3IgdGhpcyBwb29sCgllcnIKCXJldHN1YgoKLy8gZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogdm9pZAovLwovLyBDaGVja3MgaWYgYSBzdGFrZXIgbWVldHMgdGhlIGdhdGluZyByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoZSB2YWxpZGF0b3IuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIFRoZSB2YWx1ZSB0byB2ZXJpZnkgYWdhaW5zdCB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cy4KLy8gQHJldHVybnMge3ZvaWR9IG9yIGFzc2VydHMgaWYgcmVxdWlyZW1lbnRzIG5vdCBtZXQuCmRvZXNTdGFrZXJNZWV0R2F0aW5nOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY1CgkvLyB0eXBlID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdUeXBlCglpbnRjIDM1IC8vIDgwCglpbnRjIDEgLy8gMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHR5cGU6IHVpbnQ4CgoJLy8gKmlmNDNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NgoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjcKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmNDNfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzcwCgkvLyBjb25maWcgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZykKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc0CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVFNfQ1JFQVRFRF9CWSB8fAoJLy8gICAgICAgdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRfSUQgfHwKCS8vICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUwoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMSAvLyAxCgk9PQoJZHVwCglibnogKnNraXBfb3I0CglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxMCAvLyAyCgk9PQoJfHwKCipza2lwX29yNDoKCWR1cAoJYm56ICpza2lwX29yNQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgOSAvLyAzCgk9PQoJfHwKCipza2lwX29yNToKCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc4CgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNzkKCS8vIGJhbFJlcXVpcmVkID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZ2F0aW5nQXNzZXRNaW5CYWxhbmNlCglpbnRjIDM2IC8vIDE0NQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoJLy8gKmlmNDVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4MAoJLy8gYmFsUmVxdWlyZWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODEKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0NV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICBzdGFrZXIuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KSkgPj0gYmFsUmVxdWlyZWQsCgkvLyAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScKCS8vICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCT49CgoJLy8gbXVzdCBoYXZlIHJlcXVpcmVkIG1pbmltdW0gYmFsYW5jZSBvZiB2YWxpZGF0b3IgZGVmaW5lZCB0b2tlbiB0byBhZGQgc3Rha2UKCWFzc2VydAoKKmlmNDRfZW5kOgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4OAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ2X2VuZAoKCS8vICppZjQ2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzg5CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KS5jcmVhdG9yID09PSBjb25maWcuZW50cnlHYXRpbmdBZGRyZXNzLAoJLy8gICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0Cglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgoJcG9wCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA4MSAzMgoJPT0KCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCB0aGUgdmFsaWRhdG9yIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0Nl9lbmQ6CgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk0CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk1CgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTYKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NwoJLy8gY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMTMgMzIKCWR1cAoJZnJhbWVfYnVyeSA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBhc3NldElkOiB1aW50NjQKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCipmb3JPZl8wOgoJLy8gKmlmNDhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5OAoJLy8gdmFsdWVUb1ZlcmlmeSA9PT0gYXNzZXRJZAoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJZnJhbWVfZGlnIDYgLy8gYXNzZXRJZDogdWludDY0Cgk9PQoJYnogKmlmNDhfZW5kCgoJLy8gKmlmNDhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTkKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjQ4X2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNCAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwMwoJLy8gYXNzZXJ0KGZvdW5kLCAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnKQoJZnJhbWVfZGlnIDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZQoJYXNzZXJ0CgoqaWY0N19lbmQ6CgkvLyAqaWY0OV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA1CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDkgLy8gMwoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwgQXNzZXRJRC5mcm9tVWludDY0KHZhbHVlVG9WZXJpZnkpLmNyZWF0b3IpLAoJLy8gICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZCcKCS8vICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRDcmVhdG9yCglwb3AKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQKCWFzc2VydAoKKmlmNDlfZW5kOgoJLy8gKmlmNTBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxMwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDIwIC8vIDQKCT09CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxNQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxNgoJLy8gYXNzZXJ0KHRoaXMuaXNORkRBcHBJRFZhbGlkKHVzZXJPZmZlcmVkTkZEQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzTkZEQXBwSURWYWxpZAoKCS8vIHByb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQxOQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0gcmF3Qnl0ZXMoc3Rha2VyKSB8fAoJLy8gICAgICAgICAgIHRoaXMuaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KHVzZXJPZmZlcmVkTkZEQXBwSUQsIHN0YWtlciksCgkvLyAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIgoJLy8gICAgICAgKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CglieXRlYyA5IC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodXNlck9mZmVyZWRORkRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWR1cAoJYm56ICpza2lwX29yNgoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0Cgl8fAoKKnNraXBfb3I2OgoJLy8gcHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MjYKCS8vIGFzc2VydCgKCS8vICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0c1swXSwKCS8vICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNzA2MTcyNjU2ZTc0NDE3MDcwNDk0NCAvLyAiaS5wYXJlbnRBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykKCWFzc2VydAoJYnRvaQoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCT09CgoJLy8gc3BlY2lmaWVkIG5mZCBtdXN0IGJlIGEgc2VnbWVudCBvZiB0aGUgbmZkIHRoZSB2YWxpZGF0b3Igc3BlY2lmaWVkIGFzIGEgcmVxdWlyZW1lbnQKCWFzc2VydAoKKmlmNTBfZW5kOgoJcmV0c3ViCgovLyBpc05GREFwcElEVmFsaWQobmZkQXBwSUQ6IHVpbnQ2NCk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBORkQgQXBwIGlkIGlzIHZhbGlkLiAgVXNpbmcgb25seSB0aGUgQXBwIGlkIHRoZXJlJ3Mgbm8gdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBuYW1lIChpZTogdGhhdCBuZmQgWCBpcyBuYW1lIFkpCi8vIFNvIGl0J3MgYXNzdW1lZCBmb3IgdGhlIGNhbGxlciwgdGhlIGFwcCBpZCBhbG9uZSBpcyBmaW5lLiAgVGhlIG5hbWUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYXBwIGlkIGFuZCB0aGUgdHdvCi8vIHRvZ2V0aGVyIGFyZSB1c2VkIGZvciB2YWxpZGl0eSBjaGVjayBjYWxsIHRvIHRoZSBuZmQgcmVnaXN0cnkuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgQXBwIGlkIHRvIHZlcmlmeS4KLy8KLy8gQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBORkQgQXBwIGlkIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCmlzTkZEQXBwSURWYWxpZDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDUKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgIGFwcGxpY2F0aW9uQXJnczogWydpc192YWxpZF9uZmRfYXBwaWQnLCB1c2VyT2ZmZXJlZE5GRE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NDgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAxOSAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgdXNlck9mZmVyZWRORkROYW1lLCBpdG9iKG5mZEFwcElEKV0KCWJ5dGVjIDEzIC8vICAiaXNfdmFsaWRfbmZkX2FwcGlkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NTAKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDUyCgkvLyByZXR1cm4gYnRvaSh0aGlzLml0eG4ubGFzdExvZykgPT09IDE7CglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QobmZkQXBwSUQ6IHVpbnQ2NCwgYWRkclRvRmluZDogQWRkcmVzcyk6IGJvb2xlYW4KLy8KLy8gQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBpcyBwcmVzZW50IGluIGFuIE5GRHMgbGlzdCBvZiB2ZXJpZmllZCBhZGRyZXNzZXMuCi8vIFRoZSBORkQgaXMgYXNzdW1lZCB0byBoYXZlIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXMgb2ZmaWNpYWwuCi8vCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBORkQgYXBwbGljYXRpb24gaWQuCi8vIEBwYXJhbSB7QWRkcmVzc30gYWRkclRvRmluZCAtIFRoZSBhZGRyZXNzIHRvIGZpbmQgaW4gdGhlIHYuY2FBbGdvLjAuYXMgcHJvcGVydHkKLy8gQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgdGhlIGFkZHJlc3MgaXMgcHJlc2VudCwgYGZhbHNlYCBvdGhlcndpc2UuCmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCksCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY1CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY2CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjgKCS8vIGNhQWxnb0RhdGEgPSB0aGlzLml0eG4ubGFzdExvZwoJaXR4biBMYXN0TG9nCglmcmFtZV9idXJ5IDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY2FBbGdvRGF0YS5sZW5ndGg7IGkgKz0gMzIpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoKKmZvcl8xMDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzAKCS8vIGFkZHIgPSBleHRyYWN0MyhjYUFsZ29EYXRhLCBpLCAzMikKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMzIKCWV4dHJhY3QzCglmcmFtZV9idXJ5IDIgLy8gYWRkcjogYnl0ZVtdCgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ3MQoJLy8gYWRkciAhPT0gcmF3Qnl0ZXMoZ2xvYmFscy56ZXJvQWRkcmVzcykgJiYgYWRkciA9PT0gcmF3Qnl0ZXMoYWRkclRvRmluZCkKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJZHVwCglieiAqc2tpcF9hbmQxMAoJZnJhbWVfZGlnIDIgLy8gYWRkcjogYnl0ZVtdCglmcmFtZV9kaWcgLTIgLy8gYWRkclRvRmluZDogQWRkcmVzcwoJPT0KCSYmCgoqc2tpcF9hbmQxMDoKCWJ6ICppZjUxX2VuZAoKCS8vICppZjUxX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDcyCgkvLyByZXR1cm4gdHJ1ZTsKCWludGMgMSAvLyAxCgliICppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuCgoqaWY1MV9lbmQ6CgoqZm9yXzEwX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjkKCS8vIGkgKz0gMzIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDMyCgkrCglmcmFtZV9idXJ5IDEgLy8gaTogdWludDY0CgliICpmb3JfMTAKCipmb3JfMTBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzUKCS8vIHJldHVybiBmYWxzZTsKCWludGMgMCAvLyAwCgoqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDIKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCi8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCB0d2ljZSAtIGhlcmUgYW5kIGluIHN0YWtpbmcgcG9vbCBjb250cmFjdC4gIEJvdGggbXVzdCBiZSBpZGVudGljYWwuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDg0CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0ODYKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pOwoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCXB1c2hpbnQgMTAwCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyAzMSAvLyAxMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBtYXhBbGxvd2VkU3Rha2UoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIE1BWElNVU0gYWxsb3dlZCBzdGFrZSBwZXIgdmFsaWRhdG9yIGJhc2VkIG9uIGEgcGVyY2VudGFnZSBvZiBhbGwgY3VycmVudCBvbmxpbmUgc3Rha2UuCi8vIEFkZGluZyBzdGFrZSBpcyBjb21wbGV0ZWx5IGJsb2NrZWQgYXQgdGhpcyBhbW91bnQuCm1heEFsbG93ZWRTdGFrZToKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OTQKCS8vIG9ubGluZSA9IHRoaXMuZ2V0Q3VycmVudE9ubGluZVN0YWtlKCkKCWNhbGxzdWIgZ2V0Q3VycmVudE9ubGluZVN0YWtlCglmcmFtZV9idXJ5IDAgLy8gb25saW5lOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5NgoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSk7CglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxNTAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMxIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsZ29BbGxvd2VkUGVyUG9vbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciBwb29sIGFuZCBzdGlsbCByZWNlaXZlIGluY2VudGl2ZXMgLSB3ZSdsbCB0cmVhdCB0aGlzIGFzIHRoZSAnbWF4IHBlciBwb29sJwptYXhBbGdvQWxsb3dlZFBlclBvb2w6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUwNAoJLy8gcmV0dXJuIDcwXzAwMF8wMDBfMDAwXzAwMDsKCXB1c2hpbnQgNzBfMDAwXzAwMF8wMDBfMDAwCglyZXRzdWIKCi8vIGdldEN1cnJlbnRPbmxpbmVTdGFrZSgpOiB1aW50NjQKZ2V0Q3VycmVudE9ubGluZVN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MDkKCS8vIHJldHVybiAyXzAwMF8wMDBfMDAwXzAwMF8wMDA7CglwdXNoaW50IDJfMDAwXzAwMF8wMDBfMDAwXzAwMAoJcmV0c3ViCgovLyBtaW5CYWxhbmNlRm9yQWNjb3VudChjb250cmFjdHM6IHVpbnQ2NCwgZXh0cmFQYWdlczogdWludDY0LCBhc3NldHM6IHVpbnQ2NCwgbG9jYWxJbnRzOiB1aW50NjQsIGxvY2FsQnl0ZXM6IHVpbnQ2NCwgZ2xvYmFsSW50czogdWludDY0LCBnbG9iYWxCeXRlczogdWludDY0KTogdWludDY0Cm1pbkJhbGFuY2VGb3JBY2NvdW50OgoJcHJvdG8gNyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMQoJLy8gbWluQmFsID0gQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRQoJaW50YyAxNSAvLyAxMDAwMDAKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTIyCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTUgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMwoJLy8gbWluQmFsICs9IGV4dHJhUGFnZXMgKiBBUFBMSUNBVElPTl9CQVNFX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBleHRyYVBhZ2VzOiB1aW50NjQKCWludGMgMTUgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyNAoJLy8gbWluQmFsICs9IGFzc2V0cyAqIEFTU0VUX0hPTERJTkdfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0zIC8vIGFzc2V0czogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjUKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMiAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjYKCS8vIG1pbkJhbCArPSBnbG9iYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTYgLy8gZ2xvYmFsSW50czogdWludDY0CglpbnRjIDMyIC8vIDI4NTAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyNwoJLy8gbWluQmFsICs9IGxvY2FsQnl0ZXMgKiBTU0NfVkFMVUVfQllURVMKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTUgLy8gbG9jYWxCeXRlczogdWludDY0CglpbnRjIDMzIC8vIDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyOAoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzMgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI5CgkvLyByZXR1cm4gbWluQmFsOwoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY29zdEZvckJveFN0b3JhZ2UodG90YWxOdW1CeXRlczogdWludDY0KTogdWludDY0CmNvc3RGb3JCb3hTdG9yYWdlOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURTsKCXB1c2hpbnQgMjUwMAoJZnJhbWVfZGlnIC0xIC8vIHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NAoJcHVzaGludCA0MDAKCSoKCSsKCXJldHN1YgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDFiNWU4MmM2IC8vIG1ldGhvZCAiaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDc5NDcyZDgzIC8vIG1ldGhvZCAibG9hZFN0YWtpbmdDb250cmFjdERhdGEodWludDY0LGJ5dGVbXSl2b2lkIgoJcHVzaGJ5dGVzIDB4NWY3YWNmZDkgLy8gbWV0aG9kICJmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZCIKCXB1c2hieXRlcyAweDMxNzJjYTlkIC8vIG1ldGhvZCAiZ2FzKCl2b2lkIgoJcHVzaGJ5dGVzIDB4OGE4NzE0MmQgLy8gbWV0aG9kICJnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweGQxMzY2Y2MzIC8vIG1ldGhvZCAiZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4M2IwNDVjNWMgLy8gbWV0aG9kICJnZXROdW1WYWxpZGF0b3JzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg3NWFmZjYxZCAvLyBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4MWYyZjAxMDkgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglwdXNoYnl0ZXMgMHg5MTBlOTRhYyAvLyBtZXRob2QgImdldFBvb2xzKHVpbnQ2NCkodWludDY0LHVpbnQxNix1aW50NjQpW10iCglwdXNoYnl0ZXMgMHg1NzI3NjdkMSAvLyBtZXRob2QgImdldFBvb2xBcHBJZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDliNTA0YWFmIC8vIG1ldGhvZCAiZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZmJjNjMxNzggLy8gbWV0aG9kICJnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI0NDk4Y2Y0IC8vIG1ldGhvZCAiZG9lc1N0YWtlck5lZWRUb1BheU1CUihhZGRyZXNzKWJvb2wiCglwdXNoYnl0ZXMgMHhmODQ2ZGQ3YSAvLyBtZXRob2QgImdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDgzMDUwNTAxIC8vIG1ldGhvZCAiZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXB1c2hieXRlcyAweDdiYmI2YzhkIC8vIG1ldGhvZCAiZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKSIKCXB1c2hieXRlcyAweGY4Mzk0MTRhIC8vIG1ldGhvZCAiZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MGMzMTdjZmIgLy8gbWV0aG9kICJhZGRWYWxpZGF0b3IocGF5LHN0cmluZywodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkpdWludDY0IgoJcHVzaGJ5dGVzIDB4M2UyODg5NzIgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHhkZDVmYWFkYSAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweDE4YWFjN2E3IC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQiCglwdXNoYnl0ZXMgMHhmOTllZjU0ZCAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHgxMDgwOWQ0ZCAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGU3NzhkZDVhIC8vIG1ldGhvZCAiYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4YmY1MjU5ZDAgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4NGRmOGQ4NmUgLy8gbWV0aG9kICJzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4NDE4ZmNlZmMgLy8gbWV0aG9kICJzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhhMmRjNTFiNSAvLyBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglwdXNoYnl0ZXMgMHgyODczZjUwNCAvLyBtZXRob2QgImZpbmRQb29sRm9yU3Rha2VyKHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCkoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpIgoJcHVzaGJ5dGVzIDB4MDU0N2Y0ZmUgLy8gbWV0aG9kICJtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Y2I2NjgzNTggLy8gbWV0aG9kICJlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9sb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSAqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfZ2FzICphYmlfcm91dGVfZ2V0TWJyQW1vdW50cyAqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHMgKmFiaV9yb3V0ZV9nZXROdW1WYWxpZGF0b3JzICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGUgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIgKmFiaV9yb3V0ZV9nZXRQb29scyAqYWJpX3JvdXRlX2dldFBvb2xBcHBJZCAqYWJpX3JvdXRlX2dldFBvb2xJbmZvICphYmlfcm91dGVfZ2V0Q3VyTWF4U3Rha2VQZXJQb29sICphYmlfcm91dGVfZG9lc1N0YWtlck5lZWRUb1BheU1CUiAqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudCAqYWJpX3JvdXRlX2dldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzICphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRCAqYWJpX3JvdXRlX2FkZFZhbGlkYXRvciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck1hbmFnZXIgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTkZEICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvICphYmlfcm91dGVfYWRkUG9vbCAqYWJpX3JvdXRlX2FkZFN0YWtlICphYmlfcm91dGVfc2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX3N0YWtlVXBkYXRlZFZpYVJld2FyZHMgKmFiaV9yb3V0ZV9zdGFrZVJlbW92ZWQgKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlciAqYWJpX3JvdXRlX21vdmVQb29sVG9Ob2RlICphYmlfcm91dGVfZW1wdHlUb2tlblJld2FyZHMKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipjYWxsX1VwZGF0ZUFwcGxpY2F0aW9uOgoJcHVzaGJ5dGVzIDB4NDZmNzY1MzMgLy8gbWV0aG9kICJ1cGRhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfdXBkYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBVcGRhdGVBcHBsaWNhdGlvbgoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEgOCAyNCAzMiAxOCAyNjggNiAyNDIgMyAyIDEwIDI1MiAyNjAgNzAwIDEwMDAwMCA5MDAgNDAgMjAwIFRNUExfbmZkUmVnaXN0cnlBcHBJZCA0IDcyIDE5MiAyNDQgMTAwMDAwMCA0MDk2IDUgMTYgMjI2IDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NmU3NTZkNTM3NDYxNmI2NTcyNzMgMHgwYTgxMDEgMHg2OTJlNmY3NzZlNjU3MjJlNjEgMHgwMDAwMDAwMDAwMDAwMDAwIDB4Njk2ZTY5NzQgMHg2ZTc1NmQ1NiAweDY5NzM1Zjc2NjE2YzY5NjQ1ZjZlNjY2NDVmNjE3MDcwNjk2NCAweDYzZjNmMjhiCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnRjIDcgLy8gNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbiAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV91cGRhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgdXBkYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgdXBkYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKdXBkYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAyCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSBBZGRyZXNzLmZyb21BZGRyZXNzKCdMWjRWMklSVkxDWEZKSzRSRUpWNFRBR0VLRVlUQTJHTVI2VEMyMzQ0T0IzTDNBRjNNV1haNlpBRklRJykpCgl0eG4gU2VuZGVyCglwdXNoYnl0ZXMgMHg1ZTc5NWQyMjM1NThhZTU0YWI5MTIyNmJjOTgwYzQ1MTMxMzA2OGNjOGZhNjJkNmY5YzcwNzZiZDgwYmI2NWFmIC8vIGFkZHIgIkxaNFYySVJWTENYRkpLNFJFSlY0VEFHRUtFWVRBMkdNUjZUQzIzNDRPQjNMM0FGM01XWFo2WkFGSVEiCgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5kZWxldGUoKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglib3hfZGVsCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwNQoJLy8gdGhpcy5zdGFraW5nUG9vbEluaXRpYWxpemVkLnZhbHVlID0gZmFsc2UKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWludGMgMCAvLyAwCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZQoJYnl0ZWMgMTEgLy8gICJpbml0IgoJaW50YyAwIC8vIDAKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTAKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTEKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSA9IDAKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxMgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgPSAwCglieXRlYyA0IC8vICAic3Rha2VkIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0OgoJLy8gYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkCgljYWxsc3ViIGluaXRTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGluaXRTdGFraW5nQ29udHJhY3QoYXBwcm92YWxQcm9ncmFtU2l6ZTogdWludDY0KTogdm9pZAppbml0U3Rha2luZ0NvbnRyYWN0OgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIxNwoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIxCgkvLyBhc3NlcnQoIXRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSkKCWJ5dGVjIDExIC8vICAiaW5pdCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDAgLy8gMAoJZ2V0Yml0CgkhCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjIyCgkvLyB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnJlcGxhY2Uob2Zmc2V0LCBkYXRhKQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglmcmFtZV9kaWcgLTEgLy8gb2Zmc2V0OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBkYXRhOiBieXRlcwoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCS8vIGV4ZWN1dGUgZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQKCWNhbGxzdWIgZmluYWxpemVTdGFraW5nQ29udHJhY3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCk6IHZvaWQKZmluYWxpemVTdGFraW5nQ29udHJhY3Q6Cglwcm90byAwIDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjI2CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMSAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0NgoJLy8gcmV0dXJuIHsKCS8vICAgICAgIGFkZFZhbGlkYXRvck1icjogdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSgxIC8qIHYgcHJlZml4ICovICsgbGVuPFZhbGlkYXRvcklkVHlwZT4oKSArIGxlbjxWYWxpZGF0b3JJbmZvPigpKSwKCS8vICAgICAgIGFkZFBvb2xNYnI6IHRoaXMubWluQmFsYW5jZUZvckFjY291bnQoCgkvLyAgICAgICAgIDEsCgkvLyAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAvLyBtZWFuIG91ciBjYWxsZXJzIHdvdWxkIGhhdmUgdG8gcmVmZXJlbmNlIHRoZSBib3ggQU5EIGJ1eSB1cCBpL28gLSBzbyBqdXN0IGdvIG1heCBvbiBleHRyYSBwYWdlcwoJLy8gICAgICAgICAzLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICAwLAoJLy8gICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgIFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCgkvLyAgICAgICApLAoJLy8gICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgIEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UgKwoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDcgLyogJ3N0YWtlcnMnIG5hbWUgKi8gKyBsZW48U3Rha2VkSW5mbz4oKSAqIE1BWF9TVEFLRVJTX1BFUl9QT09MKSwKCS8vICAgICAgIGFkZFN0YWtlck1icjoKCS8vICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSKSwgLy8gc2l6ZSBvZiBrZXkgKyBhbGwgdmFsdWVzCgkvLyAgICAgfTsKCXB1c2hpbnQgMTEwMQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJaW50YyA5IC8vIDMKCWludGMgMzUgLy8gMTEKCWludGMgMCAvLyAwCglkdXBuIDIKCWludGMgOSAvLyAzCglpbnRjIDEgLy8gMQoJY2FsbHN1YiBtaW5CYWxhbmNlRm9yQWNjb3VudAoJaXRvYgoJY29uY2F0CglpbnRjIDE1IC8vIDEwMDAwMAoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJaXRvYgoJY29uY2F0CglwdXNoaW50IDE3OQoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJaXRvYgoJY29uY2F0CglyZXRzdWIKCi8vIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFByb3RvY29sQ29uc3RyYWludHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFByb3RvY29sQ29uc3RyYWludHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCk6IENvbnN0cmFpbnRzCi8vCi8vIFJldHVybnMgdGhlIHByb3RvY29sIGNvbnN0cmFpbnRzIHNvIHRoYXQgVUlzIGNhbiBsaW1pdCB3aGF0IHVzZXJzIHNwZWNpZnkgZm9yIHZhbGlkYXRvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCmdldFByb3RvY29sQ29uc3RyYWludHM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcyCgkvLyByZXR1cm4gewoJLy8gICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICB9OwoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjkyCgkvLyByZXR1cm4gdGhpcy5udW1WYWxpZGF0b3JzLnZhbHVlOwoJYnl0ZWMgMTIgLy8gICJudW1WIgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFZhbGlkYXRvckNvbmZpZwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvckNvbmZpZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ29uZmlnCmdldFZhbGlkYXRvckNvbmZpZzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyOTcKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZzsKCWludGMgMCAvLyAwCglpbnRjIDggLy8gMjQyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JTdGF0ZSh1aW50NjQpKHVpbnQxNix1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0VmFsaWRhdG9yU3RhdGUKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JTdGF0ZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogVmFsaWRhdG9yQ3VyU3RhdGUKZ2V0VmFsaWRhdG9yU3RhdGU6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzAyCgkvLyByZXR1cm4gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZTsKCWludGMgOCAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDcKCS8vIHJldHVybiBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXJdOwoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAxNyAvLyA0MAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA1IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzE4CgkvLyByZXREYXRhOiBQb29sSW5mb1tdID0gW10KCWJ5dGVjIDEgLy8gMHgKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxOQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMpCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWludGMgMzAgLy8gNDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMAoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPAoJYnogKmZvcl8wX2VuZAoKCS8vICppZjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIxCgkvLyBwb29sU2V0W2ldLnBvb2xBcHBJZCA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMF9lbmQKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCWIgKmZvcl8wX2VuZAoKKmlmMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDUgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl8wCgoqZm9yXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyNwoJLy8gcmV0dXJuIHJldERhdGE7CglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NApnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzM1CgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sSWQgIT09IDAgJiYgcG9vbElkIDw9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHMubGVuZ3RoLAoJLy8gICAgICAgJ3Bvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3InCgkvLyAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWR1cAoJYnogKnNraXBfYW5kMAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDMgLy8gMjQKCTw9CgkmJgoKKnNraXBfYW5kMDoKCS8vIHBvb2wgaWQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIG51bWJlciBvZiBwb29scyBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZDsKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcmV0c3ViCgovLyBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQb29sSW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCAwIChwb29sS2V5KSBmb3IgZ2V0UG9vbEluZm8gbXVzdCBiZSBhICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEluZm8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0LHVpbnQxNix1aW50NjQpCgljYWxsc3ViIGdldFBvb2xJbmZvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbEluZm8ocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFBvb2xJbmZvCmdldFBvb2xJbmZvOgoJcHJvdG8gMSAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdOwoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA1IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU1CgkvLyBudW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1NgoJLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMgPSB0aGlzLm1heEFsbG93ZWRTdGFrZSgpIC8gbnVtUG9vbHMKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CgkvCglmcmFtZV9idXJ5IDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNTcKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OAoJLy8gbWF4UGVyUG9vbCA9PT0gMAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjFfZW5kCgoJLy8gKmlmMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzU5CgkvLyBtYXhQZXJQb29sID0gdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKQoJY2FsbHN1YiBtYXhBbGdvQWxsb3dlZFBlclBvb2wKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjFfZW5kOgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM2MgoJLy8gbWF4UGVyUG9vbCA9IGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzCglmcmFtZV9kaWcgMSAvLyBoYXJkTWF4RGl2aWRlZEJldHdlZW5Qb29sczogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYyX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjQKCS8vIHJldHVybiBtYXhQZXJQb29sOwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHJldHVybiAhdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzOwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglyZXRzdWIKCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChhZGRyZXNzKSh1aW50NjQsdWludDY0LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KCWNhbGxzdWIgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50CglkdXAKCWxlbgoJaW50YyAzIC8vIDI0CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KHN0YWtlcjogQWRkcmVzcyk6IFZhbGlkYXRvclBvb2xLZXlbXQovLwovLyBSZXRyaWV2ZXMgdGhlIHN0YWtlZCBwb29scyBmb3IgYW4gYWNjb3VudC4KLy8KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCB0byByZXRyaWV2ZSBzdGFrZWQgcG9vbHMgZm9yLgovLyBAcmV0dXJuIHtWYWxpZGF0b3JQb29sS2V5W119IC0gVGhlIGFycmF5IG9mIHN0YWtlZCBwb29scyBmb3IgdGhlIGFjY291bnQuCmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyAqaWYzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4MwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NAoJLy8gcmV0dXJuIFtdOwoJYnl0ZWMgMSAvLyAweAoJYiAqZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KnJldHVybgoKKmlmM19lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg2CgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBwb29sU2V0Lmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBwb29sU2V0W2ldLmlkICE9PSAwCglmcmFtZV9kaWcgMSAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkwCgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoJZnJhbWVfZGlnIDEgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gcmV0RGF0YTogVmFsaWRhdG9yUG9vbEtleVtdCgoqaWY0X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozODgKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzkzCgkvLyByZXR1cm4gcmV0RGF0YTsKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIGdldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBSZXRyaWV2ZXMgdGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgYSBnaXZlbiB2YWxpZGF0b3IgLSByZXR1cm5pbmcgdGhlIHBvb2wgcmF0aW9zIG9mIHdob2xlIHNvIHRoYXQgdG9rZW4KLy8gcGF5b3V0cyBhY3Jvc3MgcG9vbHMgY2FuIGJlIGJhc2VkIG9uIGEgc3RhYmxlIHNuYXBob3N0IG9mIHN0YWtlLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHJldHVybiB7UG9vbFRva2VuUGF5b3V0UmF0aW99IC0gVGhlIHRva2VuIHBheW91dCByYXRpbyBmb3IgdGhlIHZhbGlkYXRvci4KZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MDUKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCiphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh1aW50NjQpKCh1aW50NjRbM10pWzhdKQoJY2FsbHN1YiBnZXROb2RlUG9vbEFzc2lnbm1lbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyh2YWxpZGF0b3JJZDogdWludDY0KTogTm9kZVBvb2xBc3NpZ25tZW50Q29uZmlnCmdldE5vZGVQb29sQXNzaWdubWVudHM6Cglwcm90byAxIDEKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDEwCgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBkb2Vzbid0IGV4aXN0IikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxMgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50czsKCWludGMgMTYgLy8gIGhlYWRPZmZzZXQKCWludGMgMjIgLy8gMTkyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CgljYWxsc3ViIGdldE5GRFJlZ2lzdHJ5SUQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRORkRSZWdpc3RyeUlEKCk6IHVpbnQ2NApnZXRORkRSZWdpc3RyeUlEOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQxNgoJLy8gcmV0dXJuIHRoaXMubmZkUmVnaXN0cnlBcHBJZDsKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA4IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjgKCS8vIHRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCgljYWxsc3ViIHZhbGlkYXRlQ29uZmlnCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQyOQoJLy8gYXNzZXJ0KGNvbmZpZy5vd25lciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMwCgkvLyBhc3NlcnQoY29uZmlnLm1hbmFnZXIgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzEKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IGNvbmZpZy5vd25lciwgJ3NlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yJykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4IDMyCgk9PQoKCS8vIHNlbmRlciBtdXN0IGJlIG93bmVyIHRvIGFkZCBuZXcgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyB2ZXJpZnlQYXlUeG4obWJyUGF5bWVudCwgeyBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IGFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoibWJyUGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJ0aGlzLmdldE1ickFtb3VudHMoKS5hZGRWYWxpZGF0b3JNYnIifQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNQoJLy8gYXNzZXJ0KG1iclBheW1lbnQuZmVlID4gMTAgKiAxMDAwMDAwLCAnZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycycpCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBGZWUKCXB1c2hpbnQgMTAwMDAwMDAKCT4KCgkvLyBmZWUgbXVzdCBiZSAxMCBBTEdPIG9yIG1vcmUgdG8gcHJldmVudCBzcGFtbWluZyBvZiB2YWxpZGF0b3JzCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDEyIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM5CgkvLyB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUgPSB2YWxpZGF0b3JJZAoJYnl0ZWMgMTIgLy8gICJudW1WIgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmNyZWF0ZSgpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxMDkyCglib3hfY3JlYXRlCglwb3AKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQyCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuaWQgPSB2YWxpZGF0b3JJZAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vICppZjVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDQ2CgkvLyBjb25maWcubmZkRm9ySW5mbyAhPT0gMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NDgKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgbmZkTmFtZSwgaXRvYihjb25maWcubmZkRm9ySW5mbyldLAoJLy8gICAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKV0sCgkvLyAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ0OQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1MAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IoY29uZmlnLm5mZEZvckluZm8pXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pXQoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTMKCS8vIGFzc2VydChidG9pKHRoaXMuaXR4bi5sYXN0TG9nKSA9PT0gMSwgInByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZCIpCglpdHhuIExhc3RMb2cKCWJ0b2kKCWludGMgMSAvLyAxCgk9PQoKCS8vIHByb3ZpZGVkIE5GRCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IChBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcyksCgkvLyAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgICApCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KGNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKKmlmNV9lbmQ6CgkvLyAqaWY2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2MQoJLy8gY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTIHx8CgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9TRUdNRU5UX09GX05GRAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgOSAvLyAzCgk9PQoJZHVwCglibnogKnNraXBfb3IwCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAyMCAvLyA0Cgk9PQoJfHwKCipza2lwX29yMDoKCWJ6ICppZjZfZW5kCgoJLy8gKmlmNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDY1CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwgJ3Byb3ZpZGVkIE5GRCBBcHAgaWQgZm9yIGdhdGluZyBtdXN0IGJlIHZhbGlkIE5GRCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjZfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gcmV0dXJuIHZhbGlkYXRvcklkOwoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJLy8gbWFuYWdlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChtYW5hZ2VyKSBmb3IgY2hhbmdlVmFsaWRhdG9yTWFuYWdlciBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbWFuYWdlcjogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgVmFsaWRhdG9yIG1hbmFnZXIgZm9yIGEgc3BlY2lmaWMgVmFsaWRhdG9yIGlkLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIGNoYW5nZSB0aGUgbWFuYWdlciBmb3IuCi8vIEBwYXJhbSB7QWRkcmVzc30gbWFuYWdlciAtIFRoZSBuZXcgbWFuYWdlciBhZGRyZXNzLgpjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciA9IG1hbmFnZXIKCWludGMgMTcgLy8gNDAKCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm86CgkvLyBzdW5zZXR0aW5nVG86IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN1bnNldHRpbmdPbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgc3Vuc2V0dGluZ09uOiB1aW50NjQsIHN1bnNldHRpbmdUbzogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBVcGRhdGVzIHRoZSBzdW5zZXQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdPbiAtIFRoZSBuZXcgc3Vuc2V0IHRpbWVzdGFtcC4KLy8gQHBhcmFtIHt1aW50NjR9IHN1bnNldHRpbmdUbyAtIFRoZSBuZXcgc3Vuc2V0IHRvIHZhbGlkYXRvciBpZC4KY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbzoKCXByb3RvIDMgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcicKCS8vICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA0IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdPbiA9IHN1bnNldHRpbmdPbgoJaW50YyAyOCAvLyAyMjYKCWZyYW1lX2RpZyAtMiAvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MDAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnN1bnNldHRpbmdUbyA9IHN1bnNldHRpbmdUbwoJcHVzaGludCAyMzQKCWZyYW1lX2RpZyAtMyAvLyBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJRDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yTkZECglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JORkQodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbmZkQXBwSUQ6IHVpbnQ2NCwgbmZkTmFtZTogc3RyaW5nKTogdm9pZAovLwovLyBDaGFuZ2VzIHRoZSBORkQgZm9yIGEgdmFsaWRhdG9yIGluIHRoZSB2YWxpZGF0b3JMaXN0IGNvbnRyYWN0LgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yIHRvIHVwZGF0ZS4KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBORkQgdG8gYXNzaWduIHRvIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIE5GRCAod2hpY2ggbXVzdCBtYXRjaCkKY2hhbmdlVmFsaWRhdG9yTkZEOgoJcHJvdG8gMyAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxMwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXSwKCS8vICAgICAgIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQpCglpbnRjIDE5IC8vIFRNUExfbmZkUmVnaXN0cnlBcHBJZAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyMAoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIG5mZE5hbWUsIGl0b2IobmZkQXBwSUQpXQoJYnl0ZWMgMTMgLy8gICJpc192YWxpZF9uZmRfYXBwaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0zIC8vIG5mZE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjEKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSUQpXQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MjQKCS8vIGFzc2VydCgKCS8vICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gKEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSwKCS8vICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWJ5dGVjIDkgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpCglhc3NlcnQKCT09CgoJLy8gSWYgc3BlY2lmeWluZyBORkQsIGFjY291bnQgYWRkaW5nIHZhbGlkYXRvciBtdXN0IGJlIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gbmZkQXBwSUQKCWludGMgMjEgLy8gNzIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCS8vIGNvbW1pc3Npb25BZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGNvbW1pc3Npb25BZGRyZXNzKSBmb3IgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHVpbnQ2NCxhZGRyZXNzKXZvaWQKCWNhbGxzdWIgY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzKTogdm9pZAovLwovLyBDaGFuZ2UgdGhlIGNvbW1pc3Npb24gYWRkcmVzcyB0aGF0IHZhbGlkYXRvciByZXdhcmRzIGFyZSBzZW50IHRvLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzOgoJcHJvdG8gMiAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0MAoJLy8gYXNzZXJ0KGNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy52YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyA9IGNvbW1pc3Npb25BZGRyZXNzCglwdXNoaW50IDE3NwoJZnJhbWVfZGlnIC0yIC8vIGNvbW1pc3Npb25BZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm86CgkvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gRW50cnlHYXRpbmdBc3NldHM6IHVpbnQ2NFs0XQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyIChFbnRyeUdhdGluZ0Fzc2V0cykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIHVpbnQ2NFs0XQoJYXNzZXJ0CgoJLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDMgKEVudHJ5R2F0aW5nQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCA0IChFbnRyeUdhdGluZ1R5cGUpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8KCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgRW50cnlHYXRpbmdUeXBlOiB1aW50OCwgRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzLCBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PiwgR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQsIFJld2FyZFBlclBheW91dDogdWludDY0KTogdm9pZAovLwovLyBBbGxvdyB0aGUgYWRkaXRpb25hbCByZXdhcmRzIChnYXRpbmcgZW50cnksIGFkZGl0aW9uYWwgdG9rZW4gcmV3YXJkcykgaW5mb3JtYXRpb24gYmUgY2hhbmdlZCBhdCB3aWxsLgovLyBbIE9OTFkgT1dORVIgQ0FOIENIQU5HRSBdCmNoYW5nZVZhbGlkYXRvclJld2FyZEluZm86Cglwcm90byA2IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInCgkvLyAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTYxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcyA9IEVudHJ5R2F0aW5nQWRkcmVzcwoJcHVzaGludCA4MQoJZnJhbWVfZGlnIC0zIC8vIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjMKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzID0gRW50cnlHYXRpbmdBc3NldHMKCXB1c2hpbnQgMTEzCglmcmFtZV9kaWcgLTQgLy8gRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4KCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRQZXJQYXlvdXQgPSBSZXdhcmRQZXJQYXlvdXQKCXB1c2hpbnQgMTYxCglmcmFtZV9kaWcgLTYgLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gbm9kZU51bTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkUG9vbCBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRQb29sCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkUG9vbChtYnJQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5vZGVOdW06IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBhIG5ldyBwb29sIHRvIGEgdmFsaWRhdG9yJ3MgcG9vbCBzZXQsIHJldHVybmluZyB0aGUgJ2tleScgdG8gcmVmZXJlbmNlIHRoZSBwb29sIGluIHRoZSBmdXR1cmUgZm9yIHN0YWtpbmcsIGV0Yy4KLy8gVGhlIGNhbGxlciBtdXN0IHBheSB0aGUgY29zdCBvZiB0aGUgdmFsaWRhdG9ycyBNQlIgaW5jcmVhc2UgYXMgd2VsbCBhcyB0aGUgTUJSIHRoYXQgd2lsbCBiZSBuZWVkZWQgZm9yIHRoZSBwb29sIGl0c2VsZi4KLy8KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIGNhbGwgXQovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgYWRkaW5nIGEgbmV3IHBvb2wKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkIGlzIGlkIG9mIHZhbGlkYXRvciB0byBwb29sIHRvIChtdXN0IGJlIG93bmVyIG9yIG1hbmFnZXIpCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtIGlzIG5vZGUgbnVtYmVyIHRvIGFkZCB0bwovLyBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbCBrZXkgdG8gY3JlYXRlZCBwb29sCmFkZFBvb2w6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjEKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjE6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1ODgKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciwgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MgfSkKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCglleHRyYWN0IDggOAoJYnRvaQoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoidGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1OTAKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLmV4aXN0cywgInNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTkyCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOCAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5MwoJLy8gKG51bVBvb2xzIGFzIHVpbnQ2NCkgPj0gTUFYX1BPT0xTCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpbnRjIDMgLy8gMjQKCT49CglieiAqaWY3X2VuZAoKCS8vICppZjdfY29uc2VxdWVudAoJLy8gYWxyZWFkeSBhdCBtYXggcG9vbCBzaXplCgllcnIKCippZjdfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5NgoJLy8gbnVtUG9vbHMgKz0gMQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBudW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU5OQoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoMCwgNDA5NiksCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgIF0sCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjAwCgkvLyBvbkNvbXBsZXRpb246IE9uQ29tcGxldGlvbi5Ob09wCglpbnRjIDAgLy8gIE5vT3AKCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwMQoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDQwOTYsIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZSAtIDQwOTYpLAoJLy8gICAgICAgXQoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDAgLy8gMAoJaW50YyAyNSAvLyA0MDk2Cglib3hfZXh0cmFjdAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwoJYnl0ZWMgNiAvLyAgInBvb2xUZW1wbGF0ZUFwcHJvdmFsQnl0ZXMiCglpbnRjIDI1IC8vIDQwOTYKCWJ5dGVjIDYgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJYm94X2xlbgoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplCglhc3NlcnQKCWludGMgMjUgLy8gNDA5NgoJLQoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA1CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBhCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYwNgoJLy8gZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnRjIDM1IC8vIDExCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA3CgkvLyBnbG9iYWxOdW1CeXRlU2xpY2U6IFN0YWtpbmdQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnRjIDkgLy8gMwoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA5IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsKCS8vICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgaXRvYih0aGlzLmFwcC5pZCksCgkvLyAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgIGl0b2IodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWluRW50cnlTdGFrZSksCgkvLyAgICAgICBdCglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXR4bmEgQXBwbGljYXRpb25zIDAKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDM5IC8vIDIwOQoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgPSBudW1Qb29scyBhcyB1aW50MTYKCWludGMgOCAvLyAyNDIKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDI3IC8vIDE2Cgk8PQoKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyMgoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIzCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW251bVBvb2xzIC0gMV0ucG9vbEFwcElkID0gcG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAxIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYyNAoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzIKCS8vIHJldHVybiB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBudW1Qb29scyBhcyB1aW50NjQsIHBvb2xBcHBJZDogdGhpcy5pdHhuIS5jcmVhdGVkQXBwbGljYXRpb25JRC5pZCB9OwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJaXRvYgoJY29uY2F0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGRTdGFrZShwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYWRkU3Rha2U6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMiAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBhZGRTdGFrZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgdmFsdWVUb1ZlcmlmeTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIHN0YWtlIHRvIGEgdmFsaWRhdG9yIHBvb2wuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gb25seSBpZiB2YWxpZGF0b3IgaGFzIGdhdGluZyB0byBlbnRlciAtIHRoaXMgaXMgYXNzZXQgaWQgb3IgbmZkIGlkIHRoYXQgY29ycmVzcG9uZHMgdG8gZ2F0aW5nLgovLyBUeG4gc2VuZGVyIGlzIGZhY3RvcmVkIGluIGFzIHdlbGwgaWYgdGhhdCBpcyBwYXJ0IG9mIGdhdGluZy4KLy8gKiBAcmV0dXJucyB7VmFsaWRhdG9yUG9vbEtleX0gLSBUaGUga2V5IG9mIHRoZSB2YWxpZGF0b3IgcG9vbC4KYWRkU3Rha2U6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA1CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NQoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjQ4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI4IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPCBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgImNhbid0IHN0YWtlIHdpdGggYSB2YWxpZGF0b3IgdGhhdCBpcyBwYXN0IGl0cyBzdW5zZXR0aW5nIHRpbWUiCgkvLyAgICAgICApCglpbnRjIDI4IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCTwKCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjhfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1NQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY1OQoJLy8gdmVyaWZ5UGF5VHhuKHN0YWtlZEFtb3VudFBheW1lbnQsIHsKCS8vICAgICAgIHNlbmRlcjogc3Rha2VyLAoJLy8gICAgICAgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY2CgkvLyBhc3NlcnQoCgkvLyAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCA8IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAndG90YWwgc3Rha2VkIGZvciBhbGwgb2YgYSB2YWxpZGF0b3JzIHBvb2xzIG1heSBub3QgZXhjZWVkIGhhcmQgY2FwJwoJLy8gICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJY2FsbHN1YiBtYXhBbGxvd2VkU3Rha2UKCTwKCgkvLyB0b3RhbCBzdGFrZWQgZm9yIGFsbCBvZiBhIHZhbGlkYXRvcnMgcG9vbHMgbWF5IG5vdCBleGNlZWQgaGFyZCBjYXAKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzMKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzUKCS8vIHJlYWxBbW91bnQgPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9idXJ5IDEgLy8gcmVhbEFtb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3NgoJLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3OAoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCSEKCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgxCgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODIKCS8vIHJlYWxBbW91bnQgLT0gbWJyQW10TGVmdEJlaGluZAoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjgzCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5jcmVhdGUoKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJY29uY2F0CglwdXNoaW50IDE0NAoJYm94X2NyZWF0ZQoJcG9wCgoqaWY5X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODcKCS8vIGZpbmRSZXQgPSB0aGlzLmZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkLCBzdGFrZXIsIHJlYWxBbW91bnQpCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZmluZFBvb2xGb3JTdGFrZXIKCWZyYW1lX2J1cnkgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY4OAoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2ODkKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmaW5kUmV0WzFdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyMiAvLyAxOTIKCWdldGJpdAoJZnJhbWVfYnVyeSA0IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjkwCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSBmaW5kUmV0WzJdCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTMKCWdldGJpdAoJZnJhbWVfYnVyeSA1IC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY5MQoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMF9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk2CgkvLyB0aGlzLnVwZGF0ZVN0YWtlclBvb2xTZXQoc3Rha2VyLCBwb29sS2V5KQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljYWxsc3ViIHVwZGF0ZVN0YWtlclBvb2xTZXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njk5CgkvLyB0aGlzLmNhbGxQb29sQWRkU3Rha2UoCgkvLyAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LAoJLy8gICAgICAgcG9vbEtleSwKCS8vICAgICAgIG1ickFtdExlZnRCZWhpbmQsCgkvLyAgICAgICBpc05ld1N0YWtlclRvVmFsaWRhdG9yLAoJLy8gICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sCgkvLyAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIHJldHVybiBwb29sS2V5OwoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgMCAyNAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDUKCXJldHN1YgoKLy8gc2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW86CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgc2V0VG9rZW5QYXlvdXRSYXRpbwoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xUb2tlblBheW91dFJhdGlvCi8vCi8vIHNldFRva2VuUGF5b3V0UmF0aW8gaXMgY2FsbGVkIGJ5IFN0YWtpbmcgUG9vbCAjIDEgKE9OTFkpIHRvIGFzayB0aGUgdmFsaWRhdG9yICh1cykgdG8gY2FsY3VsYXRlIHRoZSByYXRpb3MKLy8gb2Ygc3Rha2UgaW4gdGhlIHBvb2xzIGZvciBzdWJzZXF1ZW50IHRva2VuIHBheW91dHMgKGllOiAyIHBvb2xzLCAnMTAwJyBhbGdvIHRvdGFsIHN0YWtlZCwgNjAgaW4gcG9vbCAxLCBhbmQgNDAKLy8gaW4gcG9vbCAyKSAgVGhpcyBpcyBkb25lIHNvIHdlIGhhdmUgYSBzdGFibGUgc25hcHNob3Qgb2Ygc3Rha2UgLSB0YWtlbiBvbmNlIHBlciBlcG9jaCAtIG9ubHkgdHJpZ2dlcmVkIGJ5Ci8vIHBvb2wgMSBkb2luZyBwYXlvdXQuICBwb29scyBvdGhlciB0aGFuIDEgZG9pbmcgcGF5b3V0IGNhbGwgcG9vbCAxIHRvIGFzayBpdCBkbyBpdCBmaXJzdC4KLy8gSXQgd291bGQgYmUgNjAvNDAlIGluIHRoZSBwb29sUGN0T2ZXaG9sZSB2YWx1ZXMuICBUaGUgdG9rZW4gcmV3YXJkIHBheW91dHMgdGhlbiB1c2UgdGhlc2UgdmFsdWVzIGluc3RlYWQgb2YKLy8gdGhlaXIgJ2N1cnJlbnQnIHN0YWtlIHdoaWNoIGNoYW5nZXMgYXMgcGFydCBvZiB0aGUgcGF5b3V0cyB0aGVtc2VsdmVzIChhbmQgcGVvcGxlIGNvdWxkIGJlIGNoYW5naW5nIHN0YWtlCi8vIGR1cmluZyB0aGUgZXBvY2ggdXBkYXRlcyBhY3Jvc3MgcG9vbHMpCi8vCi8vIE11bHRpcGxlIHBvb2xzIHdpbGwgY2FsbCB1cyB2aWEgcG9vbCAxIChwb29sMi0+cG9vbDEtPnZhbGlkYXRvciwgZXRjLikgc28gZG9uJ3QgYXNzZXJ0IG9uIHBvb2wxIGNhbGxpbmcgbXVsdGlwbGUKLy8gdGltZXMgaW4gc2FtZSBlcG9jaC4gIEp1c3QgcmV0dXJuLgovLwovLyBAcGFyYW0gdmFsaWRhdG9ySWQgLSB2YWxpZGF0b3IgaWQgKGFuZCB0aHVzIHBvb2wpIGNhbGxpbmcgdXMuICBWZXJpZmllZCBzbyB0aGF0IHNlbmRlciBNVVNUIGJlIHBvb2wgMSBvZiB0aGlzIHZhbGlkYXRvci4KLy8gQHJldHVybnMgUG9vbFRva2VuUGF5b3V0UmF0aW8gLSB0aGUgZmluaXNoZWQgcmF0aW8gZGF0YQpzZXRUb2tlblBheW91dFJhdGlvOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gOAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzQKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzM1CgkvLyBhc3NlcnQocG9vbDFBcHBJRCAhPT0gMCkKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyAqaWYxMV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzcKCS8vIHRoaXMudHhuLnNlbmRlciAhPT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5hZGRyZXNzCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJIT0KCWJ6ICppZjExX2VuZAoKCS8vICppZjExX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjExX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDQKCS8vIGN1clJvdW5kID0gZ2xvYmFscy5yb3VuZAoJZ2xvYmFsIFJvdW5kCglmcmFtZV9idXJ5IDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDUKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ2CgkvLyBsYXN0UGF5b3V0VXBkYXRlICE9PSAwCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMTJfZW5kCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gKmlmMTNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzQ4CgkvLyAoQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpIGFzIHVpbnQ2NCkgPT09IGxhc3RQYXlvdXRVcGRhdGUKCWZyYW1lX2RpZyAwIC8vIHBvb2wxQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgLy8gImxhc3RQYXlvdXQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sMUFwcElEKS5nbG9iYWxTdGF0ZSgnbGFzdFBheW91dCcpCglhc3NlcnQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJPT0KCWJ6ICppZjEzX2VuZAoKCS8vICppZjEzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqc2V0VG9rZW5QYXlvdXRSYXRpbypyZXR1cm4KCippZjEzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIGVwb2NoUm91bmRMZW5ndGggPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lcG9jaFJvdW5kTGVuZ3RoIGFzIHVpbnQ2NAoJcHVzaGludCAxNjkKCWludGMgMjAgLy8gNAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTIKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NAoJLy8gbGFzdFBheW91dFVwZGF0ZSAtIChsYXN0UGF5b3V0VXBkYXRlICUgZXBvY2hSb3VuZExlbmd0aCkgPT09IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9kaWcgNCAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk9PQoJYnogKmlmMTRfZW5kCgoJLy8gKmlmMTRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1NQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbzsKCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTggLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTRfZW5kOgoKKmlmMTJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc1OAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnVwZGF0ZWRGb3JQYXlvdXQgPSBjdXJSb3VuZAoJaW50YyAzMSAvLyA4OTIKCWZyYW1lX2RpZyAxIC8vIGN1clJvdW5kOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYwCgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNSAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MQoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGN1ck51bVBvb2xzOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIGk6IHVpbnQ2NAoKKmZvcl8yOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA1IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfMl9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY3CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgW3RoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbaV0udG90YWxBbGdvU3Rha2VkLCAxXzAwMF8wMDBdLAoJLy8gICAgICAgICBbdG90YWxTdGFrZUZvclZhbGlkYXRvcl0KCS8vICAgICAgICkKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCXB1c2hpbnQgMV8wMDBfMDAwCgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDYgLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvcjogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzcxCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8ucG9vbFBjdE9mV2hvbGVbaV0gPSBvdXJQb29sUGN0T2ZXaG9sZQoJaW50YyAxNCAvLyA3MDAKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmZvcl8yX2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc2MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW87CglpbnRjIDE0IC8vICBoZWFkT2Zmc2V0CglpbnRjIDE4IC8vIDIwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoKKnNldFRva2VuUGF5b3V0UmF0aW8qcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gOAoJcmV0c3ViCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJLy8gc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA1CglidG9pCgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA0CglidG9pCgoJLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gYWxnb1RvQWRkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDQgKHBvb2xLZXkpIGZvciBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50NjQpCglhc3NlcnQKCgkvLyBleGVjdXRlIHN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIGFsZ29Ub0FkZDogdWludDY0LCByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkOiB1aW50NjQsIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NCwgc2F0dXJhdGVkQnVyblRvRmVlU2luazogdWludDY0KTogdm9pZAovLwovLyBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzIGlzIGNhbGxlZCBieSBTdGFraW5nIHBvb2xzIHRvIGluZm9ybSB0aGUgdmFsaWRhdG9yICh1cykgdGhhdCBhIHBhcnRpY3VsYXIgYW1vdW50IG9mIHRvdGFsCi8vIHN0YWtlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzcGVjaWZpZWQgcG9vbC4gIFRoaXMgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHN0YXRzIHdlIGhhdmUgaW4gb3VyIFBvb2xJbmZvIHN0b3JhZ2UuCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFZhbGlkYXRvclBvb2xLZXkgdHlwZQovLyBAcGFyYW0ge3VpbnQ2NH0gYWxnb1RvQWRkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRUb2tlbkFtb3VudFJlc2VydmVkIC0gYW1vdW50IHRoaXMgdmFsaWRhdG9yJ3MgdG90YWwgc3Rha2UgaW5jcmVhc2VkIHZpYSByZXdhcmRzICh0aGF0IHNob3VsZCBiZQovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9yQ29tbWlzc2lvbiAtIHRoZSBjb21taXNzaW9uIGFtb3VudCB0aGUgdmFsaWRhdG9yIHdhcyBwYWlkLCBpZiBhbnkKLy8gQHBhcmFtIHt1aW50NjR9IHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbmsgLSBpZiB0aGUgcG9vbCB3YXMgaW4gc2F0dXJhdGVkIHN0YXRlLCB0aGUgYW1vdW50IHNlbnQgYmFjayB0byB0aGUgZmVlIHNpbmsuCi8vIHNlZW4gYXMgJ2FjY291bnRlZCBmb3IvcGVuZGluZyBzcGVudCcpCnN0YWtlVXBkYXRlZFZpYVJld2FyZHM6Cglwcm90byA1IDAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk0CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKz0gYWxnb1RvQWRkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzk4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IGFsZ29Ub0FkZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc5OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IGFsZ29Ub0FkZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MDQKCS8vIHRoaXMucmV2ZXJpZnlORkRPd25lcnNoaXAocG9vbEtleS5pZCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJY2FsbHN1YiByZXZlcmlmeU5GRE93bmVyc2hpcAoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MzcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYxNV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODM5CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODQzCgkvLyBhc3NlcnQoYW1vdW50UmVtb3ZlZCA+IDAgfHwgcmV3YXJkUmVtb3ZlZCA+IDAsICdzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQnKQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYm56ICpza2lwX29yMgoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgYWxnbyBvciByZXdhcmQgd2FzIHJlbW92ZWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NDYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLT0gYW1vdW50UmVtb3ZlZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglieXRlYyA0IC8vICAic3Rha2VkIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyAqaWYxNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTAKCS8vIHJld2FyZFJlbW92ZWQgPiAwCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMTZfZWxzZQoKCS8vICppZjE2X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NTEKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUyCgkvLyBhc3NlcnQocmV3YXJkVG9rZW5JRCAhPT0gMCwgInJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuISIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHJld2FyZFJlbW92ZWQgY2FuJ3QgYmUgc2V0IGlmIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgcmV3YXJkIHRva2VuIQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAncmV3YXJkIGJlaW5nIHJlbW92ZWQgbXVzdCBiZSBjb3ZlcmVkIGJ5IGhvbGQgYmFjayBhbW91bnQnCgkvLyAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODU5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayAtPSByZXdhcmRSZW1vdmVkCglpbnRjIDEzIC8vIDI2MAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY0CgkvLyBwb29sS2V5LnBvb2xJZCAhPT0gMQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjE3X2VuZAoKCS8vICppZjE3X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NjUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNCAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg2NgoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA2IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODY3CgkvLyBtZXRob2RBcmdzOiBbc3Rha2VyLCByZXdhcmRUb2tlbklELCByZXdhcmRSZW1vdmVkXQoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtNCAvLyByZXdhcmRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJYiAqaWYxNl9lbmQKCippZjE2X2Vsc2U6CgoqaWYxNl9lbmQ6CgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTIKCS8vIHN0YWtlclJlbW92ZWQKCWZyYW1lX2RpZyAtNSAvLyBzdGFrZXJSZW1vdmVkOiBib29sZWFuCglieiAqaWYxOF9lbmQKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODk0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA2IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAyNyAvLyAxNgoJPD0KCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4OTYKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICBwb29sSWQ6IHBvb2xLZXkucG9vbElkLAoJLy8gICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTAxCgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IgPSByZW1vdmVSZXRbMF0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDAgLy8gMAoJZ2V0Yml0CglmcmFtZV9idXJ5IDIgLy8gc3Rha2VyT3V0T2ZUaGlzVmFsaWRhdG9yOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwMgoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbCA9IHJlbW92ZVJldFsxXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMSAvLyAxCglnZXRiaXQKCWZyYW1lX2J1cnkgMyAvLyBzdGFrZXJPdXRPZlByb3RvY29sOiBib29sCgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA0CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMTlfZW5kCgoJLy8gKmlmMTlfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyAtPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMTlfZW5kOgoJLy8gKmlmMjBfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA4CgkvLyBzdGFrZXJPdXRPZlByb3RvY29sCglmcmFtZV9kaWcgMyAvLyBzdGFrZXJPdXRPZlByb3RvY29sOiBib29sCglieiAqaWYyMF9lbmQKCgkvLyAqaWYyMF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTA5CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIwX2VuZDoKCippZjE4X2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkzMAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDAgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MzEKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDEgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkzOQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjFfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQyCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0MwoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ0CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ1CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoKKmZvcl8zOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk0NQoJLy8gaSA8IHBvb2xTZXQubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzNfZW5kCgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTQ2CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjIyX2VuZAoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDcKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA4IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDI2IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyMl9lbmQ6CgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJYiAqZm9yXzNfY29udGludWUKCippZjIzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTIKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk1MwoJLy8gcG9vbFNldFtpXS5pZCA9PT0gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgk9PQoJYnogKmlmMjRfZW5kCgoJLy8gKmlmMjRfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk1NQoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCgkvLyAqaWYyNV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NTcKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9CgkvLyAgICAgICAgICAgICBtYXhQZXJQb29sCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CgkrCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCTw9CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTYwCgkvLyByZXR1cm4gW3Bvb2xTZXRbaV0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF07CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI1X2VuZDoKCippZjI0X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NDUKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSA0IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzMKCipmb3JfM19lbmQ6CgoqaWYyMV9lbmQ6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTY3CgkvLyBhc3NlcnQoCgkvLyAgICAgICBhbW91bnRUb1N0YWtlID49IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UsCgkvLyAgICAgICAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzMKCS8vIHBvb2xzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scykKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJaW50YyAzMCAvLyA0MzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc0CgkvLyBjdXJOdW1Qb29scyA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUubnVtUG9vbHMgYXMgdWludDY0CglpbnRjIDggLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyBjdXJOdW1Qb29sczogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NzUKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNiAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzRfZW5kCgoJLy8gKmlmMjZfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc2CgkvLyBwb29sc1tpXS50b3RhbEFsZ29TdGFrZWQgKyBhbW91bnRUb1N0YWtlIDw9IG1heFBlclBvb2wKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDUgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50VG9TdGFrZTogdWludDY0CgkrCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCTw9CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTc3CgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IGkgKyAxLCBwb29sQXBwSWQ6IHBvb2xzW2ldLnBvb2xBcHBJZCB9LAoJLy8gICAgICAgICAgIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsCgkvLyAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICBdOwoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDUgLy8gcG9vbHM6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpdG9iCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCWIgKmZpbmRQb29sRm9yU3Rha2VyKnJldHVybgoKKmlmMjZfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk3NQoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5ODUKCS8vIHJldHVybiBbeyBpZDogdmFsaWRhdG9ySWQsIHBvb2xJZDogMCwgcG9vbEFwcElkOiAwIH0sIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IsIGlzTmV3U3Rha2VyVG9Qcm90b2NvbF07CglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgoqZmluZFBvb2xGb3JTdGFrZXIqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gNwoJcmV0c3ViCgovLyBtb3ZlUG9vbFRvTm9kZSh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfbW92ZVBvb2xUb05vZGU6CgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgbW92ZVBvb2xUb05vZGUKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG1vdmVQb29sVG9Ob2RlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHBvb2xBcHBJZDogdWludDY0LCBub2RlTnVtOiB1aW50NjQpOiB2b2lkCi8vCi8vIEZpbmQgdGhlIHNwZWNpZmllZCBwb29sIChpbiBhbnkgbm9kZSBudW1iZXIpIGFuZCBtb3ZlIGl0IHRvIHRoZSBzcGVjaWZpZWQgbm9kZS4KLy8gVGhlIHBvb2wgYWNjb3VudCBpcyBmb3JjZWQgb2ZmbGluZSBpZiBtb3ZlZCBzbyBwcmlvciBub2RlIHdpbGwgc3RpbGwgcnVuIGZvciAzMjAgcm91bmRzIGJ1dAovLyBuZXcga2V5IGdvZXMgb25saW5lIG9uIG5ldyBub2RlIHNvb24gYWZ0ZXIgKDMyMCByb3VuZHMgYWZ0ZXIgaXQgZ29lcyBvbmxpbmUpCi8vIE5vLW9wIGlmIHN1Y2Nlc3MsIGFzc2VydHMgaWYgbm90IGZvdW5kIG9yIGNhbid0IG1vdmUgIChubyBzcGFjZSBpbiB0YXJnZXQpCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHBvb2xBcHBJZAovLyBAcGFyYW0ge3VpbnQ2NH0gbm9kZU51bQptb3ZlUG9vbFRvTm9kZToKCXByb3RvIDMgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAwMQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciB8fAoJLy8gICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CglkdXAKCWJueiAqc2tpcF9vcjMKCXR4biBTZW5kZXIKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCXx8Cgoqc2tpcF9vcjM6CgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDA3CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNiAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMDgKCS8vIGFzc2VydChub2RlTnVtID49IDEgJiYgbm9kZU51bSA8PSBNQVhfTk9ERVMsICdub2RlIG51bWJlciBvdXQgb2YgYWxsb3dhYmxlIHJhbmdlJykKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDIgLy8gOAoJPD0KCSYmCgoqc2tpcF9hbmQxOgoJLy8gbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTAKCS8vIGZvciAobGV0IHNyY05vZGVJZHggPSAwOyBzcmNOb2RlSWR4IDwgTUFYX05PREVTOyBzcmNOb2RlSWR4ICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoKKmZvcl81OgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTAKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfUE9PTFNfUEVSX05PREU7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzY6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gaSA8IE1BWF9QT09MU19QRVJfTk9ERQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDkgLy8gMwoJPAoJYnogKmZvcl82X2VuZAoKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTIKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyN19lbmQKCgkvLyAqaWYyN19jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMwoJLy8gYXNzZXJ0KG5vZGVOdW0gLSAxICE9PSBzcmNOb2RlSWR4LCAiY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUiKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJIT0KCgkvLyBjYW4ndCBtb3ZlIHRvIHNhbWUgbm9kZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMTUKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tzcmNOb2RlSWR4XS5wb29sQXBwSWRzW2ldID0gMAoJaW50YyAxNiAvLyA5MDAKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDE4CgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLmdvT2ZmbGluZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLAoJLy8gICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxOQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAyMwoJLy8gdGhpcy5hZGRQb29sVG9Ob2RlKHZhbGlkYXRvcklkLCBwb29sQXBwSWQsIG5vZGVOdW0pCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAyNAoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqZm9yXzZfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTAxMQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDEwCgkvLyBzcmNOb2RlSWR4ICs9IDEKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoJLy8gY291bGRuJ3QgZmluZCBwb29sIGFwcCBpZCBpbiBub2RlcyB0byBtb3ZlCgllcnIKCXJldHN1YgoKLy8gZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0CiphYmlfcm91dGVfZW1wdHlUb2tlblJld2FyZHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHJlY2VpdmVyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHJlY2VpdmVyKSBmb3IgZW1wdHlUb2tlblJld2FyZHMgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoJY2FsbHN1YiBlbXB0eVRva2VuUmV3YXJkcwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHJlY2VpdmVyOiBBZGRyZXNzKTogdWludDY0Ci8vCi8vIFNlbmRzIHRoZSByZXdhcmQgdG9rZW5zIGhlbGQgaW4gcG9vbCAxIHRvIHNwZWNpZmllZCByZWNlaXZlci4KLy8gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHRoZSBvd25lciB3aGVuIHRoZXkgd2FudCB0byBnZXQgcmV3YXJkIHRva2VucyAnYmFjaycgd2hpY2ggdGhleSBzZW50IHRvCi8vIHRoZSBmaXJzdCBwb29sIChsaWtlbHkgYmVjYXVzZSB2YWxpZGF0b3IgaXMgc3Vuc2V0dGluZy4gIEFueSB0b2tlbnMgY3VycmVudGx5ICdyZXNlcnZlZCcgZm9yIHN0YWtlcnMgdG8gY2xhaW0gd2lsbAovLyBOT1QgYmUgc2VudCBhcyB0aGV5IG11c3QgYmUgaGVsZCBiYWNrIGZvciBzdGFrZXJzIHRvIGxhdGVyIGNsYWltLgovLyBbIE9OTFkgT1dORVIgQ0FOIENBTExdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHJlY2VpdmVyIC0gdGhlIGFjY291bnQgdG8gc2VuZCB0aGUgdG9rZW5zIHRvIChtdXN0IGFscmVhZHkgYmUgb3B0ZWQtaW4gdG8gdGhlIHJld2FyZCB0b2tlbikKLy8gQHJldHVybnMge3VpbnQ2NH0gdGhlIGFtb3VudCBvZiByZXdhcmQgdG9rZW4gc2VudAplbXB0eVRva2VuUmV3YXJkczoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDMKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KAoJLy8gICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5vd25lciwKCS8vICAgICAgICdjYW4gb25seSBiZSBjYWxsZWQgYnkgdmFsaWRhdG9yIG93bmVyJwoJLy8gICAgICkKCXR4biBTZW5kZXIKCWludGMgMiAvLyA4CglpbnRjIDQgLy8gMzIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCT09CgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHZhbGlkYXRvciBvd25lcgoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDcKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0OAoJLy8gcmV3YXJkVG9rZW5IZWxkQmFjayA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJaW50YyAxMyAvLyAyNjAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNDkKCS8vIGFzc2VydChyZXdhcmRUb2tlbklkICE9PSAwLCAidGhpcyB2YWxpZGF0b3IgZG9lc24ndCBoYXZlIGEgcmV3YXJkIHRva2VuIGRlZmluZWQiKQoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCgkvLyB0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDYgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTIKCS8vIHRva2VuUmV3YXJkQmFsID0gcG9vbE9uZUFwcElkLmFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbklkKSkgLSByZXdhcmRUb2tlbkhlbGRCYWNrCglmcmFtZV9kaWcgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMSAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTUKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE0IC8vICBtZXRob2QgInBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NgoJLy8gYXBwbGljYXRpb25JRDogcG9vbE9uZUFwcElkCglmcmFtZV9kaWcgMiAvLyBwb29sT25lQXBwSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbE9uZUFwcElkLmFkZHJlc3MuYXNzZXRCYWxhbmNlKEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbklkKSkgPT09IHJld2FyZFRva2VuSGVsZEJhY2ssCgkvLyAgICAgICAnYmFsYW5jZSBvZiByZW1haW5pbmcgcmV3YXJkIHRva2VucyBzaG91bGQgbWF0Y2ggdGhlIGhlbGQgYmFjayBhbW91bnQnCgkvLyAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2MwoJLy8gcmV0dXJuIHRva2VuUmV3YXJkQmFsOwoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gdmVyaWZ5UG9vbEtleUNhbGxlcihwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogdm9pZAovLwovLyBMb2dzIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWxpZGF0b3IgdG8gdGhlIHN5c3RlbSwgaXRzIGluaXRpYWwgb3duZXIgYW5kIG1hbmFnZXIKLy8KLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjEKCS8vIGFzc2VydCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQiKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gdGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBhc3NlcnQocG9vbEtleS5wb29sSWQgPD0gTUFYX1BPT0xTLCAncG9vbCBpZCBub3QgaW4gdmFsaWQgcmFuZ2UnKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDMgLy8gMjQKCTw9CgoJLy8gcG9vbCBpZCBub3QgaW4gdmFsaWQgcmFuZ2UKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYzCgkvLyBhc3NlcnQoCgkvLyAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicKCS8vICAgICApCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyA4IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPD0KCSYmCgoqc2tpcF9hbmQyOgoJLy8gcG9vbCBpZCBvdXRzaWRlIG9mIHJhbmdlIG9mIHBvb2xzIGNyZWF0ZWQgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgcG9vbEtleS5wb29sQXBwSWQgPT09IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZCwKCS8vICAgICAgICJUaGUgcGFzc2VkIGluIGFwcCBpZCBkb2Vzbid0IG1hdGNoIHRoZSBwYXNzZWQgaW4gaWRzIgoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGFzc2VydCh0aGlzLnR4bi5zZW5kZXIgPT09IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmFkZHJlc3MpCgl0eG4gU2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCT09Cglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NgoJLy8gYXNzZXJ0KHBvb2xLZXkuaWQgPT09IChBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzI0OTY0IC8vICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgndmFsaWRhdG9ySWQnKQoJYXNzZXJ0Cgk9PQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzcKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE4NwoJLy8gdmFsaWRhdG9yQ29uZmlnID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHN0b3JhZ2Uga2V5Ly92YWxpZGF0b3JDb25maWcKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTg4CgkvLyB2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbyAhPT0gMAoJaW50YyAyMSAvLyA3MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExOTEKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyA5IC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCgkvLyAqaWYyOV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTkzCgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWludGMgMTcgLy8gNDAKCWludGMgNCAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kMzoKCWJ6ICppZjI5X2VuZAoKCS8vICppZjI5X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTk1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5uZmRGb3JJbmZvID0gMAoJaW50YyAyMSAvLyA3MgoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyOV9lbmQ6CgoqaWYyOF9lbmQ6CglyZXRzdWIKCi8vIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdm9pZAp2YWxpZGF0ZUNvbmZpZzoKCXByb3RvIDEgMAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjAyCgkvLyBhc3NlcnQoCgkvLyAgICAgICBjb25maWcuZW50cnlHYXRpbmdUeXBlID49IEdBVElOR19UWVBFX05PTkUgJiYgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA8PSBHQVRJTkdfVFlQRV9DT05TVF9NQVgsCgkvLyAgICAgICAnZ2F0aW5nIHR5cGUgbm90IHZhbGlkJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDAgLy8gMAoJPj0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMjAgLy8gNAoJPD0KCSYmCgoqc2tpcF9hbmQ0OgoJLy8gZ2F0aW5nIHR5cGUgbm90IHZhbGlkCglhc3NlcnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNgoJLy8gYXNzZXJ0KAoJLy8gICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJaW50YyAxIC8vIDEKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDU6CgkvLyBlcG9jaCBsZW5ndGggbm90IGluIGFsbG93YWJsZSByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTAKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPj0gTUlOX1BDVF9UT19WQUxJREFUT1IgJiYgY29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciA8PSBNQVhfUENUX1RPX1ZBTElEQVRPUiwKCS8vICAgICAgICdjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDYKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDY6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjE0CgkvLyBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTczIDQKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAndmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjAKCS8vIGFzc2VydChjb25maWcubWluRW50cnlTdGFrZSA+PSBNSU5fQUxHT19TVEFLRV9QRVJfUE9PTCwgJ3N0YWtpbmcgcG9vbCBtdXN0IGhhdmUgbWluaW11bSBlbnRyeSBvZiAxIGFsZ28nKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIwOSA4CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCT49CgoJLy8gc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbwoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjIKCS8vIGFzc2VydCgKCS8vICAgICAgIGNvbmZpZy5wb29sc1Blck5vZGUgPiAwICYmIGNvbmZpZy5wb29sc1Blck5vZGUgPD0gTUFYX1BPT0xTX1BFUl9OT0RFLAoJLy8gICAgICAgJ251bWJlciBvZiBwb29scyBwZXIgbm9kZSBleGNlZWRzIGFsbG93ZWQgbnVtYmVyJwoJLy8gICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjUgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kNwoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDkgLy8gMwoJPD0KCSYmCgoqc2tpcF9hbmQ3OgoJLy8gbnVtYmVyIG9mIHBvb2xzIHBlciBub2RlIGV4Y2VlZHMgYWxsb3dlZCBudW1iZXIKCWFzc2VydAoKCS8vICppZjMxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjYKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIyNwoJLy8gYXNzZXJ0KGNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwgJ3N1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldCcpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI2IDgKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBzdW5zZXR0aW5nT24gbXVzdCBiZSBsYXRlciB0aGFuIG5vdyBpZiBzZXQKCWFzc2VydAoKKmlmMzFfZW5kOgoJcmV0c3ViCgovLyBjYWxsUG9vbEFkZFN0YWtlKHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4biwgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSwgbWJyQW10UGFpZDogdWludDY0LCBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sZWFuLCBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIEFkZHMgYSBzdGFrZXJzIGFtb3VudCBvZiBhbGdvIHRvIGEgdmFsaWRhdG9yIHBvb2wsIHRyYW5zZmVycmluZyB0aGUgYWxnbyB3ZSByZWNlaXZlZCBmcm9tIHRoZW0gKGFscmVhZHkgdmVyaWZpZWQKLy8gYnkgb3VyIGNhbGxlcikgdG8gdGhlIHN0YWtpbmcgcG9vbCBhY2NvdW50LCBhbmQgdGhlbiB0ZWxsaW5nIGl0IGFib3V0IHRoZSBhbW91bnQgYmVpbmcgYWRkZWQgZm9yIHRoZSBzcGVjaWZpZWQKLy8gc3Rha2VyLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFRoZSBrZXkgb2YgdGhlIHZhbGlkYXRvciBwb29sLgovLyBAcGFyYW0ge3VpbnQ2NH0gbWJyQW10UGFpZCAtIEFtb3VudCB0aGUgdXNlciBpcyBsZWF2aW5nIGJlaGluZCBpbiB0aGUgdmFsaWRhdG9yIHRvIHBheSBmb3IgdGhlaXIgc3Rha2VyIE1CUiBjb3N0Ci8vIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSB2YWxpZGF0b3IKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvUHJvdG9jb2wgLSBpZiB0aGlzIGlzIGEgbmV3LCBmaXJzdC10aW1lIHN0YWtlciB0byB0aGUgcHJvdG9jb2wKY2FsbFBvb2xBZGRTdGFrZToKCXByb3RvIDUgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI0OQoJLy8gcG9vbEFwcElkID0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0ucG9vbEFwcElkCglpbnRjIDYgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNSAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgXSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OAoJLy8gYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0zIC8vIG1ickFtdFBhaWQ6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OAoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjU0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1NQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICB7IGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkLCByZWNlaXZlcjogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmFkZHJlc3MgfSwKCS8vICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDUwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJcHVzaGludCA1MDAKCTwKCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY0CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzJfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjgKCS8vIHBvb2xOdW1TdGFrZXJzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdudW1TdGFrZXJzJykgYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdudW1TdGFrZXJzJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xOdW1TdGFrZXJzOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2OQoJLy8gcG9vbEFsZ29TdGFrZWQgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3N0YWtlZCcpIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDIgLy8gcG9vbEFsZ29TdGFrZWQ6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjcwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMjcgLy8gMTYKCTw9CgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxTdGFrZXJzIG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNiAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA1IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3NAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcgoJZnJhbWVfZGlnIC00IC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4KCWJ6ICppZjMzX2VuZAoKCS8vICppZjMzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzICs9IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYzM19lbmQ6CgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc3CgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM0X2VuZAoKCS8vICppZjM0X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc4CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgNyAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCSsKCWJ5dGVjIDcgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjM0X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgwCgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJaW50YyAxMiAvLyAyNTIKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODEKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4NQoJLy8gYXNzZXJ0KHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cykKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODcKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODgKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfNzoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg5CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzdfZW5kCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzNV9lbmQKCgkvLyAqaWYzNV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5MgoJLy8gcmV0dXJuOwoJcmV0c3ViCgoqaWYzNV9lbmQ6CgkvLyAqaWYzNl9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjk0CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDgKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDg6CglieiAqaWYzNl9lbmQKCgkvLyAqaWYzNl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5NQoJLy8gZmlyc3RFbXB0eSA9IGkgKyAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoqaWYzNl9lbmQ6CgoqZm9yXzdfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNwoKKmZvcl83X2VuZDoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTgKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM3X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAxCgkvLyB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZVtmaXJzdEVtcHR5IC0gMV0gPSBwb29sS2V5CglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCglyZXRzdWIKCi8vIHJlbW92ZUZyb21TdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IFtib29sZWFuLCBib29sZWFuXQovLwovLyBSZW1vdmVzIGEgcG9vbCBrZXkgZnJvbSB0aGUgc3Rha2VyJ3MgYWN0aXZlIHBvb2wgc2V0IC0gZmFpbHMgaWYgbm90IGZvdW5kICghKQovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSAtIFRoZSBwb29sIGtleSB0aGV5IHNob3VsZCBiZSBzdG9yZWQgaW4KLy8KLy8gQHJldHVybiBbYm9vbGVhbiwgYm9vbGVhbl0gW2lzIHRoZSBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29scyBvZiB0aGUgZ2l2ZW4gVkFMSURBVE9SLCBhbmQgaXMgc3Rha2VyIGdvbmUgZnJvbSBBTEwgcG9vbHNdCnJlbW92ZUZyb21TdGFrZXJQb29sU2V0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzE0CgkvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTUKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMTYKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gZm91bmQ6IGJvb2wKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOAoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl84X2VuZAoKCS8vICppZjM4X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjAKCS8vIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJYiAqZm9yXzhfY29udGludWUKCippZjM4X2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzIzCgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI0CgkvLyBwb29sU2V0W2ldLmlkID09PSBwb29sS2V5LmlkCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzI1CgkvLyBwb29sU2V0W2ldID09PSBwb29sS2V5CglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJPT0KCWJ6ICppZjQwX2Vsc2UKCgkvLyAqaWY0MF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMyNgoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjgKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ldID0geyBpZDogMCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJYiAqaWY0MF9lbmQKCippZjQwX2Vsc2U6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMAoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ICs9IDEKCWZyYW1lX2RpZyAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudDogdWludDY0CgoqaWY0MF9lbmQ6CgoqaWYzOV9lbmQ6CgoqZm9yXzhfY29udGludWU6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMxOQoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vICFmb3VuZAoJZnJhbWVfZGlnIDIgLy8gZm91bmQ6IGJvb2wKCSEKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIE5vIG1hdGNoaW5nIHNsb3QgZm91bmQgd2hlbiB0b2xkIHRvIHJlbW92ZSBhIHBvb2wgZnJvbSB0aGUgc3Rha2VycyBzZXQKCWVycgoKKmlmNDFfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzgKCS8vIHJldHVybiBbaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID09PSAwLCBpbkFueVBvb2xDb3VudCA9PT0gMF07CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQyCgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNiAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDMKCS8vIG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3IgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5wb29sc1Blck5vZGUgYXMgdWludDY0CglwdXNoaW50IDIyNQoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0NQoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kOQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kOToKCS8vIG5vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZQoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCipmb3JfOToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ3CgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ4CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW25vZGVOdW0gLSAxXS5wb29sQXBwSWRzW2ldID09PSAwCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDIgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDJfZW5kCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cy5ub2Rlc1tub2RlTnVtIC0gMV0ucG9vbEFwcElkc1tpXSA9IHBvb2xBcHBJZAoJaW50YyAxNiAvLyA5MDAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTEKCS8vIHJldHVybjsKCXJldHN1YgoKKmlmNDJfZW5kOgoKKmZvcl85X2NvbnRpbnVlOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzkKCipmb3JfOV9lbmQ6CgkvLyBubyBhdmFpbGFibGUgc3BhY2UgaW4gc3BlY2lmaWVkIG5vZGUgZm9yIHRoaXMgcG9vbAoJZXJyCglyZXRzdWIKCi8vIGRvZXNTdGFrZXJNZWV0R2F0aW5nKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIGEgc3Rha2VyIG1lZXRzIHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGUgdmFsaWRhdG9yLgovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbHVlVG9WZXJpZnkgLSBUaGUgdmFsdWUgdG8gdmVyaWZ5IGFnYWluc3QgdGhlIGdhdGluZyByZXF1aXJlbWVudHMuCi8vIEByZXR1cm5zIHt2b2lkfSBvciBhc3NlcnRzIGlmIHJlcXVpcmVtZW50cyBub3QgbWV0Lgpkb2VzU3Rha2VyTWVldEdhdGluZzoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NQoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjYKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX05PTkUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQzX2VuZAoKCS8vICppZjQzX2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY3CgkvLyByZXR1cm47CglyZXRzdWIKCippZjQzX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzY5CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3MAoJLy8gY29uZmlnID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcpCglpbnRjIDAgLy8gMAoJaW50YyA4IC8vIDI0MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3NAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDkgLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OAoJLy8gYXNzZXJ0KHZhbHVlVG9WZXJpZnkgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc5CgkvLyBiYWxSZXF1aXJlZCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmdhdGluZ0Fzc2V0TWluQmFsYW5jZQoJaW50YyAzNyAvLyAxNDUKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDMgLy8gYmFsUmVxdWlyZWQ6IHVpbnQ2NAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODAKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ1X2VuZAoKCS8vICppZjQ1X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzgxCgkvLyBiYWxSZXF1aXJlZCA9IDEKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDMgLy8gYmFsUmVxdWlyZWQ6IHVpbnQ2NAoKKmlmNDVfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAnbXVzdCBoYXZlIHJlcXVpcmVkIG1pbmltdW0gYmFsYW5jZSBvZiB2YWxpZGF0b3IgZGVmaW5lZCB0b2tlbiB0byBhZGQgc3Rha2UnCgkvLyAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ0X2VuZDoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODgKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUU19DUkVBVEVEX0JZCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxIC8vIDEKCT09CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IHRoZSB2YWxpZGF0b3IgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlJwoJLy8gICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDZfZW5kOgoJLy8gKmlmNDdfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NAoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRfSUQKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEwIC8vIDIKCT09CglieiAqaWY0N19lbmQKCgkvLyAqaWY0N19jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM5NQoJLy8gYXNzZXJ0KHZhbHVlVG9WZXJpZnkgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk2CgkvLyBmb3VuZCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA0IC8vIGZvdW5kOiBib29sCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTcKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cwoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDMyCglkdXAKCWZyYW1lX2J1cnkgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWV4dHJhY3QgMCA4CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCgoqZm9yT2ZfMDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzOTgKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzk5CgkvLyBmb3VuZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCWIgKmZvck9mXzBfZW5kCgoqaWY0OF9lbmQ6CgoqZm9yT2ZfMF9jb250aW51ZToKCS8vIGluY3JlbWVudCBvZmZzZXQgYW5kIGxvb3AgaWYgbm90IG91dCBvZiBib3VuZHMKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnRjIDIgLy8gOAoJKwoJZHVwCglpbnRjIDQgLy8gIG9mZnNldCBvZiBsYXN0IGVsZW1lbnQKCTwKCWJ6ICpmb3JPZl8wX2VuZAoJZnJhbWVfYnVyeSA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglmcmFtZV9kaWcgNSAvLyBjb3B5IG9mIHRoZSBhcnJheSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIKCWZyYW1lX2RpZyA3IC8vIHRoZSBvZmZzZXQgd2UgYXJlIGV4dHJhY3RpbmcgdGhlIG5leHQgZWxlbWVudCBmcm9tCglpbnRjIDIgLy8gOAoJZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJYiAqZm9yT2ZfMAoKKmZvck9mXzBfZW5kOgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDMKCS8vIGFzc2VydChmb3VuZCwgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlJykKCWZyYW1lX2RpZyA0IC8vIGZvdW5kOiBib29sCgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBhc3NldCBpZCBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDdfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA5IC8vIDMKCT09CglieiAqaWY0OV9lbmQKCgkvLyAqaWY0OV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sIEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWx1ZVRvVmVyaWZ5KS5jcmVhdG9yKSwKCS8vICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnCgkvLyAgICAgICApCglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0Cglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0Q3JlYXRvcgoJcG9wCglmcmFtZV9kaWcgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCgkvLyBzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBjcmVhdGVkIGJ5IGNyZWF0b3IgdGhhdCBpcyBvbmUgb2YgdGhlIGxpbmtlZCBhZGRyZXNzZXMgaW4gYW4gbmZkCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUwX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTMKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAyMCAvLyA0Cgk9PQoJYnogKmlmNTBfZW5kCgoJLy8gKmlmNTBfY29uc2VxdWVudAoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTUKCS8vIHVzZXJPZmZlcmVkTkZEQXBwSUQgPSB2YWx1ZVRvVmVyaWZ5CglmcmFtZV9kaWcgLTIgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9idXJ5IDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTYKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZCh1c2VyT2ZmZXJlZE5GREFwcElEKSwgJ3Byb3ZpZGVkIE5GRCBtdXN0IGJlIHZhbGlkJykKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgcmF3Qnl0ZXMoQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykgYXMgQWRkcmVzcykgPT09IHJhd0J5dGVzKHN0YWtlcikgfHwKCS8vICAgICAgICAgICB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAicHJvdmlkZWQgbmZkIGZvciBlbnRyeSBpc24ndCBvd25lZCBvciBsaW5rZWQgdG8gdGhlIHN0YWtlciIKCS8vICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgOSAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCT09CglkdXAKCWJueiAqc2tpcF9vcjYKCWZyYW1lX2RpZyAxIC8vIHN0YWtlcjogYWRkcmVzcwoJZnJhbWVfZGlnIDggLy8gdXNlck9mZmVyZWRORkRBcHBJRDogdWludDY0CgljYWxsc3ViIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdAoJfHwKCipza2lwX29yNjoKCS8vIHByb3ZpZGVkIG5mZCBmb3IgZW50cnkgaXNuJ3Qgb3duZWQgb3IgbGlua2VkIHRvIHRoZSBzdGFrZXIKCWFzc2VydAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDI2CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgIGJ0b2koQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpIGFzIGJ5dGVzKSA9PT0KCS8vICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICdzcGVjaWZpZWQgbmZkIG11c3QgYmUgYSBzZWdtZW50IG9mIHRoZSBuZmQgdGhlIHZhbGlkYXRvciBzcGVjaWZpZWQgYXMgYSByZXF1aXJlbWVudCcKCS8vICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUwX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ1CgkvLyB1c2VyT2ZmZXJlZE5GRE5hbWUgPSBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykgYXMgc3RyaW5nCglmcmFtZV9kaWcgLTEgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTZlNjE2ZDY1IC8vICJpLm5hbWUiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kubmFtZScpCglhc3NlcnQKCWZyYW1lX2J1cnkgMCAvLyB1c2VyT2ZmZXJlZE5GRE5hbWU6IHN0cmluZwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ3CgkvLyBzZW5kQXBwQ2FsbCh7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCksCgkvLyAgICAgICBhcHBsaWNhdGlvbkFyZ3M6IFsnaXNfdmFsaWRfbmZkX2FwcGlkJywgdXNlck9mZmVyZWRORkROYW1lLCBpdG9iKG5mZEFwcElEKV0sCgkvLyAgICAgICBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKV0sCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDQ4CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMTkgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ0OQoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ2lzX3ZhbGlkX25mZF9hcHBpZCcsIHVzZXJPZmZlcmVkTkZETmFtZSwgaXRvYihuZmRBcHBJRCldCglieXRlYyAxMyAvLyAgImlzX3ZhbGlkX25mZF9hcHBpZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyB1c2VyT2ZmZXJlZE5GRE5hbWU6IHN0cmluZwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDUwCgkvLyBhcHBsaWNhdGlvbnM6IFtBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKV0KCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9ucwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ1MgoJLy8gcmV0dXJuIGJ0b2kodGhpcy5pdHhuLmxhc3RMb2cpID09PSAxOwoJaXR4biBMYXN0TG9nCglidG9pCglpbnRjIDEgLy8gMQoJPT0KCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KG5mZEFwcElEOiB1aW50NjQsIGFkZHJUb0ZpbmQ6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgaXMgcHJlc2VudCBpbiBhbiBORkRzIGxpc3Qgb2YgdmVyaWZpZWQgYWRkcmVzc2VzLgovLyBUaGUgTkZEIGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFzIG9mZmljaWFsLgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIGFwcGxpY2F0aW9uIGlkLgovLyBAcGFyYW0ge0FkZHJlc3N9IGFkZHJUb0ZpbmQgLSBUaGUgYWRkcmVzcyB0byBmaW5kIGluIHRoZSB2LmNhQWxnby4wLmFzIHByb3BlcnR5Ci8vIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHRoZSBhZGRyZXNzIGlzIHByZXNlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLgppc0FkZHJlc3NJbk5GRENBQWxnb0xpc3Q6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NjQKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NQoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2NgoJLy8gYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddCglwdXNoYnl0ZXMgMHg3MjY1NjE2NDVmNzA3MjZmNzA2NTcyNzQ3OSAvLyAicmVhZF9wcm9wZXJ0eSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglwdXNoYnl0ZXMgMHg3NjJlNjM2MTQxNmM2NzZmMmUzMDJlNjE3MyAvLyAidi5jYUFsZ28uMC5hcyIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY4CgkvLyBjYUFsZ29EYXRhID0gdGhpcy5pdHhuLmxhc3RMb2cKCWl0eG4gTGFzdExvZwoJZnJhbWVfYnVyeSAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ2OQoJLy8gaSA8IGNhQWxnb0RhdGEubGVuZ3RoCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIGNhQWxnb0RhdGE6IGJ5dGVbXQoJbGVuCgk8CglieiAqZm9yXzEwX2VuZAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDcwCgkvLyBhZGRyID0gZXh0cmFjdDMoY2FBbGdvRGF0YSwgaSwgMzIpCglmcmFtZV9kaWcgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDMyCglleHRyYWN0MwoJZnJhbWVfYnVyeSAyIC8vIGFkZHI6IGJ5dGVbXQoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0NzEKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTA6CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ3MgoJLy8gcmV0dXJuIHRydWU7CglpbnRjIDEgLy8gMQoJYiAqaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0KnJldHVybgoKKmlmNTFfZW5kOgoKKmZvcl8xMF9jb250aW51ZToKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDY5CgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDc1CgkvLyByZXR1cm4gZmFsc2U7CglpbnRjIDAgLy8gMAoKKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGFsZ29TYXR1cmF0aW9uTGV2ZWwoKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIG1heGltdW0gYWxsb3dlZCBzdGFrZSBwZXIgdmFsaWRhdG9yIGJhc2VkIG9uIGEgcGVyY2VudGFnZSBvZiBhbGwgY3VycmVudCBvbmxpbmUgc3Rha2UgYmVmb3JlCi8vIHRoZSB2YWxpZGF0b3IgaXMgY29uc2lkZXJlZCBzYXR1cmF0ZWQgLSB3aGVyZSByZXdhcmRzIGFyZSBkaW1pbmlzaGVkLgovLyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIGRlZmluZWQgdHdpY2UgLSBoZXJlIGFuZCBpbiBzdGFraW5nIHBvb2wgY29udHJhY3QuICBCb3RoIG11c3QgYmUgaWRlbnRpY2FsLgphbGdvU2F0dXJhdGlvbkxldmVsOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ4NAoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDg2CgkvLyByZXR1cm4gd2lkZVJhdGlvKFtvbmxpbmUsIE1BWF9WQUxJREFUT1JfU09GVF9QQ1RfT0ZfT05MSU5FXzFERUNJTUFMXSwgWzEwMDBdKTsKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxsb3dlZFN0YWtlKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlLgovLyBBZGRpbmcgc3Rha2UgaXMgY29tcGxldGVseSBibG9ja2VkIGF0IHRoaXMgYW1vdW50LgptYXhBbGxvd2VkU3Rha2U6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDk0CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0OTYKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9IQVJEX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pOwoJZnJhbWVfZGlnIDAgLy8gb25saW5lOiB1aW50NjQKCXB1c2hpbnQgMTUwCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyAzMiAvLyAxMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBtYXhBbGdvQWxsb3dlZFBlclBvb2woKTogdWludDY0Ci8vCi8vIFJldHVybnMgdGhlIE1BWElNVU0gYWxsb3dlZCBzdGFrZSBwZXIgcG9vbCBhbmQgc3RpbGwgcmVjZWl2ZSBpbmNlbnRpdmVzIC0gd2UnbGwgdHJlYXQgdGhpcyBhcyB0aGUgJ21heCBwZXIgcG9vbCcKbWF4QWxnb0FsbG93ZWRQZXJQb29sOgoJcHJvdG8gMCAxCgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MDQKCS8vIHJldHVybiA3MF8wMDBfMDAwXzAwMF8wMDA7CglwdXNoaW50IDcwXzAwMF8wMDBfMDAwXzAwMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTA5CgkvLyByZXR1cm4gMl8wMDBfMDAwXzAwMF8wMDBfMDAwOwoJcHVzaGludCAyXzAwMF8wMDBfMDAwXzAwMF8wMDAKCXJldHN1YgoKLy8gbWluQmFsYW5jZUZvckFjY291bnQoY29udHJhY3RzOiB1aW50NjQsIGV4dHJhUGFnZXM6IHVpbnQ2NCwgYXNzZXRzOiB1aW50NjQsIGxvY2FsSW50czogdWludDY0LCBsb2NhbEJ5dGVzOiB1aW50NjQsIGdsb2JhbEludHM6IHVpbnQ2NCwgZ2xvYmFsQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NAptaW5CYWxhbmNlRm9yQWNjb3VudDoKCXByb3RvIDcgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjEKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTUgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyMgoJLy8gbWluQmFsICs9IGNvbnRyYWN0cyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIGNvbnRyYWN0czogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjMKCS8vIG1pbkJhbCArPSBleHRyYVBhZ2VzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gZXh0cmFQYWdlczogdWludDY0CglpbnRjIDE1IC8vIDEwMDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjQKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNSAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI1CgkvLyBtaW5CYWwgKz0gbG9jYWxJbnRzICogU1NDX1ZBTFVFX1VJTlQKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTQgLy8gbG9jYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTI2CgkvLyBtaW5CYWwgKz0gZ2xvYmFsSW50cyAqIFNTQ19WQUxVRV9VSU5UCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC02IC8vIGdsb2JhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjcKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gZXhhbXBsZXMvcmV0aS92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE1MjgKCS8vIG1pbkJhbCArPSBnbG9iYWxCeXRlcyAqIFNTQ19WQUxVRV9CWVRFUwoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNyAvLyBnbG9iYWxCeXRlczogdWludDY0CglpbnRjIDM0IC8vIDUwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBleGFtcGxlcy9yZXRpL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTUyOQoJLy8gcmV0dXJuIG1pbkJhbDsKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGV4YW1wbGVzL3JldGkvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNTM2CgkvLyByZXR1cm4gU0NCT1hfUEVSQk9YICsgdG90YWxOdW1CeXRlcyAqIFNDQk9YX1BFUkJZVEU7CglwdXNoaW50IDI1MDAKCWZyYW1lX2RpZyAtMSAvLyB0b3RhbE51bUJ5dGVzOiB1aW50NjQKCXB1c2hpbnQgNDAwCgkqCgkrCglyZXRzdWIKCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgxYjVlODJjNiAvLyBtZXRob2QgImluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg3OTQ3MmQ4MyAvLyBtZXRob2QgImxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZCIKCXB1c2hieXRlcyAweDVmN2FjZmQ5IC8vIG1ldGhvZCAiZmluYWxpemVTdGFraW5nQ29udHJhY3QoKXZvaWQiCglwdXNoYnl0ZXMgMHgzMTcyY2E5ZCAvLyBtZXRob2QgImdhcygpdm9pZCIKCXB1c2hieXRlcyAweDhhODcxNDJkIC8vIG1ldGhvZCAiZ2V0TWJyQW1vdW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhkMTM2NmNjMyAvLyBtZXRob2QgImdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDNiMDQ1YzVjIC8vIG1ldGhvZCAiZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0IgoJcHVzaGJ5dGVzIDB4NzVhZmY2MWQgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4MmZhMjJjNGIgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpIgoJcHVzaGJ5dGVzIDB4OTEwZTk0YWMgLy8gbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4NTcyNzY3ZDEgLy8gbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5YjUwNGFhZiAvLyBtZXRob2QgImdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KSIKCXB1c2hieXRlcyAweGZiYzYzMTc4IC8vIG1ldGhvZCAiZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHgyNDQ5OGNmNCAvLyBtZXRob2QgImRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sIgoJcHVzaGJ5dGVzIDB4Zjg0NmRkN2EgLy8gbWV0aG9kICJnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10iCglwdXNoYnl0ZXMgMHg4MzA1MDUwMSAvLyBtZXRob2QgImdldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg3YmJiNmM4ZCAvLyBtZXRob2QgImdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkiCglwdXNoYnl0ZXMgMHhmODM5NDE0YSAvLyBtZXRob2QgImdldE5GRFJlZ2lzdHJ5SUQoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDBjMzE3Y2ZiIC8vIG1ldGhvZCAiYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NCIKCXB1c2hieXRlcyAweDNlMjg4OTcyIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZGQ1ZmFhZGEgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHgxOGFhYzdhNyAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4Zjk5ZWY1NGQgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4MTA4MDlkNGQgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhlNzc4ZGQ1YSAvLyBtZXRob2QgImFkZFBvb2wocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweGJmNTI1OWQwIC8vIG1ldGhvZCAiYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDRkZjhkODZlIC8vIG1ldGhvZCAic2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KSIKCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4YTJkYzUxYjUgLy8gbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJcHVzaGJ5dGVzIDB4Mjg3M2Y1MDQgLy8gbWV0aG9kICJmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKSIKCXB1c2hieXRlcyAweDA1NDdmNGZlIC8vIG1ldGhvZCAibW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGNiNjY4MzU4IC8vIG1ldGhvZCAiZW1wdHlUb2tlblJld2FyZHModWludDY0LGFkZHJlc3MpdWludDY0IgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9pbml0U3Rha2luZ0NvbnRyYWN0ICphYmlfcm91dGVfbG9hZFN0YWtpbmdDb250cmFjdERhdGEgKmFiaV9yb3V0ZV9maW5hbGl6ZVN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2dldE1ickFtb3VudHMgKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzICphYmlfcm91dGVfZ2V0TnVtVmFsaWRhdG9ycyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvckNvbmZpZyAqYWJpX3JvdXRlX2dldFZhbGlkYXRvclN0YXRlICphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyICphYmlfcm91dGVfZ2V0UG9vbHMgKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQgKmFiaV9yb3V0ZV9nZXRQb29sSW5mbyAqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbCAqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlIgKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQgKmFiaV9yb3V0ZV9nZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfZ2V0Tm9kZVBvb2xBc3NpZ25tZW50cyAqYWJpX3JvdXRlX2dldE5GRFJlZ2lzdHJ5SUQgKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3IgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvck5GRCAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyAqYWJpX3JvdXRlX2FkZFBvb2wgKmFiaV9yb3V0ZV9hZGRTdGFrZSAqYWJpX3JvdXRlX3NldFRva2VuUGF5b3V0UmF0aW8gKmFiaV9yb3V0ZV9zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzICphYmlfcm91dGVfc3Rha2VSZW1vdmVkICphYmlfcm91dGVfZmluZFBvb2xGb3JTdGFrZXIgKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZSAqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbjoKCXB1c2hieXRlcyAweDQ2Zjc2NTMzIC8vIG1ldGhvZCAidXBkYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3VwZGF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgVXBkYXRlQXBwbGljYXRpb24KCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "templateVariables": { @@ -28579,9 +28690,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/reti/artifacts/ValidatorRegistry.src_map.json b/examples/reti/artifacts/ValidatorRegistry.src_map.json index 472ec845c..ef96f1453 100644 --- a/examples/reti/artifacts/ValidatorRegistry.src_map.json +++ b/examples/reti/artifacts/ValidatorRegistry.src_map.json @@ -8541,103 +8541,110 @@ "teal": 2074, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1862, - 1863, - 1864 + 1862 ] }, { "teal": 2075, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1865 + 1863 ] }, { "teal": 2076, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1866, - 1867 + 1864, + 1865 ] }, { "teal": 2077, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1868 + 1866 + ] + }, + { + "teal": 2080, + "source": "examples/reti/validatorRegistry.algo.ts:619", + "errorMessage": "this.validatorList(validatorId).value.state.numPools overflowed 16 bits", + "pc": [ + 1867 ] }, { - "teal": 2078, + "teal": 2081, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1869 + 1868, + 1869, + 1870 ] }, { - "teal": 2079, + "teal": 2082, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1870, 1871 ] }, { - "teal": 2080, + "teal": 2083, "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1872 + 1872, + 1873 ] }, { "teal": 2084, - "source": "examples/reti/validatorRegistry.algo.ts:622", + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1873, 1874 ] }, { "teal": 2085, - "source": "examples/reti/validatorRegistry.algo.ts:622", + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1875, - 1876 + 1875 ] }, { - "teal": 2089, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "teal": 2086, + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1877, - 1878 + 1876, + 1877 ] }, { - "teal": 2090, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "teal": 2087, + "source": "examples/reti/validatorRegistry.algo.ts:619", "pc": [ - 1879, - 1880 + 1878 ] }, { "teal": 2091, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "source": "examples/reti/validatorRegistry.algo.ts:622", "pc": [ - 1881 + 1879, + 1880 ] }, { "teal": 2092, - "source": "examples/reti/validatorRegistry.algo.ts:623", + "source": "examples/reti/validatorRegistry.algo.ts:622", "pc": [ + 1881, 1882 ] }, { - "teal": 2093, + "teal": 2096, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1883, @@ -8645,35 +8652,29 @@ ] }, { - "teal": 2094, - "source": "examples/reti/validatorRegistry.algo.ts:623", - "pc": [ - 1885 - ] - }, - { - "teal": 2095, + "teal": 2097, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ + 1885, 1886 ] }, { - "teal": 2096, + "teal": 2098, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1887 ] }, { - "teal": 2097, + "teal": 2099, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1888 ] }, { - "teal": 2098, + "teal": 2100, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1889, @@ -8681,236 +8682,236 @@ ] }, { - "teal": 2099, + "teal": 2101, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1891 ] }, { - "teal": 2100, + "teal": 2102, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ 1892 ] }, { - "teal": 2101, + "teal": 2103, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1893, - 1894 + 1893 ] }, { - "teal": 2102, + "teal": 2104, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1895 + 1894 ] }, { - "teal": 2103, + "teal": 2105, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ + 1895, 1896 ] }, { - "teal": 2104, + "teal": 2106, + "source": "examples/reti/validatorRegistry.algo.ts:623", + "pc": [ + 1897 + ] + }, + { + "teal": 2107, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1897, 1898 ] }, { - "teal": 2105, + "teal": 2108, "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1899 + 1899, + 1900 ] }, { "teal": 2109, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1900, 1901 ] }, { "teal": 2110, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1902, - 1903 + 1902 ] }, { "teal": 2111, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1904, - 1905 + 1903, + 1904 ] }, { "teal": 2112, - "source": "examples/reti/validatorRegistry.algo.ts:624", + "source": "examples/reti/validatorRegistry.algo.ts:623", "pc": [ - 1906, - 1907, - 1908 + 1905 ] }, { "teal": 2116, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1909, - 1910 + 1906, + 1907 ] }, { "teal": 2117, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1911 + 1908, + 1909 ] }, { "teal": 2118, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ - 1912, - 1913 + 1910, + 1911 ] }, { "teal": 2119, - "source": "examples/reti/validatorRegistry.algo.ts:632", + "source": "examples/reti/validatorRegistry.algo.ts:624", "pc": [ + 1912, + 1913, 1914 ] }, { - "teal": 2120, + "teal": 2123, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1915 + 1915, + 1916 ] }, { - "teal": 2121, + "teal": 2124, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1916, 1917 ] }, { - "teal": 2122, + "teal": 2125, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1918 + 1918, + 1919 ] }, { - "teal": 2123, + "teal": 2126, "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1919 + 1920 ] }, { - "teal": 2126, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2127, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ - 1920, 1921 ] }, { - "teal": 2129, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2128, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1922, 1923 ] }, { - "teal": 2130, - "source": "examples/reti/validatorRegistry.algo.ts:579", + "teal": 2129, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1924 ] }, { - "teal": 2135, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2130, + "source": "examples/reti/validatorRegistry.algo.ts:632", "pc": [ 1925 ] }, { - "teal": 2138, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2133, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ 1926, - 1927, - 1928 + 1927 ] }, { - "teal": 2139, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2136, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ + 1928, 1929 ] }, { - "teal": 2142, - "source": "examples/reti/validatorRegistry.algo.ts:644", - "pc": [ - 1930, - 1931, - 1932 - ] - }, - { - "teal": 2143, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2137, + "source": "examples/reti/validatorRegistry.algo.ts:579", "pc": [ - 1933 + 1930 ] }, { - "teal": 2146, + "teal": 2142, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1934, - 1935 + 1931 ] }, { - "teal": 2147, + "teal": 2145, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1936 + 1932, + 1933, + 1934 ] }, { - "teal": 2148, + "teal": 2146, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1937 + 1935 ] }, { "teal": 2149, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1936, + 1937, 1938 ] }, @@ -8918,19 +8919,19 @@ "teal": 2150, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1939, - 1940 + 1939 ] }, { - "teal": 2151, + "teal": 2153, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1940, 1941 ] }, { - "teal": 2152, + "teal": 2154, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1942 @@ -8939,689 +8940,695 @@ { "teal": 2155, "source": "examples/reti/validatorRegistry.algo.ts:644", - "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ 1943 ] }, { - "teal": 2158, + "teal": 2156, + "source": "examples/reti/validatorRegistry.algo.ts:644", + "pc": [ + 1944 + ] + }, + { + "teal": 2157, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1944, 1945, 1946 ] }, { - "teal": 2159, + "teal": 2158, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1947 ] }, { - "teal": 2160, + "teal": 2159, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1948 ] }, { - "teal": 2161, + "teal": 2162, "source": "examples/reti/validatorRegistry.algo.ts:644", + "errorMessage": "argument 2 (stakedAmountPayment) for addStake must be a pay transaction", "pc": [ 1949 ] }, { - "teal": 2162, + "teal": 2165, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1950 + 1950, + 1951, + 1952 ] }, { - "teal": 2174, + "teal": 2166, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1951, - 1952, 1953 ] }, { - "teal": 2177, + "teal": 2167, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1954 ] }, { - "teal": 2178, + "teal": 2168, "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1955, - 1956 + 1955 ] }, { - "teal": 2182, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "teal": 2169, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 1957 + 1956 ] }, { - "teal": 2183, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "teal": 2181, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1957, 1958, 1959 ] }, { "teal": 2184, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 1960 ] }, { "teal": 2185, - "source": "examples/reti/validatorRegistry.algo.ts:645", - "pc": [ - 1961 - ] - }, - { - "teal": 2186, - "source": "examples/reti/validatorRegistry.algo.ts:645", + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 1961, 1962 ] }, { - "teal": 2187, + "teal": 2189, "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1963 ] }, { - "teal": 2188, + "teal": 2190, "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1964 + 1964, + 1965 ] }, { "teal": 2191, "source": "examples/reti/validatorRegistry.algo.ts:645", - "errorMessage": "specified validator id isn't valid", "pc": [ - 1965 + 1966 ] }, { - "teal": 2196, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2192, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1966, 1967 ] }, { - "teal": 2197, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2193, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1968 ] }, { - "teal": 2198, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2194, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ 1969 ] }, { - "teal": 2199, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2195, + "source": "examples/reti/validatorRegistry.algo.ts:645", "pc": [ - 1970, - 1971 + 1970 ] }, { - "teal": 2200, - "source": "examples/reti/validatorRegistry.algo.ts:648", + "teal": 2198, + "source": "examples/reti/validatorRegistry.algo.ts:645", + "errorMessage": "specified validator id isn't valid", "pc": [ - 1972 + 1971 ] }, { - "teal": 2201, + "teal": 2203, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1972, 1973 ] }, { - "teal": 2202, + "teal": 2204, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1974, - 1975 + 1974 ] }, { - "teal": 2203, + "teal": 2205, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1976 + 1975 ] }, { - "teal": 2204, + "teal": 2206, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1976, 1977 ] }, { - "teal": 2205, + "teal": 2207, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1978 ] }, { - "teal": 2206, + "teal": 2208, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1979 ] }, { - "teal": 2207, + "teal": 2209, "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ 1980, - 1981, + 1981 + ] + }, + { + "teal": 2210, + "source": "examples/reti/validatorRegistry.algo.ts:648", + "pc": [ 1982 ] }, { - "teal": 2215, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2211, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1983, - 1984 + 1983 ] }, { - "teal": 2216, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2212, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1985 + 1984 ] }, { - "teal": 2217, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2213, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ - 1986 + 1985 ] }, { - "teal": 2218, - "source": "examples/reti/validatorRegistry.algo.ts:650", + "teal": 2214, + "source": "examples/reti/validatorRegistry.algo.ts:648", "pc": [ + 1986, 1987, 1988 ] }, { - "teal": 2219, + "teal": 2222, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1989 + 1989, + 1990 ] }, { - "teal": 2220, + "teal": 2223, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1990 + 1991 ] }, { - "teal": 2221, + "teal": 2224, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1991, 1992 ] }, { - "teal": 2222, + "teal": 2225, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1993 + 1993, + 1994 ] }, { - "teal": 2223, + "teal": 2226, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1994 + 1995 ] }, { - "teal": 2224, + "teal": 2227, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1995, 1996 ] }, { - "teal": 2225, + "teal": 2228, "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1997 + 1997, + 1998 ] }, { - "teal": 2228, - "source": "examples/reti/validatorRegistry.algo.ts:649", - "errorMessage": "can't stake with a validator that is past its sunsetting time", + "teal": 2229, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1998 + 1999 ] }, { - "teal": 2233, - "source": "examples/reti/validatorRegistry.algo.ts:655", + "teal": 2230, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ - 1999, 2000 ] }, { - "teal": 2234, - "source": "examples/reti/validatorRegistry.algo.ts:655", + "teal": 2231, + "source": "examples/reti/validatorRegistry.algo.ts:650", "pc": [ 2001, 2002 ] }, { - "teal": 2242, - "source": "examples/reti/validatorRegistry.algo.ts:659", + "teal": 2232, + "source": "examples/reti/validatorRegistry.algo.ts:650", + "pc": [ + 2003 + ] + }, + { + "teal": 2235, + "source": "examples/reti/validatorRegistry.algo.ts:649", + "errorMessage": "can't stake with a validator that is past its sunsetting time", "pc": [ - 2003, 2004 ] }, { - "teal": 2243, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2240, + "source": "examples/reti/validatorRegistry.algo.ts:655", "pc": [ 2005, 2006 ] }, { - "teal": 2244, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2241, + "source": "examples/reti/validatorRegistry.algo.ts:655", "pc": [ 2007, 2008 ] }, { - "teal": 2245, - "source": "examples/reti/validatorRegistry.algo.ts:660", + "teal": 2249, + "source": "examples/reti/validatorRegistry.algo.ts:659", "pc": [ - 2009 + 2009, + 2010 ] }, { - "teal": 2248, + "teal": 2250, "source": "examples/reti/validatorRegistry.algo.ts:660", - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", "pc": [ - 2010 + 2011, + 2012 ] }, { "teal": 2251, - "source": "examples/reti/validatorRegistry.algo.ts:659", + "source": "examples/reti/validatorRegistry.algo.ts:660", "pc": [ - 2011, - 2012 + 2013, + 2014 ] }, { "teal": 2252, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "source": "examples/reti/validatorRegistry.algo.ts:660", "pc": [ - 2013, - 2014 + 2015 ] }, { - "teal": 2253, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "teal": 2255, + "source": "examples/reti/validatorRegistry.algo.ts:660", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}", "pc": [ - 2015, 2016 ] }, { - "teal": 2254, - "source": "examples/reti/validatorRegistry.algo.ts:661", + "teal": 2258, + "source": "examples/reti/validatorRegistry.algo.ts:659", "pc": [ - 2017 + 2017, + 2018 ] }, { - "teal": 2257, + "teal": 2259, "source": "examples/reti/validatorRegistry.algo.ts:661", - "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", - "pc": [ - 2018 - ] - }, - { - "teal": 2264, - "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ 2019, 2020 ] }, { - "teal": 2265, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2260, + "source": "examples/reti/validatorRegistry.algo.ts:661", "pc": [ - 2021 + 2021, + 2022 ] }, { - "teal": 2266, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2261, + "source": "examples/reti/validatorRegistry.algo.ts:661", "pc": [ - 2022 + 2023 ] }, { - "teal": 2267, - "source": "examples/reti/validatorRegistry.algo.ts:667", + "teal": 2264, + "source": "examples/reti/validatorRegistry.algo.ts:661", + "errorMessage": "transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}", "pc": [ - 2023, 2024 ] }, { - "teal": 2268, + "teal": 2271, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2025 + 2025, + 2026 ] }, { - "teal": 2269, + "teal": 2272, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2026 + 2027 ] }, { - "teal": 2270, + "teal": 2273, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2027, 2028 ] }, { - "teal": 2271, + "teal": 2274, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2029 + 2029, + 2030 ] }, { - "teal": 2272, + "teal": 2275, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2030 + 2031 ] }, { - "teal": 2273, + "teal": 2276, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2031, - 2032, - 2033 + 2032 ] }, { - "teal": 2274, + "teal": 2277, "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ + 2033, 2034 ] }, { - "teal": 2277, - "source": "examples/reti/validatorRegistry.algo.ts:666", - "errorMessage": "total staked for all of a validators pools may not exceed hard cap", + "teal": 2278, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ 2035 ] }, { - "teal": 2281, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2279, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2036, - 2037 + 2036 ] }, { - "teal": 2282, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2280, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ + 2037, 2038, 2039 ] }, { - "teal": 2283, - "source": "examples/reti/validatorRegistry.algo.ts:673", + "teal": 2281, + "source": "examples/reti/validatorRegistry.algo.ts:667", "pc": [ - 2040, - 2041, - 2042 + 2040 ] }, { - "teal": 2287, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "teal": 2284, + "source": "examples/reti/validatorRegistry.algo.ts:666", + "errorMessage": "total staked for all of a validators pools may not exceed hard cap", "pc": [ - 2043, - 2044 + 2041 ] }, { "teal": 2288, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2045, - 2046 + 2042, + 2043 ] }, { "teal": 2289, - "source": "examples/reti/validatorRegistry.algo.ts:675", + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2047, - 2048 + 2044, + 2045 ] }, { - "teal": 2293, - "source": "examples/reti/validatorRegistry.algo.ts:676", + "teal": 2290, + "source": "examples/reti/validatorRegistry.algo.ts:673", "pc": [ - 2049 + 2046, + 2047, + 2048 ] }, { "teal": 2294, - "source": "examples/reti/validatorRegistry.algo.ts:676", + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ - 2050, - 2051 + 2049, + 2050 ] }, { - "teal": 2299, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2295, + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ + 2051, 2052 ] }, { - "teal": 2300, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2296, + "source": "examples/reti/validatorRegistry.algo.ts:675", "pc": [ 2053, 2054 ] }, { - "teal": 2301, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2300, + "source": "examples/reti/validatorRegistry.algo.ts:676", "pc": [ 2055 ] }, { - "teal": 2302, - "source": "examples/reti/validatorRegistry.algo.ts:678", + "teal": 2301, + "source": "examples/reti/validatorRegistry.algo.ts:676", "pc": [ - 2056 + 2056, + 2057 ] }, { - "teal": 2303, + "teal": 2306, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2057 + 2058 ] }, { - "teal": 2304, + "teal": 2307, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2058 + 2059, + 2060 ] }, { - "teal": 2305, + "teal": 2308, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2059 + 2061 ] }, { - "teal": 2306, + "teal": 2309, "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2060, - 2061, 2062 ] }, + { + "teal": 2310, + "source": "examples/reti/validatorRegistry.algo.ts:678", + "pc": [ + 2063 + ] + }, { "teal": 2311, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2063, - 2064, - 2065 + 2064 ] }, { "teal": 2312, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2066, - 2067, - 2068 + 2065 ] }, { "teal": 2313, - "source": "examples/reti/validatorRegistry.algo.ts:681", + "source": "examples/reti/validatorRegistry.algo.ts:678", "pc": [ - 2069 + 2066, + 2067, + 2068 ] }, { - "teal": 2314, + "teal": 2318, "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ + 2069, 2070, 2071 ] }, - { - "teal": 2318, - "source": "examples/reti/validatorRegistry.algo.ts:682", - "pc": [ - 2072, - 2073 - ] - }, { "teal": 2319, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2074, - 2075 + 2072, + 2073, + 2074 ] }, { "teal": 2320, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2076 + 2075 ] }, { "teal": 2321, - "source": "examples/reti/validatorRegistry.algo.ts:682", + "source": "examples/reti/validatorRegistry.algo.ts:681", "pc": [ - 2077, - 2078 + 2076, + 2077 ] }, { "teal": 2325, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ + 2078, 2079 ] }, { "teal": 2326, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2080, 2081 @@ -9629,101 +9636,107 @@ }, { "teal": 2327, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2082 ] }, { "teal": 2328, - "source": "examples/reti/validatorRegistry.algo.ts:683", + "source": "examples/reti/validatorRegistry.algo.ts:682", "pc": [ 2083, - 2084, - 2085 + 2084 ] }, { - "teal": 2329, + "teal": 2332, "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2086 + 2085 ] }, { - "teal": 2330, + "teal": 2333, "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ + 2086, 2087 ] }, { - "teal": 2335, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "teal": 2334, + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2088, - 2089 + 2088 ] }, { - "teal": 2336, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "teal": 2335, + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ + 2089, 2090, 2091 ] }, + { + "teal": 2336, + "source": "examples/reti/validatorRegistry.algo.ts:683", + "pc": [ + 2092 + ] + }, { "teal": 2337, - "source": "examples/reti/validatorRegistry.algo.ts:687", + "source": "examples/reti/validatorRegistry.algo.ts:683", "pc": [ - 2092, 2093 ] }, { - "teal": 2338, + "teal": 2342, "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ 2094, - 2095, - 2096 + 2095 ] }, { - "teal": 2339, + "teal": 2343, "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ - 2097, - 2098 + 2096, + 2097 ] }, { - "teal": 2345, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2344, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ - 2099, - 2100 + 2098, + 2099 ] }, { - "teal": 2346, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2345, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ + 2100, 2101, 2102 ] }, { - "teal": 2347, - "source": "examples/reti/validatorRegistry.algo.ts:689", + "teal": 2346, + "source": "examples/reti/validatorRegistry.algo.ts:687", "pc": [ 2103, 2104 ] }, { - "teal": 2348, + "teal": 2352, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ 2105, @@ -9731,62 +9744,62 @@ ] }, { - "teal": 2349, + "teal": 2353, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2107 + 2107, + 2108 ] }, { - "teal": 2350, + "teal": 2354, "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2108, - 2109 + 2109, + 2110 ] }, { - "teal": 2354, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2355, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2110, - 2111 + 2111, + 2112 ] }, { - "teal": 2355, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2356, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ - 2112, 2113 ] }, { - "teal": 2356, - "source": "examples/reti/validatorRegistry.algo.ts:690", + "teal": 2357, + "source": "examples/reti/validatorRegistry.algo.ts:689", "pc": [ 2114, 2115 ] }, { - "teal": 2357, + "teal": 2361, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2116, - 2117, - 2118 + 2117 ] }, { - "teal": 2358, + "teal": 2362, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ + 2118, 2119 ] }, { - "teal": 2359, + "teal": 2363, "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2120, @@ -9795,60 +9808,54 @@ }, { "teal": 2364, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2122, - 2123 + 2123, + 2124 ] }, { "teal": 2365, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ - 2124, 2125 ] }, { "teal": 2366, - "source": "examples/reti/validatorRegistry.algo.ts:691", + "source": "examples/reti/validatorRegistry.algo.ts:690", "pc": [ 2126, 2127 ] }, { - "teal": 2367, + "teal": 2371, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2128, - 2129, - 2130 + 2129 ] }, { - "teal": 2368, + "teal": 2372, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ + 2130, 2131 ] }, { - "teal": 2369, - "source": "examples/reti/validatorRegistry.algo.ts:691", - "pc": [ - 2132 - ] - }, - { - "teal": 2370, + "teal": 2373, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ + 2132, 2133 ] }, { - "teal": 2371, + "teal": 2374, "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2134, @@ -9858,353 +9865,353 @@ }, { "teal": 2375, - "source": "examples/reti/validatorRegistry.algo.ts:692", - "errorMessage": "No pool available with free stake. Validator needs to add another pool", + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2137 ] }, { - "teal": 2380, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "teal": 2376, + "source": "examples/reti/validatorRegistry.algo.ts:691", + "pc": [ + 2138 + ] + }, + { + "teal": 2377, + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ - 2138, 2139 ] }, { - "teal": 2381, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "teal": 2378, + "source": "examples/reti/validatorRegistry.algo.ts:691", "pc": [ 2140, - 2141 + 2141, + 2142 ] }, { "teal": 2382, - "source": "examples/reti/validatorRegistry.algo.ts:696", + "source": "examples/reti/validatorRegistry.algo.ts:692", + "errorMessage": "No pool available with free stake. Validator needs to add another pool", "pc": [ - 2142, 2143 ] }, { - "teal": 2383, + "teal": 2387, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ 2144, - 2145, - 2146 + 2145 ] }, { - "teal": 2384, + "teal": 2388, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2147, - 2148 + 2146, + 2147 ] }, { - "teal": 2385, + "teal": 2389, "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2149, - 2150, - 2151 + 2148, + 2149 ] }, { - "teal": 2395, - "source": "examples/reti/validatorRegistry.algo.ts:704", + "teal": 2390, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2152, - 2153 + 2150, + 2151, + 2152 ] }, { - "teal": 2396, - "source": "examples/reti/validatorRegistry.algo.ts:703", + "teal": 2391, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ - 2154, - 2155 + 2153, + 2154 ] }, { - "teal": 2397, - "source": "examples/reti/validatorRegistry.algo.ts:702", + "teal": 2392, + "source": "examples/reti/validatorRegistry.algo.ts:696", "pc": [ + 2155, 2156, 2157 ] }, { - "teal": 2398, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2402, + "source": "examples/reti/validatorRegistry.algo.ts:704", "pc": [ 2158, 2159 ] }, { - "teal": 2399, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2403, + "source": "examples/reti/validatorRegistry.algo.ts:703", "pc": [ 2160, 2161 ] }, { - "teal": 2400, - "source": "examples/reti/validatorRegistry.algo.ts:701", + "teal": 2404, + "source": "examples/reti/validatorRegistry.algo.ts:702", "pc": [ 2162, 2163 ] }, { - "teal": 2401, + "teal": 2405, "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ 2164, - 2165, - 2166 + 2165 ] }, { - "teal": 2402, - "source": "examples/reti/validatorRegistry.algo.ts:700", + "teal": 2406, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2167, - 2168 + 2166, + 2167 ] }, { - "teal": 2403, - "source": "examples/reti/validatorRegistry.algo.ts:699", + "teal": 2407, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2169, - 2170, - 2171 + 2168, + 2169 ] }, { - "teal": 2407, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2408, + "source": "examples/reti/validatorRegistry.algo.ts:701", "pc": [ - 2172, - 2173 + 2170, + 2171, + 2172 ] }, { - "teal": 2408, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2409, + "source": "examples/reti/validatorRegistry.algo.ts:700", "pc": [ - 2174, - 2175 + 2173, + 2174 ] }, { - "teal": 2409, - "source": "examples/reti/validatorRegistry.algo.ts:714", + "teal": 2410, + "source": "examples/reti/validatorRegistry.algo.ts:699", "pc": [ + 2175, 2176, 2177 ] }, { - "teal": 2410, + "teal": 2414, "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ 2178, - 2179, - 2180 + 2179 ] }, { - "teal": 2413, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "teal": 2415, + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ - 2181, - 2182 + 2180, + 2181 ] }, { "teal": 2416, - "source": "examples/reti/validatorRegistry.algo.ts:644", + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ - 2183, - 2184 + 2182, + 2183 ] }, { "teal": 2417, - "source": "examples/reti/validatorRegistry.algo.ts:644", - "pc": [ - 2185 - ] - }, - { - "teal": 2422, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "source": "examples/reti/validatorRegistry.algo.ts:714", "pc": [ + 2184, + 2185, 2186 ] }, { - "teal": 2425, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2420, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ 2187, - 2188, - 2189 + 2188 ] }, { - "teal": 2426, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2423, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ + 2189, 2190 ] }, { - "teal": 2429, - "source": "examples/reti/validatorRegistry.algo.ts:732", + "teal": 2424, + "source": "examples/reti/validatorRegistry.algo.ts:644", "pc": [ - 2191, - 2192, - 2193 + 2191 ] }, { - "teal": 2430, + "teal": 2429, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2194 + 2192 ] }, { - "teal": 2431, + "teal": 2432, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ + 2193, + 2194, 2195 ] }, { - "teal": 2432, + "teal": 2433, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2196 ] }, { - "teal": 2433, + "teal": 2436, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2197 + 2197, + 2198, + 2199 ] }, { - "teal": 2451, + "teal": 2437, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2198, - 2199, 2200 ] }, { - "teal": 2454, + "teal": 2438, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2201 ] }, { - "teal": 2455, + "teal": 2439, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2202, - 2203 + 2202 ] }, { - "teal": 2459, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "teal": 2440, + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2204, - 2205 + 2203 ] }, { - "teal": 2460, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "teal": 2458, + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ + 2204, + 2205, 2206 ] }, { "teal": 2461, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2207 ] }, { "teal": 2462, - "source": "examples/reti/validatorRegistry.algo.ts:734", + "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ 2208, 2209 ] }, { - "teal": 2463, + "teal": 2466, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2210 + 2210, + 2211 ] }, { - "teal": 2464, + "teal": 2467, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2211 + 2212 ] }, { - "teal": 2465, + "teal": 2468, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2212, 2213 ] }, { - "teal": 2466, + "teal": 2469, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2214 + 2214, + 2215 ] }, { - "teal": 2467, + "teal": 2470, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2215 + 2216 ] }, { - "teal": 2468, + "teal": 2471, "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ - 2216, 2217 ] }, { "teal": 2472, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2218, 2219 @@ -10212,144 +10219,150 @@ }, { "teal": 2473, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2220 ] }, { "teal": 2474, - "source": "examples/reti/validatorRegistry.algo.ts:735", + "source": "examples/reti/validatorRegistry.algo.ts:734", "pc": [ 2221 ] }, { "teal": 2475, + "source": "examples/reti/validatorRegistry.algo.ts:734", + "pc": [ + 2222, + 2223 + ] + }, + { + "teal": 2479, "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2222 + 2224, + 2225 ] }, { "teal": 2480, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2223, - 2224 + 2226 ] }, { "teal": 2481, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2225, - 2226 + 2227 ] }, { "teal": 2482, - "source": "examples/reti/validatorRegistry.algo.ts:737", + "source": "examples/reti/validatorRegistry.algo.ts:735", "pc": [ - 2227, 2228 ] }, { - "teal": 2483, + "teal": 2487, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2229 + 2229, + 2230 ] }, { - "teal": 2484, + "teal": 2488, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2230 + 2231, + 2232 ] }, { - "teal": 2485, + "teal": 2489, "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2231, - 2232, - 2233 + 2233, + 2234 ] }, { "teal": 2490, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2234, 2235 ] }, { "teal": 2491, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2236, - 2237 + 2236 ] }, { "teal": 2492, - "source": "examples/reti/validatorRegistry.algo.ts:738", + "source": "examples/reti/validatorRegistry.algo.ts:737", "pc": [ - 2238 + 2237, + 2238, + 2239 ] }, { - "teal": 2493, + "teal": 2497, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2239, - 2240 + 2240, + 2241 ] }, { - "teal": 2494, + "teal": 2498, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2241 + 2242, + 2243 ] }, { - "teal": 2495, + "teal": 2499, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2242 + 2244 ] }, { - "teal": 2496, + "teal": 2500, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2243, - 2244 + 2245, + 2246 ] }, { - "teal": 2497, + "teal": 2501, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2245 + 2247 ] }, { - "teal": 2498, + "teal": 2502, "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2246, - 2247, 2248 ] }, { "teal": 2503, - "source": "examples/reti/validatorRegistry.algo.ts:744", + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ 2249, 2250 @@ -10357,185 +10370,185 @@ }, { "teal": 2504, - "source": "examples/reti/validatorRegistry.algo.ts:744", + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ - 2251, - 2252 + 2251 ] }, { - "teal": 2508, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "teal": 2505, + "source": "examples/reti/validatorRegistry.algo.ts:738", "pc": [ + 2252, 2253, 2254 ] }, - { - "teal": 2509, - "source": "examples/reti/validatorRegistry.algo.ts:745", - "pc": [ - 2255 - ] - }, { "teal": 2510, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "source": "examples/reti/validatorRegistry.algo.ts:744", "pc": [ + 2255, 2256 ] }, { "teal": 2511, - "source": "examples/reti/validatorRegistry.algo.ts:745", + "source": "examples/reti/validatorRegistry.algo.ts:744", "pc": [ 2257, 2258 ] }, { - "teal": 2512, + "teal": 2515, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2259 + 2259, + 2260 ] }, { - "teal": 2513, + "teal": 2516, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2260 + 2261 ] }, { - "teal": 2514, + "teal": 2517, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2261, 2262 ] }, { - "teal": 2515, + "teal": 2518, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2263 + 2263, + 2264 ] }, { - "teal": 2516, + "teal": 2519, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2264 + 2265 ] }, { - "teal": 2517, + "teal": 2520, "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ - 2265, 2266 ] }, { - "teal": 2522, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2521, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2267, 2268 ] }, { - "teal": 2523, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2522, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2269 ] }, { - "teal": 2524, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2523, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2270 ] }, { - "teal": 2525, - "source": "examples/reti/validatorRegistry.algo.ts:746", + "teal": 2524, + "source": "examples/reti/validatorRegistry.algo.ts:745", "pc": [ 2271, - 2272, - 2273 + 2272 ] }, { - "teal": 2531, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2529, + "source": "examples/reti/validatorRegistry.algo.ts:746", + "pc": [ + 2273, + 2274 + ] + }, + { + "teal": 2530, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2274, 2275 ] }, { - "teal": 2532, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2531, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2285, - 2286, - 2287 + 2276 ] }, { - "teal": 2533, - "source": "examples/reti/validatorRegistry.algo.ts:748", + "teal": 2532, + "source": "examples/reti/validatorRegistry.algo.ts:746", "pc": [ - 2288 + 2277, + 2278, + 2279 ] }, { - "teal": 2536, + "teal": 2538, "source": "examples/reti/validatorRegistry.algo.ts:748", - "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", "pc": [ - 2289 + 2280, + 2281 ] }, { - "teal": 2537, + "teal": 2539, "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ + 2282, + 2283, + 2284, + 2285, + 2286, + 2287, + 2288, + 2289, 2290, - 2291 + 2291, + 2292, + 2293 ] }, { - "teal": 2538, + "teal": 2540, "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2292 + 2294 ] }, { - "teal": 2539, + "teal": 2543, "source": "examples/reti/validatorRegistry.algo.ts:748", + "errorMessage": "global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')", "pc": [ - 2293, - 2294, 2295 ] }, { "teal": 2544, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ 2296, 2297 @@ -10543,144 +10556,138 @@ }, { "teal": 2545, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2298, - 2299 + 2298 ] }, { "teal": 2546, - "source": "examples/reti/validatorRegistry.algo.ts:749", + "source": "examples/reti/validatorRegistry.algo.ts:748", "pc": [ - 2300 + 2299, + 2300, + 2301 ] }, { - "teal": 2547, + "teal": 2551, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2301, - 2302 + 2302, + 2303 ] }, { - "teal": 2548, + "teal": 2552, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2303 + 2304, + 2305 ] }, { - "teal": 2549, + "teal": 2553, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2304 + 2306 ] }, { - "teal": 2550, + "teal": 2554, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2305, - 2306 + 2307, + 2308 ] }, { - "teal": 2551, + "teal": 2555, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2307 + 2309 ] }, { - "teal": 2552, + "teal": 2556, "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2308, - 2309, 2310 ] }, { "teal": 2557, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ 2311, - 2312, - 2313 + 2312 ] }, { "teal": 2558, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ - 2314, - 2315 + 2313 ] }, { "teal": 2559, - "source": "examples/reti/validatorRegistry.algo.ts:751", + "source": "examples/reti/validatorRegistry.algo.ts:749", "pc": [ + 2314, + 2315, 2316 ] }, { - "teal": 2560, + "teal": 2564, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ 2317, - 2318 - ] - }, - { - "teal": 2561, - "source": "examples/reti/validatorRegistry.algo.ts:751", - "pc": [ + 2318, 2319 ] }, { - "teal": 2562, + "teal": 2565, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2320 + 2320, + 2321 ] }, { - "teal": 2563, + "teal": 2566, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2321, 2322 ] }, { - "teal": 2564, + "teal": 2567, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2323 + 2323, + 2324 ] }, { - "teal": 2565, + "teal": 2568, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2324 + 2325 ] }, { - "teal": 2566, + "teal": 2569, "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2325, 2326 ] }, { "teal": 2570, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ 2327, 2328 @@ -10688,36 +10695,36 @@ }, { "teal": 2571, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2329, - 2330 + 2329 ] }, { "teal": 2572, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2331, - 2332 + 2330 ] }, { "teal": 2573, - "source": "examples/reti/validatorRegistry.algo.ts:752", + "source": "examples/reti/validatorRegistry.algo.ts:751", "pc": [ - 2333 + 2331, + 2332 ] }, { - "teal": 2574, + "teal": 2577, "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ + 2333, 2334 ] }, { - "teal": 2575, + "teal": 2578, "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2335, @@ -10725,70 +10732,76 @@ ] }, { - "teal": 2580, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "teal": 2579, + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2337, 2338 ] }, + { + "teal": 2580, + "source": "examples/reti/validatorRegistry.algo.ts:752", + "pc": [ + 2339 + ] + }, { "teal": 2581, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ - 2339, 2340 ] }, { "teal": 2582, - "source": "examples/reti/validatorRegistry.algo.ts:754", + "source": "examples/reti/validatorRegistry.algo.ts:752", "pc": [ 2341, 2342 ] }, { - "teal": 2583, + "teal": 2587, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2343 + 2343, + 2344 ] }, { - "teal": 2584, + "teal": 2588, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2344 + 2345, + 2346 ] }, { - "teal": 2585, + "teal": 2589, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2345, - 2346 + 2347, + 2348 ] }, { - "teal": 2586, + "teal": 2590, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2347 + 2349 ] }, { - "teal": 2587, + "teal": 2591, "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2348, - 2349, 2350 ] }, { "teal": 2592, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ 2351, 2352 @@ -10796,97 +10809,91 @@ }, { "teal": 2593, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2353, - 2354 + 2353 ] }, { "teal": 2594, - "source": "examples/reti/validatorRegistry.algo.ts:755", + "source": "examples/reti/validatorRegistry.algo.ts:754", "pc": [ - 2355 + 2354, + 2355, + 2356 ] }, { - "teal": 2595, + "teal": 2599, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2356, - 2357 + 2357, + 2358 ] }, { - "teal": 2596, + "teal": 2600, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2358 + 2359, + 2360 ] }, { - "teal": 2597, + "teal": 2601, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2359 + 2361 ] }, { - "teal": 2598, + "teal": 2602, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2360, - 2361 + 2362, + 2363 ] }, { - "teal": 2599, + "teal": 2603, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2362 + 2364 ] }, { - "teal": 2600, + "teal": 2604, "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2363, - 2364, 2365 ] }, { - "teal": 2607, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2605, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ 2366, 2367 ] }, { - "teal": 2608, - "source": "examples/reti/validatorRegistry.algo.ts:758", - "pc": [ - 2368, - 2369 - ] - }, - { - "teal": 2609, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2606, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ - 2370 + 2368 ] }, { - "teal": 2610, - "source": "examples/reti/validatorRegistry.algo.ts:758", + "teal": 2607, + "source": "examples/reti/validatorRegistry.algo.ts:755", "pc": [ + 2369, + 2370, 2371 ] }, { - "teal": 2611, + "teal": 2614, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ 2372, @@ -10894,112 +10901,112 @@ ] }, { - "teal": 2612, + "teal": 2615, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2374 + 2374, + 2375 ] }, { - "teal": 2613, + "teal": 2616, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2375 + 2376 ] }, { - "teal": 2614, + "teal": 2617, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2376, 2377 ] }, { - "teal": 2615, + "teal": 2618, "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2378 + 2378, + 2379 ] }, { "teal": 2619, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2379, 2380 ] }, { "teal": 2620, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2381, - 2382 + 2381 ] }, { "teal": 2621, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ + 2382, 2383 ] }, { "teal": 2622, - "source": "examples/reti/validatorRegistry.algo.ts:760", + "source": "examples/reti/validatorRegistry.algo.ts:758", "pc": [ - 2384, - 2385 + 2384 ] }, { - "teal": 2623, + "teal": 2626, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ + 2385, 2386 ] }, { - "teal": 2624, + "teal": 2627, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2387 + 2387, + 2388 ] }, { - "teal": 2625, + "teal": 2628, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2388, 2389 ] }, { - "teal": 2626, + "teal": 2629, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2390 + 2390, + 2391 ] }, { - "teal": 2627, + "teal": 2630, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2391 + 2392 ] }, { - "teal": 2628, + "teal": 2631, "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ - 2392, 2393 ] }, { "teal": 2632, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2394, 2395 @@ -11007,98 +11014,104 @@ }, { "teal": 2633, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2396 ] }, { "teal": 2634, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2397 ] }, { "teal": 2635, - "source": "examples/reti/validatorRegistry.algo.ts:761", + "source": "examples/reti/validatorRegistry.algo.ts:760", "pc": [ 2398, 2399 ] }, { - "teal": 2636, + "teal": 2639, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2400 + 2400, + 2401 ] }, { - "teal": 2637, + "teal": 2640, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2401 + 2402 ] }, { - "teal": 2638, + "teal": 2641, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2402, 2403 ] }, { - "teal": 2639, + "teal": 2642, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2404 + 2404, + 2405 ] }, { - "teal": 2640, + "teal": 2643, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2405 + 2406 ] }, { - "teal": 2641, + "teal": 2644, "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2406, 2407 ] }, { "teal": 2645, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2408 + 2408, + 2409 ] }, { "teal": 2646, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2409, 2410 ] }, { - "teal": 2651, - "source": "examples/reti/validatorRegistry.algo.ts:762", + "teal": 2647, + "source": "examples/reti/validatorRegistry.algo.ts:761", + "pc": [ + 2411 + ] + }, + { + "teal": 2648, + "source": "examples/reti/validatorRegistry.algo.ts:761", "pc": [ - 2411, - 2412 + 2412, + 2413 ] }, { "teal": 2652, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2413, 2414 ] }, @@ -11106,1270 +11119,1264 @@ "teal": 2653, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2415 + 2415, + 2416 ] }, { - "teal": 2654, + "teal": 2658, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2416, 2417, 2418 ] }, { - "teal": 2661, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2659, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ 2419, 2420 ] }, { - "teal": 2662, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2660, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2421, - 2422 + 2421 ] }, { - "teal": 2663, - "source": "examples/reti/validatorRegistry.algo.ts:768", + "teal": 2661, + "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ + 2422, 2423, 2424 ] }, { - "teal": 2664, + "teal": 2668, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2425 + 2425, + 2426 ] }, { - "teal": 2665, + "teal": 2669, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2426 + 2427, + 2428 ] }, { - "teal": 2666, + "teal": 2670, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2427, - 2428 + 2429, + 2430 ] }, { - "teal": 2667, + "teal": 2671, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2429 + 2431 ] }, { - "teal": 2668, + "teal": 2672, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2430 + 2432 ] }, { - "teal": 2669, + "teal": 2673, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2431 + 2433, + 2434 ] }, { - "teal": 2670, + "teal": 2674, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2432, - 2433 + 2435 ] }, { - "teal": 2671, + "teal": 2675, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2434 + 2436 ] }, { - "teal": 2672, + "teal": 2676, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2435 + 2437 ] }, { - "teal": 2673, + "teal": 2677, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2436, - 2437 + 2438, + 2439 ] }, { - "teal": 2674, + "teal": 2678, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2438 + 2440 ] }, { - "teal": 2675, + "teal": 2679, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2439 + 2441 ] }, { - "teal": 2676, + "teal": 2680, "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ - 2440, - 2441, 2442, 2443 ] }, { - "teal": 2677, - "source": "examples/reti/validatorRegistry.algo.ts:767", + "teal": 2681, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2444 ] }, { - "teal": 2678, - "source": "examples/reti/validatorRegistry.algo.ts:767", + "teal": 2682, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2445 ] }, { - "teal": 2679, - "source": "examples/reti/validatorRegistry.algo.ts:769", + "teal": 2683, + "source": "examples/reti/validatorRegistry.algo.ts:768", "pc": [ 2446, - 2447 + 2447, + 2448, + 2449 ] }, { - "teal": 2680, + "teal": 2684, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2448 + 2450 ] }, { - "teal": 2681, + "teal": 2685, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2449 + 2451 ] }, { - "teal": 2682, + "teal": 2686, + "source": "examples/reti/validatorRegistry.algo.ts:769", + "pc": [ + 2452, + 2453 + ] + }, + { + "teal": 2687, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2450 + 2454 ] }, { - "teal": 2683, + "teal": 2688, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2451 + 2455 ] }, { - "teal": 2684, + "teal": 2689, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2452 + 2456 ] }, { - "teal": 2687, + "teal": 2690, + "source": "examples/reti/validatorRegistry.algo.ts:767", + "pc": [ + 2457 + ] + }, + { + "teal": 2691, + "source": "examples/reti/validatorRegistry.algo.ts:767", + "pc": [ + 2458 + ] + }, + { + "teal": 2694, "source": "examples/reti/validatorRegistry.algo.ts:767", "errorMessage": "wideRatio failed", "pc": [ - 2453 + 2459 ] }, { - "teal": 2688, + "teal": 2695, "source": "examples/reti/validatorRegistry.algo.ts:767", "pc": [ - 2454, - 2455 + 2460, + 2461 ] }, { - "teal": 2692, + "teal": 2699, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2456, - 2457 + 2462, + 2463 ] }, { - "teal": 2693, + "teal": 2700, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2458, - 2459 + 2464, + 2465 ] }, { - "teal": 2694, + "teal": 2701, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2460 + 2466 ] }, { - "teal": 2695, + "teal": 2702, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2461 + 2467 ] }, { - "teal": 2696, + "teal": 2703, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2462 + 2468 ] }, { - "teal": 2697, + "teal": 2704, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2463, - 2464 + 2469, + 2470 ] }, { - "teal": 2698, + "teal": 2705, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2465 + 2471 ] }, { - "teal": 2699, + "teal": 2706, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2466 + 2472 ] }, { - "teal": 2700, + "teal": 2707, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2467, - 2468 + 2473, + 2474 ] }, { - "teal": 2701, + "teal": 2708, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2469 + 2475 ] }, { - "teal": 2702, + "teal": 2709, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2470 + 2476 ] }, { - "teal": 2703, + "teal": 2710, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2471, - 2472 + 2477, + 2478 ] }, { - "teal": 2704, + "teal": 2711, "source": "examples/reti/validatorRegistry.algo.ts:771", "pc": [ - 2473 + 2479 ] }, { - "teal": 2709, + "teal": 2716, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2474, - 2475 + 2480, + 2481 ] }, { - "teal": 2710, + "teal": 2717, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2476 + 2482 ] }, { - "teal": 2711, + "teal": 2718, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2477 + 2483 ] }, { - "teal": 2712, + "teal": 2719, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2478, - 2479 + 2484, + 2485 ] }, { - "teal": 2713, + "teal": 2720, "source": "examples/reti/validatorRegistry.algo.ts:762", "pc": [ - 2480, - 2481, - 2482 + 2486, + 2487, + 2488 ] }, { - "teal": 2718, + "teal": 2725, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2483, - 2484 + 2489, + 2490 ] }, { - "teal": 2719, + "teal": 2726, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2485, - 2486 + 2491, + 2492 ] }, { - "teal": 2720, + "teal": 2727, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2487 + 2493 ] }, { - "teal": 2721, + "teal": 2728, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2488, - 2489 + 2494, + 2495 ] }, { - "teal": 2722, + "teal": 2729, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2490 + 2496 ] }, { - "teal": 2723, + "teal": 2730, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2491 + 2497 ] }, { - "teal": 2724, + "teal": 2731, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2492, - 2493 + 2498, + 2499 ] }, { - "teal": 2725, + "teal": 2732, "source": "examples/reti/validatorRegistry.algo.ts:773", "pc": [ - 2494 + 2500 ] }, { - "teal": 2729, + "teal": 2736, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2495, - 2496 + 2501, + 2502 ] }, { - "teal": 2732, + "teal": 2739, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2497, - 2498 + 2503, + 2504 ] }, { - "teal": 2733, + "teal": 2740, "source": "examples/reti/validatorRegistry.algo.ts:732", "pc": [ - 2499 + 2505 ] }, { - "teal": 2738, + "teal": 2745, "source": "examples/reti/validatorRegistry.algo.ts:792", "pc": [ - 2500, - 2501, - 2502 + 2506, + 2507, + 2508 ] }, { - "teal": 2739, + "teal": 2746, "source": "examples/reti/validatorRegistry.algo.ts:792", "pc": [ - 2503 + 2509 ] }, { - "teal": 2742, + "teal": 2749, "source": "examples/reti/validatorRegistry.algo.ts:791", "pc": [ - 2504, - 2505, - 2506 + 2510, + 2511, + 2512 ] }, { - "teal": 2743, + "teal": 2750, "source": "examples/reti/validatorRegistry.algo.ts:791", "pc": [ - 2507 + 2513 ] }, { - "teal": 2746, + "teal": 2753, "source": "examples/reti/validatorRegistry.algo.ts:790", "pc": [ - 2508, - 2509, - 2510 + 2514, + 2515, + 2516 ] }, { - "teal": 2747, + "teal": 2754, "source": "examples/reti/validatorRegistry.algo.ts:790", "pc": [ - 2511 + 2517 ] }, { - "teal": 2750, + "teal": 2757, "source": "examples/reti/validatorRegistry.algo.ts:789", "pc": [ - 2512, - 2513, - 2514 + 2518, + 2519, + 2520 ] }, { - "teal": 2751, + "teal": 2758, "source": "examples/reti/validatorRegistry.algo.ts:789", "pc": [ - 2515 + 2521 ] }, { - "teal": 2754, + "teal": 2761, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2516, - 2517, - 2518 + 2522, + 2523, + 2524 ] }, { - "teal": 2755, + "teal": 2762, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2519 + 2525 ] }, { - "teal": 2756, + "teal": 2763, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2520 + 2526 ] }, { - "teal": 2757, + "teal": 2764, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2521 + 2527 ] }, { - "teal": 2758, + "teal": 2765, "source": "examples/reti/validatorRegistry.algo.ts:788", "pc": [ - 2522 + 2528 ] }, { - "teal": 2761, + "teal": 2768, "source": "examples/reti/validatorRegistry.algo.ts:788", "errorMessage": "argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)", "pc": [ - 2523 + 2529 ] }, { - "teal": 2764, + "teal": 2771, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2524, - 2525, - 2526 + 2530, + 2531, + 2532 ] }, { - "teal": 2765, + "teal": 2772, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2527 + 2533 ] }, { - "teal": 2766, + "teal": 2773, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2528 + 2534 ] }, { - "teal": 2780, + "teal": 2787, "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2529, - 2530, - 2531 + 2535, + 2536, + 2537 ] }, { - "teal": 2784, + "teal": 2791, "source": "examples/reti/validatorRegistry.algo.ts:794", "pc": [ - 2532, - 2533 + 2538, + 2539 ] }, { - "teal": 2785, + "teal": 2792, "source": "examples/reti/validatorRegistry.algo.ts:794", "pc": [ - 2534, - 2535, - 2536 + 2540, + 2541, + 2542 ] }, { - "teal": 2789, + "teal": 2796, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2537, - 2538 + 2543, + 2544 ] }, { - "teal": 2790, + "teal": 2797, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2539, - 2540 + 2545, + 2546 ] }, { - "teal": 2791, + "teal": 2798, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2541, - 2542, - 2543 + 2547, + 2548, + 2549 ] }, { - "teal": 2792, + "teal": 2799, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2544 + 2550 ] }, { - "teal": 2793, + "teal": 2800, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2545 + 2551 ] }, { - "teal": 2794, + "teal": 2801, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2546 + 2552 ] }, { - "teal": 2795, + "teal": 2802, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2547, - 2548 + 2553, + 2554 ] }, { - "teal": 2796, + "teal": 2803, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2549 + 2555 ] }, { - "teal": 2797, + "teal": 2804, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2550 + 2556 ] }, { - "teal": 2798, + "teal": 2805, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2551, - 2552 - ] - }, - { - "teal": 2799, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2553 - ] - }, - { - "teal": 2800, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2554, - 2555 - ] - }, - { - "teal": 2801, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2556, - 2557 - ] - }, - { - "teal": 2802, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2558, - 2559, - 2560 - ] - }, - { - "teal": 2803, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2561 - ] - }, - { - "teal": 2804, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2562 - ] - }, - { - "teal": 2805, - "source": "examples/reti/validatorRegistry.algo.ts:797", - "pc": [ - 2563 + 2557, + 2558 ] }, { "teal": 2806, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2564, - 2565 + 2559 ] }, { "teal": 2807, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2566 + 2560, + 2561 ] }, { "teal": 2808, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2567 + 2562, + 2563 ] }, { "teal": 2809, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2568, - 2569 + 2564, + 2565, + 2566 ] }, { "teal": 2810, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2570 + 2567 ] }, { "teal": 2811, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2571 + 2568 ] }, { "teal": 2812, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2572 + 2569 ] }, { "teal": 2813, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2573, - 2574 + 2570, + 2571 ] }, { "teal": 2814, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2575, - 2576, - 2577 + 2572 ] }, { "teal": 2815, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2578 + 2573 ] }, { "teal": 2816, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2579 + 2574, + 2575 ] }, { "teal": 2817, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2580 + 2576 ] }, { "teal": 2818, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2581, - 2582 + 2577 ] }, { "teal": 2819, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2583 + 2578 ] }, { "teal": 2820, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2584 + 2579, + 2580 ] }, { "teal": 2821, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2585, - 2586 + 2581, + 2582, + 2583 ] }, { "teal": 2822, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2587 + 2584 ] }, { "teal": 2823, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2588 + 2585 ] }, { "teal": 2824, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2589 + 2586 ] }, { "teal": 2825, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2590, - 2591 + 2587, + 2588 ] }, { "teal": 2826, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2592, - 2593, - 2594 + 2589 ] }, { "teal": 2827, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2595 + 2590 ] }, { "teal": 2828, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2596 + 2591, + 2592 ] }, { "teal": 2829, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2597 + 2593 ] }, { "teal": 2830, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2598, - 2599 + 2594 ] }, { "teal": 2831, "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2600 + 2595 ] }, { - "teal": 2835, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2832, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2601, - 2602 + 2596, + 2597 ] }, { - "teal": 2836, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2833, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2603 + 2598, + 2599, + 2600 ] }, { - "teal": 2837, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2834, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2604 + 2601 ] }, { - "teal": 2838, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2835, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2605 + 2602 ] }, { - "teal": 2839, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2836, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2606, - 2607 + 2603 ] }, { - "teal": 2840, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2837, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2608, - 2609, - 2610 + 2604, + 2605 ] }, { - "teal": 2841, - "source": "examples/reti/validatorRegistry.algo.ts:798", + "teal": 2838, + "source": "examples/reti/validatorRegistry.algo.ts:797", "pc": [ - 2611 + 2606 ] }, { "teal": 2842, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2612 + 2607, + 2608 ] }, { "teal": 2843, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2613 + 2609 ] }, { "teal": 2844, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2614, - 2615 + 2610 ] }, { "teal": 2845, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2616 + 2611 ] }, { "teal": 2846, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2617 + 2612, + 2613 ] }, { "teal": 2847, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2618, - 2619 + 2614, + 2615, + 2616 ] }, { "teal": 2848, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2620 + 2617 ] }, { "teal": 2849, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2621 + 2618 ] }, { "teal": 2850, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2622 + 2619 ] }, { "teal": 2851, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2623, - 2624 + 2620, + 2621 ] }, { "teal": 2852, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2625, - 2626, - 2627 + 2622 ] }, { "teal": 2853, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2628 + 2623 ] }, { "teal": 2854, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2629 + 2624, + 2625 ] }, { "teal": 2855, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2630 + 2626 ] }, { "teal": 2856, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2631, - 2632 + 2627 ] }, { "teal": 2857, "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2633 + 2628 ] }, { - "teal": 2861, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2858, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2634, - 2635 + 2629, + 2630 ] }, { - "teal": 2862, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2859, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2636 + 2631, + 2632, + 2633 ] }, { - "teal": 2863, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2860, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2637 + 2634 ] }, { - "teal": 2864, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2861, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2638 + 2635 ] }, { - "teal": 2865, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2862, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2639, - 2640 + 2636 ] }, { - "teal": 2866, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2863, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2641, - 2642, - 2643 + 2637, + 2638 ] }, { - "teal": 2867, - "source": "examples/reti/validatorRegistry.algo.ts:799", + "teal": 2864, + "source": "examples/reti/validatorRegistry.algo.ts:798", "pc": [ - 2644 + 2639 ] }, { "teal": 2868, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2645 + 2640, + 2641 ] }, { "teal": 2869, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2646 + 2642 ] }, { "teal": 2870, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2647, - 2648 + 2643 ] }, { "teal": 2871, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2649 + 2644 ] }, { "teal": 2872, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2650 + 2645, + 2646 ] }, { "teal": 2873, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2651, - 2652 + 2647, + 2648, + 2649 ] }, { "teal": 2874, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2653 + 2650 ] }, { "teal": 2875, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2654 + 2651 ] }, { "teal": 2876, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2655 + 2652 ] }, { "teal": 2877, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2656, - 2657 + 2653, + 2654 ] }, { "teal": 2878, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2658, - 2659, - 2660 + 2655 ] }, { "teal": 2879, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2661 + 2656 ] }, { "teal": 2880, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2662 + 2657, + 2658 ] }, { "teal": 2881, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2663 + 2659 ] }, { "teal": 2882, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2664, - 2665 + 2660 ] }, { "teal": 2883, "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ + 2661 + ] + }, + { + "teal": 2884, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2662, + 2663 + ] + }, + { + "teal": 2885, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2664, + 2665, 2666 ] }, + { + "teal": 2886, + "source": "examples/reti/validatorRegistry.algo.ts:799", + "pc": [ + 2667 + ] + }, { "teal": 2887, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ - 2667, 2668 ] }, { "teal": 2888, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2669 ] }, { "teal": 2889, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2670, 2671 @@ -12377,13 +12384,13 @@ }, { "teal": 2890, - "source": "examples/reti/validatorRegistry.algo.ts:801", + "source": "examples/reti/validatorRegistry.algo.ts:799", "pc": [ 2672 ] }, { - "teal": 2891, + "teal": 2894, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2673, @@ -12391,399 +12398,405 @@ ] }, { - "teal": 2892, + "teal": 2895, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2675 ] }, { - "teal": 2893, + "teal": 2896, "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2676 + 2676, + 2677 ] }, { "teal": 2897, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2677, 2678 ] }, { "teal": 2898, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ 2679, - 2680, - 2681 + 2680 ] }, { "teal": 2899, - "source": "examples/reti/validatorRegistry.algo.ts:804", + "source": "examples/reti/validatorRegistry.algo.ts:801", "pc": [ - 2682 + 2681 ] }, { "teal": 2900, + "source": "examples/reti/validatorRegistry.algo.ts:801", + "pc": [ + 2682 + ] + }, + { + "teal": 2904, "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ 2683, - 2684, - 2685 + 2684 ] }, { - "teal": 2901, - "source": "examples/reti/validatorRegistry.algo.ts:787", + "teal": 2905, + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2686 + 2685, + 2686, + 2687 ] }, { "teal": 2906, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2687, - 2688, - 2689 + 2688 ] }, { "teal": 2907, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:804", "pc": [ - 2690 + 2689, + 2690, + 2691 ] }, { "teal": 2908, - "source": "examples/reti/validatorRegistry.algo.ts:834", + "source": "examples/reti/validatorRegistry.algo.ts:787", "pc": [ - 2691 + 2692 ] }, { - "teal": 2909, + "teal": 2913, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2692 + 2693, + 2694, + 2695 ] }, { - "teal": 2910, + "teal": 2914, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2693 + 2696 ] }, { - "teal": 2913, + "teal": 2915, "source": "examples/reti/validatorRegistry.algo.ts:834", - "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", "pc": [ - 2694 + 2697 ] }, { - "teal": 2914, + "teal": 2916, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2695 + 2698 ] }, { - "teal": 2915, + "teal": 2917, "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2696 + 2699 ] }, { - "teal": 2918, - "source": "examples/reti/validatorRegistry.algo.ts:833", + "teal": 2920, + "source": "examples/reti/validatorRegistry.algo.ts:834", + "errorMessage": "argument 0 (stakerRemoved) for stakeRemoved must be a bool", "pc": [ - 2697, - 2698, - 2699 + 2700 ] }, { - "teal": 2919, - "source": "examples/reti/validatorRegistry.algo.ts:833", + "teal": 2921, + "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2700 + 2701 ] }, { "teal": 2922, - "source": "examples/reti/validatorRegistry.algo.ts:832", + "source": "examples/reti/validatorRegistry.algo.ts:834", "pc": [ - 2701, - 2702, - 2703 + 2702 ] }, { - "teal": 2923, - "source": "examples/reti/validatorRegistry.algo.ts:832", + "teal": 2925, + "source": "examples/reti/validatorRegistry.algo.ts:833", "pc": [ - 2704 + 2703, + 2704, + 2705 ] }, { "teal": 2926, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "source": "examples/reti/validatorRegistry.algo.ts:833", "pc": [ - 2705, - 2706, - 2707 + 2706 ] }, { - "teal": 2927, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "teal": 2929, + "source": "examples/reti/validatorRegistry.algo.ts:832", "pc": [ - 2708 + 2707, + 2708, + 2709 ] }, { - "teal": 2928, - "source": "examples/reti/validatorRegistry.algo.ts:831", + "teal": 2930, + "source": "examples/reti/validatorRegistry.algo.ts:832", "pc": [ - 2709 + 2710 ] }, { - "teal": 2929, + "teal": 2933, "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2710, - 2711 + 2711, + 2712, + 2713 ] }, { - "teal": 2930, + "teal": 2934, "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2712 + 2714 ] }, { - "teal": 2933, + "teal": 2935, "source": "examples/reti/validatorRegistry.algo.ts:831", - "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", "pc": [ - 2713 + 2715 ] }, { "teal": 2936, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2714, - 2715, - 2716 + 2716, + 2717 ] }, { "teal": 2937, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "source": "examples/reti/validatorRegistry.algo.ts:831", "pc": [ - 2717 + 2718 ] }, { - "teal": 2938, - "source": "examples/reti/validatorRegistry.algo.ts:830", + "teal": 2940, + "source": "examples/reti/validatorRegistry.algo.ts:831", + "errorMessage": "argument 3 (staker) for stakeRemoved must be a address", "pc": [ - 2718 + 2719 ] }, { - "teal": 2939, + "teal": 2943, "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2719 + 2720, + 2721, + 2722 ] }, { - "teal": 2940, + "teal": 2944, "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2720 + 2723 ] }, { - "teal": 2943, + "teal": 2945, "source": "examples/reti/validatorRegistry.algo.ts:830", - "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", "pc": [ - 2721 + 2724 ] }, { "teal": 2946, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2722, - 2723, - 2724 + 2725 ] }, { "teal": 2947, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "source": "examples/reti/validatorRegistry.algo.ts:830", "pc": [ - 2725 + 2726 ] }, { - "teal": 2948, - "source": "examples/reti/validatorRegistry.algo.ts:829", + "teal": 2950, + "source": "examples/reti/validatorRegistry.algo.ts:830", + "errorMessage": "argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)", "pc": [ - 2726 + 2727 ] }, { - "teal": 2963, + "teal": 2953, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2727, 2728, - 2729 + 2729, + 2730 ] }, { - "teal": 2966, + "teal": 2954, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2730 + 2731 ] }, { - "teal": 2967, + "teal": 2955, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2731, 2732 ] }, { - "teal": 2972, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "teal": 2970, + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ 2733, - 2734 + 2734, + 2735 ] }, { "teal": 2973, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2735, 2736 ] }, { "teal": 2974, - "source": "examples/reti/validatorRegistry.algo.ts:836", + "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 2737 + 2737, + 2738 ] }, { - "teal": 2975, + "teal": 2979, "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2738, 2739, 2740 ] }, { "teal": 2980, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2741 + 2741, + 2742 ] }, { "teal": 2981, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ - 2742, 2743 ] }, { "teal": 2982, - "source": "examples/reti/validatorRegistry.algo.ts:837", + "source": "examples/reti/validatorRegistry.algo.ts:836", "pc": [ 2744, - 2745 + 2745, + 2746 ] }, { - "teal": 2983, + "teal": 2987, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2746 + 2747 ] }, { - "teal": 2984, + "teal": 2988, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2747, - 2748 + 2748, + 2749 ] }, { - "teal": 2985, + "teal": 2989, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2749, - 2750 + 2750, + 2751 ] }, { - "teal": 2986, + "teal": 2990, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2751 + 2752 ] }, { - "teal": 2987, + "teal": 2991, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2752, - 2753 + 2753, + 2754 ] }, { - "teal": 2988, + "teal": 2992, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2754, - 2755 + 2755, + 2756 ] }, { - "teal": 2989, + "teal": 2993, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2756, 2757 ] }, { - "teal": 2990, + "teal": 2994, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ 2758, @@ -12791,615 +12804,609 @@ ] }, { - "teal": 2991, + "teal": 2995, "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2760 + 2760, + 2761 ] }, { "teal": 2996, - "source": "examples/reti/validatorRegistry.algo.ts:839", + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2761, - 2762 + 2762, + 2763 ] }, { "teal": 2997, - "source": "examples/reti/validatorRegistry.algo.ts:839", + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2763, 2764, 2765 ] }, { - "teal": 3001, - "source": "examples/reti/validatorRegistry.algo.ts:843", - "pc": [ - 2766, - 2767 - ] - }, - { - "teal": 3002, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "teal": 2998, + "source": "examples/reti/validatorRegistry.algo.ts:837", "pc": [ - 2768 + 2766 ] }, { "teal": 3003, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "source": "examples/reti/validatorRegistry.algo.ts:839", "pc": [ - 2769 + 2767, + 2768 ] }, { "teal": 3004, - "source": "examples/reti/validatorRegistry.algo.ts:843", + "source": "examples/reti/validatorRegistry.algo.ts:839", "pc": [ - 2770 + 2769, + 2770, + 2771 ] }, { - "teal": 3005, + "teal": 3008, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2771, 2772, 2773 ] }, { - "teal": 3006, + "teal": 3009, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2774, - 2775 + 2774 ] }, { - "teal": 3007, + "teal": 3010, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2776 + 2775 ] }, { - "teal": 3008, + "teal": 3011, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2777 + 2776 ] }, { - "teal": 3009, + "teal": 3012, "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2778 + 2777, + 2778, + 2779 ] }, { "teal": 3013, "source": "examples/reti/validatorRegistry.algo.ts:843", - "errorMessage": "should only be called if algo or reward was removed", - "pc": [ - 2779 - ] - }, - { - "teal": 3017, - "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ 2780, 2781 ] }, { - "teal": 3018, - "source": "examples/reti/validatorRegistry.algo.ts:846", - "pc": [ - 2782, - 2783 - ] - }, - { - "teal": 3019, - "source": "examples/reti/validatorRegistry.algo.ts:846", - "pc": [ - 2784, - 2785, - 2786 - ] - }, - { - "teal": 3020, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3014, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2787 + 2782 ] }, { - "teal": 3021, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3015, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2788 + 2783 ] }, { - "teal": 3022, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3016, + "source": "examples/reti/validatorRegistry.algo.ts:843", "pc": [ - 2789 + 2784 ] }, { - "teal": 3023, - "source": "examples/reti/validatorRegistry.algo.ts:846", + "teal": 3020, + "source": "examples/reti/validatorRegistry.algo.ts:843", + "errorMessage": "should only be called if algo or reward was removed", "pc": [ - 2790, - 2791 + 2785 ] }, { "teal": 3024, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2792 + 2786, + 2787 ] }, { "teal": 3025, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2793 + 2788, + 2789 ] }, { "teal": 3026, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2794, - 2795 + 2790, + 2791, + 2792 ] }, { "teal": 3027, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2796 + 2793 ] }, { "teal": 3028, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2797, - 2798 + 2794 ] }, { "teal": 3029, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2799, - 2800 + 2795 ] }, { "teal": 3030, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2801, - 2802, - 2803 + 2796, + 2797 ] }, { "teal": 3031, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2804 + 2798 ] }, { "teal": 3032, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2805 + 2799 ] }, { "teal": 3033, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2806 + 2800, + 2801 ] }, { "teal": 3034, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2807, - 2808 + 2802 ] }, { "teal": 3035, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2809 + 2803, + 2804 ] }, { "teal": 3036, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2810 + 2805, + 2806 ] }, { "teal": 3037, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2811, - 2812 + 2807, + 2808, + 2809 ] }, { "teal": 3038, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2813 + 2810 ] }, { "teal": 3039, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2814 + 2811 ] }, { "teal": 3040, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2815 + 2812 ] }, { "teal": 3041, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2816, - 2817 + 2813, + 2814 ] }, { "teal": 3042, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2818, - 2819, - 2820 + 2815 ] }, { "teal": 3043, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2821 + 2816 ] }, { "teal": 3044, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2822 + 2817, + 2818 ] }, { "teal": 3045, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2823 + 2819 ] }, { "teal": 3046, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2824, - 2825 + 2820 ] }, { "teal": 3047, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2826 + 2821 ] }, { "teal": 3048, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2827 + 2822, + 2823 ] }, { "teal": 3049, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2828, - 2829 + 2824, + 2825, + 2826 ] }, { "teal": 3050, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2830 + 2827 ] }, { "teal": 3051, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2831 + 2828 ] }, { "teal": 3052, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2832 + 2829 ] }, { "teal": 3053, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2833, - 2834 + 2830, + 2831 ] }, { "teal": 3054, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2835, - 2836, - 2837 + 2832 ] }, { "teal": 3055, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2838 + 2833 ] }, { "teal": 3056, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2839 + 2834, + 2835 ] }, { "teal": 3057, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2840 + 2836 ] }, { "teal": 3058, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2841, - 2842 + 2837 ] }, { "teal": 3059, "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2843 + 2838 ] }, { - "teal": 3063, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3060, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2844, - 2845 + 2839, + 2840 ] }, { - "teal": 3064, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3061, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2846 + 2841, + 2842, + 2843 ] }, { - "teal": 3065, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3062, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2847 + 2844 ] }, { - "teal": 3066, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3063, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2848 + 2845 ] }, { - "teal": 3067, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3064, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2849, - 2850 + 2846 ] }, { - "teal": 3068, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3065, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2851, - 2852, - 2853 + 2847, + 2848 ] }, { - "teal": 3069, - "source": "examples/reti/validatorRegistry.algo.ts:847", + "teal": 3066, + "source": "examples/reti/validatorRegistry.algo.ts:846", "pc": [ - 2854 + 2849 ] }, { "teal": 3070, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2855 + 2850, + 2851 ] }, { "teal": 3071, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2856 + 2852 ] }, { "teal": 3072, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2857, - 2858 + 2853 ] }, { "teal": 3073, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2859 + 2854 ] }, { "teal": 3074, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2860 + 2855, + 2856 ] }, { "teal": 3075, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2861, - 2862 + 2857, + 2858, + 2859 ] }, { "teal": 3076, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2863 + 2860 ] }, { "teal": 3077, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2864 + 2861 ] }, { "teal": 3078, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2865 + 2862 ] }, { "teal": 3079, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2866, - 2867 + 2863, + 2864 ] }, { "teal": 3080, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2868, - 2869, - 2870 + 2865 ] }, { "teal": 3081, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2871 + 2866 ] }, { "teal": 3082, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2872 + 2867, + 2868 ] }, { "teal": 3083, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2873 + 2869 ] }, { "teal": 3084, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2874, - 2875 + 2870 ] }, { "teal": 3085, "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ + 2871 + ] + }, + { + "teal": 3086, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2872, + 2873 + ] + }, + { + "teal": 3087, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2874, + 2875, 2876 ] }, + { + "teal": 3088, + "source": "examples/reti/validatorRegistry.algo.ts:847", + "pc": [ + 2877 + ] + }, { "teal": 3089, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ - 2877, 2878 ] }, { "teal": 3090, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2879 ] }, { "teal": 3091, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2880, 2881 @@ -13407,13 +13414,13 @@ }, { "teal": 3092, - "source": "examples/reti/validatorRegistry.algo.ts:848", + "source": "examples/reti/validatorRegistry.algo.ts:847", "pc": [ 2882 ] }, { - "teal": 3093, + "teal": 3096, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ 2883, @@ -13421,143 +13428,143 @@ ] }, { - "teal": 3094, + "teal": 3097, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ 2885 ] }, { - "teal": 3095, + "teal": 3098, "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2886 + 2886, + 2887 ] }, { - "teal": 3100, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "teal": 3099, + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2887, 2888 ] }, + { + "teal": 3100, + "source": "examples/reti/validatorRegistry.algo.ts:848", + "pc": [ + 2889, + 2890 + ] + }, { "teal": 3101, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2889 + 2891 ] }, { "teal": 3102, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "source": "examples/reti/validatorRegistry.algo.ts:848", "pc": [ - 2890 + 2892 ] }, { - "teal": 3103, + "teal": 3107, "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 2891, - 2892, - 2893 + 2893, + 2894 ] }, { "teal": 3108, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 2894, 2895 ] }, { "teal": 3109, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ 2896 ] }, { "teal": 3110, - "source": "examples/reti/validatorRegistry.algo.ts:851", - "pc": [ - 2897 - ] - }, - { - "teal": 3111, - "source": "examples/reti/validatorRegistry.algo.ts:851", + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ + 2897, 2898, 2899 ] }, { - "teal": 3112, + "teal": 3115, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2900, - 2901, - 2902 + 2901 ] }, { - "teal": 3113, + "teal": 3116, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2903 + 2902 ] }, { - "teal": 3114, + "teal": 3117, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2904 + 2903 ] }, { - "teal": 3115, + "teal": 3118, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ + 2904, 2905 ] }, { - "teal": 3116, + "teal": 3119, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2906, - 2907 + 2907, + 2908 ] }, { - "teal": 3117, + "teal": 3120, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2908 + 2909 ] }, { - "teal": 3118, + "teal": 3121, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2909 + 2910 ] }, { - "teal": 3119, + "teal": 3122, "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2910, 2911 ] }, { "teal": 3123, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2912, 2913 @@ -13565,342 +13572,342 @@ }, { "teal": 3124, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2914 ] }, { "teal": 3125, - "source": "examples/reti/validatorRegistry.algo.ts:852", + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ 2915 ] }, { - "teal": 3128, - "source": "examples/reti/validatorRegistry.algo.ts:852", - "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", + "teal": 3126, + "source": "examples/reti/validatorRegistry.algo.ts:851", "pc": [ - 2916 + 2916, + 2917 ] }, { - "teal": 3135, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3130, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2917, - 2918 + 2918, + 2919 ] }, { - "teal": 3136, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3131, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2919 + 2920 ] }, { - "teal": 3137, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3132, + "source": "examples/reti/validatorRegistry.algo.ts:852", "pc": [ - 2920 + 2921 ] }, { - "teal": 3138, - "source": "examples/reti/validatorRegistry.algo.ts:854", + "teal": 3135, + "source": "examples/reti/validatorRegistry.algo.ts:852", + "errorMessage": "rewardRemoved can't be set if validator doesn't have reward token!", "pc": [ - 2921, 2922 ] }, { - "teal": 3139, + "teal": 3142, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ 2923, - 2924, - 2925 + 2924 ] }, { - "teal": 3140, + "teal": 3143, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2926 + 2925 ] }, { - "teal": 3141, + "teal": 3144, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2927 + 2926 ] }, { - "teal": 3142, + "teal": 3145, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ + 2927, 2928 ] }, { - "teal": 3143, + "teal": 3146, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ 2929, - 2930 + 2930, + 2931 ] }, { - "teal": 3144, + "teal": 3147, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2931 + 2932 ] }, { - "teal": 3145, + "teal": 3148, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2932 + 2933 ] }, { - "teal": 3146, + "teal": 3149, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2933, 2934 ] }, { - "teal": 3147, + "teal": 3150, "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2935 + 2935, + 2936 ] }, { - "teal": 3150, - "source": "examples/reti/validatorRegistry.algo.ts:853", - "errorMessage": "reward being removed must be covered by hold back amount", + "teal": 3151, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2936 + 2937 ] }, { - "teal": 3154, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3152, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2937, 2938 ] }, { - "teal": 3155, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3153, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2939 + 2939, + 2940 ] }, { - "teal": 3156, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "teal": 3154, + "source": "examples/reti/validatorRegistry.algo.ts:854", "pc": [ - 2940 + 2941 ] }, { "teal": 3157, - "source": "examples/reti/validatorRegistry.algo.ts:859", + "source": "examples/reti/validatorRegistry.algo.ts:853", + "errorMessage": "reward being removed must be covered by hold back amount", "pc": [ - 2941 + 2942 ] }, { - "teal": 3158, + "teal": 3161, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2942, - 2943 + 2943, + 2944 ] }, { - "teal": 3159, + "teal": 3162, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2944, - 2945, - 2946 + 2945 ] }, { - "teal": 3160, + "teal": 3163, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2947 + 2946 ] }, { - "teal": 3161, + "teal": 3164, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2948 + 2947 ] }, { - "teal": 3162, + "teal": 3165, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ + 2948, 2949 ] }, { - "teal": 3163, + "teal": 3166, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2950, - 2951 + 2951, + 2952 ] }, { - "teal": 3164, + "teal": 3167, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2952 + 2953 ] }, { - "teal": 3165, + "teal": 3168, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2953 + 2954 ] }, { - "teal": 3166, + "teal": 3169, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2954, 2955 ] }, { - "teal": 3167, + "teal": 3170, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2956 + 2956, + 2957 ] }, { - "teal": 3168, + "teal": 3171, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2957 + 2958 ] }, { - "teal": 3169, + "teal": 3172, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2958 + 2959 ] }, { - "teal": 3170, + "teal": 3173, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2959, - 2960 + 2960, + 2961 ] }, { - "teal": 3171, + "teal": 3174, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2961, - 2962, - 2963 + 2962 ] }, { - "teal": 3172, + "teal": 3175, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2964 + 2963 ] }, { - "teal": 3173, + "teal": 3176, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2965 + 2964 ] }, { - "teal": 3174, + "teal": 3177, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ + 2965, 2966 ] }, { - "teal": 3175, + "teal": 3178, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2967, - 2968 + 2968, + 2969 ] }, { - "teal": 3176, + "teal": 3179, "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2969 + 2970 ] }, { - "teal": 3181, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "teal": 3180, + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2970, 2971 ] }, + { + "teal": 3181, + "source": "examples/reti/validatorRegistry.algo.ts:859", + "pc": [ + 2972 + ] + }, { "teal": 3182, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ - 2972, 2973, 2974 ] }, { "teal": 3183, - "source": "examples/reti/validatorRegistry.algo.ts:864", + "source": "examples/reti/validatorRegistry.algo.ts:859", "pc": [ 2975 ] }, { - "teal": 3184, - "source": "examples/reti/validatorRegistry.algo.ts:864", - "pc": [ - 2976 - ] - }, - { - "teal": 3185, + "teal": 3188, "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ + 2976, 2977 ] }, { - "teal": 3186, + "teal": 3189, "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2978, @@ -13909,38 +13916,44 @@ ] }, { - "teal": 3194, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3190, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2981 ] }, { - "teal": 3195, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3191, + "source": "examples/reti/validatorRegistry.algo.ts:864", + "pc": [ + 2982 + ] + }, + { + "teal": 3192, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ - 2982, 2983 ] }, { - "teal": 3196, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3193, + "source": "examples/reti/validatorRegistry.algo.ts:864", "pc": [ 2984, - 2985 + 2985, + 2986 ] }, { - "teal": 3197, + "teal": 3201, "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ - 2986, 2987 ] }, { - "teal": 3198, + "teal": 3202, "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2988, @@ -13948,98 +13961,92 @@ ] }, { - "teal": 3202, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "teal": 3203, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2990, 2991 ] }, - { - "teal": 3203, - "source": "examples/reti/validatorRegistry.algo.ts:866", - "pc": [ - 2992 - ] - }, { "teal": 3204, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ + 2992, 2993 ] }, { "teal": 3205, - "source": "examples/reti/validatorRegistry.algo.ts:866", + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 2994, 2995 ] }, { - "teal": 3206, + "teal": 3209, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 2996, - 2997, - 2998 + 2997 ] }, { - "teal": 3207, + "teal": 3210, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 2999 + 2998 ] }, { - "teal": 3208, + "teal": 3211, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3000 + 2999 ] }, { - "teal": 3209, + "teal": 3212, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ + 3000, 3001 ] }, { - "teal": 3210, + "teal": 3213, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 3002, - 3003 + 3003, + 3004 ] }, { - "teal": 3211, + "teal": 3214, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3004 + 3005 ] }, { - "teal": 3212, + "teal": 3215, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3005 + 3006 ] }, { - "teal": 3213, + "teal": 3216, "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3006, 3007 ] }, { "teal": 3217, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ 3008, 3009 @@ -14047,9111 +14054,9197 @@ }, { "teal": 3218, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3010, - 3011 + 3010 ] }, { "teal": 3219, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3012, - 3013 + 3011 ] }, { "teal": 3220, - "source": "examples/reti/validatorRegistry.algo.ts:867", + "source": "examples/reti/validatorRegistry.algo.ts:866", "pc": [ - 3014 + 3012, + 3013 ] }, { - "teal": 3221, + "teal": 3224, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3015, - 3016 + 3014, + 3015 ] }, { - "teal": 3222, + "teal": 3225, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3017, - 3018 + 3016, + 3017 ] }, { - "teal": 3223, + "teal": 3226, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ + 3018, 3019 ] }, { - "teal": 3224, + "teal": 3227, "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ - 3020, - 3021 + 3020 ] }, { - "teal": 3227, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3228, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ + 3021, 3022 ] }, { - "teal": 3228, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3229, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3023, 3024 ] }, { - "teal": 3231, - "source": "examples/reti/validatorRegistry.algo.ts:865", + "teal": 3230, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3025 ] }, { - "teal": 3234, - "source": "examples/reti/validatorRegistry.algo.ts:850", + "teal": 3231, + "source": "examples/reti/validatorRegistry.algo.ts:867", "pc": [ 3026, - 3027, + 3027 + ] + }, + { + "teal": 3234, + "source": "examples/reti/validatorRegistry.algo.ts:865", + "pc": [ 3028 ] }, { - "teal": 3242, - "source": "examples/reti/validatorRegistry.algo.ts:892", + "teal": 3235, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ 3029, 3030 ] }, { - "teal": 3243, - "source": "examples/reti/validatorRegistry.algo.ts:892", + "teal": 3238, + "source": "examples/reti/validatorRegistry.algo.ts:865", "pc": [ - 3031, - 3032, - 3033 + 3031 ] }, { - "teal": 3248, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "teal": 3241, + "source": "examples/reti/validatorRegistry.algo.ts:850", "pc": [ - 3034, - 3035 + 3032, + 3033, + 3034 ] }, { "teal": 3249, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "source": "examples/reti/validatorRegistry.algo.ts:892", "pc": [ - 3036, - 3037 + 3035, + 3036 ] }, { "teal": 3250, - "source": "examples/reti/validatorRegistry.algo.ts:894", + "source": "examples/reti/validatorRegistry.algo.ts:892", "pc": [ + 3037, 3038, - 3039, - 3040 + 3039 ] }, { - "teal": 3251, + "teal": 3255, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3040, 3041 ] }, { - "teal": 3252, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3042 - ] - }, - { - "teal": 3253, + "teal": 3256, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3042, 3043 ] }, { - "teal": 3254, + "teal": 3257, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3044, - 3045 - ] - }, - { - "teal": 3255, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ + 3045, 3046 ] }, { - "teal": 3256, + "teal": 3258, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3047 ] }, { - "teal": 3257, + "teal": 3259, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3048 ] }, { - "teal": 3258, + "teal": 3260, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3049 ] }, { - "teal": 3259, + "teal": 3261, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3050, 3051 ] }, - { - "teal": 3260, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3052, - 3053 - ] - }, - { - "teal": 3261, - "source": "examples/reti/validatorRegistry.algo.ts:894", - "pc": [ - 3054, - 3055, - 3056 - ] - }, { "teal": 3262, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3057 + 3052 ] }, { "teal": 3263, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3058 + 3053 ] }, { "teal": 3264, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3059 + 3054 ] }, { "teal": 3265, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3060, - 3061 + 3055 ] }, { "teal": 3266, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3062 + 3056, + 3057 ] }, { "teal": 3267, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3063 + 3058, + 3059 ] }, { "teal": 3268, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3064 + 3060, + 3061, + 3062 ] }, { "teal": 3269, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3065 + 3063 ] }, { "teal": 3270, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3066, - 3067 + 3064 ] }, { "teal": 3271, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3068 + 3065 ] }, { "teal": 3272, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3069, - 3070 + 3066, + 3067 ] }, { "teal": 3273, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3071, - 3072, - 3073 + 3068 ] }, { "teal": 3274, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3074 + 3069 ] }, { "teal": 3275, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3075 + 3070 ] }, { "teal": 3276, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3076 + 3071 ] }, { "teal": 3277, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3077, - 3078 + 3072, + 3073 ] }, { "teal": 3278, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3079 + 3074 ] }, { "teal": 3279, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3080 + 3075, + 3076 ] }, { "teal": 3280, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3081 + 3077, + 3078, + 3079 ] }, { "teal": 3281, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3082 + 3080 ] }, { "teal": 3282, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3083 + 3081 ] }, { "teal": 3283, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3084, - 3085, - 3086 + 3082 ] }, { "teal": 3284, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3087 + 3083, + 3084 ] }, { "teal": 3285, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3088, - 3089 + 3085 ] }, { "teal": 3286, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3090, - 3091, - 3092 + 3086 ] }, { "teal": 3287, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3093 + 3087 ] }, { "teal": 3288, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3094 + 3088 ] }, { "teal": 3289, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3095 + 3089 ] }, { "teal": 3290, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3096, - 3097 + 3090 ] }, { "teal": 3291, "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ + 3091 + ] + }, + { + "teal": 3292, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3092, + 3093 + ] + }, + { + "teal": 3293, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3094 + ] + }, + { + "teal": 3296, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "errorMessage": "this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits", + "pc": [ + 3095 + ] + }, + { + "teal": 3297, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3096, + 3097, 3098 ] }, + { + "teal": 3298, + "source": "examples/reti/validatorRegistry.algo.ts:894", + "pc": [ + 3099 + ] + }, { "teal": 3299, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3099, - 3100 + 3100, + 3101 ] }, { "teal": 3300, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3101, 3102, - 3103 + 3103, + 3104 ] }, { "teal": 3301, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3104 + 3105 ] }, { "teal": 3302, - "source": "examples/reti/validatorRegistry.algo.ts:897", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3105 + 3106 ] }, { "teal": 3303, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3106, 3107 ] }, { "teal": 3304, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ 3108, - 3109, - 3110 + 3109 ] }, { "teal": 3305, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "source": "examples/reti/validatorRegistry.algo.ts:894", "pc": [ - 3111 + 3110 ] }, { - "teal": 3306, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "teal": 3313, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ + 3111, 3112 ] }, { - "teal": 3307, - "source": "examples/reti/validatorRegistry.algo.ts:898", + "teal": 3314, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3113 + 3113, + 3114, + 3115 ] }, { - "teal": 3308, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3315, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3114, - 3115 + 3116 ] }, { - "teal": 3309, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3316, + "source": "examples/reti/validatorRegistry.algo.ts:897", "pc": [ - 3116, - 3117, - 3118 + 3117 ] }, { - "teal": 3310, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3317, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ + 3118, 3119 ] }, { - "teal": 3311, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3318, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3120 + 3120, + 3121, + 3122 ] }, { - "teal": 3312, - "source": "examples/reti/validatorRegistry.algo.ts:899", + "teal": 3319, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3121 + 3123 ] }, { - "teal": 3313, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3320, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3122, - 3123 + 3124 ] }, { - "teal": 3314, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3321, + "source": "examples/reti/validatorRegistry.algo.ts:898", "pc": [ - 3124, - 3125, - 3126 + 3125 ] }, { - "teal": 3315, - "source": "examples/reti/validatorRegistry.algo.ts:896", + "teal": 3322, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3127, - 3128 + 3126, + 3127 ] }, { - "teal": 3319, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3323, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ + 3128, 3129, 3130 ] }, { - "teal": 3320, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3324, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3131, - 3132 + 3131 ] }, { - "teal": 3321, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3325, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3133, - 3134 + 3132 ] }, { - "teal": 3322, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3326, + "source": "examples/reti/validatorRegistry.algo.ts:899", "pc": [ - 3135 + 3133 ] }, { - "teal": 3323, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3327, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ - 3136 + 3134, + 3135 ] }, { - "teal": 3324, - "source": "examples/reti/validatorRegistry.algo.ts:901", + "teal": 3328, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ + 3136, 3137, 3138 ] }, { - "teal": 3328, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3329, + "source": "examples/reti/validatorRegistry.algo.ts:896", "pc": [ 3139, 3140 ] }, { - "teal": 3329, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3333, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3141, 3142 ] }, { - "teal": 3330, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3334, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3143, 3144 ] }, { - "teal": 3331, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3335, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3145 + 3145, + 3146 ] }, { - "teal": 3332, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3336, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3146 + 3147 ] }, { - "teal": 3333, - "source": "examples/reti/validatorRegistry.algo.ts:902", + "teal": 3337, + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ - 3147, 3148 ] }, { "teal": 3338, - "source": "examples/reti/validatorRegistry.algo.ts:904", + "source": "examples/reti/validatorRegistry.algo.ts:901", "pc": [ 3149, 3150 ] }, { - "teal": 3339, - "source": "examples/reti/validatorRegistry.algo.ts:904", + "teal": 3342, + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ 3151, - 3152, - 3153 + 3152 + ] + }, + { + "teal": 3343, + "source": "examples/reti/validatorRegistry.algo.ts:902", + "pc": [ + 3153, + 3154 ] }, { "teal": 3344, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3154, - 3155 + 3155, + 3156 ] }, { "teal": 3345, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3156 + 3157 ] }, { "teal": 3346, - "source": "examples/reti/validatorRegistry.algo.ts:905", + "source": "examples/reti/validatorRegistry.algo.ts:902", "pc": [ - 3157 + 3158 ] }, { "teal": 3347, + "source": "examples/reti/validatorRegistry.algo.ts:902", + "pc": [ + 3159, + 3160 + ] + }, + { + "teal": 3352, + "source": "examples/reti/validatorRegistry.algo.ts:904", + "pc": [ + 3161, + 3162 + ] + }, + { + "teal": 3353, + "source": "examples/reti/validatorRegistry.algo.ts:904", + "pc": [ + 3163, + 3164, + 3165 + ] + }, + { + "teal": 3358, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3158 + 3166, + 3167 ] }, { - "teal": 3348, + "teal": 3359, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3159, - 3160 + 3168 ] }, { - "teal": 3349, + "teal": 3360, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3161, - 3162, - 3163 + 3169 ] }, { - "teal": 3350, + "teal": 3361, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3164 + 3170 ] }, { - "teal": 3351, + "teal": 3362, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3165 + 3171, + 3172 ] }, { - "teal": 3352, + "teal": 3363, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3166 + 3173, + 3174, + 3175 ] }, { - "teal": 3353, + "teal": 3364, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3167, - 3168 + 3176 ] }, { - "teal": 3354, + "teal": 3365, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3169 + 3177 ] }, { - "teal": 3355, + "teal": 3366, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3170 + 3178 ] }, { - "teal": 3356, + "teal": 3367, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3171 + 3179, + 3180 ] }, { - "teal": 3357, + "teal": 3368, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3172 + 3181 ] }, { - "teal": 3358, + "teal": 3369, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3173 + 3182 ] }, { - "teal": 3359, + "teal": 3370, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3174 + 3183 ] }, { - "teal": 3360, + "teal": 3371, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3175, - 3176 + 3184 ] }, { - "teal": 3361, + "teal": 3372, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3177, - 3178, - 3179 + 3185 ] }, { - "teal": 3362, + "teal": 3373, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3180 + 3186 ] }, { - "teal": 3363, + "teal": 3374, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3181 + 3187, + 3188 ] }, { - "teal": 3364, + "teal": 3375, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3182 + 3189, + 3190, + 3191 ] }, { - "teal": 3365, + "teal": 3376, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3183, - 3184 + 3192 ] }, { - "teal": 3366, + "teal": 3377, "source": "examples/reti/validatorRegistry.algo.ts:905", "pc": [ - 3185 + 3193 ] }, { - "teal": 3372, + "teal": 3378, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3194 + ] + }, + { + "teal": 3379, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3195, + 3196 + ] + }, + { + "teal": 3380, + "source": "examples/reti/validatorRegistry.algo.ts:905", + "pc": [ + 3197 + ] + }, + { + "teal": 3386, "source": "examples/reti/validatorRegistry.algo.ts:908", "pc": [ - 3186, - 3187 + 3198, + 3199 ] }, { - "teal": 3373, + "teal": 3387, "source": "examples/reti/validatorRegistry.algo.ts:908", "pc": [ - 3188, - 3189, - 3190 + 3200, + 3201, + 3202 ] }, { - "teal": 3378, + "teal": 3392, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3191, - 3192 + 3203, + 3204 ] }, { - "teal": 3379, + "teal": 3393, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3193 + 3205 ] }, { - "teal": 3380, + "teal": 3394, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3194 + 3206 ] }, { - "teal": 3381, + "teal": 3395, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3195 + 3207 ] }, { - "teal": 3382, + "teal": 3396, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3196, - 3197 + 3208, + 3209 ] }, { - "teal": 3383, + "teal": 3397, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3198 + 3210 ] }, { - "teal": 3384, + "teal": 3398, "source": "examples/reti/validatorRegistry.algo.ts:909", "pc": [ - 3199 + 3211 ] }, { - "teal": 3389, + "teal": 3403, "source": "examples/reti/validatorRegistry.algo.ts:829", "pc": [ - 3200 + 3212 ] }, { - "teal": 3394, + "teal": 3408, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3201 + 3213 ] }, { - "teal": 3397, + "teal": 3411, "source": "examples/reti/validatorRegistry.algo.ts:928", "pc": [ - 3202, - 3203, - 3204 + 3214, + 3215, + 3216 ] }, { - "teal": 3398, + "teal": 3412, "source": "examples/reti/validatorRegistry.algo.ts:928", "pc": [ - 3205 + 3217 ] }, { - "teal": 3401, + "teal": 3415, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3206, - 3207, - 3208 + 3218, + 3219, + 3220 ] }, { - "teal": 3402, + "teal": 3416, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3209 + 3221 ] }, { - "teal": 3403, + "teal": 3417, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3210 + 3222 ] }, { - "teal": 3404, + "teal": 3418, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3211, - 3212 + 3223, + 3224 ] }, { - "teal": 3405, + "teal": 3419, "source": "examples/reti/validatorRegistry.algo.ts:927", "pc": [ - 3213 + 3225 ] }, { - "teal": 3408, + "teal": 3422, "source": "examples/reti/validatorRegistry.algo.ts:927", "errorMessage": "argument 1 (staker) for findPoolForStaker must be a address", "pc": [ - 3214 + 3226 ] }, { - "teal": 3411, + "teal": 3425, "source": "examples/reti/validatorRegistry.algo.ts:926", "pc": [ - 3215, - 3216, - 3217 + 3227, + 3228, + 3229 ] }, { - "teal": 3412, + "teal": 3426, "source": "examples/reti/validatorRegistry.algo.ts:926", "pc": [ - 3218 + 3230 ] }, { - "teal": 3415, + "teal": 3429, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3219, - 3220, - 3221 + 3231, + 3232, + 3233 ] }, { - "teal": 3416, + "teal": 3430, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3222 + 3234 ] }, { - "teal": 3417, + "teal": 3431, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3223 + 3235 ] }, { - "teal": 3418, + "teal": 3432, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3224 + 3236 ] }, { - "teal": 3419, + "teal": 3433, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3225 + 3237 ] }, { - "teal": 3433, + "teal": 3447, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3226, - 3227, - 3228 + 3238, + 3239, + 3240 ] }, { - "teal": 3436, + "teal": 3450, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3229 + 3241 ] }, { - "teal": 3437, + "teal": 3451, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3230, - 3231 + 3242, + 3243 ] }, { - "teal": 3441, + "teal": 3455, "source": "examples/reti/validatorRegistry.algo.ts:930", "pc": [ - 3232 + 3244 ] }, { - "teal": 3442, + "teal": 3456, "source": "examples/reti/validatorRegistry.algo.ts:930", "pc": [ - 3233, - 3234 + 3245, + 3246 ] }, { - "teal": 3446, + "teal": 3460, "source": "examples/reti/validatorRegistry.algo.ts:931", "pc": [ - 3235 + 3247 ] }, { - "teal": 3447, + "teal": 3461, "source": "examples/reti/validatorRegistry.algo.ts:931", "pc": [ - 3236, - 3237 + 3248, + 3249 ] }, { - "teal": 3451, + "teal": 3465, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3238, - 3239 + 3250, + 3251 ] }, { - "teal": 3452, + "teal": 3466, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3240, - 3241, - 3242 + 3252, + 3253, + 3254 ] }, { - "teal": 3453, + "teal": 3467, "source": "examples/reti/validatorRegistry.algo.ts:939", "pc": [ - 3243, - 3244 + 3255, + 3256 ] }, { - "teal": 3458, + "teal": 3472, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3245 + 3257 ] }, { - "teal": 3459, + "teal": 3473, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3246, - 3247 + 3258, + 3259 ] }, { - "teal": 3460, + "teal": 3474, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3248 + 3260 ] }, { - "teal": 3461, + "teal": 3475, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3249 + 3261 ] }, { - "teal": 3462, + "teal": 3476, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3250 + 3262 ] }, { - "teal": 3463, + "teal": 3477, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3251 + 3263 ] }, { - "teal": 3464, + "teal": 3478, "source": "examples/reti/validatorRegistry.algo.ts:942", "pc": [ - 3252, - 3253, - 3254 + 3264, + 3265, + 3266 ] }, { - "teal": 3469, + "teal": 3483, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3255 + 3267 ] }, { - "teal": 3470, + "teal": 3484, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3256, - 3257 + 3268, + 3269 ] }, { - "teal": 3471, + "teal": 3485, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3258 + 3270 ] }, { - "teal": 3472, + "teal": 3486, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3259 + 3271 ] }, { - "teal": 3475, + "teal": 3489, "source": "examples/reti/validatorRegistry.algo.ts:943", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 3260 + 3272 ] }, { - "teal": 3476, + "teal": 3490, "source": "examples/reti/validatorRegistry.algo.ts:943", "pc": [ - 3261, - 3262 + 3273, + 3274 ] }, { - "teal": 3480, + "teal": 3494, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3263, - 3264 + 3275, + 3276 ] }, { - "teal": 3481, + "teal": 3495, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3265 + 3277 ] }, { - "teal": 3482, + "teal": 3496, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3266 + 3278 ] }, { - "teal": 3483, + "teal": 3497, "source": "examples/reti/validatorRegistry.algo.ts:944", "pc": [ - 3267 + 3279 ] }, { - "teal": 3487, + "teal": 3501, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3268 + 3280 ] }, { - "teal": 3488, + "teal": 3502, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3269, - 3270 + 3281, + 3282 ] }, { - "teal": 3493, + "teal": 3507, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3271, - 3272 + 3283, + 3284 ] }, { - "teal": 3494, + "teal": 3508, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3273, - 3274 + 3285, + 3286 ] }, { - "teal": 3495, + "teal": 3509, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3275 + 3287 ] }, { - "teal": 3496, + "teal": 3510, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3276, - 3277, - 3278 + 3288, + 3289, + 3290 ] }, { - "teal": 3501, + "teal": 3515, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3279, - 3280 + 3291, + 3292 ] }, { - "teal": 3502, + "teal": 3516, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3281, - 3282 + 3293, + 3294 ] }, { - "teal": 3503, + "teal": 3517, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3283 + 3295 ] }, { - "teal": 3504, + "teal": 3518, "source": "examples/reti/validatorRegistry.algo.ts:946", "pc": [ - 3284, - 3285, - 3286 + 3296, + 3297, + 3298 ] }, { - "teal": 3509, + "teal": 3523, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3287 + 3299 ] }, { - "teal": 3510, + "teal": 3524, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3288, - 3289 + 3300, + 3301 ] }, { - "teal": 3511, + "teal": 3525, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3290, - 3291 + 3302, + 3303 ] }, { - "teal": 3512, + "teal": 3526, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3292 + 3304 ] }, { - "teal": 3513, + "teal": 3527, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3293, - 3294 + 3305, + 3306 ] }, { - "teal": 3514, + "teal": 3528, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3295, - 3296 + 3307, + 3308 ] }, { - "teal": 3515, + "teal": 3529, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3297 + 3309 ] }, { - "teal": 3516, + "teal": 3530, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3298, - 3299 + 3310, + 3311 ] }, { - "teal": 3517, + "teal": 3531, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3300, - 3301 + 3312, + 3313 ] }, { - "teal": 3518, + "teal": 3532, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3302, - 3303 + 3314, + 3315 ] }, { - "teal": 3519, + "teal": 3533, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3304, - 3305 + 3316, + 3317 ] }, { - "teal": 3520, + "teal": 3534, "source": "examples/reti/validatorRegistry.algo.ts:947", "pc": [ - 3306 + 3318 ] }, { - "teal": 3526, + "teal": 3540, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3307, - 3308 + 3319, + 3320 ] }, { - "teal": 3527, + "teal": 3541, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3309, - 3310 + 3321, + 3322 ] }, { - "teal": 3528, + "teal": 3542, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3311 + 3323 ] }, { - "teal": 3529, + "teal": 3543, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3312 + 3324 ] }, { - "teal": 3530, + "teal": 3544, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3313 + 3325 ] }, { - "teal": 3531, + "teal": 3545, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3314 + 3326 ] }, { - "teal": 3532, + "teal": 3546, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3315 + 3327 ] }, { - "teal": 3533, + "teal": 3547, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3316 + 3328 ] }, { - "teal": 3534, + "teal": 3548, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3317 + 3329 ] }, { - "teal": 3535, + "teal": 3549, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3318 + 3330 ] }, { - "teal": 3536, + "teal": 3550, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3319 + 3331 ] }, { - "teal": 3537, + "teal": 3551, "source": "examples/reti/validatorRegistry.algo.ts:949", "pc": [ - 3320, - 3321, - 3322 + 3332, + 3333, + 3334 ] }, { - "teal": 3540, + "teal": 3554, "source": "examples/reti/validatorRegistry.algo.ts:950", "pc": [ - 3323, - 3324, - 3325 + 3335, + 3336, + 3337 ] }, { - "teal": 3545, + "teal": 3559, "source": "examples/reti/validatorRegistry.algo.ts:952", "pc": [ - 3326 + 3338 ] }, { - "teal": 3546, + "teal": 3560, "source": "examples/reti/validatorRegistry.algo.ts:952", "pc": [ - 3327, - 3328 + 3339, + 3340 ] }, { - "teal": 3551, + "teal": 3565, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3329, - 3330 + 3341, + 3342 ] }, { - "teal": 3552, + "teal": 3566, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3331, - 3332 + 3343, + 3344 ] }, { - "teal": 3553, + "teal": 3567, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3333 + 3345 ] }, { - "teal": 3554, + "teal": 3568, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3334 + 3346 ] }, { - "teal": 3555, + "teal": 3569, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3335 + 3347 ] }, { - "teal": 3556, + "teal": 3570, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3336 + 3348 ] }, { - "teal": 3557, + "teal": 3571, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3337 + 3349 ] }, { - "teal": 3558, + "teal": 3572, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3338 + 3350 ] }, { - "teal": 3559, + "teal": 3573, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3339 + 3351 ] }, { - "teal": 3560, + "teal": 3574, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3340, - 3341 + 3352, + 3353 ] }, { - "teal": 3561, + "teal": 3575, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3342 + 3354 ] }, { - "teal": 3562, + "teal": 3576, "source": "examples/reti/validatorRegistry.algo.ts:953", "pc": [ - 3343, - 3344, - 3345 + 3355, + 3356, + 3357 ] }, { - "teal": 3567, + "teal": 3581, "source": "examples/reti/validatorRegistry.algo.ts:955", "pc": [ - 3346 + 3358 ] }, { - "teal": 3568, + "teal": 3582, "source": "examples/reti/validatorRegistry.algo.ts:955", "pc": [ - 3347, - 3348 + 3359, + 3360 ] }, { - "teal": 3574, + "teal": 3588, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3349, - 3350 + 3361, + 3362 ] }, { - "teal": 3575, + "teal": 3589, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3351, - 3352 + 3363, + 3364 ] }, { - "teal": 3576, + "teal": 3590, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3353, - 3354 + 3365, + 3366 ] }, { - "teal": 3577, + "teal": 3591, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3355 + 3367 ] }, { - "teal": 3578, + "teal": 3592, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3356 + 3368 ] }, { - "teal": 3579, + "teal": 3593, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3357 + 3369 ] }, { - "teal": 3580, + "teal": 3594, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3358 + 3370 ] }, { - "teal": 3581, + "teal": 3595, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3359 + 3371 ] }, { - "teal": 3582, + "teal": 3596, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3360 + 3372 ] }, { - "teal": 3583, + "teal": 3597, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3361 + 3373 ] }, { - "teal": 3584, + "teal": 3598, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3362 + 3374 ] }, { - "teal": 3585, + "teal": 3599, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3363 + 3375 ] }, { - "teal": 3586, + "teal": 3600, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3364, - 3365 + 3376, + 3377 ] }, { - "teal": 3587, + "teal": 3601, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3366 + 3378 ] }, { - "teal": 3588, + "teal": 3602, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3367 + 3379 ] }, { - "teal": 3589, + "teal": 3603, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3368, - 3369 + 3380, + 3381 ] }, { - "teal": 3590, + "teal": 3604, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3370 + 3382 ] }, { - "teal": 3591, + "teal": 3605, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3371 + 3383 ] }, { - "teal": 3592, + "teal": 3606, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3372 + 3384 ] }, { - "teal": 3593, + "teal": 3607, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3373, - 3374 + 3385, + 3386 ] }, { - "teal": 3594, + "teal": 3608, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3375 + 3387 ] }, { - "teal": 3595, + "teal": 3609, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3376 + 3388 ] }, { - "teal": 3596, + "teal": 3610, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3377, - 3378 + 3389, + 3390 ] }, { - "teal": 3597, + "teal": 3611, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3379 + 3391 ] }, { - "teal": 3598, + "teal": 3612, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3380 + 3392 ] }, { - "teal": 3599, + "teal": 3613, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3381, - 3382 + 3393, + 3394 ] }, { - "teal": 3600, + "teal": 3614, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3383 + 3395 ] }, { - "teal": 3601, + "teal": 3615, "source": "examples/reti/validatorRegistry.algo.ts:958", "pc": [ - 3384, - 3385 + 3396, + 3397 ] }, { - "teal": 3602, + "teal": 3616, "source": "examples/reti/validatorRegistry.algo.ts:957", "pc": [ - 3386 + 3398 ] }, { - "teal": 3603, + "teal": 3617, "source": "examples/reti/validatorRegistry.algo.ts:956", "pc": [ - 3387, - 3388, - 3389 + 3399, + 3400, + 3401 ] }, { - "teal": 3608, + "teal": 3622, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3390, - 3391 + 3402, + 3403 ] }, { - "teal": 3609, + "teal": 3623, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3392, - 3393 + 3404, + 3405 ] }, { - "teal": 3610, + "teal": 3624, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3394 + 3406 ] }, { - "teal": 3611, + "teal": 3625, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3395 + 3407 ] }, { - "teal": 3612, + "teal": 3626, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3396 + 3408 ] }, { - "teal": 3613, + "teal": 3627, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3397 + 3409 ] }, { - "teal": 3614, + "teal": 3628, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3398, - 3399 + 3410, + 3411 ] }, { - "teal": 3615, + "teal": 3629, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3400 + 3412 ] }, { - "teal": 3616, + "teal": 3630, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3401, - 3402 + 3413, + 3414 ] }, { - "teal": 3617, + "teal": 3631, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3403 + 3415 ] }, { - "teal": 3618, + "teal": 3632, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3404 + 3416 ] }, { - "teal": 3619, + "teal": 3633, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3405, - 3406 + 3417, + 3418 ] }, { - "teal": 3620, + "teal": 3634, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3407 + 3419 ] }, { - "teal": 3621, + "teal": 3635, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3408 + 3420 ] }, { - "teal": 3622, + "teal": 3636, "source": "examples/reti/validatorRegistry.algo.ts:960", "pc": [ - 3409, - 3410, - 3411 + 3421, + 3422, + 3423 ] }, { - "teal": 3631, + "teal": 3645, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3412, - 3413 + 3424, + 3425 ] }, { - "teal": 3632, + "teal": 3646, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3414 + 3426 ] }, { - "teal": 3633, + "teal": 3647, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3415 + 3427 ] }, { - "teal": 3634, + "teal": 3648, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3416, - 3417 + 3428, + 3429 ] }, { - "teal": 3635, + "teal": 3649, "source": "examples/reti/validatorRegistry.algo.ts:945", "pc": [ - 3418, - 3419, - 3420 + 3430, + 3431, + 3432 ] }, { - "teal": 3645, + "teal": 3659, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3421, - 3422 + 3433, + 3434 ] }, { - "teal": 3646, + "teal": 3660, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3423, - 3424 + 3435, + 3436 ] }, { - "teal": 3647, + "teal": 3661, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3425 + 3437 ] }, { - "teal": 3648, + "teal": 3662, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3426 + 3438 ] }, { - "teal": 3649, + "teal": 3663, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3427, - 3428 + 3439, + 3440 ] }, { - "teal": 3650, + "teal": 3664, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3429 + 3441 ] }, { - "teal": 3651, + "teal": 3665, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3430 + 3442 ] }, { - "teal": 3652, + "teal": 3666, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3431, - 3432 + 3443, + 3444 ] }, { - "teal": 3653, + "teal": 3667, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3433 + 3445 ] }, { - "teal": 3654, + "teal": 3668, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3434 + 3446 ] }, { - "teal": 3655, + "teal": 3669, "source": "examples/reti/validatorRegistry.algo.ts:968", "pc": [ - 3435 + 3447 ] }, { - "teal": 3658, + "teal": 3672, "source": "examples/reti/validatorRegistry.algo.ts:967", "errorMessage": "must stake at least the minimum for this pool", "pc": [ - 3436 + 3448 ] }, { - "teal": 3662, + "teal": 3676, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3437, - 3438 + 3449, + 3450 ] }, { - "teal": 3663, + "teal": 3677, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3439, - 3440 + 3451, + 3452 ] }, { - "teal": 3664, + "teal": 3678, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3441 + 3453 ] }, { - "teal": 3665, + "teal": 3679, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3442, - 3443 + 3454, + 3455 ] }, { - "teal": 3666, + "teal": 3680, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3444 + 3456 ] }, { - "teal": 3667, + "teal": 3681, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3445 + 3457 ] }, { - "teal": 3668, + "teal": 3682, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3446, - 3447 + 3458, + 3459 ] }, { - "teal": 3669, + "teal": 3683, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3448 + 3460 ] }, { - "teal": 3670, + "teal": 3684, "source": "examples/reti/validatorRegistry.algo.ts:973", "pc": [ - 3449, - 3450 + 3461, + 3462 ] }, { - "teal": 3674, + "teal": 3688, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3451, - 3452 + 3463, + 3464 ] }, { - "teal": 3675, + "teal": 3689, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3453, - 3454 + 3465, + 3466 ] }, { - "teal": 3676, + "teal": 3690, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3455 + 3467 ] }, { - "teal": 3677, + "teal": 3691, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3456, - 3457 + 3468, + 3469 ] }, { - "teal": 3678, + "teal": 3692, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3458 + 3470 ] }, { - "teal": 3679, + "teal": 3693, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3459 + 3471 ] }, { - "teal": 3680, + "teal": 3694, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3460, - 3461 + 3472, + 3473 ] }, { - "teal": 3681, + "teal": 3695, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3462 + 3474 ] }, { - "teal": 3682, + "teal": 3696, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3463 + 3475 ] }, { - "teal": 3683, + "teal": 3697, "source": "examples/reti/validatorRegistry.algo.ts:974", "pc": [ - 3464, - 3465 + 3476, + 3477 ] }, { - "teal": 3687, + "teal": 3701, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3466 + 3478 ] }, { - "teal": 3688, + "teal": 3702, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3467, - 3468 + 3479, + 3480 ] }, { - "teal": 3693, + "teal": 3707, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3469, - 3470 + 3481, + 3482 ] }, { - "teal": 3694, + "teal": 3708, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3471, - 3472 + 3483, + 3484 ] }, { - "teal": 3695, + "teal": 3709, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3473 + 3485 ] }, { - "teal": 3696, + "teal": 3710, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3474, - 3475, - 3476 + 3486, + 3487, + 3488 ] }, { - "teal": 3701, + "teal": 3715, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3477, - 3478 + 3489, + 3490 ] }, { - "teal": 3702, + "teal": 3716, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3479, - 3480 + 3491, + 3492 ] }, { - "teal": 3703, + "teal": 3717, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3481, - 3482 + 3493, + 3494 ] }, { - "teal": 3704, + "teal": 3718, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3483 + 3495 ] }, { - "teal": 3705, + "teal": 3719, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3484, - 3485 + 3496, + 3497 ] }, { - "teal": 3706, + "teal": 3720, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3486 + 3498 ] }, { - "teal": 3707, + "teal": 3721, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3487 + 3499 ] }, { - "teal": 3708, + "teal": 3722, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3488 + 3500 ] }, { - "teal": 3709, + "teal": 3723, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3489 + 3501 ] }, { - "teal": 3710, + "teal": 3724, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3490, - 3491 + 3502, + 3503 ] }, { - "teal": 3711, + "teal": 3725, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3492 + 3504 ] }, { - "teal": 3712, + "teal": 3726, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3493, - 3494 + 3505, + 3506 ] }, { - "teal": 3713, + "teal": 3727, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3495 + 3507 ] }, { - "teal": 3714, + "teal": 3728, "source": "examples/reti/validatorRegistry.algo.ts:976", "pc": [ - 3496, - 3497, - 3498 + 3508, + 3509, + 3510 ] }, { - "teal": 3723, + "teal": 3737, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3499, - 3500 + 3511, + 3512 ] }, { - "teal": 3724, + "teal": 3738, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3501 + 3513 ] }, { - "teal": 3725, + "teal": 3739, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3502, - 3503 + 3514, + 3515 ] }, { - "teal": 3726, + "teal": 3740, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3504 + 3516 ] }, { - "teal": 3727, + "teal": 3741, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3505 + 3517 ] }, { - "teal": 3728, + "teal": 3742, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3506 + 3518 ] }, { - "teal": 3729, + "teal": 3743, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3507 + 3519 ] }, { - "teal": 3730, + "teal": 3744, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3508, - 3509 + 3520, + 3521 ] }, { - "teal": 3731, + "teal": 3745, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3510, - 3511 + 3522, + 3523 ] }, { - "teal": 3732, + "teal": 3746, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3512, - 3513 + 3524, + 3525 ] }, { - "teal": 3733, + "teal": 3747, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3514 + 3526 ] }, { - "teal": 3734, + "teal": 3748, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3515 + 3527 ] }, { - "teal": 3735, + "teal": 3749, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3516 + 3528 ] }, { - "teal": 3736, + "teal": 3750, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3517 + 3529 ] }, { - "teal": 3737, + "teal": 3751, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3518 + 3530 ] }, { - "teal": 3738, + "teal": 3752, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3519 + 3531 ] }, { - "teal": 3739, + "teal": 3753, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3520 + 3532 ] }, { - "teal": 3740, + "teal": 3754, "source": "examples/reti/validatorRegistry.algo.ts:978", "pc": [ - 3521 + 3533 ] }, { - "teal": 3741, + "teal": 3755, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3522, - 3523 + 3534, + 3535 ] }, { - "teal": 3742, + "teal": 3756, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3524 + 3536 ] }, { - "teal": 3743, + "teal": 3757, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3525, - 3526 + 3537, + 3538 ] }, { - "teal": 3744, + "teal": 3758, "source": "examples/reti/validatorRegistry.algo.ts:979", "pc": [ - 3527 + 3539 ] }, { - "teal": 3745, + "teal": 3759, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3528 + 3540 ] }, { - "teal": 3746, + "teal": 3760, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3529, - 3530 + 3541, + 3542 ] }, { - "teal": 3747, + "teal": 3761, "source": "examples/reti/validatorRegistry.algo.ts:980", "pc": [ - 3531 + 3543 ] }, { - "teal": 3748, + "teal": 3762, "source": "examples/reti/validatorRegistry.algo.ts:977", "pc": [ - 3532 + 3544 ] }, { - "teal": 3749, + "teal": 3763, "source": "examples/reti/validatorRegistry.algo.ts:977", "pc": [ - 3533, - 3534, - 3535 + 3545, + 3546, + 3547 ] }, { - "teal": 3756, + "teal": 3770, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3536, - 3537 + 3548, + 3549 ] }, { - "teal": 3757, + "teal": 3771, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3538 + 3550 ] }, { - "teal": 3758, + "teal": 3772, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3539 + 3551 ] }, { - "teal": 3759, + "teal": 3773, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3540, - 3541 + 3552, + 3553 ] }, { - "teal": 3760, + "teal": 3774, "source": "examples/reti/validatorRegistry.algo.ts:975", "pc": [ - 3542, - 3543, - 3544 + 3554, + 3555, + 3556 ] }, { - "teal": 3765, + "teal": 3779, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3545, - 3546 + 3557, + 3558 ] }, { - "teal": 3766, + "teal": 3780, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3547 + 3559 ] }, { - "teal": 3767, + "teal": 3781, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3548, - 3549 + 3560, + 3561 ] }, { - "teal": 3768, + "teal": 3782, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3550 + 3562 ] }, { - "teal": 3769, + "teal": 3783, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3551, - 3552 + 3563, + 3564 ] }, { - "teal": 3770, + "teal": 3784, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3553 + 3565 ] }, { - "teal": 3771, + "teal": 3785, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3554, - 3555 + 3566, + 3567 ] }, { - "teal": 3772, + "teal": 3786, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3556 + 3568 ] }, { - "teal": 3773, + "teal": 3787, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3557, - 3558 + 3569, + 3570 ] }, { - "teal": 3774, + "teal": 3788, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3559 + 3571 ] }, { - "teal": 3775, + "teal": 3789, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3560 + 3572 ] }, { - "teal": 3776, + "teal": 3790, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3561, - 3562 + 3573, + 3574 ] }, { - "teal": 3777, + "teal": 3791, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3563 + 3575 ] }, { - "teal": 3778, + "teal": 3792, "source": "examples/reti/validatorRegistry.algo.ts:985", "pc": [ - 3564 + 3576 ] }, { - "teal": 3782, + "teal": 3796, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3565, - 3566 + 3577, + 3578 ] }, { - "teal": 3785, + "teal": 3799, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3567, - 3568 + 3579, + 3580 ] }, { - "teal": 3786, + "teal": 3800, "source": "examples/reti/validatorRegistry.algo.ts:925", "pc": [ - 3569 + 3581 ] }, { - "teal": 3791, + "teal": 3805, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3570, - 3571, - 3572 + 3582, + 3583, + 3584 ] }, { - "teal": 3792, + "teal": 3806, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3573 + 3585 ] }, { - "teal": 3795, + "teal": 3809, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3574, - 3575, - 3576 + 3586, + 3587, + 3588 ] }, { - "teal": 3796, + "teal": 3810, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3577 + 3589 ] }, { - "teal": 3799, + "teal": 3813, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3578, - 3579, - 3580 + 3590, + 3591, + 3592 ] }, { - "teal": 3800, + "teal": 3814, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3581 + 3593 ] }, { - "teal": 3803, + "teal": 3817, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3582, - 3583, - 3584 + 3594, + 3595, + 3596 ] }, { - "teal": 3804, + "teal": 3818, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3585 + 3597 ] }, { - "teal": 3805, + "teal": 3819, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3586 + 3598 ] }, { - "teal": 3819, + "teal": 3833, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3587, - 3588, - 3589 + 3599, + 3600, + 3601 ] }, { - "teal": 3822, + "teal": 3836, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3590 + 3602 ] }, { - "teal": 3823, + "teal": 3837, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3591, - 3592 + 3603, + 3604 ] }, { - "teal": 3831, + "teal": 3845, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3593, - 3594 + 3605, + 3606 ] }, { - "teal": 3832, + "teal": 3846, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3595 + 3607 ] }, { - "teal": 3833, + "teal": 3847, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3596, - 3597 + 3608, + 3609 ] }, { - "teal": 3834, + "teal": 3848, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3598 + 3610 ] }, { - "teal": 3835, + "teal": 3849, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3599, - 3600 + 3611, + 3612 ] }, { - "teal": 3836, + "teal": 3850, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3601 + 3613 ] }, { - "teal": 3837, + "teal": 3851, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3602 + 3614 ] }, { - "teal": 3838, + "teal": 3852, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3603, - 3604 + 3615, + 3616 ] }, { - "teal": 3839, + "teal": 3853, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3605 + 3617 ] }, { - "teal": 3840, + "teal": 3854, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3606 + 3618 ] }, { - "teal": 3841, + "teal": 3855, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3607 + 3619 ] }, { - "teal": 3842, + "teal": 3856, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3608, - 3609, - 3610 + 3620, + 3621, + 3622 ] }, { - "teal": 3843, + "teal": 3857, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3611, - 3612 + 3623, + 3624 ] }, { - "teal": 3844, + "teal": 3858, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3613, - 3614 + 3625, + 3626 ] }, { - "teal": 3845, + "teal": 3859, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3615, - 3616 + 3627, + 3628 ] }, { - "teal": 3846, + "teal": 3860, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3617 + 3629 ] }, { - "teal": 3847, + "teal": 3861, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3618, - 3619 + 3630, + 3631 ] }, { - "teal": 3848, + "teal": 3862, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3620 + 3632 ] }, { - "teal": 3849, + "teal": 3863, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3621 + 3633 ] }, { - "teal": 3850, + "teal": 3864, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3622, - 3623 + 3634, + 3635 ] }, { - "teal": 3851, + "teal": 3865, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3624 + 3636 ] }, { - "teal": 3852, + "teal": 3866, "source": "examples/reti/validatorRegistry.algo.ts:1003", "pc": [ - 3625 + 3637 ] }, { - "teal": 3853, + "teal": 3867, "source": "examples/reti/validatorRegistry.algo.ts:1002", "pc": [ - 3626 + 3638 ] }, { - "teal": 3857, + "teal": 3871, "source": "examples/reti/validatorRegistry.algo.ts:1001", "errorMessage": "can only be called by owner or manager of validator", "pc": [ - 3627 + 3639 ] }, { - "teal": 3861, + "teal": 3875, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3628, - 3629 + 3640, + 3641 ] }, { - "teal": 3862, + "teal": 3876, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3630, - 3631 + 3642, + 3643 ] }, { - "teal": 3863, + "teal": 3877, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3632 + 3644 ] }, { - "teal": 3864, + "teal": 3878, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3633, - 3634 + 3645, + 3646 ] }, { - "teal": 3865, + "teal": 3879, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3635 + 3647 ] }, { - "teal": 3866, + "teal": 3880, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3636 + 3648 ] }, { - "teal": 3867, + "teal": 3881, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3637, - 3638 + 3649, + 3650 ] }, { - "teal": 3868, + "teal": 3882, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3639 + 3651 ] }, { - "teal": 3869, + "teal": 3883, "source": "examples/reti/validatorRegistry.algo.ts:1007", "pc": [ - 3640, - 3641 + 3652, + 3653 ] }, { - "teal": 3873, + "teal": 3887, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3642, - 3643 + 3654, + 3655 ] }, { - "teal": 3874, + "teal": 3888, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3644 + 3656 ] }, { - "teal": 3875, + "teal": 3889, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3645 + 3657 ] }, { - "teal": 3876, + "teal": 3890, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3646 + 3658 ] }, { - "teal": 3877, + "teal": 3891, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3647, - 3648, - 3649 + 3659, + 3660, + 3661 ] }, { - "teal": 3878, + "teal": 3892, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3650, - 3651 + 3662, + 3663 ] }, { - "teal": 3879, + "teal": 3893, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3652 + 3664 ] }, { - "teal": 3880, + "teal": 3894, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3653 + 3665 ] }, { - "teal": 3881, + "teal": 3895, "source": "examples/reti/validatorRegistry.algo.ts:1008", "pc": [ - 3654 + 3666 ] }, { - "teal": 3885, + "teal": 3899, "source": "examples/reti/validatorRegistry.algo.ts:1008", "errorMessage": "node number out of allowable range", "pc": [ - 3655 + 3667 ] }, { - "teal": 3889, + "teal": 3903, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3656 + 3668 ] }, { - "teal": 3890, + "teal": 3904, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3657, - 3658 + 3669, + 3670 ] }, { - "teal": 3895, + "teal": 3909, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3659, - 3660 + 3671, + 3672 ] }, { - "teal": 3896, + "teal": 3910, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3661 + 3673 ] }, { - "teal": 3897, + "teal": 3911, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3662 + 3674 ] }, { - "teal": 3898, + "teal": 3912, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3663, - 3664, - 3665 + 3675, + 3676, + 3677 ] }, { - "teal": 3902, + "teal": 3916, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3666 + 3678 ] }, { - "teal": 3903, + "teal": 3917, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3667, - 3668 + 3679, + 3680 ] }, { - "teal": 3908, + "teal": 3922, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3669, - 3670 + 3681, + 3682 ] }, { - "teal": 3909, + "teal": 3923, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3671, - 3672 + 3683, + 3684 ] }, { - "teal": 3910, + "teal": 3924, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3673 + 3685 ] }, { - "teal": 3911, + "teal": 3925, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3674, - 3675, - 3676 + 3686, + 3687, + 3688 ] }, { - "teal": 3916, + "teal": 3930, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3677, - 3678 + 3689, + 3690 ] }, { - "teal": 3917, + "teal": 3931, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3679 + 3691 ] }, { - "teal": 3918, + "teal": 3932, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3680, - 3681 + 3692, + 3693 ] }, { - "teal": 3919, + "teal": 3933, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3682 + 3694 ] }, { - "teal": 3920, + "teal": 3934, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3683 + 3695 ] }, { - "teal": 3921, + "teal": 3935, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3684 + 3696 ] }, { - "teal": 3922, + "teal": 3936, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3685 + 3697 ] }, { - "teal": 3923, + "teal": 3937, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3686 + 3698 ] }, { - "teal": 3924, + "teal": 3938, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3687, - 3688 + 3699, + 3700 ] }, { - "teal": 3925, + "teal": 3939, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3689 + 3701 ] }, { - "teal": 3926, + "teal": 3940, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3690 + 3702 ] }, { - "teal": 3927, + "teal": 3941, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3691 + 3703 ] }, { - "teal": 3928, + "teal": 3942, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3692 + 3704 ] }, { - "teal": 3929, + "teal": 3943, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3693 + 3705 ] }, { - "teal": 3930, + "teal": 3944, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3694 + 3706 ] }, { - "teal": 3931, + "teal": 3945, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3695, - 3696 + 3707, + 3708 ] }, { - "teal": 3932, + "teal": 3946, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3697 + 3709 ] }, { - "teal": 3933, + "teal": 3947, "source": "examples/reti/validatorRegistry.algo.ts:1012", "pc": [ - 3698, - 3699, - 3700 + 3710, + 3711, + 3712 ] }, { - "teal": 3938, + "teal": 3952, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3701, - 3702 + 3713, + 3714 ] }, { - "teal": 3939, + "teal": 3953, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3703 + 3715 ] }, { - "teal": 3940, + "teal": 3954, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3704 + 3716 ] }, { - "teal": 3941, + "teal": 3955, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3705, - 3706 + 3717, + 3718 ] }, { - "teal": 3942, + "teal": 3956, "source": "examples/reti/validatorRegistry.algo.ts:1013", "pc": [ - 3707 + 3719 ] }, { - "teal": 3945, + "teal": 3959, "source": "examples/reti/validatorRegistry.algo.ts:1013", "errorMessage": "can't move to same node", "pc": [ - 3708 + 3720 ] }, { - "teal": 3949, + "teal": 3963, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3709, - 3710 + 3721, + 3722 ] }, { - "teal": 3950, + "teal": 3964, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3711, - 3712 + 3723, + 3724 ] }, { - "teal": 3951, + "teal": 3965, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3713 + 3725 ] }, { - "teal": 3952, + "teal": 3966, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3714 + 3726 ] }, { - "teal": 3953, + "teal": 3967, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3715 + 3727 ] }, { - "teal": 3954, + "teal": 3968, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3716 + 3728 ] }, { - "teal": 3955, + "teal": 3969, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3717 + 3729 ] }, { - "teal": 3956, + "teal": 3970, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3718, - 3719 + 3730, + 3731 ] }, { - "teal": 3957, + "teal": 3971, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3720 + 3732 ] }, { - "teal": 3958, + "teal": 3972, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3721 + 3733 ] }, { - "teal": 3959, + "teal": 3973, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3722 + 3734 ] }, { - "teal": 3960, + "teal": 3974, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3723, - 3724 + 3735, + 3736 ] }, { - "teal": 3961, + "teal": 3975, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3725 + 3737 ] }, { - "teal": 3962, + "teal": 3976, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3726, - 3727 + 3738, + 3739 ] }, { - "teal": 3963, + "teal": 3977, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3728 + 3740 ] }, { - "teal": 3964, + "teal": 3978, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3729 + 3741 ] }, { - "teal": 3965, + "teal": 3979, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3730, - 3731 + 3742, + 3743 ] }, { - "teal": 3966, + "teal": 3980, "source": "examples/reti/validatorRegistry.algo.ts:1015", "pc": [ - 3732 + 3744 ] }, { - "teal": 3972, + "teal": 3986, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3733 + 3745 ] }, { - "teal": 3973, + "teal": 3987, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3734, - 3735 + 3746, + 3747 ] }, { - "teal": 3974, + "teal": 3988, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3736, - 3737 + 3748, + 3749 ] }, { - "teal": 3975, + "teal": 3989, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3738, - 3739, - 3740, - 3741, - 3742, - 3743 + 3750, + 3751, + 3752, + 3753, + 3754, + 3755 ] }, { - "teal": 3976, + "teal": 3990, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3744, - 3745 + 3756, + 3757 ] }, { - "teal": 3980, + "teal": 3994, "source": "examples/reti/validatorRegistry.algo.ts:1019", "pc": [ - 3746, - 3747 + 3758, + 3759 ] }, { - "teal": 3981, + "teal": 3995, "source": "examples/reti/validatorRegistry.algo.ts:1019", "pc": [ - 3748, - 3749 + 3760, + 3761 ] }, { - "teal": 3984, + "teal": 3998, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3750 + 3762 ] }, { - "teal": 3985, + "teal": 3999, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3751, - 3752 + 3763, + 3764 ] }, { - "teal": 3988, + "teal": 4002, "source": "examples/reti/validatorRegistry.algo.ts:1018", "pc": [ - 3753 + 3765 ] }, { - "teal": 3992, + "teal": 4006, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3754, - 3755 + 3766, + 3767 ] }, { - "teal": 3993, + "teal": 4007, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3756, - 3757 + 3768, + 3769 ] }, { - "teal": 3994, + "teal": 4008, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3758, - 3759 + 3770, + 3771 ] }, { - "teal": 3995, + "teal": 4009, "source": "examples/reti/validatorRegistry.algo.ts:1023", "pc": [ - 3760, - 3761, - 3762 + 3772, + 3773, + 3774 ] }, { - "teal": 3999, + "teal": 4013, "source": "examples/reti/validatorRegistry.algo.ts:1024", "pc": [ - 3763 + 3775 ] }, { - "teal": 4006, + "teal": 4020, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3764, - 3765 + 3776, + 3777 ] }, { - "teal": 4007, + "teal": 4021, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3766 + 3778 ] }, { - "teal": 4008, + "teal": 4022, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3767 + 3779 ] }, { - "teal": 4009, + "teal": 4023, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3768, - 3769 + 3780, + 3781 ] }, { - "teal": 4010, + "teal": 4024, "source": "examples/reti/validatorRegistry.algo.ts:1011", "pc": [ - 3770, - 3771, - 3772 + 3782, + 3783, + 3784 ] }, { - "teal": 4017, + "teal": 4031, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3773, - 3774 + 3785, + 3786 ] }, { - "teal": 4018, + "teal": 4032, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3775 + 3787 ] }, { - "teal": 4019, + "teal": 4033, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3776 + 3788 ] }, { - "teal": 4020, + "teal": 4034, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3777, - 3778 + 3789, + 3790 ] }, { - "teal": 4021, + "teal": 4035, "source": "examples/reti/validatorRegistry.algo.ts:1010", "pc": [ - 3779, - 3780, - 3781 + 3791, + 3792, + 3793 ] }, { - "teal": 4025, + "teal": 4039, "source": "examples/reti/validatorRegistry.algo.ts:1028", "errorMessage": "couldn't find pool app id in nodes to move", "pc": [ - 3782 + 3794 ] }, { - "teal": 4026, + "teal": 4040, "source": "examples/reti/validatorRegistry.algo.ts:999", "pc": [ - 3783 + 3795 ] }, { - "teal": 4031, + "teal": 4045, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3784 + 3796 ] }, { - "teal": 4034, + "teal": 4048, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3785, - 3786, - 3787 + 3797, + 3798, + 3799 ] }, { - "teal": 4035, + "teal": 4049, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3788 + 3800 ] }, { - "teal": 4036, + "teal": 4050, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3789 + 3801 ] }, { - "teal": 4037, + "teal": 4051, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3790, - 3791 + 3802, + 3803 ] }, { - "teal": 4038, + "teal": 4052, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3792 + 3804 ] }, { - "teal": 4041, + "teal": 4055, "source": "examples/reti/validatorRegistry.algo.ts:1042", "errorMessage": "argument 0 (receiver) for emptyTokenRewards must be a address", "pc": [ - 3793 + 3805 ] }, { - "teal": 4044, + "teal": 4058, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3794, - 3795, - 3796 + 3806, + 3807, + 3808 ] }, { - "teal": 4045, + "teal": 4059, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3797 + 3809 ] }, { - "teal": 4048, + "teal": 4062, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3798, - 3799, - 3800 + 3810, + 3811, + 3812 ] }, { - "teal": 4049, + "teal": 4063, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3801 + 3813 ] }, { - "teal": 4050, + "teal": 4064, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3802 + 3814 ] }, { - "teal": 4051, + "teal": 4065, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3803 + 3815 ] }, { - "teal": 4052, + "teal": 4066, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3804 + 3816 ] }, { - "teal": 4053, + "teal": 4067, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3805 + 3817 ] }, { - "teal": 4067, + "teal": 4081, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3806, - 3807, - 3808 + 3818, + 3819, + 3820 ] }, { - "teal": 4070, + "teal": 4084, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3809 + 3821 ] }, { - "teal": 4071, + "teal": 4085, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3810, - 3811 + 3822, + 3823 ] }, { - "teal": 4078, + "teal": 4092, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3812, - 3813 + 3824, + 3825 ] }, { - "teal": 4079, + "teal": 4093, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3814 + 3826 ] }, { - "teal": 4080, + "teal": 4094, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3815, - 3816 + 3827, + 3828 ] }, { - "teal": 4081, + "teal": 4095, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3817 + 3829 ] }, { - "teal": 4082, + "teal": 4096, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3818, - 3819 + 3830, + 3831 ] }, { - "teal": 4083, + "teal": 4097, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3820 + 3832 ] }, { - "teal": 4084, + "teal": 4098, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3821 + 3833 ] }, { - "teal": 4085, + "teal": 4099, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3822, - 3823 + 3834, + 3835 ] }, { - "teal": 4086, + "teal": 4100, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3824 + 3836 ] }, { - "teal": 4087, + "teal": 4101, "source": "examples/reti/validatorRegistry.algo.ts:1044", "pc": [ - 3825 + 3837 ] }, { - "teal": 4090, + "teal": 4104, "source": "examples/reti/validatorRegistry.algo.ts:1043", "errorMessage": "can only be called by validator owner", "pc": [ - 3826 + 3838 ] }, { - "teal": 4094, + "teal": 4108, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3827, - 3828 + 3839, + 3840 ] }, { - "teal": 4095, + "teal": 4109, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3829 + 3841 ] }, { - "teal": 4096, + "teal": 4110, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3830 + 3842 ] }, { - "teal": 4097, + "teal": 4111, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3831, - 3832 + 3843, + 3844 ] }, { - "teal": 4098, + "teal": 4112, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3833 + 3845 ] }, { - "teal": 4099, + "teal": 4113, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3834 + 3846 ] }, { - "teal": 4100, + "teal": 4114, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3835, - 3836 + 3847, + 3848 ] }, { - "teal": 4101, + "teal": 4115, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3837 + 3849 ] }, { - "teal": 4102, + "teal": 4116, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3838 + 3850 ] }, { - "teal": 4103, + "teal": 4117, "source": "examples/reti/validatorRegistry.algo.ts:1047", "pc": [ - 3839, - 3840 + 3851, + 3852 ] }, { - "teal": 4107, + "teal": 4121, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3841, - 3842 + 3853, + 3854 ] }, { - "teal": 4108, + "teal": 4122, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3843 + 3855 ] }, { - "teal": 4109, + "teal": 4123, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3844 + 3856 ] }, { - "teal": 4110, + "teal": 4124, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3845, - 3846 + 3857, + 3858 ] }, { - "teal": 4111, + "teal": 4125, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3847 + 3859 ] }, { - "teal": 4112, + "teal": 4126, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3848 + 3860 ] }, { - "teal": 4113, + "teal": 4127, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3849, - 3850 + 3861, + 3862 ] }, { - "teal": 4114, + "teal": 4128, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3851 + 3863 ] }, { - "teal": 4115, + "teal": 4129, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3852 + 3864 ] }, { - "teal": 4116, + "teal": 4130, "source": "examples/reti/validatorRegistry.algo.ts:1048", "pc": [ - 3853, - 3854 + 3865, + 3866 ] }, { - "teal": 4120, + "teal": 4134, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3855, - 3856 + 3867, + 3868 ] }, { - "teal": 4121, + "teal": 4135, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3857 + 3869 ] }, { - "teal": 4122, + "teal": 4136, "source": "examples/reti/validatorRegistry.algo.ts:1049", "pc": [ - 3858 + 3870 ] }, { - "teal": 4125, + "teal": 4139, "source": "examples/reti/validatorRegistry.algo.ts:1049", "errorMessage": "this validator doesn't have a reward token defined", "pc": [ - 3859 + 3871 ] }, { - "teal": 4129, + "teal": 4143, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3860, - 3861 + 3872, + 3873 ] }, { - "teal": 4130, + "teal": 4144, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3862 + 3874 ] }, { - "teal": 4131, + "teal": 4145, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3863 + 3875 ] }, { - "teal": 4132, + "teal": 4146, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3864, - 3865 + 3876, + 3877 ] }, { - "teal": 4133, + "teal": 4147, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3866 + 3878 ] }, { - "teal": 4134, + "teal": 4148, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3867 + 3879 ] }, { - "teal": 4135, + "teal": 4149, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3868, - 3869 + 3880, + 3881 ] }, { - "teal": 4136, + "teal": 4150, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3870 + 3882 ] }, { - "teal": 4137, + "teal": 4151, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3871 + 3883 ] }, { - "teal": 4138, + "teal": 4152, "source": "examples/reti/validatorRegistry.algo.ts:1050", "pc": [ - 3872, - 3873 + 3884, + 3885 ] }, { - "teal": 4142, + "teal": 4156, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3874, - 3875 + 3886, + 3887 ] }, { - "teal": 4143, + "teal": 4157, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3876, - 3877 + 3888, + 3889 ] }, { - "teal": 4144, + "teal": 4158, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3878 + 3890 ] }, { - "teal": 4145, + "teal": 4159, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3879, - 3880 + 3891, + 3892 ] }, { - "teal": 4146, + "teal": 4160, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3881, - 3882 + 3893, + 3894 ] }, { - "teal": 4147, + "teal": 4161, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3883 + 3895 ] }, { - "teal": 4148, + "teal": 4162, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3884, - 3885 + 3896, + 3897 ] }, { - "teal": 4149, + "teal": 4163, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3886 + 3898 ] }, { - "teal": 4150, + "teal": 4164, "source": "examples/reti/validatorRegistry.algo.ts:1052", "pc": [ - 3887, - 3888 + 3899, + 3900 ] }, { - "teal": 4157, + "teal": 4171, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3889 + 3901 ] }, { - "teal": 4158, + "teal": 4172, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3890, - 3891 + 3902, + 3903 ] }, { - "teal": 4159, + "teal": 4173, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3892, - 3893 + 3904, + 3905 ] }, { - "teal": 4160, + "teal": 4174, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3894, - 3895 + 3906, + 3907 ] }, { - "teal": 4161, + "teal": 4175, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3896, - 3897 + 3908, + 3909 ] }, { - "teal": 4165, + "teal": 4179, "source": "examples/reti/validatorRegistry.algo.ts:1056", "pc": [ - 3898, - 3899 + 3910, + 3911 ] }, { - "teal": 4166, + "teal": 4180, "source": "examples/reti/validatorRegistry.algo.ts:1056", "pc": [ - 3900, - 3901 + 3912, + 3913 ] }, { - "teal": 4170, + "teal": 4184, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3902, - 3903 + 3914, + 3915 ] }, { - "teal": 4171, + "teal": 4185, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3904, - 3905 + 3916, + 3917 ] }, { - "teal": 4172, + "teal": 4186, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3906, - 3907 + 3918, + 3919 ] }, { - "teal": 4173, + "teal": 4187, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3908 + 3920 ] }, { - "teal": 4174, + "teal": 4188, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3909, - 3910 + 3921, + 3922 ] }, { - "teal": 4175, + "teal": 4189, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3911, - 3912 + 3923, + 3924 ] }, { - "teal": 4176, + "teal": 4190, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3913 + 3925 ] }, { - "teal": 4177, + "teal": 4191, "source": "examples/reti/validatorRegistry.algo.ts:1057", "pc": [ - 3914, - 3915 + 3926, + 3927 ] }, { - "teal": 4180, + "teal": 4194, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3916 + 3928 ] }, { - "teal": 4181, + "teal": 4195, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3917, - 3918 + 3929, + 3930 ] }, { - "teal": 4184, + "teal": 4198, "source": "examples/reti/validatorRegistry.algo.ts:1055", "pc": [ - 3919 + 3931 ] }, { - "teal": 4191, + "teal": 4205, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3920, - 3921 + 3932, + 3933 ] }, { - "teal": 4192, + "teal": 4206, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3922, - 3923 + 3934, + 3935 ] }, { - "teal": 4193, + "teal": 4207, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3924 + 3936 ] }, { - "teal": 4194, + "teal": 4208, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3925, - 3926 + 3937, + 3938 ] }, { - "teal": 4195, + "teal": 4209, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3927, - 3928 + 3939, + 3940 ] }, { - "teal": 4196, + "teal": 4210, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3929 + 3941 ] }, { - "teal": 4197, + "teal": 4211, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3930, - 3931 + 3942, + 3943 ] }, { - "teal": 4198, + "teal": 4212, "source": "examples/reti/validatorRegistry.algo.ts:1060", "pc": [ - 3932 + 3944 ] }, { - "teal": 4201, + "teal": 4215, "source": "examples/reti/validatorRegistry.algo.ts:1059", "errorMessage": "balance of remaining reward tokens should match the held back amount", "pc": [ - 3933 + 3945 ] }, { - "teal": 4205, + "teal": 4219, "source": "examples/reti/validatorRegistry.algo.ts:1063", "pc": [ - 3934, - 3935 + 3946, + 3947 ] }, { - "teal": 4208, + "teal": 4222, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3936, - 3937 + 3948, + 3949 ] }, { - "teal": 4211, + "teal": 4225, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3938, - 3939 + 3950, + 3951 ] }, { - "teal": 4212, + "teal": 4226, "source": "examples/reti/validatorRegistry.algo.ts:1042", "pc": [ - 3940 + 3952 ] }, { - "teal": 4223, + "teal": 4237, "source": "examples/reti/validatorRegistry.algo.ts:1160", "pc": [ - 3941, - 3942, - 3943 + 3953, + 3954, + 3955 ] }, { - "teal": 4227, + "teal": 4241, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3944 + 3956 ] }, { - "teal": 4228, + "teal": 4242, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3945, - 3946 + 3957, + 3958 ] }, { - "teal": 4229, + "teal": 4243, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3947, - 3948, - 3949 + 3959, + 3960, + 3961 ] }, { - "teal": 4230, + "teal": 4244, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3950 + 3962 ] }, { - "teal": 4231, + "teal": 4245, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3951 + 3963 ] }, { - "teal": 4232, + "teal": 4246, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3952 + 3964 ] }, { - "teal": 4233, + "teal": 4247, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3953 + 3965 ] }, { - "teal": 4234, + "teal": 4248, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3954 + 3966 ] }, { - "teal": 4235, + "teal": 4249, "source": "examples/reti/validatorRegistry.algo.ts:1161", "pc": [ - 3955 + 3967 ] }, { - "teal": 4238, + "teal": 4252, "source": "examples/reti/validatorRegistry.algo.ts:1161", "errorMessage": "the specified validator id isn't valid", "pc": [ - 3956 + 3968 ] }, { - "teal": 4242, + "teal": 4256, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3957, - 3958 + 3969, + 3970 ] }, { - "teal": 4243, + "teal": 4257, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3959, - 3960, - 3961 + 3971, + 3972, + 3973 ] }, { - "teal": 4244, + "teal": 4258, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3962 + 3974 ] }, { - "teal": 4245, + "teal": 4259, "source": "examples/reti/validatorRegistry.algo.ts:32", "pc": [ - 3963 + 3975 ] }, { - "teal": 4246, + "teal": 4260, "source": "examples/reti/validatorRegistry.algo.ts:1162", "pc": [ - 3964 + 3976 ] }, { - "teal": 4249, + "teal": 4263, "source": "examples/reti/validatorRegistry.algo.ts:1162", "errorMessage": "pool id not in valid range", "pc": [ - 3965 + 3977 ] }, { - "teal": 4256, + "teal": 4270, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3966, - 3967 + 3978, + 3979 ] }, { - "teal": 4257, + "teal": 4271, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3968, - 3969, - 3970 + 3980, + 3981, + 3982 ] }, { - "teal": 4258, + "teal": 4272, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3971 + 3983 ] }, { - "teal": 4259, + "teal": 4273, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3972 + 3984 ] }, { - "teal": 4260, + "teal": 4274, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3973 + 3985 ] }, { - "teal": 4261, + "teal": 4275, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3974 + 3986 ] }, { - "teal": 4262, + "teal": 4276, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3975, - 3976, - 3977 + 3987, + 3988, + 3989 ] }, { - "teal": 4263, + "teal": 4277, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3978, - 3979 + 3990, + 3991 ] }, { - "teal": 4264, + "teal": 4278, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3980, - 3981, - 3982 + 3992, + 3993, + 3994 ] }, { - "teal": 4265, + "teal": 4279, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3983 + 3995 ] }, { - "teal": 4266, + "teal": 4280, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3984, - 3985 + 3996, + 3997 ] }, { - "teal": 4267, + "teal": 4281, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3986, - 3987 + 3998, + 3999 ] }, { - "teal": 4268, + "teal": 4282, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3988 + 4000 ] }, { - "teal": 4269, + "teal": 4283, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3989, - 3990 + 4001, + 4002 ] }, { - "teal": 4270, + "teal": 4284, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3991, - 3992, - 3993 + 4003, + 4004, + 4005 ] }, { - "teal": 4271, + "teal": 4285, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3994 + 4006 ] }, { - "teal": 4272, + "teal": 4286, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3995 + 4007 ] }, { - "teal": 4273, + "teal": 4287, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3996 + 4008 ] }, { - "teal": 4274, + "teal": 4288, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3997, - 3998 + 4009, + 4010 ] }, { - "teal": 4275, + "teal": 4289, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 3999 + 4011 ] }, { - "teal": 4276, + "teal": 4290, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4000 + 4012 ] }, { - "teal": 4277, + "teal": 4291, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4001 + 4013 ] }, { - "teal": 4278, + "teal": 4292, "source": "examples/reti/validatorRegistry.algo.ts:1164", "pc": [ - 4002 + 4014 ] }, { - "teal": 4282, + "teal": 4296, "source": "examples/reti/validatorRegistry.algo.ts:1163", "errorMessage": "pool id outside of range of pools created for this validator", "pc": [ - 4003 + 4015 ] }, { - "teal": 4289, + "teal": 4303, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4004, - 4005 + 4016, + 4017 ] }, { - "teal": 4290, + "teal": 4304, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4006, - 4007, - 4008 + 4018, + 4019, + 4020 ] }, { - "teal": 4291, + "teal": 4305, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4009 + 4021 ] }, { - "teal": 4292, + "teal": 4306, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4010, - 4011 + 4022, + 4023 ] }, { - "teal": 4293, + "teal": 4307, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4012, - 4013 + 4024, + 4025 ] }, { - "teal": 4294, + "teal": 4308, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4014, - 4015, - 4016 + 4026, + 4027, + 4028 ] }, { - "teal": 4295, + "teal": 4309, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4017 + 4029 ] }, { - "teal": 4296, + "teal": 4310, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4018 + 4030 ] }, { - "teal": 4297, + "teal": 4311, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4019 + 4031 ] }, { - "teal": 4298, + "teal": 4312, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4020, - 4021 + 4032, + 4033 ] }, { - "teal": 4299, + "teal": 4313, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4022 + 4034 ] }, { - "teal": 4300, + "teal": 4314, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4023 + 4035 ] }, { - "teal": 4301, + "teal": 4315, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4024 + 4036 ] }, { - "teal": 4302, + "teal": 4316, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4025 + 4037 ] }, { - "teal": 4303, + "teal": 4317, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4026 + 4038 ] }, { - "teal": 4304, + "teal": 4318, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4027 + 4039 ] }, { - "teal": 4305, + "teal": 4319, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4028, - 4029 + 4040, + 4041 ] }, { - "teal": 4306, + "teal": 4320, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4030, - 4031, - 4032 + 4042, + 4043, + 4044 ] }, { - "teal": 4307, + "teal": 4321, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4033 + 4045 ] }, { - "teal": 4308, + "teal": 4322, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4034 + 4046 ] }, { - "teal": 4309, + "teal": 4323, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4035 + 4047 ] }, { - "teal": 4310, + "teal": 4324, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4036, - 4037 + 4048, + 4049 ] }, { - "teal": 4311, + "teal": 4325, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4038 + 4050 ] }, { - "teal": 4312, + "teal": 4326, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4039 + 4051 ] }, { - "teal": 4313, + "teal": 4327, "source": "examples/reti/validatorRegistry.algo.ts:1170", "pc": [ - 4040 + 4052 ] }, { - "teal": 4316, + "teal": 4330, "source": "examples/reti/validatorRegistry.algo.ts:1169", "errorMessage": "The passed in app id doesn't match the passed in ids", "pc": [ - 4041 + 4053 ] }, { - "teal": 4320, + "teal": 4334, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4042, - 4043 + 4054, + 4055 ] }, { - "teal": 4321, + "teal": 4335, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4044, - 4045 + 4056, + 4057 ] }, { - "teal": 4322, + "teal": 4336, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4046, - 4047, - 4048 + 4058, + 4059, + 4060 ] }, { - "teal": 4323, + "teal": 4337, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4049 + 4061 ] }, { - "teal": 4324, + "teal": 4338, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4050, - 4051 + 4062, + 4063 ] }, { - "teal": 4325, + "teal": 4339, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4052 + 4064 ] }, { - "teal": 4326, + "teal": 4340, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4053 + 4065 ] }, { - "teal": 4327, + "teal": 4341, "source": "examples/reti/validatorRegistry.algo.ts:1174", "pc": [ - 4054 + 4066 ] }, { - "teal": 4331, + "teal": 4345, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4055, - 4056 + 4067, + 4068 ] }, { - "teal": 4332, + "teal": 4346, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4057, - 4058, - 4059 + 4069, + 4070, + 4071 ] }, { - "teal": 4333, + "teal": 4347, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4060 + 4072 ] }, { - "teal": 4334, + "teal": 4348, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4061, - 4062 + 4073, + 4074 ] }, { - "teal": 4335, + "teal": 4349, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4063, - 4064, - 4065 + 4075, + 4076, + 4077 ] }, { - "teal": 4336, + "teal": 4350, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4066 + 4078 ] }, { - "teal": 4337, + "teal": 4351, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4067, - 4068, - 4069, - 4070, - 4071, - 4072, - 4073, - 4074, - 4075, - 4076, - 4077, - 4078, - 4079 + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4090, + 4091 ] }, { - "teal": 4338, + "teal": 4352, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4080 + 4092 ] }, { - "teal": 4341, + "teal": 4355, "source": "examples/reti/validatorRegistry.algo.ts:1176", "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')", "pc": [ - 4081 + 4093 ] }, { - "teal": 4342, + "teal": 4356, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4082 + 4094 ] }, { - "teal": 4343, + "teal": 4357, "source": "examples/reti/validatorRegistry.algo.ts:1176", "pc": [ - 4083 + 4095 ] }, { - "teal": 4347, + "teal": 4361, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4084, - 4085 + 4096, + 4097 ] }, { - "teal": 4348, + "teal": 4362, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4086, - 4087, - 4088 + 4098, + 4099, + 4100 ] }, { - "teal": 4349, + "teal": 4363, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4089 + 4101 ] }, { - "teal": 4350, + "teal": 4364, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4090, - 4091 + 4102, + 4103 ] }, { - "teal": 4351, + "teal": 4365, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4092, - 4093, - 4094 + 4104, + 4105, + 4106 ] }, { - "teal": 4352, + "teal": 4366, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4095 + 4107 ] }, { - "teal": 4353, + "teal": 4367, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103 + 4108, + 4109, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115 ] }, { - "teal": 4354, + "teal": 4368, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4104 + 4116 ] }, { - "teal": 4357, + "teal": 4371, "source": "examples/reti/validatorRegistry.algo.ts:1177", "errorMessage": "global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')", "pc": [ - 4105 + 4117 ] }, { - "teal": 4358, + "teal": 4372, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4106 + 4118 ] }, { - "teal": 4359, + "teal": 4373, "source": "examples/reti/validatorRegistry.algo.ts:1177", "pc": [ - 4107 + 4119 ] }, { - "teal": 4360, + "teal": 4374, "source": "examples/reti/validatorRegistry.algo.ts:1160", "pc": [ - 4108 + 4120 ] }, { - "teal": 4369, + "teal": 4383, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4109, - 4110, - 4111 + 4121, + 4122, + 4123 ] }, { - "teal": 4372, + "teal": 4386, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4112 + 4124 ] }, { - "teal": 4373, + "teal": 4387, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4113 + 4125 ] }, { - "teal": 4377, + "teal": 4391, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4114 + 4126 ] }, { - "teal": 4378, + "teal": 4392, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4115, - 4116 + 4127, + 4128 ] }, { - "teal": 4379, + "teal": 4393, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4117 + 4129 ] }, { - "teal": 4380, + "teal": 4394, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4118 + 4130 ] }, { - "teal": 4381, + "teal": 4395, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4119, - 4120 + 4131, + 4132 ] }, { - "teal": 4386, + "teal": 4400, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4121, - 4122 + 4133, + 4134 ] }, { - "teal": 4387, + "teal": 4401, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4123 + 4135 ] }, { - "teal": 4388, + "teal": 4402, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4124 + 4136 ] }, { - "teal": 4389, + "teal": 4403, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4125, - 4126 + 4137, + 4138 ] }, { - "teal": 4390, + "teal": 4404, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4127 + 4139 ] }, { - "teal": 4391, + "teal": 4405, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4128 + 4140 ] }, { - "teal": 4392, + "teal": 4406, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4129, - 4130 + 4141, + 4142 ] }, { - "teal": 4393, + "teal": 4407, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4131 + 4143 ] }, { - "teal": 4394, + "teal": 4408, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4132 + 4144 ] }, { - "teal": 4395, + "teal": 4409, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4133 + 4145 ] }, { - "teal": 4396, + "teal": 4410, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4134 + 4146 ] }, { - "teal": 4397, + "teal": 4411, "source": "examples/reti/validatorRegistry.algo.ts:1188", "pc": [ - 4135, - 4136, - 4137 + 4147, + 4148, + 4149 ] }, { - "teal": 4402, + "teal": 4416, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4138, - 4139 + 4150, + 4151 ] }, { - "teal": 4403, + "teal": 4417, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4140 + 4152 ] }, { - "teal": 4404, + "teal": 4418, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4141 + 4153 ] }, { - "teal": 4405, + "teal": 4419, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4142, - 4143 + 4154, + 4155 ] }, { - "teal": 4406, + "teal": 4420, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4144 + 4156 ] }, { - "teal": 4407, + "teal": 4421, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4145 + 4157 ] }, { - "teal": 4408, + "teal": 4422, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4146, - 4147 + 4158, + 4159 ] }, { - "teal": 4409, + "teal": 4423, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4148 + 4160 ] }, { - "teal": 4410, + "teal": 4424, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4149 + 4161 ] }, { - "teal": 4411, + "teal": 4425, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4150, - 4151 + 4162, + 4163 ] }, { - "teal": 4412, + "teal": 4426, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4152 + 4164 ] }, { - "teal": 4415, + "teal": 4429, "source": "examples/reti/validatorRegistry.algo.ts:1191", "errorMessage": "global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')", "pc": [ - 4153 + 4165 ] }, { - "teal": 4416, + "teal": 4430, "source": "examples/reti/validatorRegistry.algo.ts:1191", "pc": [ - 4154, - 4155 + 4166, + 4167 ] }, { - "teal": 4421, + "teal": 4435, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4156 + 4168 ] }, { - "teal": 4422, + "teal": 4436, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4157, - 4158 + 4169, + 4170 ] }, { - "teal": 4423, + "teal": 4437, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4159 + 4171 ] }, { - "teal": 4424, + "teal": 4438, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4160, - 4161 + 4172, + 4173 ] }, { - "teal": 4425, + "teal": 4439, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4162 + 4174 ] }, { - "teal": 4426, + "teal": 4440, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4163 + 4175 ] }, { - "teal": 4427, + "teal": 4441, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4164, - 4165 + 4176, + 4177 ] }, { - "teal": 4428, + "teal": 4442, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4166 + 4178 ] }, { - "teal": 4429, + "teal": 4443, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4167, - 4168 + 4179, + 4180 ] }, { - "teal": 4430, + "teal": 4444, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4169 + 4181 ] }, { - "teal": 4431, + "teal": 4445, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4170 + 4182 ] }, { - "teal": 4432, + "teal": 4446, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4171, - 4172, - 4173 + 4183, + 4184, + 4185 ] }, { - "teal": 4433, + "teal": 4447, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4174, - 4175 + 4186, + 4187 ] }, { - "teal": 4434, + "teal": 4448, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4176, - 4177 + 4188, + 4189 ] }, { - "teal": 4435, + "teal": 4449, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4178 + 4190 ] }, { - "teal": 4436, + "teal": 4450, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4179, - 4180 + 4191, + 4192 ] }, { - "teal": 4437, + "teal": 4451, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4181 + 4193 ] }, { - "teal": 4438, + "teal": 4452, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4182 + 4194 ] }, { - "teal": 4439, + "teal": 4453, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4183, - 4184 + 4195, + 4196 ] }, { - "teal": 4440, + "teal": 4454, "source": "examples/reti/validatorRegistry.algo.ts:1187", "pc": [ - 4185 + 4197 ] }, { - "teal": 4441, + "teal": 4455, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4186, - 4187 + 4198, + 4199 ] }, { - "teal": 4442, + "teal": 4456, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4188 + 4200 ] }, { - "teal": 4443, + "teal": 4457, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4189 + 4201 ] }, { - "teal": 4446, + "teal": 4460, "source": "examples/reti/validatorRegistry.algo.ts:1193", "pc": [ - 4190, - 4191, - 4192 + 4202, + 4203, + 4204 ] }, { - "teal": 4451, + "teal": 4465, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4193, - 4194 + 4205, + 4206 ] }, { - "teal": 4452, + "teal": 4466, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4195, - 4196 + 4207, + 4208 ] }, { - "teal": 4453, + "teal": 4467, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4197 + 4209 ] }, { - "teal": 4454, + "teal": 4468, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4198, - 4199 + 4210, + 4211 ] }, { - "teal": 4455, + "teal": 4469, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4200 + 4212 ] }, { - "teal": 4456, + "teal": 4470, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4201 + 4213 ] }, { - "teal": 4457, + "teal": 4471, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4202, - 4203 + 4214, + 4215 ] }, { - "teal": 4458, + "teal": 4472, "source": "examples/reti/validatorRegistry.algo.ts:1195", "pc": [ - 4204 + 4216 ] }, { - "teal": 4463, + "teal": 4477, "source": "examples/reti/validatorRegistry.algo.ts:1186", "pc": [ - 4205 + 4217 ] }, { - "teal": 4467, + "teal": 4481, "source": "examples/reti/validatorRegistry.algo.ts:1200", "pc": [ - 4206, - 4207, - 4208 + 4218, + 4219, + 4220 ] }, { - "teal": 4474, + "teal": 4488, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4209, - 4210 - ] + 4221, + 4222 + ] }, { - "teal": 4475, + "teal": 4489, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4211, - 4212, - 4213 + 4223, + 4224, + 4225 ] }, { - "teal": 4476, + "teal": 4490, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4214 + 4226 ] }, { - "teal": 4477, + "teal": 4491, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4215 + 4227 ] }, { - "teal": 4478, + "teal": 4492, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4216 + 4228 ] }, { - "teal": 4479, + "teal": 4493, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4217 + 4229 ] }, { - "teal": 4480, + "teal": 4494, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4218, - 4219, - 4220 + 4230, + 4231, + 4232 ] }, { - "teal": 4481, + "teal": 4495, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4221, - 4222 + 4233, + 4234 ] }, { - "teal": 4482, + "teal": 4496, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4223, - 4224, - 4225 + 4235, + 4236, + 4237 ] }, { - "teal": 4483, + "teal": 4497, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4226 + 4238 ] }, { - "teal": 4484, + "teal": 4498, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4227, - 4228 + 4239, + 4240 ] }, { - "teal": 4485, + "teal": 4499, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4229 + 4241 ] }, { - "teal": 4486, + "teal": 4500, "source": "examples/reti/validatorRegistry.algo.ts:1203", "pc": [ - 4230 + 4242 ] }, { - "teal": 4490, + "teal": 4504, "source": "examples/reti/validatorRegistry.algo.ts:1202", "errorMessage": "gating type not valid", "pc": [ - 4231 + 4243 ] }, { - "teal": 4497, + "teal": 4511, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4232, - 4233 + 4244, + 4245 ] }, { - "teal": 4498, + "teal": 4512, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4234, - 4235, - 4236 + 4246, + 4247, + 4248 ] }, { - "teal": 4499, + "teal": 4513, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4237 + 4249 ] }, { - "teal": 4500, + "teal": 4514, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4238 + 4250 ] }, { - "teal": 4501, + "teal": 4515, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4239 + 4251 ] }, { - "teal": 4502, + "teal": 4516, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4240 + 4252 ] }, { - "teal": 4503, + "teal": 4517, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4241, - 4242, - 4243 + 4253, + 4254, + 4255 ] }, { - "teal": 4504, + "teal": 4518, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4244, - 4245 + 4256, + 4257 ] }, { - "teal": 4505, + "teal": 4519, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4246, - 4247, - 4248 + 4258, + 4259, + 4260 ] }, { - "teal": 4506, + "teal": 4520, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4249 + 4261 ] }, { - "teal": 4507, + "teal": 4521, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4250, - 4251 + 4262, + 4263 ] }, { - "teal": 4508, + "teal": 4522, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4252 + 4264 ] }, { - "teal": 4509, + "teal": 4523, "source": "examples/reti/validatorRegistry.algo.ts:1207", "pc": [ - 4253 + 4265 ] }, { - "teal": 4513, + "teal": 4527, "source": "examples/reti/validatorRegistry.algo.ts:1206", "errorMessage": "epoch length not in allowable range", "pc": [ - 4254 + 4266 ] }, { - "teal": 4520, + "teal": 4534, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4255, - 4256 + 4267, + 4268 ] }, { - "teal": 4521, + "teal": 4535, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4257, - 4258, - 4259 + 4269, + 4270, + 4271 ] }, { - "teal": 4522, + "teal": 4536, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4260 + 4272 ] }, { - "teal": 4523, + "teal": 4537, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4261 + 4273 ] }, { - "teal": 4524, + "teal": 4538, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4262 + 4274 ] }, { - "teal": 4525, + "teal": 4539, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4263 + 4275 ] }, { - "teal": 4526, + "teal": 4540, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4264, - 4265, - 4266 + 4276, + 4277, + 4278 ] }, { - "teal": 4527, + "teal": 4541, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4267, - 4268 + 4279, + 4280 ] }, { - "teal": 4528, + "teal": 4542, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4269, - 4270, - 4271 + 4281, + 4282, + 4283 ] }, { - "teal": 4529, + "teal": 4543, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4272 + 4284 ] }, { - "teal": 4530, + "teal": 4544, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4273, - 4274 + 4285, + 4286 ] }, { - "teal": 4531, + "teal": 4545, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4275 + 4287 ] }, { - "teal": 4532, + "teal": 4546, "source": "examples/reti/validatorRegistry.algo.ts:1211", "pc": [ - 4276 + 4288 ] }, { - "teal": 4536, + "teal": 4550, "source": "examples/reti/validatorRegistry.algo.ts:1210", "errorMessage": "commission percentage not valid", "pc": [ - 4277 + 4289 ] }, { - "teal": 4541, + "teal": 4555, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4278, - 4279 + 4290, + 4291 ] }, { - "teal": 4542, + "teal": 4556, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4280, - 4281, - 4282 + 4292, + 4293, + 4294 ] }, { - "teal": 4543, + "teal": 4557, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4283 + 4295 ] }, { - "teal": 4544, + "teal": 4558, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4284 + 4296 ] }, { - "teal": 4545, + "teal": 4559, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4285 + 4297 ] }, { - "teal": 4546, + "teal": 4560, "source": "examples/reti/validatorRegistry.algo.ts:1214", "pc": [ - 4286, - 4287, - 4288 + 4298, + 4299, + 4300 ] }, { - "teal": 4554, + "teal": 4568, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4289, - 4290 + 4301, + 4302 ] }, { - "teal": 4555, + "teal": 4569, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4291, - 4292, - 4293 + 4303, + 4304, + 4305 ] }, { - "teal": 4556, + "teal": 4570, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4294, - 4295 + 4306, + 4307 ] }, { - "teal": 4557, + "teal": 4571, "source": "examples/reti/validatorRegistry.algo.ts:1216", "pc": [ - 4296 + 4308 ] }, { - "teal": 4560, + "teal": 4574, "source": "examples/reti/validatorRegistry.algo.ts:1215", "errorMessage": "validatorCommissionAddress must be set if percent to validator is not 0", "pc": [ - 4297 + 4309 ] }, { - "teal": 4565, + "teal": 4579, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4298, - 4299 + 4310, + 4311 ] }, { - "teal": 4566, + "teal": 4580, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4300, - 4301, - 4302 + 4312, + 4313, + 4314 ] }, { - "teal": 4567, + "teal": 4581, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4303 + 4315 ] }, { - "teal": 4568, + "teal": 4582, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4304, - 4305 + 4316, + 4317 ] }, { - "teal": 4569, + "teal": 4583, "source": "examples/reti/validatorRegistry.algo.ts:1220", "pc": [ - 4306 + 4318 ] }, { - "teal": 4572, + "teal": 4586, "source": "examples/reti/validatorRegistry.algo.ts:1220", "errorMessage": "staking pool must have minimum entry of 1 algo", "pc": [ - 4307 + 4319 ] }, { - "teal": 4579, + "teal": 4593, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4308, - 4309 + 4320, + 4321 ] }, { - "teal": 4580, + "teal": 4594, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4310, - 4311, - 4312 + 4322, + 4323, + 4324 ] }, { - "teal": 4581, + "teal": 4595, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4313 + 4325 ] }, { - "teal": 4582, + "teal": 4596, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4314 + 4326 ] }, { - "teal": 4583, + "teal": 4597, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4315 + 4327 ] }, { - "teal": 4584, + "teal": 4598, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4316 + 4328 ] }, { - "teal": 4585, + "teal": 4599, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4317, - 4318, - 4319 + 4329, + 4330, + 4331 ] }, { - "teal": 4586, + "teal": 4600, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4320, - 4321 + 4332, + 4333 ] }, { - "teal": 4587, + "teal": 4601, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4322, - 4323, - 4324 + 4334, + 4335, + 4336 ] }, { - "teal": 4588, + "teal": 4602, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4325 + 4337 ] }, { - "teal": 4589, + "teal": 4603, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4326, - 4327 + 4338, + 4339 ] }, { - "teal": 4590, + "teal": 4604, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4328 + 4340 ] }, { - "teal": 4591, + "teal": 4605, "source": "examples/reti/validatorRegistry.algo.ts:1223", "pc": [ - 4329 + 4341 ] }, { - "teal": 4595, + "teal": 4609, "source": "examples/reti/validatorRegistry.algo.ts:1222", "errorMessage": "number of pools per node exceeds allowed number", "pc": [ - 4330 + 4342 ] }, { - "teal": 4600, + "teal": 4614, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4331, - 4332 + 4343, + 4344 ] }, { - "teal": 4601, + "teal": 4615, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4333, - 4334, - 4335 + 4345, + 4346, + 4347 ] }, { - "teal": 4602, + "teal": 4616, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4336 + 4348 ] }, { - "teal": 4603, + "teal": 4617, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4337 + 4349 ] }, { - "teal": 4604, + "teal": 4618, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4338 + 4350 ] }, { - "teal": 4605, + "teal": 4619, "source": "examples/reti/validatorRegistry.algo.ts:1226", "pc": [ - 4339, - 4340, - 4341 + 4351, + 4352, + 4353 ] }, { - "teal": 4610, + "teal": 4624, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4342, - 4343 + 4354, + 4355 ] }, { - "teal": 4611, + "teal": 4625, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4344, - 4345, - 4346 + 4356, + 4357, + 4358 ] }, { - "teal": 4612, + "teal": 4626, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4347 + 4359 ] }, { - "teal": 4613, + "teal": 4627, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4348, - 4349 + 4360, + 4361 ] }, { - "teal": 4614, + "teal": 4628, "source": "examples/reti/validatorRegistry.algo.ts:1227", "pc": [ - 4350 + 4362 ] }, { - "teal": 4617, + "teal": 4631, "source": "examples/reti/validatorRegistry.algo.ts:1227", "errorMessage": "sunsettingOn must be later than now if set", "pc": [ - 4351 + 4363 ] }, { - "teal": 4620, + "teal": 4634, "source": "examples/reti/validatorRegistry.algo.ts:1200", "pc": [ - 4352 + 4364 ] }, { - "teal": 4634, + "teal": 4648, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4353, - 4354, - 4355 + 4365, + 4366, + 4367 ] }, { - "teal": 4637, + "teal": 4651, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4356 + 4368 ] }, { - "teal": 4638, + "teal": 4652, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4357, - 4358 + 4369, + 4370 ] }, { - "teal": 4642, + "teal": 4656, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4359, - 4360 + 4371, + 4372 ] }, { - "teal": 4643, + "teal": 4657, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4361, - 4362 + 4373, + 4374 ] }, { - "teal": 4644, + "teal": 4658, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4363, - 4364, - 4365 + 4375, + 4376, + 4377 ] }, { - "teal": 4645, + "teal": 4659, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4366 + 4378 ] }, { - "teal": 4646, + "teal": 4660, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4367 + 4379 ] }, { - "teal": 4647, + "teal": 4661, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4368 + 4380 ] }, { - "teal": 4648, + "teal": 4662, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4369, - 4370 + 4381, + 4382 ] }, { - "teal": 4649, + "teal": 4663, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4371 + 4383 ] }, { - "teal": 4650, + "teal": 4664, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4372 + 4384 ] }, { - "teal": 4651, + "teal": 4665, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4373 + 4385 ] }, { - "teal": 4652, + "teal": 4666, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4374 + 4386 ] }, { - "teal": 4653, + "teal": 4667, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4375 + 4387 ] }, { - "teal": 4654, + "teal": 4668, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4376 + 4388 ] }, { - "teal": 4655, + "teal": 4669, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4377, - 4378 + 4389, + 4390 ] }, { - "teal": 4656, + "teal": 4670, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4379, - 4380, - 4381 + 4391, + 4392, + 4393 ] }, { - "teal": 4657, + "teal": 4671, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4382 + 4394 ] }, { - "teal": 4658, + "teal": 4672, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4383 + 4395 ] }, { - "teal": 4659, + "teal": 4673, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4384 + 4396 ] }, { - "teal": 4660, + "teal": 4674, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4385, - 4386 + 4397, + 4398 ] }, { - "teal": 4661, + "teal": 4675, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4387 + 4399 ] }, { - "teal": 4662, + "teal": 4676, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4388 + 4400 ] }, { - "teal": 4663, + "teal": 4677, "source": "examples/reti/validatorRegistry.algo.ts:1249", "pc": [ - 4389, - 4390 + 4401, + 4402 ] }, { - "teal": 4676, + "teal": 4690, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4391 + 4403 ] }, { - "teal": 4677, + "teal": 4691, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4392 + 4404 ] }, { - "teal": 4678, + "teal": 4692, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4393, - 4394 + 4405, + 4406 ] }, { - "teal": 4682, + "teal": 4696, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4395, - 4396 + 4407, + 4408 ] }, { - "teal": 4683, + "teal": 4697, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4397, - 4398 + 4409, + 4410 ] }, { - "teal": 4684, + "teal": 4698, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4399, - 4400 + 4411, + 4412 ] }, { - "teal": 4685, + "teal": 4699, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4401 + 4413 ] }, { - "teal": 4686, + "teal": 4700, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4402, - 4403 + 4414, + 4415 ] }, { - "teal": 4690, + "teal": 4704, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4404, - 4405 + 4416, + 4417 ] }, { - "teal": 4691, + "teal": 4705, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4406, - 4407 + 4418, + 4419 ] }, { - "teal": 4692, + "teal": 4706, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4408 + 4420 ] }, { - "teal": 4693, + "teal": 4707, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4409, - 4410 + 4421, + 4422 ] }, { - "teal": 4696, + "teal": 4710, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4411 + 4423 ] }, { - "teal": 4697, + "teal": 4711, "source": "examples/reti/validatorRegistry.algo.ts:1258", "pc": [ - 4412, - 4413 + 4424, + 4425 ] }, { - "teal": 4698, + "teal": 4712, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4414 + 4426 ] }, { - "teal": 4699, + "teal": 4713, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4415, - 4416 + 4427, + 4428 ] }, { - "teal": 4700, + "teal": 4714, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4417, - 4418 + 4429, + 4430 ] }, { - "teal": 4701, + "teal": 4715, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4419, - 4420, - 4421, - 4422, - 4423, - 4424 + 4431, + 4432, + 4433, + 4434, + 4435, + 4436 ] }, { - "teal": 4702, + "teal": 4716, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4425, - 4426 + 4437, + 4438 ] }, { - "teal": 4706, + "teal": 4720, "source": "examples/reti/validatorRegistry.algo.ts:1254", "pc": [ - 4427, - 4428 + 4439, + 4440 ] }, { - "teal": 4707, + "teal": 4721, "source": "examples/reti/validatorRegistry.algo.ts:1254", "pc": [ - 4429, - 4430 + 4441, + 4442 ] }, { - "teal": 4717, + "teal": 4731, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4431, - 4432 + 4443, + 4444 ] }, { - "teal": 4718, + "teal": 4732, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4433, - 4434 + 4445, + 4446 ] }, { - "teal": 4719, + "teal": 4733, "source": "examples/reti/validatorRegistry.algo.ts:1260", "pc": [ - 4435, - 4436 + 4447, + 4448 ] }, { - "teal": 4722, + "teal": 4736, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4437 + 4449 ] }, { - "teal": 4723, + "teal": 4737, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4438, - 4439 + 4450, + 4451 ] }, { - "teal": 4726, + "teal": 4740, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4440 + 4452 ] }, { - "teal": 4727, + "teal": 4741, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4441, - 4442 + 4453, + 4454 ] }, { - "teal": 4728, + "teal": 4742, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4443 + 4455 ] }, { - "teal": 4729, + "teal": 4743, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4444 + 4456 ] }, { - "teal": 4730, + "teal": 4744, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4445, - 4446 + 4457, + 4458 ] }, { - "teal": 4731, + "teal": 4745, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4447, - 4448, - 4449 + 4459, + 4460, + 4461 ] }, { - "teal": 4732, + "teal": 4746, "source": "examples/reti/validatorRegistry.algo.ts:1253", "pc": [ - 4450 + 4462 ] }, { - "teal": 4737, + "teal": 4751, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4451, - 4452 + 4463, + 4464 ] }, { - "teal": 4738, + "teal": 4752, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4453, - 4454, - 4455 + 4465, + 4466, + 4467 ] }, { - "teal": 4739, + "teal": 4753, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4456 + 4468 ] }, { - "teal": 4740, + "teal": 4754, "source": "examples/reti/validatorRegistry.algo.ts:1263", "pc": [ - 4457, - 4458, - 4459 + 4469, + 4470, + 4471 ] }, { - "teal": 4745, + "teal": 4759, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4460 + 4472 ] }, { - "teal": 4746, + "teal": 4760, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4461, - 4462 + 4473, + 4474 ] }, { - "teal": 4747, + "teal": 4761, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4463, - 4464 + 4475, + 4476 ] }, { - "teal": 4748, + "teal": 4762, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4465 + 4477 ] }, { - "teal": 4749, + "teal": 4763, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4466, - 4467 + 4478, + 4479 ] }, { - "teal": 4750, + "teal": 4764, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4468, - 4469 + 4480, + 4481 ] }, { - "teal": 4751, + "teal": 4765, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4470 + 4482 ] }, { - "teal": 4752, + "teal": 4766, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4471, - 4472 + 4483, + 4484 ] }, { - "teal": 4753, + "teal": 4767, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4473, - 4474 + 4485, + 4486 ] }, { - "teal": 4754, + "teal": 4768, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4475, - 4476 + 4487, + 4488 ] }, { - "teal": 4755, + "teal": 4769, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4477, - 4478 + 4489, + 4490 ] }, { - "teal": 4756, + "teal": 4770, "source": "examples/reti/validatorRegistry.algo.ts:1264", "pc": [ - 4479 + 4491 ] }, { - "teal": 4761, + "teal": 4775, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4480, - 4481 + 4492, + 4493 ] }, { - "teal": 4762, + "teal": 4776, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4482, - 4483 + 4494, + 4495 ] }, { - "teal": 4763, + "teal": 4777, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4484 + 4496 ] }, { - "teal": 4766, + "teal": 4780, "source": "examples/reti/validatorRegistry.algo.ts:1268", "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')", "pc": [ - 4485 + 4497 ] }, { - "teal": 4767, + "teal": 4781, "source": "examples/reti/validatorRegistry.algo.ts:1268", "pc": [ - 4486, - 4487 + 4498, + 4499 ] }, { - "teal": 4771, + "teal": 4785, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4488, - 4489 + 4500, + 4501 ] }, { - "teal": 4772, + "teal": 4786, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4490, - 4491 + 4502, + 4503 ] }, { - "teal": 4773, + "teal": 4787, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4492 + 4504 ] }, { - "teal": 4776, + "teal": 4790, "source": "examples/reti/validatorRegistry.algo.ts:1269", "errorMessage": "global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')", "pc": [ - 4493 + 4505 ] }, { - "teal": 4777, + "teal": 4791, "source": "examples/reti/validatorRegistry.algo.ts:1269", "pc": [ - 4494, - 4495 + 4506, + 4507 ] }, { - "teal": 4781, + "teal": 4795, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4496, - 4497 + 4508, + 4509 ] }, { - "teal": 4782, + "teal": 4796, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4498, - 4499 + 4510, + 4511 ] }, { - "teal": 4783, + "teal": 4797, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4500, - 4501, - 4502 + 4512, + 4513, + 4514 ] }, { - "teal": 4784, + "teal": 4798, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4503 + 4515 ] }, { - "teal": 4785, + "teal": 4799, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4504 + 4516 ] }, { - "teal": 4786, + "teal": 4800, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4505 + 4517 ] }, { - "teal": 4787, + "teal": 4801, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4506, - 4507 + 4518, + 4519 ] }, { - "teal": 4788, + "teal": 4802, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4508 + 4520 ] }, { - "teal": 4789, + "teal": 4803, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4509 + 4521 ] }, { - "teal": 4790, + "teal": 4804, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4510 + 4522 ] }, { - "teal": 4791, + "teal": 4805, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4511 + 4523 ] }, { - "teal": 4792, + "teal": 4806, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4512, - 4513 + 4524, + 4525 ] }, { - "teal": 4793, + "teal": 4807, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4514 + 4526 ] }, { - "teal": 4794, + "teal": 4808, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4515, - 4516, - 4517 + 4527 ] }, { - "teal": 4795, + "teal": 4809, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4518 + 4528 ] }, { - "teal": 4796, + "teal": 4810, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4519, - 4520 + 4529, + 4530 ] }, { - "teal": 4797, + "teal": 4811, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4521, - 4522, - 4523 + 4531 ] }, { - "teal": 4798, + "teal": 4814, "source": "examples/reti/validatorRegistry.algo.ts:1270", + "errorMessage": "this.validatorList(poolKey.id).value.pools[poolKey.poolId - 1].totalStakers overflowed 16 bits", "pc": [ - 4524 + 4532 ] }, { - "teal": 4799, + "teal": 4815, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4525 + 4533, + 4534, + 4535 ] }, { - "teal": 4800, + "teal": 4816, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4526 + 4536 ] }, { - "teal": 4801, + "teal": 4817, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4527, - 4528 + 4537, + 4538 ] }, { - "teal": 4802, + "teal": 4818, "source": "examples/reti/validatorRegistry.algo.ts:1270", "pc": [ - 4529 + 4539, + 4540, + 4541 ] }, { - "teal": 4806, + "teal": 4819, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4542 + ] + }, + { + "teal": 4820, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4543 + ] + }, + { + "teal": 4821, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4544 + ] + }, + { + "teal": 4822, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4545, + 4546 + ] + }, + { + "teal": 4823, + "source": "examples/reti/validatorRegistry.algo.ts:1270", + "pc": [ + 4547 + ] + }, + { + "teal": 4827, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4530, - 4531 + 4548, + 4549 ] }, { - "teal": 4807, + "teal": 4828, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4532, - 4533 + 4550, + 4551 ] }, { - "teal": 4808, + "teal": 4829, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4534, - 4535, - 4536 + 4552, + 4553, + 4554 ] }, { - "teal": 4809, + "teal": 4830, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4537 + 4555 ] }, { - "teal": 4810, + "teal": 4831, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4538 + 4556 ] }, { - "teal": 4811, + "teal": 4832, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4539 + 4557 ] }, { - "teal": 4812, + "teal": 4833, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4540, - 4541 + 4558, + 4559 ] }, { - "teal": 4813, + "teal": 4834, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4542 + 4560 ] }, { - "teal": 4814, + "teal": 4835, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4543 + 4561 ] }, { - "teal": 4815, + "teal": 4836, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4544, - 4545 + 4562, + 4563 ] }, { - "teal": 4816, + "teal": 4837, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4546 + 4564 ] }, { - "teal": 4817, + "teal": 4838, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4547, - 4548 + 4565, + 4566 ] }, { - "teal": 4818, + "teal": 4839, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4549 + 4567 ] }, { - "teal": 4819, + "teal": 4840, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4550 + 4568 ] }, { - "teal": 4820, + "teal": 4841, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4551, - 4552 + 4569, + 4570 ] }, { - "teal": 4821, + "teal": 4842, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4553, - 4554, - 4555 + 4571, + 4572, + 4573 ] }, { - "teal": 4822, + "teal": 4843, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4556 + 4574 ] }, { - "teal": 4823, + "teal": 4844, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4557 + 4575 ] }, { - "teal": 4824, + "teal": 4845, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4558 + 4576 ] }, { - "teal": 4825, + "teal": 4846, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4559, - 4560 + 4577, + 4578 ] }, { - "teal": 4826, + "teal": 4847, "source": "examples/reti/validatorRegistry.algo.ts:1271", "pc": [ - 4561 + 4579 ] }, { - "teal": 4831, + "teal": 4852, "source": "examples/reti/validatorRegistry.algo.ts:1274", "pc": [ - 4562, - 4563 + 4580, + 4581 ] }, { - "teal": 4832, + "teal": 4853, "source": "examples/reti/validatorRegistry.algo.ts:1274", "pc": [ - 4564, - 4565, - 4566 + 4582, + 4583, + 4584 ] }, { - "teal": 4837, + "teal": 4858, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4567, - 4568 + 4585, + 4586 ] }, { - "teal": 4838, + "teal": 4859, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4569 + 4587 ] }, { - "teal": 4839, + "teal": 4860, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4570 + 4588 ] }, { - "teal": 4840, + "teal": 4861, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4571 + 4589 ] }, { - "teal": 4841, + "teal": 4862, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4572, - 4573 + 4590, + 4591 ] }, { - "teal": 4842, + "teal": 4863, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4574, - 4575, - 4576 + 4592, + 4593, + 4594 ] }, { - "teal": 4843, + "teal": 4864, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4577 + 4595 ] }, { - "teal": 4844, + "teal": 4865, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4578 + 4596 ] }, { - "teal": 4845, + "teal": 4866, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4579 + 4597 ] }, { - "teal": 4846, + "teal": 4867, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4580, - 4581 + 4598, + 4599 ] }, { - "teal": 4847, + "teal": 4868, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4582 + 4600 ] }, { - "teal": 4848, + "teal": 4869, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4583 + 4601 ] }, { - "teal": 4849, + "teal": 4870, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4584 + 4602 ] }, { - "teal": 4850, + "teal": 4871, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4585 + 4603 ] }, { - "teal": 4851, + "teal": 4872, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4586 + 4604 ] }, { - "teal": 4852, + "teal": 4873, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4587 + 4605 ] }, { - "teal": 4853, + "teal": 4874, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4588, - 4589 + 4606, + 4607 ] }, { - "teal": 4854, + "teal": 4875, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4590, - 4591, - 4592 + 4608, + 4609, + 4610 ] }, { - "teal": 4855, + "teal": 4876, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4593 + 4611 ] }, { - "teal": 4856, + "teal": 4877, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4594 + 4612 ] }, { - "teal": 4857, + "teal": 4878, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4595 + 4613 ] }, { - "teal": 4858, + "teal": 4879, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4596, - 4597 + 4614, + 4615 ] }, { - "teal": 4859, + "teal": 4880, "source": "examples/reti/validatorRegistry.algo.ts:1275", "pc": [ - 4598 + 4616 ] }, { - "teal": 4865, + "teal": 4886, "source": "examples/reti/validatorRegistry.algo.ts:1277", "pc": [ - 4599, - 4600 + 4617, + 4618 ] }, { - "teal": 4866, + "teal": 4887, "source": "examples/reti/validatorRegistry.algo.ts:1277", "pc": [ - 4601, - 4602, - 4603 + 4619, + 4620, + 4621 ] }, { - "teal": 4871, + "teal": 4892, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4604, - 4605 + 4622, + 4623 ] }, { - "teal": 4872, + "teal": 4893, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4606 + 4624 ] }, { - "teal": 4873, + "teal": 4894, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4607 + 4625 ] }, { - "teal": 4874, + "teal": 4895, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4608 + 4626 ] }, { - "teal": 4875, + "teal": 4896, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4609, - 4610 + 4627, + 4628 ] }, { - "teal": 4876, + "teal": 4897, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4611 + 4629 ] }, { - "teal": 4877, + "teal": 4898, "source": "examples/reti/validatorRegistry.algo.ts:1278", "pc": [ - 4612 + 4630 ] }, { - "teal": 4882, + "teal": 4903, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4613, - 4614 + 4631, + 4632 ] }, { - "teal": 4883, + "teal": 4904, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4615 + 4633 ] }, { - "teal": 4884, + "teal": 4905, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4616 + 4634 ] }, { - "teal": 4885, + "teal": 4906, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4617 + 4635 ] }, { - "teal": 4886, + "teal": 4907, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4618, - 4619 + 4636, + 4637 ] }, { - "teal": 4887, + "teal": 4908, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4620, - 4621, - 4622 + 4638, + 4639, + 4640 ] }, { - "teal": 4888, + "teal": 4909, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4623 + 4641 ] }, { - "teal": 4889, + "teal": 4910, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4624 + 4642 ] }, { - "teal": 4890, + "teal": 4911, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4625 + 4643 ] }, { - "teal": 4891, + "teal": 4912, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4626, - 4627 + 4644, + 4645 ] }, { - "teal": 4892, + "teal": 4913, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4628 + 4646 ] }, { - "teal": 4893, + "teal": 4914, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4629 + 4647 ] }, { - "teal": 4894, + "teal": 4915, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4630, - 4631 + 4648, + 4649 ] }, { - "teal": 4895, + "teal": 4916, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4632, - 4633 + 4650, + 4651 ] }, { - "teal": 4896, + "teal": 4917, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4634, - 4635 + 4652, + 4653 ] }, { - "teal": 4897, + "teal": 4918, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4636 + 4654 ] }, { - "teal": 4898, + "teal": 4919, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4637 + 4655 ] }, { - "teal": 4899, + "teal": 4920, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4638 + 4656 ] }, { - "teal": 4900, + "teal": 4921, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4639 + 4657 ] }, { - "teal": 4901, + "teal": 4922, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4640, - 4641 + 4658, + 4659 ] }, { - "teal": 4902, + "teal": 4923, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4642, - 4643, - 4644 + 4660, + 4661, + 4662 ] }, { - "teal": 4903, + "teal": 4924, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4645 + 4663 ] }, { - "teal": 4904, + "teal": 4925, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4646 + 4664 ] }, { - "teal": 4905, + "teal": 4926, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4647 + 4665 ] }, { - "teal": 4906, + "teal": 4927, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4648, - 4649 + 4666, + 4667 ] }, { - "teal": 4907, + "teal": 4928, "source": "examples/reti/validatorRegistry.algo.ts:1280", "pc": [ - 4650 + 4668 ] }, { - "teal": 4911, + "teal": 4932, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4651, - 4652 + 4669, + 4670 ] }, { - "teal": 4912, + "teal": 4933, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4653 + 4671 ] }, { - "teal": 4913, + "teal": 4934, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4654, - 4655 + 4672, + 4673 ] }, { - "teal": 4914, + "teal": 4935, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4656, - 4657 + 4674, + 4675 ] }, { - "teal": 4915, + "teal": 4936, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4658, - 4659 + 4676, + 4677 ] }, { - "teal": 4916, + "teal": 4937, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4660 + 4678 ] }, { - "teal": 4917, + "teal": 4938, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4661 + 4679 ] }, { - "teal": 4918, + "teal": 4939, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4662, - 4663 + 4680, + 4681 ] }, { - "teal": 4919, + "teal": 4940, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4664 + 4682 ] }, { - "teal": 4920, + "teal": 4941, "source": "examples/reti/validatorRegistry.algo.ts:1281", "pc": [ - 4665 + 4683 ] }, { - "teal": 4921, + "teal": 4942, "source": "examples/reti/validatorRegistry.algo.ts:1242", "pc": [ - 4666 + 4684 ] }, { - "teal": 4925, + "teal": 4946, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4667, - 4668, - 4669 + 4685, + 4686, + 4687 ] }, { - "teal": 4928, + "teal": 4949, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4670 + 4688 ] }, { - "teal": 4929, + "teal": 4950, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4671, - 4672 + 4689, + 4690 ] }, { - "teal": 4933, + "teal": 4954, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4673 + 4691 ] }, { - "teal": 4934, + "teal": 4955, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4674, - 4675 + 4692, + 4693 ] }, { - "teal": 4935, + "teal": 4956, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4676 + 4694 ] }, { - "teal": 4936, + "teal": 4957, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4677 + 4695 ] }, { - "teal": 4937, + "teal": 4958, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4678 + 4696 ] }, { - "teal": 4938, + "teal": 4959, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4679 + 4697 ] }, { - "teal": 4939, + "teal": 4960, "source": "examples/reti/validatorRegistry.algo.ts:1285", "pc": [ - 4680 + 4698 ] }, { - "teal": 4943, + "teal": 4964, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4681 + 4699 ] }, { - "teal": 4944, + "teal": 4965, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4682, - 4683 + 4700, + 4701 ] }, { - "teal": 4945, + "teal": 4966, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4684 + 4702 ] }, { - "teal": 4946, + "teal": 4967, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4685 + 4703 ] }, { - "teal": 4949, + "teal": 4970, "source": "examples/reti/validatorRegistry.algo.ts:1287", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 4686 + 4704 ] }, { - "teal": 4950, + "teal": 4971, "source": "examples/reti/validatorRegistry.algo.ts:1287", "pc": [ - 4687, - 4688 + 4705, + 4706 ] }, { - "teal": 4954, + "teal": 4975, "source": "examples/reti/validatorRegistry.algo.ts:1288", "pc": [ - 4689 + 4707 ] }, { - "teal": 4955, + "teal": 4976, "source": "examples/reti/validatorRegistry.algo.ts:1288", "pc": [ - 4690, - 4691 + 4708, + 4709 ] }, { - "teal": 4959, + "teal": 4980, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4692 + 4710 ] }, { - "teal": 4960, + "teal": 4981, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4693, - 4694 + 4711, + 4712 ] }, { - "teal": 4965, + "teal": 4986, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4695, - 4696 + 4713, + 4714 ] }, { - "teal": 4966, + "teal": 4987, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4697, - 4698 + 4715, + 4716 ] }, { - "teal": 4967, + "teal": 4988, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4699 + 4717 ] }, { - "teal": 4968, + "teal": 4989, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4700, - 4701, - 4702 + 4718, + 4719, + 4720 ] }, { - "teal": 4973, + "teal": 4994, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4703, - 4704 + 4721, + 4722 ] }, { - "teal": 4974, + "teal": 4995, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4705, - 4706 + 4723, + 4724 ] }, { - "teal": 4975, + "teal": 4996, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4707 + 4725 ] }, { - "teal": 4976, + "teal": 4997, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4708 + 4726 ] }, { - "teal": 4977, + "teal": 4998, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4709 + 4727 ] }, { - "teal": 4978, + "teal": 4999, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4710 + 4728 ] }, { - "teal": 4979, + "teal": 5000, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4711, - 4712 + 4729, + 4730 ] }, { - "teal": 4980, + "teal": 5001, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4713 + 4731 ] }, { - "teal": 4981, + "teal": 5002, "source": "examples/reti/validatorRegistry.algo.ts:1290", "pc": [ - 4714, - 4715, - 4716 + 4732, + 4733, + 4734 ] }, { - "teal": 4986, + "teal": 5007, "source": "examples/reti/validatorRegistry.algo.ts:1292", "pc": [ - 4717 + 4735 ] }, { - "teal": 4992, + "teal": 5013, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4718, - 4719 + 4736, + 4737 ] }, { - "teal": 4993, + "teal": 5014, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4720 + 4738 ] }, { - "teal": 4994, + "teal": 5015, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4721 + 4739 ] }, { - "teal": 4995, + "teal": 5016, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4722 + 4740 ] }, { - "teal": 4996, + "teal": 5017, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4723, - 4724, - 4725 + 4741, + 4742, + 4743 ] }, { - "teal": 4997, + "teal": 5018, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4726, - 4727 + 4744, + 4745 ] }, { - "teal": 4998, + "teal": 5019, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4728, - 4729 + 4746, + 4747 ] }, { - "teal": 4999, + "teal": 5020, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4730 + 4748 ] }, { - "teal": 5000, + "teal": 5021, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4731 + 4749 ] }, { - "teal": 5001, + "teal": 5022, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4732 + 4750 ] }, { - "teal": 5002, + "teal": 5023, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4733 + 4751 ] }, { - "teal": 5003, + "teal": 5024, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4734 + 4752 ] }, { - "teal": 5004, + "teal": 5025, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4735 + 4753 ] }, { - "teal": 5005, + "teal": 5026, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4736 + 4754 ] }, { - "teal": 5006, + "teal": 5027, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4737 + 4755 ] }, { - "teal": 5007, + "teal": 5028, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4738 + 4756 ] }, { - "teal": 5008, + "teal": 5029, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4739 + 4757 ] }, { - "teal": 5011, + "teal": 5032, "source": "examples/reti/validatorRegistry.algo.ts:1294", "pc": [ - 4740, - 4741, - 4742 + 4758, + 4759, + 4760 ] }, { - "teal": 5016, + "teal": 5037, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4743, - 4744 + 4761, + 4762 ] }, { - "teal": 5017, + "teal": 5038, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4745 + 4763 ] }, { - "teal": 5018, + "teal": 5039, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4746 + 4764 ] }, { - "teal": 5019, + "teal": 5040, "source": "examples/reti/validatorRegistry.algo.ts:1295", "pc": [ - 4747, - 4748 + 4765, + 4766 ] }, { - "teal": 5026, + "teal": 5047, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4749, - 4750 + 4767, + 4768 ] }, { - "teal": 5027, + "teal": 5048, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4751 + 4769 ] }, { - "teal": 5028, + "teal": 5049, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4752 + 4770 ] }, { - "teal": 5029, + "teal": 5050, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4753, - 4754 + 4771, + 4772 ] }, { - "teal": 5030, + "teal": 5051, "source": "examples/reti/validatorRegistry.algo.ts:1289", "pc": [ - 4755, - 4756, - 4757 + 4773, + 4774, + 4775 ] }, { - "teal": 5036, + "teal": 5057, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4758, - 4759 + 4776, + 4777 ] }, { - "teal": 5037, + "teal": 5058, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4760 + 4778 ] }, { - "teal": 5038, + "teal": 5059, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4761 + 4779 ] }, { - "teal": 5039, + "teal": 5060, "source": "examples/reti/validatorRegistry.algo.ts:1298", "pc": [ - 4762, - 4763, - 4764 + 4780, + 4781, + 4782 ] }, { - "teal": 5043, + "teal": 5064, "source": "examples/reti/validatorRegistry.algo.ts:1299", "errorMessage": "No empty slot available in the staker pool set", "pc": [ - 4765 + 4783 ] }, { - "teal": 5048, + "teal": 5069, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4766, - 4767 + 4784, + 4785 ] }, { - "teal": 5049, + "teal": 5070, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4768 + 4786 ] }, { - "teal": 5050, + "teal": 5071, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4769 + 4787 ] }, { - "teal": 5051, + "teal": 5072, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4770 + 4788 ] }, { - "teal": 5052, + "teal": 5073, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4771 + 4789 ] }, { - "teal": 5053, + "teal": 5074, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4772, - 4773 + 4790, + 4791 ] }, { - "teal": 5054, + "teal": 5075, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4774 + 4792 ] }, { - "teal": 5055, + "teal": 5076, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4775, - 4776 + 4793, + 4794 ] }, { - "teal": 5056, + "teal": 5077, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4777 + 4795 ] }, { - "teal": 5057, + "teal": 5078, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4778, - 4779 + 4796, + 4797 ] }, { - "teal": 5058, + "teal": 5079, "source": "examples/reti/validatorRegistry.algo.ts:1301", "pc": [ - 4780 + 4798 ] }, { - "teal": 5059, + "teal": 5080, "source": "examples/reti/validatorRegistry.algo.ts:1284", "pc": [ - 4781 + 4799 ] }, { - "teal": 5070, + "teal": 5091, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4782, - 4783, - 4784 + 4800, + 4801, + 4802 ] }, { - "teal": 5073, + "teal": 5094, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4785 + 4803 ] }, { - "teal": 5074, + "teal": 5095, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4786, - 4787 + 4804, + 4805 ] }, { - "teal": 5078, + "teal": 5099, "source": "examples/reti/validatorRegistry.algo.ts:1314", "pc": [ - 4788 + 4806 ] }, { - "teal": 5079, + "teal": 5100, "source": "examples/reti/validatorRegistry.algo.ts:1314", "pc": [ - 4789, - 4790 + 4807, + 4808 ] }, { - "teal": 5083, + "teal": 5104, "source": "examples/reti/validatorRegistry.algo.ts:1315", "pc": [ - 4791 + 4809 ] }, { - "teal": 5084, + "teal": 5105, "source": "examples/reti/validatorRegistry.algo.ts:1315", "pc": [ - 4792, - 4793 + 4810, + 4811 ] }, { - "teal": 5088, + "teal": 5109, "source": "examples/reti/validatorRegistry.algo.ts:1316", "pc": [ - 4794 + 4812 ] }, { - "teal": 5089, + "teal": 5110, "source": "examples/reti/validatorRegistry.algo.ts:1316", "pc": [ - 4795, - 4796 + 4813, + 4814 ] }, { - "teal": 5093, + "teal": 5114, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4797 + 4815 ] }, { - "teal": 5094, + "teal": 5115, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4798, - 4799 + 4816, + 4817 ] }, { - "teal": 5095, + "teal": 5116, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4800 + 4818 ] }, { - "teal": 5096, + "teal": 5117, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4801 + 4819 ] }, { - "teal": 5099, + "teal": 5120, "source": "examples/reti/validatorRegistry.algo.ts:1318", "errorMessage": "box value does not exist: this.stakerPoolSet(staker).value", "pc": [ - 4802 + 4820 ] }, { - "teal": 5100, + "teal": 5121, "source": "examples/reti/validatorRegistry.algo.ts:1318", "pc": [ - 4803, - 4804 + 4821, + 4822 ] }, { - "teal": 5104, + "teal": 5125, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4805 + 4823 ] }, { - "teal": 5105, + "teal": 5126, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4806, - 4807 + 4824, + 4825 ] }, { - "teal": 5110, + "teal": 5131, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4808, - 4809 + 4826, + 4827 ] }, { - "teal": 5111, + "teal": 5132, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4810, - 4811 + 4828, + 4829 ] }, { - "teal": 5112, + "teal": 5133, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4812 + 4830 ] }, { - "teal": 5113, + "teal": 5134, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4813, - 4814, - 4815 + 4831, + 4832, + 4833 ] }, { - "teal": 5118, + "teal": 5139, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4816, - 4817 + 4834, + 4835 ] }, { - "teal": 5119, + "teal": 5140, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4818, - 4819 + 4836, + 4837 ] }, { - "teal": 5120, + "teal": 5141, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4820 + 4838 ] }, { - "teal": 5121, + "teal": 5142, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4821 + 4839 ] }, { - "teal": 5122, + "teal": 5143, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4822 + 4840 ] }, { - "teal": 5123, + "teal": 5144, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4823 + 4841 ] }, { - "teal": 5124, + "teal": 5145, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4824 + 4842 ] }, { - "teal": 5125, + "teal": 5146, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4825 + 4843 ] }, { - "teal": 5126, + "teal": 5147, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4826 + 4844 ] }, { - "teal": 5127, + "teal": 5148, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4827 + 4845 ] }, { - "teal": 5128, + "teal": 5149, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4828 + 4846 ] }, { - "teal": 5129, + "teal": 5150, "source": "examples/reti/validatorRegistry.algo.ts:1320", "pc": [ - 4829, - 4830, - 4831 + 4847, + 4848, + 4849 ] }, { - "teal": 5132, + "teal": 5153, "source": "examples/reti/validatorRegistry.algo.ts:1321", "pc": [ - 4832, - 4833, - 4834 + 4850, + 4851, + 4852 ] }, { - "teal": 5137, + "teal": 5158, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4835, - 4836 + 4853, + 4854 ] }, { - "teal": 5138, + "teal": 5159, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4837 + 4855 ] }, { - "teal": 5139, + "teal": 5160, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4838 + 4856 ] }, { - "teal": 5140, + "teal": 5161, "source": "examples/reti/validatorRegistry.algo.ts:1323", "pc": [ - 4839, - 4840 + 4857, + 4858 ] }, { - "teal": 5145, + "teal": 5166, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4841, - 4842 + 4859, + 4860 ] }, { - "teal": 5146, + "teal": 5167, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4843, - 4844 + 4861, + 4862 ] }, { - "teal": 5147, + "teal": 5168, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4845 + 4863 ] }, { - "teal": 5148, + "teal": 5169, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4846 + 4864 ] }, { - "teal": 5149, + "teal": 5170, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4847 + 4865 ] }, { - "teal": 5150, + "teal": 5171, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4848 + 4866 ] }, { - "teal": 5151, + "teal": 5172, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4849 + 4867 ] }, { - "teal": 5152, + "teal": 5173, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4850 + 4868 ] }, { - "teal": 5153, + "teal": 5174, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4851 + 4869 ] }, { - "teal": 5154, + "teal": 5175, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4852, - 4853 + 4870, + 4871 ] }, { - "teal": 5155, + "teal": 5176, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4854, - 4855, - 4856 + 4872, + 4873, + 4874 ] }, { - "teal": 5156, + "teal": 5177, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4857 + 4875 ] }, { - "teal": 5157, + "teal": 5178, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4858 + 4876 ] }, { - "teal": 5158, + "teal": 5179, "source": "examples/reti/validatorRegistry.algo.ts:1324", "pc": [ - 4859, - 4860, - 4861 + 4877, + 4878, + 4879 ] }, { - "teal": 5164, + "teal": 5185, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4862, - 4863 + 4880, + 4881 ] }, { - "teal": 5165, + "teal": 5186, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4864, - 4865 + 4882, + 4883 ] }, { - "teal": 5166, + "teal": 5187, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4866 + 4884 ] }, { - "teal": 5167, + "teal": 5188, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4867 + 4885 ] }, { - "teal": 5168, + "teal": 5189, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4868 + 4886 ] }, { - "teal": 5169, + "teal": 5190, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4869 + 4887 ] }, { - "teal": 5170, + "teal": 5191, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4870, - 4871 + 4888, + 4889 ] }, { - "teal": 5171, + "teal": 5192, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4872 + 4890 ] }, { - "teal": 5172, + "teal": 5193, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4873, - 4874, - 4875 + 4891, + 4892, + 4893 ] }, { - "teal": 5177, + "teal": 5198, "source": "examples/reti/validatorRegistry.algo.ts:1326", "pc": [ - 4876 + 4894 ] }, { - "teal": 5178, + "teal": 5199, "source": "examples/reti/validatorRegistry.algo.ts:1326", "pc": [ - 4877, - 4878 + 4895, + 4896 ] }, { - "teal": 5182, + "teal": 5203, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4879, - 4880 + 4897, + 4898 ] }, { - "teal": 5183, + "teal": 5204, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4881 + 4899 ] }, { - "teal": 5184, + "teal": 5205, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4882 + 4900 ] }, { - "teal": 5185, + "teal": 5206, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4883, - 4884, - 4885, - 4886, - 4887, - 4888, - 4889, - 4890, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, 4901, 4902, 4903, @@ -23159,2574 +23252,2562 @@ 4905, 4906, 4907, - 4908 + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4922, + 4923, + 4924, + 4925, + 4926 ] }, { - "teal": 5186, + "teal": 5207, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4909 + 4927 ] }, { - "teal": 5187, + "teal": 5208, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4910, - 4911 + 4928, + 4929 ] }, { - "teal": 5188, + "teal": 5209, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4912 + 4930 ] }, { - "teal": 5189, + "teal": 5210, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4913, - 4914 + 4931, + 4932 ] }, { - "teal": 5190, + "teal": 5211, "source": "examples/reti/validatorRegistry.algo.ts:1328", "pc": [ - 4915 + 4933 ] }, { - "teal": 5191, + "teal": 5212, "source": "examples/reti/validatorRegistry.algo.ts:1325", "pc": [ - 4916, - 4917, - 4918 + 4934, + 4935, + 4936 ] }, { - "teal": 5196, + "teal": 5217, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4919, - 4920 + 4937, + 4938 ] }, { - "teal": 5197, + "teal": 5218, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4921 + 4939 ] }, { - "teal": 5198, + "teal": 5219, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4922 + 4940 ] }, { - "teal": 5199, + "teal": 5220, "source": "examples/reti/validatorRegistry.algo.ts:1330", "pc": [ - 4923, - 4924 + 4941, + 4942 ] }, { - "teal": 5208, + "teal": 5229, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4925, - 4926 + 4943, + 4944 ] }, { - "teal": 5209, + "teal": 5230, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4927 + 4945 ] }, { - "teal": 5210, + "teal": 5231, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4928 + 4946 ] }, { - "teal": 5211, + "teal": 5232, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4929, - 4930 + 4947, + 4948 ] }, { - "teal": 5212, + "teal": 5233, "source": "examples/reti/validatorRegistry.algo.ts:1319", "pc": [ - 4931, - 4932, - 4933 + 4949, + 4950, + 4951 ] }, { - "teal": 5218, + "teal": 5239, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4934, - 4935 + 4952, + 4953 ] }, { - "teal": 5219, + "teal": 5240, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4936 + 4954 ] }, { - "teal": 5220, + "teal": 5241, "source": "examples/reti/validatorRegistry.algo.ts:1334", "pc": [ - 4937, - 4938, - 4939 + 4955, + 4956, + 4957 ] }, { - "teal": 5224, + "teal": 5245, "source": "examples/reti/validatorRegistry.algo.ts:1335", "errorMessage": "No matching slot found when told to remove a pool from the stakers set", "pc": [ - 4940 + 4958 ] }, { - "teal": 5229, + "teal": 5250, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4941, - 4942 + 4959, + 4960 ] }, { - "teal": 5230, + "teal": 5251, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4943 + 4961 ] }, { - "teal": 5231, + "teal": 5252, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4944, - 4945 + 4962, + 4963 ] }, { - "teal": 5232, + "teal": 5253, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4946 + 4964 ] }, { - "teal": 5233, + "teal": 5254, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4947 + 4965 ] }, { - "teal": 5234, + "teal": 5255, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4948 + 4966 ] }, { - "teal": 5235, + "teal": 5256, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4949 + 4967 ] }, { - "teal": 5236, + "teal": 5257, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4950, - 4951 + 4968, + 4969 ] }, { - "teal": 5237, + "teal": 5258, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4952 + 4970 ] }, { - "teal": 5238, + "teal": 5259, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4953 + 4971 ] }, { - "teal": 5239, + "teal": 5260, "source": "examples/reti/validatorRegistry.algo.ts:1338", "pc": [ - 4954 + 4972 ] }, { - "teal": 5242, + "teal": 5263, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4955, - 4956 + 4973, + 4974 ] }, { - "teal": 5245, + "teal": 5266, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4957, - 4958 + 4975, + 4976 ] }, { - "teal": 5246, + "teal": 5267, "source": "examples/reti/validatorRegistry.algo.ts:1312", "pc": [ - 4959 + 4977 ] }, { - "teal": 5250, + "teal": 5271, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4960, - 4961, - 4962 + 4978, + 4979, + 4980 ] }, { - "teal": 5253, + "teal": 5274, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4963 + 4981 ] }, { - "teal": 5254, + "teal": 5275, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 4964, - 4965 + 4982, + 4983 ] }, { - "teal": 5258, + "teal": 5279, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4966, - 4967 + 4984, + 4985 ] }, { - "teal": 5259, + "teal": 5280, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4968, - 4969 + 4986, + 4987 ] }, { - "teal": 5260, + "teal": 5281, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4970 + 4988 ] }, { - "teal": 5261, + "teal": 5282, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4971, - 4972 + 4989, + 4990 ] }, { - "teal": 5262, + "teal": 5283, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4973 + 4991 ] }, { - "teal": 5263, + "teal": 5284, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4974 + 4992 ] }, { - "teal": 5264, + "teal": 5285, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4975, - 4976 + 4993, + 4994 ] }, { - "teal": 5265, + "teal": 5286, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4977 + 4995 ] }, { - "teal": 5266, + "teal": 5287, "source": "examples/reti/validatorRegistry.algo.ts:1342", "pc": [ - 4978, - 4979 + 4996, + 4997 ] }, { - "teal": 5270, + "teal": 5291, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4980, - 4981, - 4982 + 4998, + 4999, + 5000 ] }, { - "teal": 5271, + "teal": 5292, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4983 + 5001 ] }, { - "teal": 5272, + "teal": 5293, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4984 + 5002 ] }, { - "teal": 5273, + "teal": 5294, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4985, - 4986 + 5003, + 5004 ] }, { - "teal": 5274, + "teal": 5295, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4987 + 5005 ] }, { - "teal": 5275, + "teal": 5296, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4988 + 5006 ] }, { - "teal": 5276, + "teal": 5297, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4989, - 4990 + 5007, + 5008 ] }, { - "teal": 5277, + "teal": 5298, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4991 + 5009 ] }, { - "teal": 5278, + "teal": 5299, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4992 + 5010 ] }, { - "teal": 5279, + "teal": 5300, "source": "examples/reti/validatorRegistry.algo.ts:1343", "pc": [ - 4993, - 4994 + 5011, + 5012 ] }, { - "teal": 5283, + "teal": 5304, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4995, - 4996 + 5013, + 5014 ] }, { - "teal": 5284, + "teal": 5305, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4997 + 5015 ] }, { - "teal": 5285, + "teal": 5306, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4998 + 5016 ] }, { - "teal": 5286, + "teal": 5307, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 4999 + 5017 ] }, { - "teal": 5287, + "teal": 5308, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5000, - 5001, - 5002 + 5018, + 5019, + 5020 ] }, { - "teal": 5288, + "teal": 5309, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5003, - 5004 + 5021, + 5022 ] }, { - "teal": 5289, + "teal": 5310, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5005 + 5023 ] }, { - "teal": 5290, + "teal": 5311, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5006 + 5024 ] }, { - "teal": 5291, + "teal": 5312, "source": "examples/reti/validatorRegistry.algo.ts:1345", "pc": [ - 5007 + 5025 ] }, { - "teal": 5295, + "teal": 5316, "source": "examples/reti/validatorRegistry.algo.ts:1345", "errorMessage": "node number not in valid range", "pc": [ - 5008 + 5026 ] }, { - "teal": 5299, + "teal": 5320, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5009 + 5027 ] }, { - "teal": 5300, + "teal": 5321, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5010, - 5011 + 5028, + 5029 ] }, { - "teal": 5305, + "teal": 5326, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5012, - 5013 + 5030, + 5031 ] }, { - "teal": 5306, + "teal": 5327, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5014, - 5015 + 5032, + 5033 ] }, { - "teal": 5307, + "teal": 5328, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5016 + 5034 ] }, { - "teal": 5308, + "teal": 5329, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5017, - 5018, - 5019 + 5035, + 5036, + 5037 ] }, { - "teal": 5313, + "teal": 5334, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5020, - 5021 + 5038, + 5039 ] }, { - "teal": 5314, + "teal": 5335, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5022 + 5040 ] }, { - "teal": 5315, + "teal": 5336, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5023, - 5024 + 5041, + 5042 ] }, { - "teal": 5316, + "teal": 5337, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5025 + 5043 ] }, { - "teal": 5317, + "teal": 5338, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5026 + 5044 ] }, { - "teal": 5318, + "teal": 5339, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5027 + 5045 ] }, { - "teal": 5319, + "teal": 5340, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5028 + 5046 ] }, { - "teal": 5320, + "teal": 5341, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5029 + 5047 ] }, { - "teal": 5321, + "teal": 5342, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5030 + 5048 ] }, { - "teal": 5322, + "teal": 5343, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5031 + 5049 ] }, { - "teal": 5323, + "teal": 5344, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5032, - 5033 + 5050, + 5051 ] }, { - "teal": 5324, + "teal": 5345, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5034 + 5052 ] }, { - "teal": 5325, + "teal": 5346, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5035 + 5053 ] }, { - "teal": 5326, + "teal": 5347, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5036 + 5054 ] }, { - "teal": 5327, + "teal": 5348, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5037 + 5055 ] }, { - "teal": 5328, + "teal": 5349, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5038 + 5056 ] }, { - "teal": 5329, + "teal": 5350, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5039 + 5057 ] }, { - "teal": 5330, + "teal": 5351, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5040 + 5058 ] }, { - "teal": 5331, + "teal": 5352, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5041 + 5059 ] }, { - "teal": 5332, + "teal": 5353, "source": "examples/reti/validatorRegistry.algo.ts:1348", "pc": [ - 5042, - 5043, - 5044 + 5060, + 5061, + 5062 ] }, { - "teal": 5337, + "teal": 5358, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5045, - 5046 + 5063, + 5064 ] }, { - "teal": 5338, + "teal": 5359, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5047, - 5048 + 5065, + 5066 ] }, { - "teal": 5339, + "teal": 5360, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5049 + 5067 ] }, { - "teal": 5340, + "teal": 5361, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5050 + 5068 ] }, { - "teal": 5341, + "teal": 5362, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5051 + 5069 ] }, { - "teal": 5342, + "teal": 5363, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5052 + 5070 ] }, { - "teal": 5343, + "teal": 5364, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5053 + 5071 ] }, { - "teal": 5344, + "teal": 5365, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5054 + 5072 ] }, { - "teal": 5345, + "teal": 5366, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5055 + 5073 ] }, { - "teal": 5346, + "teal": 5367, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5056, - 5057 + 5074, + 5075 ] }, { - "teal": 5347, + "teal": 5368, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5058 + 5076 ] }, { - "teal": 5348, + "teal": 5369, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5059 + 5077 ] }, { - "teal": 5349, + "teal": 5370, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5060 + 5078 ] }, { - "teal": 5350, + "teal": 5371, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5061, - 5062 + 5079, + 5080 ] }, { - "teal": 5351, + "teal": 5372, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5063 + 5081 ] }, { - "teal": 5352, + "teal": 5373, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5064 + 5082 ] }, { - "teal": 5353, + "teal": 5374, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5065, - 5066 + 5083, + 5084 ] }, { - "teal": 5354, + "teal": 5375, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5067 + 5085 ] }, { - "teal": 5355, + "teal": 5376, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5068 + 5086 ] }, { - "teal": 5356, + "teal": 5377, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5069, - 5070 + 5087, + 5088 ] }, { - "teal": 5357, + "teal": 5378, "source": "examples/reti/validatorRegistry.algo.ts:1350", "pc": [ - 5071 + 5089 ] }, { - "teal": 5361, + "teal": 5382, "source": "examples/reti/validatorRegistry.algo.ts:1351", "pc": [ - 5072 + 5090 ] }, { - "teal": 5368, + "teal": 5389, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5073, - 5074 + 5091, + 5092 ] }, { - "teal": 5369, + "teal": 5390, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5075 + 5093 ] }, { - "teal": 5370, + "teal": 5391, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5076 + 5094 ] }, { - "teal": 5371, + "teal": 5392, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5077, - 5078 + 5095, + 5096 ] }, { - "teal": 5372, + "teal": 5393, "source": "examples/reti/validatorRegistry.algo.ts:1347", "pc": [ - 5079, - 5080, - 5081 + 5097, + 5098, + 5099 ] }, { - "teal": 5376, + "teal": 5397, "source": "examples/reti/validatorRegistry.algo.ts:1354", "errorMessage": "no available space in specified node for this pool", "pc": [ - 5082 + 5100 ] }, { - "teal": 5377, + "teal": 5398, "source": "examples/reti/validatorRegistry.algo.ts:1341", "pc": [ - 5083 + 5101 ] }, { - "teal": 5387, + "teal": 5408, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5084, - 5085, - 5086 + 5102, + 5103, + 5104 ] }, { - "teal": 5390, + "teal": 5411, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5087 + 5105 ] }, { - "teal": 5391, + "teal": 5412, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5088, - 5089 + 5106, + 5107 ] }, { - "teal": 5395, + "teal": 5416, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5090, - 5091 + 5108, + 5109 ] }, { - "teal": 5396, + "teal": 5417, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5092 + 5110 ] }, { - "teal": 5397, + "teal": 5418, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5093 + 5111 ] }, { - "teal": 5398, + "teal": 5419, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5094, - 5095 + 5112, + 5113 ] }, { - "teal": 5399, + "teal": 5420, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5096 + 5114 ] }, { - "teal": 5400, + "teal": 5421, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5097 + 5115 ] }, { - "teal": 5401, + "teal": 5422, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5098, - 5099 + 5116, + 5117 ] }, { - "teal": 5402, + "teal": 5423, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5100 + 5118 ] }, { - "teal": 5403, + "teal": 5424, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5101 + 5119 ] }, { - "teal": 5404, + "teal": 5425, "source": "examples/reti/validatorRegistry.algo.ts:1365", "pc": [ - 5102, - 5103 + 5120, + 5121 ] }, { - "teal": 5409, + "teal": 5430, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5104, - 5105 + 5122, + 5123 ] }, { - "teal": 5410, + "teal": 5431, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5106 + 5124 ] }, { - "teal": 5411, + "teal": 5432, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5107 + 5125 ] }, { - "teal": 5412, + "teal": 5433, "source": "examples/reti/validatorRegistry.algo.ts:1366", "pc": [ - 5108, - 5109, - 5110 + 5126, + 5127, + 5128 ] }, { - "teal": 5417, + "teal": 5438, "source": "examples/reti/validatorRegistry.algo.ts:1367", "pc": [ - 5111 + 5129 ] }, { - "teal": 5422, + "teal": 5443, "source": "examples/reti/validatorRegistry.algo.ts:1369", "pc": [ - 5112, - 5113 + 5130, + 5131 ] }, { - "teal": 5423, + "teal": 5444, "source": "examples/reti/validatorRegistry.algo.ts:1369", "pc": [ - 5114, - 5115 + 5132, + 5133 ] }, { - "teal": 5427, + "teal": 5448, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5116 + 5134 ] }, { - "teal": 5428, + "teal": 5449, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5117, - 5118 + 5135, + 5136 ] }, { - "teal": 5429, + "teal": 5450, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5119 + 5137 ] }, { - "teal": 5430, + "teal": 5451, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5120, - 5121 + 5138, + 5139 ] }, { - "teal": 5431, + "teal": 5452, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5122 + 5140 ] }, { - "teal": 5432, + "teal": 5453, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5123 + 5141 ] }, { - "teal": 5433, + "teal": 5454, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5124, - 5125 + 5142, + 5143 ] }, { - "teal": 5434, + "teal": 5455, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5126 + 5144 ] }, { - "teal": 5435, + "teal": 5456, "source": "examples/reti/validatorRegistry.algo.ts:1370", "pc": [ - 5127, - 5128 + 5145, + 5146 ] }, { - "teal": 5442, + "teal": 5463, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5129, - 5130 + 5147, + 5148 ] }, { - "teal": 5443, + "teal": 5464, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5131 + 5149 ] }, { - "teal": 5444, + "teal": 5465, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5132 + 5150 ] }, { - "teal": 5445, + "teal": 5466, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5133 + 5151 ] }, { - "teal": 5446, + "teal": 5467, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5134, - 5135, - 5136 + 5152, + 5153, + 5154 ] }, { - "teal": 5447, + "teal": 5468, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5137, - 5138 + 5155, + 5156 ] }, { - "teal": 5448, + "teal": 5469, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5139, - 5140 + 5157, + 5158 ] }, { - "teal": 5449, + "teal": 5470, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5141 + 5159 ] }, { - "teal": 5450, + "teal": 5471, "source": "examples/reti/validatorRegistry.algo.ts:1374", "pc": [ - 5142 + 5160 ] }, { - "teal": 5453, + "teal": 5474, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5143 + 5161 ] }, { - "teal": 5454, + "teal": 5475, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5144, - 5145, - 5146 + 5162, + 5163, + 5164 ] }, { - "teal": 5455, + "teal": 5476, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5147, - 5148 + 5165, + 5166 ] }, { - "teal": 5456, + "teal": 5477, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5149, - 5150 + 5167, + 5168 ] }, { - "teal": 5457, + "teal": 5478, "source": "examples/reti/validatorRegistry.algo.ts:1376", "pc": [ - 5151 + 5169 ] }, { - "teal": 5458, + "teal": 5479, "source": "examples/reti/validatorRegistry.algo.ts:1375", "pc": [ - 5152 + 5170 ] }, { - "teal": 5461, + "teal": 5482, "source": "examples/reti/validatorRegistry.algo.ts:1373", "pc": [ - 5153, - 5154, - 5155 + 5171, + 5172, + 5173 ] }, { - "teal": 5466, + "teal": 5487, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5156, - 5157 + 5174, + 5175 ] }, { - "teal": 5467, + "teal": 5488, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5158 + 5176 ] }, { - "teal": 5468, + "teal": 5489, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5159 + 5177 ] }, { - "teal": 5469, + "teal": 5490, "source": "examples/reti/validatorRegistry.algo.ts:1378", "pc": [ - 5160 + 5178 ] }, { - "teal": 5473, + "teal": 5494, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5161, - 5162 + 5179, + 5180 ] }, { - "teal": 5474, + "teal": 5495, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5163 + 5181 ] }, { - "teal": 5475, + "teal": 5496, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5164 + 5182 ] }, { - "teal": 5476, + "teal": 5497, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5165, - 5166 + 5183, + 5184 ] }, { - "teal": 5477, + "teal": 5498, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5167 + 5185 ] }, { - "teal": 5478, + "teal": 5499, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5168 + 5186 ] }, { - "teal": 5479, + "teal": 5500, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5169, - 5170 + 5187, + 5188 ] }, { - "teal": 5480, + "teal": 5501, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5171 + 5189 ] }, { - "teal": 5481, + "teal": 5502, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5172 + 5190 ] }, { - "teal": 5482, + "teal": 5503, "source": "examples/reti/validatorRegistry.algo.ts:1379", "pc": [ - 5173, - 5174 + 5191, + 5192 ] }, { - "teal": 5487, + "teal": 5508, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5175, - 5176 + 5193, + 5194 ] }, { - "teal": 5488, + "teal": 5509, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5177 + 5195 ] }, { - "teal": 5489, + "teal": 5510, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5178 + 5196 ] }, { - "teal": 5490, + "teal": 5511, "source": "examples/reti/validatorRegistry.algo.ts:1380", "pc": [ - 5179, - 5180, - 5181 + 5197, + 5198, + 5199 ] }, { - "teal": 5495, + "teal": 5516, "source": "examples/reti/validatorRegistry.algo.ts:1381", "pc": [ - 5182 + 5200 ] }, { - "teal": 5496, + "teal": 5517, "source": "examples/reti/validatorRegistry.algo.ts:1381", "pc": [ - 5183, - 5184 + 5201, + 5202 ] }, { - "teal": 5504, + "teal": 5525, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5185, - 5186 + 5203, + 5204 ] }, { - "teal": 5505, + "teal": 5526, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5187, - 5188 + 5205, + 5206 ] }, { - "teal": 5506, + "teal": 5527, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5189, - 5190 + 5207, + 5208 ] }, { - "teal": 5507, + "teal": 5528, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5191 + 5209 ] }, { - "teal": 5508, + "teal": 5529, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5192, - 5193 + 5210, + 5211 ] }, { - "teal": 5509, + "teal": 5530, "source": "examples/reti/validatorRegistry.algo.ts:1384", "pc": [ - 5194 + 5212 ] }, { - "teal": 5512, + "teal": 5533, "source": "examples/reti/validatorRegistry.algo.ts:1383", "errorMessage": "must have required minimum balance of validator defined token to add stake", "pc": [ - 5195 + 5213 ] }, { - "teal": 5518, + "teal": 5539, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5196, - 5197 + 5214, + 5215 ] }, { - "teal": 5519, + "teal": 5540, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5198 + 5216 ] }, { - "teal": 5520, + "teal": 5541, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5199 + 5217 ] }, { - "teal": 5521, + "teal": 5542, "source": "examples/reti/validatorRegistry.algo.ts:1388", "pc": [ - 5200, - 5201, - 5202 + 5218, + 5219, + 5220 ] }, { - "teal": 5529, + "teal": 5550, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5203, - 5204 + 5221, + 5222 ] }, { - "teal": 5530, + "teal": 5551, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5205, - 5206 + 5223, + 5224 ] }, { - "teal": 5531, + "teal": 5552, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5207 + 5225 ] }, { - "teal": 5532, + "teal": 5553, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5208, - 5209 + 5226, + 5227 ] }, { - "teal": 5533, + "teal": 5554, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5210, - 5211, - 5212 + 5228, + 5229, + 5230 ] }, { - "teal": 5534, + "teal": 5555, "source": "examples/reti/validatorRegistry.algo.ts:1390", "pc": [ - 5213 + 5231 ] }, { - "teal": 5537, + "teal": 5558, "source": "examples/reti/validatorRegistry.algo.ts:1389", "errorMessage": "specified asset must be created by creator that the validator defined as a requirement to stake", "pc": [ - 5214 + 5232 ] }, { - "teal": 5543, + "teal": 5564, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5215, - 5216 + 5233, + 5234 ] }, { - "teal": 5544, + "teal": 5565, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5217, - 5218 + 5235, + 5236 ] }, { - "teal": 5545, + "teal": 5566, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5219 + 5237 ] }, { - "teal": 5546, + "teal": 5567, "source": "examples/reti/validatorRegistry.algo.ts:1394", "pc": [ - 5220, - 5221, - 5222 + 5238, + 5239, + 5240 ] }, { - "teal": 5551, + "teal": 5572, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5223, - 5224 + 5241, + 5242 ] }, { - "teal": 5552, + "teal": 5573, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5225 + 5243 ] }, { - "teal": 5553, + "teal": 5574, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5226 + 5244 ] }, { - "teal": 5554, + "teal": 5575, "source": "examples/reti/validatorRegistry.algo.ts:1395", "pc": [ - 5227 + 5245 ] }, { - "teal": 5558, + "teal": 5579, "source": "examples/reti/validatorRegistry.algo.ts:1396", "pc": [ - 5228 + 5246 ] }, { - "teal": 5559, + "teal": 5580, "source": "examples/reti/validatorRegistry.algo.ts:1396", "pc": [ - 5229, - 5230 + 5247, + 5248 ] }, { - "teal": 5563, + "teal": 5584, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5231, - 5232 + 5249, + 5250 ] }, { - "teal": 5564, + "teal": 5585, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5233, - 5234, - 5235 + 5251, + 5252, + 5253 ] }, { - "teal": 5565, + "teal": 5586, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5236 + 5254 ] }, { - "teal": 5566, + "teal": 5587, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5237, - 5238 + 5255, + 5256 ] }, { - "teal": 5567, + "teal": 5588, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5239, - 5240, - 5241 + 5257, + 5258, + 5259 ] }, { - "teal": 5568, + "teal": 5589, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5242 + 5260 ] }, { - "teal": 5569, + "teal": 5590, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5243, - 5244 + 5261, + 5262 ] }, { - "teal": 5570, + "teal": 5591, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5245 + 5263 ] }, { - "teal": 5571, + "teal": 5592, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5246, - 5247 + 5264, + 5265 ] }, { - "teal": 5577, + "teal": 5598, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5248, - 5249 + 5266, + 5267 ] }, { - "teal": 5578, + "teal": 5599, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5250, - 5251 + 5268, + 5269 ] }, { - "teal": 5579, + "teal": 5600, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5252 + 5270 ] }, { - "teal": 5580, + "teal": 5601, "source": "examples/reti/validatorRegistry.algo.ts:1398", "pc": [ - 5253, - 5254, - 5255 + 5271, + 5272, + 5273 ] }, { - "teal": 5585, + "teal": 5606, "source": "examples/reti/validatorRegistry.algo.ts:1399", "pc": [ - 5256 + 5274 ] }, { - "teal": 5586, + "teal": 5607, "source": "examples/reti/validatorRegistry.algo.ts:1399", "pc": [ - 5257, - 5258 + 5275, + 5276 ] }, { - "teal": 5587, + "teal": 5608, "source": "examples/reti/validatorRegistry.algo.ts:1400", "pc": [ - 5259, - 5260, - 5261 + 5277, + 5278, + 5279 ] }, { - "teal": 5593, + "teal": 5614, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5262, - 5263 + 5280, + 5281 ] }, { - "teal": 5594, + "teal": 5615, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5264 + 5282 ] }, { - "teal": 5595, + "teal": 5616, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5265 + 5283 ] }, { - "teal": 5596, + "teal": 5617, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5266 + 5284 ] }, { - "teal": 5597, + "teal": 5618, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5267, - 5268 + 5285, + 5286 ] }, { - "teal": 5598, + "teal": 5619, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5269 + 5287 ] }, { - "teal": 5599, + "teal": 5620, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5270, - 5271, - 5272 + 5288, + 5289, + 5290 ] }, { - "teal": 5600, + "teal": 5621, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5273, - 5274 + 5291, + 5292 ] }, { - "teal": 5601, + "teal": 5622, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5275, - 5276 + 5293, + 5294 ] }, { - "teal": 5602, + "teal": 5623, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5277, - 5278 + 5295, + 5296 ] }, { - "teal": 5603, + "teal": 5624, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5279 + 5297 ] }, { - "teal": 5604, + "teal": 5625, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5280 + 5298 ] }, { - "teal": 5605, + "teal": 5626, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5281 + 5299 ] }, { - "teal": 5606, + "teal": 5627, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5282, - 5283 + 5300, + 5301 ] }, { - "teal": 5607, + "teal": 5628, "source": "examples/reti/validatorRegistry.algo.ts:1397", "pc": [ - 5284, - 5285, - 5286 + 5302, + 5303, + 5304 ] }, { - "teal": 5612, + "teal": 5633, "source": "examples/reti/validatorRegistry.algo.ts:1403", "pc": [ - 5287, - 5288 + 5305, + 5306 ] }, { - "teal": 5615, + "teal": 5636, "source": "examples/reti/validatorRegistry.algo.ts:1403", "errorMessage": "specified asset must be identical to the asset id defined as a requirement to stake", "pc": [ - 5289 + 5307 ] }, { - "teal": 5621, + "teal": 5642, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5290, - 5291 + 5308, + 5309 ] }, { - "teal": 5622, + "teal": 5643, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5292, - 5293 + 5310, + 5311 ] }, { - "teal": 5623, + "teal": 5644, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5294 + 5312 ] }, { - "teal": 5624, + "teal": 5645, "source": "examples/reti/validatorRegistry.algo.ts:1405", "pc": [ - 5295, - 5296, - 5297 + 5313, + 5314, + 5315 ] }, { - "teal": 5632, + "teal": 5653, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5298, - 5299 + 5316, + 5317 ] }, { - "teal": 5633, + "teal": 5654, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5300, - 5301 + 5318, + 5319 ] }, { - "teal": 5634, + "teal": 5655, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5302 + 5320 ] }, { - "teal": 5635, + "teal": 5656, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5303, - 5304 + 5321, + 5322 ] }, { - "teal": 5636, + "teal": 5657, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5305, - 5306, - 5307 + 5323, + 5324, + 5325 ] }, { - "teal": 5637, + "teal": 5658, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5308 + 5326 ] }, { - "teal": 5638, + "teal": 5659, "source": "examples/reti/validatorRegistry.algo.ts:1409", "pc": [ - 5309, - 5310, - 5311 + 5327, + 5328, + 5329 ] }, { - "teal": 5641, + "teal": 5662, "source": "examples/reti/validatorRegistry.algo.ts:1408", "errorMessage": "specified asset must be created by creator that is one of the linked addresses in an nfd", "pc": [ - 5312 + 5330 ] }, { - "teal": 5647, + "teal": 5668, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5313, - 5314 + 5331, + 5332 ] }, { - "teal": 5648, + "teal": 5669, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5315, - 5316 + 5333, + 5334 ] }, { - "teal": 5649, + "teal": 5670, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5317 + 5335 ] }, { - "teal": 5650, + "teal": 5671, "source": "examples/reti/validatorRegistry.algo.ts:1413", "pc": [ - 5318, - 5319, - 5320 + 5336, + 5337, + 5338 ] }, { - "teal": 5655, + "teal": 5676, "source": "examples/reti/validatorRegistry.algo.ts:1415", "pc": [ - 5321, - 5322 + 5339, + 5340 ] }, { - "teal": 5656, + "teal": 5677, "source": "examples/reti/validatorRegistry.algo.ts:1415", "pc": [ - 5323, - 5324 + 5341, + 5342 ] }, { - "teal": 5660, + "teal": 5681, "source": "examples/reti/validatorRegistry.algo.ts:1416", "pc": [ - 5325, - 5326 + 5343, + 5344 ] }, { - "teal": 5661, + "teal": 5682, "source": "examples/reti/validatorRegistry.algo.ts:1416", "pc": [ - 5327, - 5328, - 5329 + 5345, + 5346, + 5347 ] }, { - "teal": 5664, + "teal": 5685, "source": "examples/reti/validatorRegistry.algo.ts:1416", "errorMessage": "provided NFD must be valid", "pc": [ - 5330 + 5348 ] }, { - "teal": 5672, + "teal": 5693, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5331, - 5332 + 5349, + 5350 ] }, { - "teal": 5673, + "teal": 5694, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5333, - 5334 + 5351, + 5352 ] }, { - "teal": 5674, + "teal": 5695, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5335 + 5353 ] }, { - "teal": 5677, + "teal": 5698, "source": "examples/reti/validatorRegistry.algo.ts:1420", "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')", "pc": [ - 5336 + 5354 ] }, { - "teal": 5678, + "teal": 5699, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5337, - 5338 + 5355, + 5356 ] }, { - "teal": 5679, + "teal": 5700, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5339 + 5357 ] }, { - "teal": 5680, + "teal": 5701, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5340 + 5358 ] }, { - "teal": 5681, + "teal": 5702, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5341, - 5342, - 5343 + 5359, + 5360, + 5361 ] }, { - "teal": 5682, + "teal": 5703, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5344, - 5345 + 5362, + 5363 ] }, { - "teal": 5683, + "teal": 5704, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5346, - 5347 + 5364, + 5365 ] }, { - "teal": 5684, + "teal": 5705, "source": "examples/reti/validatorRegistry.algo.ts:1421", "pc": [ - 5348, - 5349, - 5350 + 5366, + 5367, + 5368 ] }, { - "teal": 5685, + "teal": 5706, "source": "examples/reti/validatorRegistry.algo.ts:1420", "pc": [ - 5351 + 5369 ] }, { - "teal": 5689, + "teal": 5710, "source": "examples/reti/validatorRegistry.algo.ts:1419", "errorMessage": "provided nfd for entry isn't owned or linked to the staker", "pc": [ - 5352 + 5370 ] }, { - "teal": 5697, + "teal": 5718, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5353, - 5354 + 5371, + 5372 ] }, { - "teal": 5698, + "teal": 5719, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5355, - 5356, - 5357, - 5358, - 5359, - 5360, - 5361, - 5362, - 5363, - 5364, - 5365, - 5366, - 5367, - 5368, - 5369 + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387 ] }, { - "teal": 5699, + "teal": 5720, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5370 + 5388 ] }, { - "teal": 5702, + "teal": 5723, "source": "examples/reti/validatorRegistry.algo.ts:1427", "errorMessage": "global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')", "pc": [ - 5371 + 5389 ] }, { - "teal": 5703, + "teal": 5724, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5372 + 5390 ] }, { - "teal": 5704, + "teal": 5725, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5373, - 5374 + 5391, + 5392 ] }, { - "teal": 5705, + "teal": 5726, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5375, - 5376, - 5377 + 5393, + 5394, + 5395 ] }, { - "teal": 5706, + "teal": 5727, "source": "examples/reti/validatorRegistry.algo.ts:1428", "pc": [ - 5378 + 5396 ] }, { - "teal": 5707, + "teal": 5728, "source": "examples/reti/validatorRegistry.algo.ts:1427", "pc": [ - 5379 + 5397 ] }, { - "teal": 5710, + "teal": 5731, "source": "examples/reti/validatorRegistry.algo.ts:1426", "errorMessage": "specified nfd must be a segment of the nfd the validator specified as a requirement", "pc": [ - 5380 + 5398 ] }, { - "teal": 5713, + "teal": 5734, "source": "examples/reti/validatorRegistry.algo.ts:1364", "pc": [ - 5381 + 5399 ] }, { - "teal": 5725, + "teal": 5746, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5382, - 5383, - 5384 + 5400, + 5401, + 5402 ] }, { - "teal": 5728, + "teal": 5749, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5385 + 5403 ] }, { - "teal": 5732, + "teal": 5753, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5386, - 5387 + 5404, + 5405 ] }, { - "teal": 5733, + "teal": 5754, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5388, - 5389, - 5390, - 5391, - 5392, - 5393, - 5394, - 5395 + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413 ] }, { - "teal": 5734, + "teal": 5755, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5396 + 5414 ] }, { - "teal": 5737, + "teal": 5758, "source": "examples/reti/validatorRegistry.algo.ts:1445", "errorMessage": "global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')", "pc": [ - 5397 + 5415 ] }, { - "teal": 5738, + "teal": 5759, "source": "examples/reti/validatorRegistry.algo.ts:1445", "pc": [ - 5398, - 5399 + 5416, + 5417 ] }, { - "teal": 5746, + "teal": 5767, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5400 + 5418 ] }, { - "teal": 5747, + "teal": 5768, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5401, - 5402 + 5419, + 5420 ] }, { - "teal": 5748, + "teal": 5769, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5403, - 5404 + 5421, + 5422 ] }, { - "teal": 5752, + "teal": 5773, "source": "examples/reti/validatorRegistry.algo.ts:1448", "pc": [ - 5405, - 5406 + 5423, + 5424 ] }, { - "teal": 5753, + "teal": 5774, "source": "examples/reti/validatorRegistry.algo.ts:1448", "pc": [ - 5407, - 5408 + 5425, + 5426 ] }, { - "teal": 5757, + "teal": 5778, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5409, - 5410 + 5427, + 5428 ] }, { - "teal": 5758, + "teal": 5779, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5411, - 5412 + 5429, + 5430 ] }, { - "teal": 5759, + "teal": 5780, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5413, - 5414 + 5431, + 5432 ] }, { - "teal": 5760, + "teal": 5781, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5415, - 5416 + 5433, + 5434 ] }, { - "teal": 5761, + "teal": 5782, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5417, - 5418 + 5435, + 5436 ] }, { - "teal": 5762, + "teal": 5783, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5419 + 5437 ] }, { - "teal": 5763, + "teal": 5784, "source": "examples/reti/validatorRegistry.algo.ts:1449", "pc": [ - 5420, - 5421 + 5438, + 5439 ] }, { - "teal": 5767, + "teal": 5788, "source": "examples/reti/validatorRegistry.algo.ts:1450", "pc": [ - 5422, - 5423 + 5440, + 5441 ] }, { - "teal": 5768, + "teal": 5789, "source": "examples/reti/validatorRegistry.algo.ts:1450", "pc": [ - 5424, - 5425 + 5442, + 5443 ] }, { - "teal": 5771, + "teal": 5792, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5426 + 5444 ] }, { - "teal": 5772, + "teal": 5793, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5427, - 5428 + 5445, + 5446 ] }, { - "teal": 5775, + "teal": 5796, "source": "examples/reti/validatorRegistry.algo.ts:1447", "pc": [ - 5429 + 5447 ] }, { - "teal": 5779, + "teal": 5800, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5430, - 5431 + 5448, + 5449 ] }, { - "teal": 5780, + "teal": 5801, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5432 + 5450 ] }, { - "teal": 5781, + "teal": 5802, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5433 + 5451 ] }, { - "teal": 5782, + "teal": 5803, "source": "examples/reti/validatorRegistry.algo.ts:1452", "pc": [ - 5434 + 5452 ] }, { - "teal": 5785, + "teal": 5806, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5435, - 5436 + 5453, + 5454 ] }, { - "teal": 5786, + "teal": 5807, "source": "examples/reti/validatorRegistry.algo.ts:1443", "pc": [ - 5437 + 5455 ] }, { - "teal": 5797, + "teal": 5818, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5438, - 5439, - 5440 + 5456, + 5457, + 5458 ] }, { - "teal": 5800, + "teal": 5821, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5441 + 5459 ] }, { - "teal": 5801, + "teal": 5822, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5442, - 5443 + 5460, + 5461 ] }, { - "teal": 5808, + "teal": 5829, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5444 + 5462 ] }, { - "teal": 5809, + "teal": 5830, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5445, - 5446 + 5463, + 5464 ] }, { - "teal": 5810, + "teal": 5831, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5447, - 5448 + 5465, + 5466 ] }, { - "teal": 5814, + "teal": 5835, "source": "examples/reti/validatorRegistry.algo.ts:1465", "pc": [ - 5449, - 5450 + 5467, + 5468 ] }, { - "teal": 5815, + "teal": 5836, "source": "examples/reti/validatorRegistry.algo.ts:1465", "pc": [ - 5451, - 5452 - ] - }, - { - "teal": 5819, - "source": "examples/reti/validatorRegistry.algo.ts:1466", - "pc": [ - 5453, - 5454, - 5455, - 5456, - 5457, - 5458, - 5459, - 5460, - 5461, - 5462, - 5463, - 5464, - 5465, - 5466, - 5467 - ] - }, - { - "teal": 5820, - "source": "examples/reti/validatorRegistry.algo.ts:1466", - "pc": [ - 5468, - 5469 + 5469, + 5470 ] }, { - "teal": 5821, + "teal": 5840, "source": "examples/reti/validatorRegistry.algo.ts:1466", "pc": [ - 5470, 5471, 5472, 5473, @@ -25740,1142 +25821,1136 @@ 5481, 5482, 5483, - 5484 + 5484, + 5485 ] }, { - "teal": 5822, + "teal": 5841, + "source": "examples/reti/validatorRegistry.algo.ts:1466", + "pc": [ + 5486, + 5487 + ] + }, + { + "teal": 5842, + "source": "examples/reti/validatorRegistry.algo.ts:1466", + "pc": [ + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5498, + 5499, + 5500, + 5501, + 5502 + ] + }, + { + "teal": 5843, "source": "examples/reti/validatorRegistry.algo.ts:1466", "pc": [ - 5485, - 5486 + 5503, + 5504 ] }, { - "teal": 5825, + "teal": 5846, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5487 + 5505 ] }, { - "teal": 5826, + "teal": 5847, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5488, - 5489 + 5506, + 5507 ] }, { - "teal": 5829, + "teal": 5850, "source": "examples/reti/validatorRegistry.algo.ts:1464", "pc": [ - 5490 + 5508 ] }, { - "teal": 5833, + "teal": 5854, "source": "examples/reti/validatorRegistry.algo.ts:1468", "pc": [ - 5491, - 5492 + 5509, + 5510 ] }, { - "teal": 5834, + "teal": 5855, "source": "examples/reti/validatorRegistry.algo.ts:1468", "pc": [ - 5493, - 5494 + 5511, + 5512 ] }, { - "teal": 5838, + "teal": 5859, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5495 + 5513 ] }, { - "teal": 5839, + "teal": 5860, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5496, - 5497 + 5514, + 5515 ] }, { - "teal": 5844, + "teal": 5865, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5498, - 5499 + 5516, + 5517 ] }, { - "teal": 5845, + "teal": 5866, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5500, - 5501 + 5518, + 5519 ] }, { - "teal": 5846, + "teal": 5867, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5502 + 5520 ] }, { - "teal": 5847, + "teal": 5868, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5503 + 5521 ] }, { - "teal": 5848, + "teal": 5869, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5504, - 5505, - 5506 + 5522, + 5523, + 5524 ] }, { - "teal": 5852, + "teal": 5873, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5507, - 5508 + 5525, + 5526 ] }, { - "teal": 5853, + "teal": 5874, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5509, - 5510 + 5527, + 5528 ] }, { - "teal": 5854, + "teal": 5875, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5511, - 5512 + 5529, + 5530 ] }, { - "teal": 5855, + "teal": 5876, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5513 + 5531 ] }, { - "teal": 5856, + "teal": 5877, "source": "examples/reti/validatorRegistry.algo.ts:1470", "pc": [ - 5514, - 5515 + 5532, + 5533 ] }, { - "teal": 5861, + "teal": 5882, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5516, - 5517 + 5534, + 5535 ] }, { - "teal": 5862, + "teal": 5883, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5518, - 5519 + 5536, + 5537 ] }, { - "teal": 5863, + "teal": 5884, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5520 + 5538 ] }, { - "teal": 5864, + "teal": 5885, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5521 + 5539 ] }, { - "teal": 5865, + "teal": 5886, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5522, - 5523, - 5524 + 5540, + 5541, + 5542 ] }, { - "teal": 5866, + "teal": 5887, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5525, - 5526 + 5543, + 5544 ] }, { - "teal": 5867, + "teal": 5888, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5527, - 5528 + 5545, + 5546 ] }, { - "teal": 5868, + "teal": 5889, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5529 + 5547 ] }, { - "teal": 5869, + "teal": 5890, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5530 + 5548 ] }, { - "teal": 5872, + "teal": 5893, "source": "examples/reti/validatorRegistry.algo.ts:1471", "pc": [ - 5531, - 5532, - 5533 + 5549, + 5550, + 5551 ] }, { - "teal": 5877, + "teal": 5898, "source": "examples/reti/validatorRegistry.algo.ts:1472", "pc": [ - 5534 + 5552 ] }, { - "teal": 5878, + "teal": 5899, "source": "examples/reti/validatorRegistry.algo.ts:1472", "pc": [ - 5535, - 5536, - 5537 + 5553, + 5554, + 5555 ] }, { - "teal": 5885, + "teal": 5906, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5538, - 5539 + 5556, + 5557 ] }, { - "teal": 5886, + "teal": 5907, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5540, - 5541 + 5558, + 5559 ] }, { - "teal": 5887, + "teal": 5908, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5542 + 5560 ] }, { - "teal": 5888, + "teal": 5909, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5543, - 5544 + 5561, + 5562 ] }, { - "teal": 5889, + "teal": 5910, "source": "examples/reti/validatorRegistry.algo.ts:1469", "pc": [ - 5545, - 5546, - 5547 + 5563, + 5564, + 5565 ] }, { - "teal": 5894, + "teal": 5915, "source": "examples/reti/validatorRegistry.algo.ts:1475", "pc": [ - 5548 + 5566 ] }, { - "teal": 5898, + "teal": 5919, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5549, - 5550 + 5567, + 5568 ] }, { - "teal": 5901, + "teal": 5922, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5551, - 5552 + 5569, + 5570 ] }, { - "teal": 5902, + "teal": 5923, "source": "examples/reti/validatorRegistry.algo.ts:1463", "pc": [ - 5553 + 5571 ] }, { - "teal": 5910, + "teal": 5931, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5554, - 5555, - 5556 + 5572, + 5573, + 5574 ] }, { - "teal": 5913, + "teal": 5934, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5557 + 5575 ] }, { - "teal": 5917, + "teal": 5938, "source": "examples/reti/validatorRegistry.algo.ts:1484", "pc": [ - 5558, - 5559, - 5560 + 5576, + 5577, + 5578 ] }, { - "teal": 5918, + "teal": 5939, "source": "examples/reti/validatorRegistry.algo.ts:1484", "pc": [ - 5561, - 5562 + 5579, + 5580 ] }, { - "teal": 5922, + "teal": 5943, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5563, - 5564 + 5581, + 5582 ] }, { - "teal": 5923, + "teal": 5944, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5565, - 5566 + 5583, + 5584 ] }, { - "teal": 5924, + "teal": 5945, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5567 + 5585 ] }, { - "teal": 5925, + "teal": 5946, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5568 + 5586 ] }, { - "teal": 5926, + "teal": 5947, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5569, - 5570 + 5587, + 5588 ] }, { - "teal": 5927, + "teal": 5948, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5571 + 5589 ] }, { - "teal": 5928, + "teal": 5949, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5572 + 5590 ] }, { - "teal": 5929, + "teal": 5950, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5573 + 5591 ] }, { - "teal": 5930, + "teal": 5951, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5574 + 5592 ] }, { - "teal": 5931, + "teal": 5952, "source": "examples/reti/validatorRegistry.algo.ts:1486", "pc": [ - 5575 + 5593 ] }, { - "teal": 5934, + "teal": 5955, "source": "examples/reti/validatorRegistry.algo.ts:1486", "errorMessage": "wideRatio failed", "pc": [ - 5576 + 5594 ] }, { - "teal": 5937, + "teal": 5958, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5577, - 5578 + 5595, + 5596 ] }, { - "teal": 5938, + "teal": 5959, "source": "examples/reti/validatorRegistry.algo.ts:1483", "pc": [ - 5579 + 5597 ] }, { - "teal": 5945, + "teal": 5966, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5580, - 5581, - 5582 + 5598, + 5599, + 5600 ] }, { - "teal": 5948, + "teal": 5969, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5583 + 5601 ] }, { - "teal": 5952, + "teal": 5973, "source": "examples/reti/validatorRegistry.algo.ts:1494", "pc": [ - 5584, - 5585, - 5586 + 5602, + 5603, + 5604 ] }, { - "teal": 5953, + "teal": 5974, "source": "examples/reti/validatorRegistry.algo.ts:1494", "pc": [ - 5587, - 5588 + 5605, + 5606 ] }, { - "teal": 5957, + "teal": 5978, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5589, - 5590 + 5607, + 5608 ] }, { - "teal": 5958, + "teal": 5979, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5591, - 5592, - 5593 + 5609, + 5610, + 5611 ] }, { - "teal": 5959, + "teal": 5980, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5594 + 5612 ] }, { - "teal": 5960, + "teal": 5981, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5595 + 5613 ] }, { - "teal": 5961, + "teal": 5982, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5596, - 5597 + 5614, + 5615 ] }, { - "teal": 5962, + "teal": 5983, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5598 + 5616 ] }, { - "teal": 5963, + "teal": 5984, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5599 + 5617 ] }, { - "teal": 5964, + "teal": 5985, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5600 + 5618 ] }, { - "teal": 5965, + "teal": 5986, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5601 + 5619 ] }, { - "teal": 5966, + "teal": 5987, "source": "examples/reti/validatorRegistry.algo.ts:1496", "pc": [ - 5602 + 5620 ] }, { - "teal": 5969, + "teal": 5990, "source": "examples/reti/validatorRegistry.algo.ts:1496", "errorMessage": "wideRatio failed", "pc": [ - 5603 + 5621 ] }, { - "teal": 5972, + "teal": 5993, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5604, - 5605 + 5622, + 5623 ] }, { - "teal": 5973, + "teal": 5994, "source": "examples/reti/validatorRegistry.algo.ts:1493", "pc": [ - 5606 + 5624 ] }, { - "teal": 5979, + "teal": 6000, "source": "examples/reti/validatorRegistry.algo.ts:1502", "pc": [ - 5607, - 5608, - 5609 + 5625, + 5626, + 5627 ] }, { - "teal": 5983, + "teal": 6004, "source": "examples/reti/validatorRegistry.algo.ts:1504", "pc": [ - 5610, - 5611, - 5612, - 5613, - 5614, - 5615, - 5616, - 5617 + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635 ] }, { - "teal": 5984, + "teal": 6005, "source": "examples/reti/validatorRegistry.algo.ts:1502", "pc": [ - 5618 + 5636 ] }, { - "teal": 5988, + "teal": 6009, "source": "examples/reti/validatorRegistry.algo.ts:1507", "pc": [ - 5619, - 5620, - 5621 + 5637, + 5638, + 5639 ] }, { - "teal": 5992, + "teal": 6013, "source": "examples/reti/validatorRegistry.algo.ts:1509", "pc": [ - 5622, - 5623, - 5624, - 5625, - 5626, - 5627, - 5628, - 5629, - 5630 + 5640, + 5641, + 5642, + 5643, + 5644, + 5645, + 5646, + 5647, + 5648 ] }, { - "teal": 5993, + "teal": 6014, "source": "examples/reti/validatorRegistry.algo.ts:1507", "pc": [ - 5631 + 5649 ] }, { - "teal": 5997, + "teal": 6018, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5632, - 5633, - 5634 + 5650, + 5651, + 5652 ] }, { - "teal": 6000, + "teal": 6021, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5635 + 5653 ] }, { - "teal": 6004, + "teal": 6025, "source": "examples/reti/validatorRegistry.algo.ts:1521", "pc": [ - 5636, - 5637 + 5654, + 5655 ] }, { - "teal": 6005, + "teal": 6026, "source": "examples/reti/validatorRegistry.algo.ts:1521", "pc": [ - 5638, - 5639 + 5656, + 5657 ] }, { - "teal": 6009, + "teal": 6030, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5640, - 5641 + 5658, + 5659 ] }, { - "teal": 6010, + "teal": 6031, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5642, - 5643 + 5660, + 5661 ] }, { - "teal": 6011, + "teal": 6032, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5644, - 5645 + 5662, + 5663 ] }, { - "teal": 6012, + "teal": 6033, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5646 + 5664 ] }, { - "teal": 6013, + "teal": 6034, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5647 + 5665 ] }, { - "teal": 6014, + "teal": 6035, "source": "examples/reti/validatorRegistry.algo.ts:1522", "pc": [ - 5648, - 5649 + 5666, + 5667 ] }, { - "teal": 6018, + "teal": 6039, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5650, - 5651 + 5668, + 5669 ] }, { - "teal": 6019, + "teal": 6040, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5652, - 5653 + 5670, + 5671 ] }, { - "teal": 6020, + "teal": 6041, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5654, - 5655 + 5672, + 5673 ] }, { - "teal": 6021, + "teal": 6042, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5656 + 5674 ] }, { - "teal": 6022, + "teal": 6043, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5657 + 5675 ] }, { - "teal": 6023, + "teal": 6044, "source": "examples/reti/validatorRegistry.algo.ts:1523", "pc": [ - 5658, - 5659 + 5676, + 5677 ] }, { - "teal": 6027, + "teal": 6048, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5660, - 5661 + 5678, + 5679 ] }, { - "teal": 6028, + "teal": 6049, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5662, - 5663 + 5680, + 5681 ] }, { - "teal": 6029, + "teal": 6050, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5664, - 5665 + 5682, + 5683 ] }, { - "teal": 6030, + "teal": 6051, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5666 + 5684 ] }, { - "teal": 6031, + "teal": 6052, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5667 + 5685 ] }, { - "teal": 6032, + "teal": 6053, "source": "examples/reti/validatorRegistry.algo.ts:1524", "pc": [ - 5668, - 5669 + 5686, + 5687 ] }, { - "teal": 6036, + "teal": 6057, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5670, - 5671 + 5688, + 5689 ] }, { - "teal": 6037, + "teal": 6058, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5672, - 5673 + 5690, + 5691 ] }, { - "teal": 6038, + "teal": 6059, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5674, - 5675 + 5692, + 5693 ] }, { - "teal": 6039, + "teal": 6060, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5676 + 5694 ] }, { - "teal": 6040, + "teal": 6061, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5677 + 5695 ] }, { - "teal": 6041, + "teal": 6062, "source": "examples/reti/validatorRegistry.algo.ts:1525", "pc": [ - 5678, - 5679 + 5696, + 5697 ] }, { - "teal": 6045, + "teal": 6066, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5680, - 5681 + 5698, + 5699 ] }, { - "teal": 6046, + "teal": 6067, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5682, - 5683 + 5700, + 5701 ] }, { - "teal": 6047, + "teal": 6068, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5684, - 5685 + 5702, + 5703 ] }, { - "teal": 6048, + "teal": 6069, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5686 + 5704 ] }, { - "teal": 6049, + "teal": 6070, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5687 + 5705 ] }, { - "teal": 6050, + "teal": 6071, "source": "examples/reti/validatorRegistry.algo.ts:1526", "pc": [ - 5688, - 5689 + 5706, + 5707 ] }, { - "teal": 6054, + "teal": 6075, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5690, - 5691 + 5708, + 5709 ] }, { - "teal": 6055, + "teal": 6076, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5692, - 5693 + 5710, + 5711 ] }, { - "teal": 6056, + "teal": 6077, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5694, - 5695 + 5712, + 5713 ] }, { - "teal": 6057, + "teal": 6078, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5696 + 5714 ] }, { - "teal": 6058, + "teal": 6079, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5697 + 5715 ] }, { - "teal": 6059, + "teal": 6080, "source": "examples/reti/validatorRegistry.algo.ts:1527", "pc": [ - 5698, - 5699 + 5716, + 5717 ] }, { - "teal": 6063, + "teal": 6084, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5700, - 5701 + 5718, + 5719 ] }, { - "teal": 6064, + "teal": 6085, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5702, - 5703 + 5720, + 5721 ] }, { - "teal": 6065, + "teal": 6086, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5704, - 5705 + 5722, + 5723 ] }, { - "teal": 6066, + "teal": 6087, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5706 + 5724 ] }, { - "teal": 6067, + "teal": 6088, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5707 + 5725 ] }, { - "teal": 6068, + "teal": 6089, "source": "examples/reti/validatorRegistry.algo.ts:1528", "pc": [ - 5708, - 5709 + 5726, + 5727 ] }, { - "teal": 6072, + "teal": 6093, "source": "examples/reti/validatorRegistry.algo.ts:1529", "pc": [ - 5710, - 5711 + 5728, + 5729 ] }, { - "teal": 6075, + "teal": 6096, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5712, - 5713 + 5730, + 5731 ] }, { - "teal": 6076, + "teal": 6097, "source": "examples/reti/validatorRegistry.algo.ts:1512", "pc": [ - 5714 + 5732 ] }, { - "teal": 6080, + "teal": 6101, "source": "examples/reti/validatorRegistry.algo.ts:1532", "pc": [ - 5715, - 5716, - 5717 + 5733, + 5734, + 5735 ] }, { - "teal": 6084, + "teal": 6105, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5718, - 5719, - 5720 + 5736, + 5737, + 5738 ] }, { - "teal": 6085, + "teal": 6106, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5721, - 5722 + 5739, + 5740 ] }, { - "teal": 6086, + "teal": 6107, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5723, - 5724, - 5725 + 5741, + 5742, + 5743 ] }, { - "teal": 6087, + "teal": 6108, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5726 + 5744 ] }, { - "teal": 6088, + "teal": 6109, "source": "examples/reti/validatorRegistry.algo.ts:1536", "pc": [ - 5727 + 5745 ] }, { - "teal": 6089, + "teal": 6110, "source": "examples/reti/validatorRegistry.algo.ts:1532", "pc": [ - 5728 + 5746 ] }, { - "teal": 6092, + "teal": 6113, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5729, - 5730, - 5731, - 5732, - 5733, - 5734 + 5747, + 5748, + 5749, + 5750, + 5751, + 5752 ] }, { - "teal": 6093, + "teal": 6114, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5735, - 5736, - 5737 + 5753, + 5754, + 5755 ] }, { - "teal": 6094, + "teal": 6115, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5738, - 5739, - 5740, - 5741 + 5756, + 5757, + 5758, + 5759 ] }, { - "teal": 6097, + "teal": 6118, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 5742 - ] - }, - { - "teal": 6100, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5743, - 5744, - 5745, - 5746, - 5747, - 5748 - ] - }, - { - "teal": 6101, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5749, - 5750, - 5751, - 5752, - 5753, - 5754 - ] - }, - { - "teal": 6102, - "source": "examples/reti/validatorRegistry.algo.ts:168", - "pc": [ - 5755, - 5756, - 5757, - 5758, - 5759, 5760 ] }, { - "teal": 6103, + "teal": 6121, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5761, @@ -26887,7 +26962,7 @@ ] }, { - "teal": 6104, + "teal": 6122, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5767, @@ -26899,7 +26974,7 @@ ] }, { - "teal": 6105, + "teal": 6123, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5773, @@ -26911,7 +26986,7 @@ ] }, { - "teal": 6106, + "teal": 6124, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5779, @@ -26923,7 +26998,7 @@ ] }, { - "teal": 6107, + "teal": 6125, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5785, @@ -26935,7 +27010,7 @@ ] }, { - "teal": 6108, + "teal": 6126, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5791, @@ -26947,7 +27022,7 @@ ] }, { - "teal": 6109, + "teal": 6127, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5797, @@ -26959,7 +27034,7 @@ ] }, { - "teal": 6110, + "teal": 6128, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5803, @@ -26971,7 +27046,7 @@ ] }, { - "teal": 6111, + "teal": 6129, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5809, @@ -26983,7 +27058,7 @@ ] }, { - "teal": 6112, + "teal": 6130, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5815, @@ -26995,7 +27070,7 @@ ] }, { - "teal": 6113, + "teal": 6131, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5821, @@ -27007,7 +27082,7 @@ ] }, { - "teal": 6114, + "teal": 6132, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5827, @@ -27019,7 +27094,7 @@ ] }, { - "teal": 6115, + "teal": 6133, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5833, @@ -27031,7 +27106,7 @@ ] }, { - "teal": 6116, + "teal": 6134, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5839, @@ -27043,7 +27118,7 @@ ] }, { - "teal": 6117, + "teal": 6135, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5845, @@ -27055,7 +27130,7 @@ ] }, { - "teal": 6118, + "teal": 6136, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5851, @@ -27067,7 +27142,7 @@ ] }, { - "teal": 6119, + "teal": 6137, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5857, @@ -27079,7 +27154,7 @@ ] }, { - "teal": 6120, + "teal": 6138, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5863, @@ -27091,7 +27166,7 @@ ] }, { - "teal": 6121, + "teal": 6139, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5869, @@ -27103,7 +27178,7 @@ ] }, { - "teal": 6122, + "teal": 6140, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5875, @@ -27115,7 +27190,7 @@ ] }, { - "teal": 6123, + "teal": 6141, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5881, @@ -27127,7 +27202,7 @@ ] }, { - "teal": 6124, + "teal": 6142, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5887, @@ -27139,7 +27214,7 @@ ] }, { - "teal": 6125, + "teal": 6143, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5893, @@ -27151,7 +27226,7 @@ ] }, { - "teal": 6126, + "teal": 6144, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5899, @@ -27163,7 +27238,7 @@ ] }, { - "teal": 6127, + "teal": 6145, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5905, @@ -27175,7 +27250,7 @@ ] }, { - "teal": 6128, + "teal": 6146, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5911, @@ -27187,7 +27262,7 @@ ] }, { - "teal": 6129, + "teal": 6147, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5917, @@ -27199,7 +27274,7 @@ ] }, { - "teal": 6130, + "teal": 6148, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5923, @@ -27211,7 +27286,7 @@ ] }, { - "teal": 6131, + "teal": 6149, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5929, @@ -27223,7 +27298,7 @@ ] }, { - "teal": 6132, + "teal": 6150, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5935, @@ -27235,36 +27310,54 @@ ] }, { - "teal": 6133, + "teal": 6151, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ 5941, 5942, - 5943 + 5943, + 5944, + 5945, + 5946 ] }, { - "teal": 6134, + "teal": 6152, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 5944, - 5945, - 5946, 5947, 5948, 5949, 5950, 5951, - 5952, + 5952 + ] + }, + { + "teal": 6153, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5953, 5954, 5955, 5956, 5957, - 5958, + 5958 + ] + }, + { + "teal": 6154, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5959, 5960, - 5961, + 5961 + ] + }, + { + "teal": 6155, + "source": "examples/reti/validatorRegistry.algo.ts:168", + "pc": [ 5962, 5963, 5964, @@ -27314,54 +27407,72 @@ 6008, 6009, 6010, - 6011 + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6029 ] }, { - "teal": 6137, + "teal": 6158, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 6012 + 6030 ] }, { - "teal": 6140, + "teal": 6161, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6013, - 6014, - 6015, - 6016, - 6017, - 6018 + 6031, + 6032, + 6033, + 6034, + 6035, + 6036 ] }, { - "teal": 6141, + "teal": 6162, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6019, - 6020, - 6021 + 6037, + 6038, + 6039 ] }, { - "teal": 6142, + "teal": 6163, "source": "examples/reti/validatorRegistry.algo.ts:168", "pc": [ - 6022, - 6023, - 6024, - 6025 + 6040, + 6041, + 6042, + 6043 ] }, { - "teal": 6145, + "teal": 6166, "source": "examples/reti/validatorRegistry.algo.ts:168", "errorMessage": "this contract does not implement the given ABI method for call UpdateApplication", "pc": [ - 6026 + 6044 ] } ] \ No newline at end of file diff --git a/examples/simple/artifacts/Simple.arc56.json b/examples/simple/artifacts/Simple.arc56.json index 761697403..fa7ab013f 100644 --- a/examples/simple/artifacts/Simple.arc56.json +++ b/examples/simple/artifacts/Simple.arc56.json @@ -1221,9 +1221,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/examples/tuple_in_box/tealscript_artifacts/ContactsApp.arc56.json b/examples/tuple_in_box/tealscript_artifacts/ContactsApp.arc56.json index a20d0c13c..3f67b6011 100644 --- a/examples/tuple_in_box/tealscript_artifacts/ContactsApp.arc56.json +++ b/examples/tuple_in_box/tealscript_artifacts/ContactsApp.arc56.json @@ -2885,9 +2885,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index a79c91278..2ab9a1553 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -4232,7 +4232,7 @@ export default class Compiler { this.processNewValue(newValue); } - this.checkEncoding(node, elem.type); + this.checkEncoding(node, this.lastType); if (!isBox) { this.pushVoid(node, 'replace3'); diff --git a/tests/__snapshots__/math.test.ts.snap b/tests/__snapshots__/math.test.ts.snap index ffb2bb825..d0d763331 100644 --- a/tests/__snapshots__/math.test.ts.snap +++ b/tests/__snapshots__/math.test.ts.snap @@ -1,3 +1,3 @@ // Bun Snapshot v1, https://goo.gl/fbAQLP -exports[`Math MathTest Artifacts Maintains program size 1`] = `2411`; +exports[`Math MathTest Artifacts Maintains program size 1`] = `2537`; diff --git a/tests/common.ts b/tests/common.ts index f4849f7c2..f25881f48 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -157,6 +157,7 @@ export async function runMethod({ fundAmount = 0, fee = 1000, skipEvalTrace = false, + forceEvalTrace = false, }: { appClient: ApplicationClient; method: string; @@ -165,6 +166,7 @@ export async function runMethod({ fundAmount?: number; fee?: number; skipEvalTrace?: boolean; + forceEvalTrace?: boolean; }) { const params = { method, @@ -172,6 +174,9 @@ export async function runMethod({ sendParams: { suppressLog: true, fee: algokit.microAlgos(fee), populateAppCallResources: true }, }; + let returnValue; + let thrownError; + try { if (fundAmount > 0) { await appClient.fundAppAccount({ @@ -179,12 +184,17 @@ export async function runMethod({ sendParams: { suppressLog: true }, }); } - return (await appClient[callType](params)).return?.returnValue; + returnValue = (await appClient[callType](params)).return?.returnValue; } catch (e) { if (skipEvalTrace) { console.warn(e); throw e; } + + thrownError = e; + } + + if (thrownError || forceEvalTrace) { // eslint-disable-next-line no-console const abiMethod = appClient.getABIMethod(params.method)!; const { appId } = await appClient.getAppReference(); @@ -222,9 +232,13 @@ export async function runMethod({ const fullTrace = await getFullTrace(trace, approvalProgramTeal, algodClient); // eslint-disable-next-line no-use-before-define printFullTrace(fullTrace); - console.warn(e); - throw e; } + + if (thrownError) { + throw thrownError; + } + + return returnValue; } export function getErrorMessage(algodError: string, sourceInfo: { pc?: number[]; errorMessage?: string }[]) { diff --git a/tests/contracts/artifacts/A.arc56.json b/tests/contracts/artifacts/A.arc56.json index ead343857..6252675fc 100644 --- a/tests/contracts/artifacts/A.arc56.json +++ b/tests/contracts/artifacts/A.arc56.json @@ -346,9 +346,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAccesStringInTuple.arc56.json b/tests/contracts/artifacts/ABITestAccesStringInTuple.arc56.json index 619ba0fce..6fc48578c 100644 --- a/tests/contracts/artifacts/ABITestAccesStringInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestAccesStringInTuple.arc56.json @@ -1059,9 +1059,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAccessDynamicArrayElementInTuple.arc56.json b/tests/contracts/artifacts/ABITestAccessDynamicArrayElementInTuple.arc56.json index 8dc1c7973..0210aa4bd 100644 --- a/tests/contracts/artifacts/ABITestAccessDynamicArrayElementInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestAccessDynamicArrayElementInTuple.arc56.json @@ -832,9 +832,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAccessDynamicArrayInMiddleOfTuple.arc56.json b/tests/contracts/artifacts/ABITestAccessDynamicArrayInMiddleOfTuple.arc56.json index 05199be03..3c5eed67e 100644 --- a/tests/contracts/artifacts/ABITestAccessDynamicArrayInMiddleOfTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestAccessDynamicArrayInMiddleOfTuple.arc56.json @@ -865,9 +865,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAccessDynamicStringArray.arc56.json b/tests/contracts/artifacts/ABITestAccessDynamicStringArray.arc56.json index f6ae6aef2..dc8767a6a 100644 --- a/tests/contracts/artifacts/ABITestAccessDynamicStringArray.arc56.json +++ b/tests/contracts/artifacts/ABITestAccessDynamicStringArray.arc56.json @@ -859,9 +859,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAccessStaticArrayInBoxInVariable.arc56.json b/tests/contracts/artifacts/ABITestAccessStaticArrayInBoxInVariable.arc56.json index 29b5f6c3c..1b69e5902 100644 --- a/tests/contracts/artifacts/ABITestAccessStaticArrayInBoxInVariable.arc56.json +++ b/tests/contracts/artifacts/ABITestAccessStaticArrayInBoxInVariable.arc56.json @@ -473,9 +473,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestAngularCasting.arc56.json b/tests/contracts/artifacts/ABITestAngularCasting.arc56.json index 23a53d78e..e9557c015 100644 --- a/tests/contracts/artifacts/ABITestAngularCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestAngularCasting.arc56.json @@ -548,9 +548,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayInMethodCall.arc56.json b/tests/contracts/artifacts/ABITestArrayInMethodCall.arc56.json index 2e1bf6d2d..f1414955b 100644 --- a/tests/contracts/artifacts/ABITestArrayInMethodCall.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayInMethodCall.arc56.json @@ -513,9 +513,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayInObjectInState.arc56.json b/tests/contracts/artifacts/ABITestArrayInObjectInState.arc56.json index eaa654827..f0a980b62 100644 --- a/tests/contracts/artifacts/ABITestArrayInObjectInState.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayInObjectInState.arc56.json @@ -491,9 +491,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayInTuple.arc56.json b/tests/contracts/artifacts/ABITestArrayInTuple.arc56.json index 690b406d8..50762642b 100644 --- a/tests/contracts/artifacts/ABITestArrayInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayInTuple.arc56.json @@ -432,9 +432,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayLength.arc56.json b/tests/contracts/artifacts/ABITestArrayLength.arc56.json index 0f5a29b30..c2afb7854 100644 --- a/tests/contracts/artifacts/ABITestArrayLength.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayLength.arc56.json @@ -414,9 +414,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayPop.arc56.json b/tests/contracts/artifacts/ABITestArrayPop.arc56.json index 183d8a8b8..6aebff1b6 100644 --- a/tests/contracts/artifacts/ABITestArrayPop.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayPop.arc56.json @@ -512,9 +512,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayPopValue.arc56.json b/tests/contracts/artifacts/ABITestArrayPopValue.arc56.json index 67b8ac862..fb58ebf38 100644 --- a/tests/contracts/artifacts/ABITestArrayPopValue.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayPopValue.arc56.json @@ -596,9 +596,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayPush.arc56.json b/tests/contracts/artifacts/ABITestArrayPush.arc56.json index de5ab4f88..cbb1de66c 100644 --- a/tests/contracts/artifacts/ABITestArrayPush.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayPush.arc56.json @@ -477,9 +477,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArrayRef.arc56.json b/tests/contracts/artifacts/ABITestArrayRef.arc56.json index 970f41097..a3950e2ac 100644 --- a/tests/contracts/artifacts/ABITestArrayRef.arc56.json +++ b/tests/contracts/artifacts/ABITestArrayRef.arc56.json @@ -477,9 +477,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArraySplice.arc56.json b/tests/contracts/artifacts/ABITestArraySplice.arc56.json index bcaf00377..2a19a6a82 100644 --- a/tests/contracts/artifacts/ABITestArraySplice.arc56.json +++ b/tests/contracts/artifacts/ABITestArraySplice.arc56.json @@ -629,9 +629,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestArraySpliceValue.arc56.json b/tests/contracts/artifacts/ABITestArraySpliceValue.arc56.json index 4ab444e23..e1b3f794c 100644 --- a/tests/contracts/artifacts/ABITestArraySpliceValue.arc56.json +++ b/tests/contracts/artifacts/ABITestArraySpliceValue.arc56.json @@ -740,9 +740,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBiggerByteCasting.arc56.json b/tests/contracts/artifacts/ABITestBiggerByteCasting.arc56.json index 63192c62b..8e7dcc99d 100644 --- a/tests/contracts/artifacts/ABITestBiggerByteCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestBiggerByteCasting.arc56.json @@ -417,9 +417,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56.json index bd119fd29..72225d127 100644 --- a/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56.json @@ -450,9 +450,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json index 0fdb3b360..70862b515 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json @@ -641,9 +641,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolInObj.arc56.json b/tests/contracts/artifacts/ABITestBoolInObj.arc56.json index 35ab8b503..fef64d542 100644 --- a/tests/contracts/artifacts/ABITestBoolInObj.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolInObj.arc56.json @@ -638,9 +638,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolTuple.arc56.json index 703a42776..7b32dd750 100644 --- a/tests/contracts/artifacts/ABITestBoolTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolTuple.arc56.json @@ -579,9 +579,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolTupleAccess.arc56.json b/tests/contracts/artifacts/ABITestBoolTupleAccess.arc56.json index 19a7a5f31..9f2d86ad9 100644 --- a/tests/contracts/artifacts/ABITestBoolTupleAccess.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolTupleAccess.arc56.json @@ -640,9 +640,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolTupleUpdate.arc56.json b/tests/contracts/artifacts/ABITestBoolTupleUpdate.arc56.json index a173a98e1..c7dcb9cd2 100644 --- a/tests/contracts/artifacts/ABITestBoolTupleUpdate.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolTupleUpdate.arc56.json @@ -632,9 +632,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolUpdateInObjectInBox.arc56.json b/tests/contracts/artifacts/ABITestBoolUpdateInObjectInBox.arc56.json index 717f98c84..bd75a79cb 100644 --- a/tests/contracts/artifacts/ABITestBoolUpdateInObjectInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolUpdateInObjectInBox.arc56.json @@ -600,9 +600,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBooleanArgAndReturn.arc56.json b/tests/contracts/artifacts/ABITestBooleanArgAndReturn.arc56.json index d827baf3b..fa90b111f 100644 --- a/tests/contracts/artifacts/ABITestBooleanArgAndReturn.arc56.json +++ b/tests/contracts/artifacts/ABITestBooleanArgAndReturn.arc56.json @@ -445,9 +445,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json index 71ee7a720..dc796cf41 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json @@ -407,9 +407,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBytesCasting.arc56.json b/tests/contracts/artifacts/ABITestBytesCasting.arc56.json index 0f990ecc6..cbd89914e 100644 --- a/tests/contracts/artifacts/ABITestBytesCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestBytesCasting.arc56.json @@ -436,9 +436,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBytesReturn.arc56.json b/tests/contracts/artifacts/ABITestBytesReturn.arc56.json index ab086df6c..f8121ee96 100644 --- a/tests/contracts/artifacts/ABITestBytesReturn.arc56.json +++ b/tests/contracts/artifacts/ABITestBytesReturn.arc56.json @@ -396,9 +396,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestCastBytesFunction.arc56.json b/tests/contracts/artifacts/ABITestCastBytesFunction.arc56.json index 244ffd43b..b029d696b 100644 --- a/tests/contracts/artifacts/ABITestCastBytesFunction.arc56.json +++ b/tests/contracts/artifacts/ABITestCastBytesFunction.arc56.json @@ -352,9 +352,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestChainedPropertyAfterTuple.arc56.json b/tests/contracts/artifacts/ABITestChainedPropertyAfterTuple.arc56.json index 94cfb22e5..cc67c477f 100644 --- a/tests/contracts/artifacts/ABITestChainedPropertyAfterTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestChainedPropertyAfterTuple.arc56.json @@ -421,9 +421,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestCustomTypes.arc56.json b/tests/contracts/artifacts/ABITestCustomTypes.arc56.json index 10e17df3c..fd7f01e2b 100644 --- a/tests/contracts/artifacts/ABITestCustomTypes.arc56.json +++ b/tests/contracts/artifacts/ABITestCustomTypes.arc56.json @@ -1311,9 +1311,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDisgusting.arc56.json b/tests/contracts/artifacts/ABITestDisgusting.arc56.json index 87da5a2a6..1687e0840 100644 --- a/tests/contracts/artifacts/ABITestDisgusting.arc56.json +++ b/tests/contracts/artifacts/ABITestDisgusting.arc56.json @@ -560,9 +560,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicAccessOfDynamicElementInStaticArray.arc56.json b/tests/contracts/artifacts/ABITestDynamicAccessOfDynamicElementInStaticArray.arc56.json index 8b55b8603..83642e614 100644 --- a/tests/contracts/artifacts/ABITestDynamicAccessOfDynamicElementInStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicAccessOfDynamicElementInStaticArray.arc56.json @@ -588,9 +588,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArray.arc56.json b/tests/contracts/artifacts/ABITestDynamicArray.arc56.json index 4fbeb7e0c..7149dfa99 100644 --- a/tests/contracts/artifacts/ABITestDynamicArray.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArray.arc56.json @@ -444,9 +444,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArrayArg.arc56.json b/tests/contracts/artifacts/ABITestDynamicArrayArg.arc56.json index 5f5d595d7..49a83aefd 100644 --- a/tests/contracts/artifacts/ABITestDynamicArrayArg.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArrayArg.arc56.json @@ -411,9 +411,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArrayElements.arc56.json b/tests/contracts/artifacts/ABITestDynamicArrayElements.arc56.json index 9a46a7ac2..665cee742 100644 --- a/tests/contracts/artifacts/ABITestDynamicArrayElements.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArrayElements.arc56.json @@ -659,9 +659,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArrayInMiddleOfTuple.arc56.json b/tests/contracts/artifacts/ABITestDynamicArrayInMiddleOfTuple.arc56.json index b84bd87b1..dcc1003a0 100644 --- a/tests/contracts/artifacts/ABITestDynamicArrayInMiddleOfTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArrayInMiddleOfTuple.arc56.json @@ -701,9 +701,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArrayIteration.arc56.json b/tests/contracts/artifacts/ABITestDynamicArrayIteration.arc56.json index ffaffec5a..33ffdcac7 100644 --- a/tests/contracts/artifacts/ABITestDynamicArrayIteration.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArrayIteration.arc56.json @@ -1065,9 +1065,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicArrayLength.arc56.json b/tests/contracts/artifacts/ABITestDynamicArrayLength.arc56.json index 3fba967d5..108e549a9 100644 --- a/tests/contracts/artifacts/ABITestDynamicArrayLength.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicArrayLength.arc56.json @@ -1043,9 +1043,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicBoolArray.arc56.json b/tests/contracts/artifacts/ABITestDynamicBoolArray.arc56.json index fee906e43..9dacdb343 100644 --- a/tests/contracts/artifacts/ABITestDynamicBoolArray.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicBoolArray.arc56.json @@ -596,9 +596,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicBoolArrayAccess.arc56.json b/tests/contracts/artifacts/ABITestDynamicBoolArrayAccess.arc56.json index cdaf299ca..f9c3a1700 100644 --- a/tests/contracts/artifacts/ABITestDynamicBoolArrayAccess.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicBoolArrayAccess.arc56.json @@ -657,9 +657,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicBoolArrayUpdate.arc56.json b/tests/contracts/artifacts/ABITestDynamicBoolArrayUpdate.arc56.json index 4e2d21c07..160548618 100644 --- a/tests/contracts/artifacts/ABITestDynamicBoolArrayUpdate.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicBoolArrayUpdate.arc56.json @@ -650,9 +650,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestDynamicTupleArray.arc56.json b/tests/contracts/artifacts/ABITestDynamicTupleArray.arc56.json index 0a2eefdbe..01c368f9b 100644 --- a/tests/contracts/artifacts/ABITestDynamicTupleArray.arc56.json +++ b/tests/contracts/artifacts/ABITestDynamicTupleArray.arc56.json @@ -440,9 +440,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestEmptyDynamicArray.arc56.json b/tests/contracts/artifacts/ABITestEmptyDynamicArray.arc56.json index e45c62355..49821136b 100644 --- a/tests/contracts/artifacts/ABITestEmptyDynamicArray.arc56.json +++ b/tests/contracts/artifacts/ABITestEmptyDynamicArray.arc56.json @@ -408,9 +408,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestEmptyStaticArray.arc56.json b/tests/contracts/artifacts/ABITestEmptyStaticArray.arc56.json index 67178ef03..8521cd0c6 100644 --- a/tests/contracts/artifacts/ABITestEmptyStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestEmptyStaticArray.arc56.json @@ -387,9 +387,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestExtractUint.arc56.json b/tests/contracts/artifacts/ABITestExtractUint.arc56.json index 2ecb093d9..4e12c74d6 100644 --- a/tests/contracts/artifacts/ABITestExtractUint.arc56.json +++ b/tests/contracts/artifacts/ABITestExtractUint.arc56.json @@ -455,9 +455,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestForEachReturn.arc56.json b/tests/contracts/artifacts/ABITestForEachReturn.arc56.json index 5445dc09b..baf430787 100644 --- a/tests/contracts/artifacts/ABITestForEachReturn.arc56.json +++ b/tests/contracts/artifacts/ABITestForEachReturn.arc56.json @@ -702,9 +702,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestForOfBreak.arc56.json b/tests/contracts/artifacts/ABITestForOfBreak.arc56.json index 0407d06e2..86c852e5f 100644 --- a/tests/contracts/artifacts/ABITestForOfBreak.arc56.json +++ b/tests/contracts/artifacts/ABITestForOfBreak.arc56.json @@ -702,9 +702,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestForOfContinue.arc56.json b/tests/contracts/artifacts/ABITestForOfContinue.arc56.json index 9e3ea58f1..1ec8fa83f 100644 --- a/tests/contracts/artifacts/ABITestForOfContinue.arc56.json +++ b/tests/contracts/artifacts/ABITestForOfContinue.arc56.json @@ -702,9 +702,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestGlobalMethodInChain.arc56.json b/tests/contracts/artifacts/ABITestGlobalMethodInChain.arc56.json index a79a39ac8..0ab3116b5 100644 --- a/tests/contracts/artifacts/ABITestGlobalMethodInChain.arc56.json +++ b/tests/contracts/artifacts/ABITestGlobalMethodInChain.arc56.json @@ -402,9 +402,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestLargeNestedStaticForEachInBox.arc56.json b/tests/contracts/artifacts/ABITestLargeNestedStaticForEachInBox.arc56.json index b358d4647..48a090db9 100644 --- a/tests/contracts/artifacts/ABITestLargeNestedStaticForEachInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestLargeNestedStaticForEachInBox.arc56.json @@ -791,9 +791,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestLargeNestedStaticForOfInBox.arc56.json b/tests/contracts/artifacts/ABITestLargeNestedStaticForOfInBox.arc56.json index e59989a10..77e7251df 100644 --- a/tests/contracts/artifacts/ABITestLargeNestedStaticForOfInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestLargeNestedStaticForOfInBox.arc56.json @@ -791,9 +791,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestMaxUfixed.arc56.json b/tests/contracts/artifacts/ABITestMaxUfixed.arc56.json index 58c281240..3534cdd0b 100644 --- a/tests/contracts/artifacts/ABITestMaxUfixed.arc56.json +++ b/tests/contracts/artifacts/ABITestMaxUfixed.arc56.json @@ -398,9 +398,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestMixedStaticArrayElements.arc56.json b/tests/contracts/artifacts/ABITestMixedStaticArrayElements.arc56.json index 44822f0e4..e477da0e6 100644 --- a/tests/contracts/artifacts/ABITestMixedStaticArrayElements.arc56.json +++ b/tests/contracts/artifacts/ABITestMixedStaticArrayElements.arc56.json @@ -699,9 +699,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestMultiBytesTuple.arc56.json b/tests/contracts/artifacts/ABITestMultiBytesTuple.arc56.json index 9d680e28a..04efa32cd 100644 --- a/tests/contracts/artifacts/ABITestMultiBytesTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestMultiBytesTuple.arc56.json @@ -597,9 +597,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestMultiNestedArrayRef.arc56.json b/tests/contracts/artifacts/ABITestMultiNestedArrayRef.arc56.json index af641cbf9..58ff0e21c 100644 --- a/tests/contracts/artifacts/ABITestMultiNestedArrayRef.arc56.json +++ b/tests/contracts/artifacts/ABITestMultiNestedArrayRef.arc56.json @@ -422,9 +422,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNamedTuple.arc56.json b/tests/contracts/artifacts/ABITestNamedTuple.arc56.json index 696e63376..47a9669ad 100644 --- a/tests/contracts/artifacts/ABITestNamedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestNamedTuple.arc56.json @@ -857,9 +857,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json index 8235007d6..b08bd43a5 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json @@ -814,9 +814,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json index dd234ddb0..c9685a6f7 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -845,9 +845,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json index 8016766c8..7d060ee13 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json @@ -845,9 +845,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json index 08349b28f..4a3afb559 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json @@ -801,9 +801,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayLengthInObject.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayLengthInObject.arc56.json index 46f531c27..0df72b48d 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayLengthInObject.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayLengthInObject.arc56.json @@ -401,9 +401,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayLengthInObjectVariable.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayLengthInObjectVariable.arc56.json index 85265c24d..4945763d3 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayLengthInObjectVariable.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayLengthInObjectVariable.arc56.json @@ -393,9 +393,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayRef.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayRef.arc56.json index 845834c72..d59845e7f 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayRef.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayRef.arc56.json @@ -418,9 +418,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedObject.arc56.json b/tests/contracts/artifacts/ABITestNestedObject.arc56.json index d9351de87..53fde78f2 100644 --- a/tests/contracts/artifacts/ABITestNestedObject.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedObject.arc56.json @@ -452,9 +452,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedObjectType.arc56.json b/tests/contracts/artifacts/ABITestNestedObjectType.arc56.json index 81f00e91c..150a50f27 100644 --- a/tests/contracts/artifacts/ABITestNestedObjectType.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedObjectType.arc56.json @@ -452,9 +452,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedStaticArray.arc56.json b/tests/contracts/artifacts/ABITestNestedStaticArray.arc56.json index c24e6fc72..fa52e600b 100644 --- a/tests/contracts/artifacts/ABITestNestedStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedStaticArray.arc56.json @@ -476,9 +476,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedStaticArrayLength.arc56.json b/tests/contracts/artifacts/ABITestNestedStaticArrayLength.arc56.json index c2bcf588e..eab0cbc55 100644 --- a/tests/contracts/artifacts/ABITestNestedStaticArrayLength.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedStaticArrayLength.arc56.json @@ -411,9 +411,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedStaticForEach.arc56.json b/tests/contracts/artifacts/ABITestNestedStaticForEach.arc56.json index b503f4fd5..f1f3be413 100644 --- a/tests/contracts/artifacts/ABITestNestedStaticForEach.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedStaticForEach.arc56.json @@ -718,9 +718,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedStaticForEachInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedStaticForEachInBox.arc56.json index 308e78226..cccae50f0 100644 --- a/tests/contracts/artifacts/ABITestNestedStaticForEachInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedStaticForEachInBox.arc56.json @@ -746,9 +746,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedStructInBoxMap.arc56.json b/tests/contracts/artifacts/ABITestNestedStructInBoxMap.arc56.json index 67fc9b8de..0ac0fc309 100644 --- a/tests/contracts/artifacts/ABITestNestedStructInBoxMap.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedStructInBoxMap.arc56.json @@ -478,9 +478,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedTuple.arc56.json b/tests/contracts/artifacts/ABITestNestedTuple.arc56.json index 79b61d4ef..3a31fa5df 100644 --- a/tests/contracts/artifacts/ABITestNestedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedTuple.arc56.json @@ -837,9 +837,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedTypesInSignature.arc56.json b/tests/contracts/artifacts/ABITestNestedTypesInSignature.arc56.json index 35d7dd749..cbc21a1ef 100644 --- a/tests/contracts/artifacts/ABITestNestedTypesInSignature.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedTypesInSignature.arc56.json @@ -373,9 +373,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNonE2E.arc56.json b/tests/contracts/artifacts/ABITestNonE2E.arc56.json index 040778c6a..0ff8e806c 100644 --- a/tests/contracts/artifacts/ABITestNonE2E.arc56.json +++ b/tests/contracts/artifacts/ABITestNonE2E.arc56.json @@ -709,9 +709,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNonLiteralDynamicElementInTuple.arc56.json b/tests/contracts/artifacts/ABITestNonLiteralDynamicElementInTuple.arc56.json index 75d2c06f5..184f27ea9 100644 --- a/tests/contracts/artifacts/ABITestNonLiteralDynamicElementInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestNonLiteralDynamicElementInTuple.arc56.json @@ -833,9 +833,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNonLiteralNestedArrayRef.arc56.json b/tests/contracts/artifacts/ABITestNonLiteralNestedArrayRef.arc56.json index 1df53bea1..ee1d5da9f 100644 --- a/tests/contracts/artifacts/ABITestNonLiteralNestedArrayRef.arc56.json +++ b/tests/contracts/artifacts/ABITestNonLiteralNestedArrayRef.arc56.json @@ -526,9 +526,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNonLiteralStaticArrayAccess.arc56.json b/tests/contracts/artifacts/ABITestNonLiteralStaticArrayAccess.arc56.json index ed8d8c482..d5aff9e8c 100644 --- a/tests/contracts/artifacts/ABITestNonLiteralStaticArrayAccess.arc56.json +++ b/tests/contracts/artifacts/ABITestNonLiteralStaticArrayAccess.arc56.json @@ -467,9 +467,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNonLiteralStaticArrayElements.arc56.json b/tests/contracts/artifacts/ABITestNonLiteralStaticArrayElements.arc56.json index f9f009fea..d9aee768f 100644 --- a/tests/contracts/artifacts/ABITestNonLiteralStaticArrayElements.arc56.json +++ b/tests/contracts/artifacts/ABITestNonLiteralStaticArrayElements.arc56.json @@ -529,9 +529,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestObjectArrayRef.arc56.json b/tests/contracts/artifacts/ABITestObjectArrayRef.arc56.json index e5acd4fe5..18ec141f0 100644 --- a/tests/contracts/artifacts/ABITestObjectArrayRef.arc56.json +++ b/tests/contracts/artifacts/ABITestObjectArrayRef.arc56.json @@ -426,9 +426,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestObjectInArgs.arc56.json b/tests/contracts/artifacts/ABITestObjectInArgs.arc56.json index 594641bac..c096c68b6 100644 --- a/tests/contracts/artifacts/ABITestObjectInArgs.arc56.json +++ b/tests/contracts/artifacts/ABITestObjectInArgs.arc56.json @@ -460,9 +460,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestObjectRef.arc56.json b/tests/contracts/artifacts/ABITestObjectRef.arc56.json index 95f2760ff..6532f8e58 100644 --- a/tests/contracts/artifacts/ABITestObjectRef.arc56.json +++ b/tests/contracts/artifacts/ABITestObjectRef.arc56.json @@ -437,9 +437,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestOpcodeParamFromObject.arc56.json b/tests/contracts/artifacts/ABITestOpcodeParamFromObject.arc56.json index 202194f5a..4f7e38b02 100644 --- a/tests/contracts/artifacts/ABITestOpcodeParamFromObject.arc56.json +++ b/tests/contracts/artifacts/ABITestOpcodeParamFromObject.arc56.json @@ -389,9 +389,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPartialStaticArray.arc56.json b/tests/contracts/artifacts/ABITestPartialStaticArray.arc56.json index 54c7e00c2..b05c05789 100644 --- a/tests/contracts/artifacts/ABITestPartialStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestPartialStaticArray.arc56.json @@ -387,9 +387,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPlusEqualsArrayValue.arc56.json b/tests/contracts/artifacts/ABITestPlusEqualsArrayValue.arc56.json index d4240b3d0..47c965d9d 100644 --- a/tests/contracts/artifacts/ABITestPlusEqualsArrayValue.arc56.json +++ b/tests/contracts/artifacts/ABITestPlusEqualsArrayValue.arc56.json @@ -473,9 +473,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPlusEqualsObjValue.arc56.json b/tests/contracts/artifacts/ABITestPlusEqualsObjValue.arc56.json index fa8e9a3dd..3df68bef8 100644 --- a/tests/contracts/artifacts/ABITestPlusEqualsObjValue.arc56.json +++ b/tests/contracts/artifacts/ABITestPlusEqualsObjValue.arc56.json @@ -485,9 +485,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPlusEqualsObjValueInBox.arc56.json b/tests/contracts/artifacts/ABITestPlusEqualsObjValueInBox.arc56.json index eec2f8477..4a778e498 100644 --- a/tests/contracts/artifacts/ABITestPlusEqualsObjValueInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestPlusEqualsObjValueInBox.arc56.json @@ -527,9 +527,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPostBoolTupleOffset.arc56.json b/tests/contracts/artifacts/ABITestPostBoolTupleOffset.arc56.json index 89e16b0e0..de15ac4b2 100644 --- a/tests/contracts/artifacts/ABITestPostBoolTupleOffset.arc56.json +++ b/tests/contracts/artifacts/ABITestPostBoolTupleOffset.arc56.json @@ -630,9 +630,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestPushToArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestPushToArrayInBox.arc56.json index 2a258cdb0..61c331c4c 100644 --- a/tests/contracts/artifacts/ABITestPushToArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestPushToArrayInBox.arc56.json @@ -818,9 +818,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestRawBytesFunction.arc56.json b/tests/contracts/artifacts/ABITestRawBytesFunction.arc56.json index cb61daa91..64c06d499 100644 --- a/tests/contracts/artifacts/ABITestRawBytesFunction.arc56.json +++ b/tests/contracts/artifacts/ABITestRawBytesFunction.arc56.json @@ -428,9 +428,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestRefTypes.arc56.json b/tests/contracts/artifacts/ABITestRefTypes.arc56.json index 990108716..db3f795d1 100644 --- a/tests/contracts/artifacts/ABITestRefTypes.arc56.json +++ b/tests/contracts/artifacts/ABITestRefTypes.arc56.json @@ -519,9 +519,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnByte.arc56.json b/tests/contracts/artifacts/ABITestReturnByte.arc56.json index 8c0db7c2b..e7684972f 100644 --- a/tests/contracts/artifacts/ABITestReturnByte.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnByte.arc56.json @@ -424,9 +424,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnDynamicArray.arc56.json b/tests/contracts/artifacts/ABITestReturnDynamicArray.arc56.json index 5e06d0539..3dbada181 100644 --- a/tests/contracts/artifacts/ABITestReturnDynamicArray.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnDynamicArray.arc56.json @@ -464,9 +464,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnDynamicArrayFromTuple.arc56.json b/tests/contracts/artifacts/ABITestReturnDynamicArrayFromTuple.arc56.json index d639e9210..d00a4f2bd 100644 --- a/tests/contracts/artifacts/ABITestReturnDynamicArrayFromTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnDynamicArrayFromTuple.arc56.json @@ -910,9 +910,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnStaticArray.arc56.json b/tests/contracts/artifacts/ABITestReturnStaticArray.arc56.json index 93bb9c070..bbb4ed21e 100644 --- a/tests/contracts/artifacts/ABITestReturnStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnStaticArray.arc56.json @@ -405,9 +405,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnTuple.arc56.json b/tests/contracts/artifacts/ABITestReturnTuple.arc56.json index eacc07e67..504a0e337 100644 --- a/tests/contracts/artifacts/ABITestReturnTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnTuple.arc56.json @@ -399,9 +399,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestReturnTupleWithDyamicArray.arc56.json b/tests/contracts/artifacts/ABITestReturnTupleWithDyamicArray.arc56.json index a037ad840..fc4a3f41f 100644 --- a/tests/contracts/artifacts/ABITestReturnTupleWithDyamicArray.arc56.json +++ b/tests/contracts/artifacts/ABITestReturnTupleWithDyamicArray.arc56.json @@ -745,9 +745,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSetStaticArrayElement.arc56.json b/tests/contracts/artifacts/ABITestSetStaticArrayElement.arc56.json index e79da7bd0..b0fd13c45 100644 --- a/tests/contracts/artifacts/ABITestSetStaticArrayElement.arc56.json +++ b/tests/contracts/artifacts/ABITestSetStaticArrayElement.arc56.json @@ -468,9 +468,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestShortTypeNotation.arc56.json b/tests/contracts/artifacts/ABITestShortTypeNotation.arc56.json index 1f72d0db0..bb9741bc2 100644 --- a/tests/contracts/artifacts/ABITestShortTypeNotation.arc56.json +++ b/tests/contracts/artifacts/ABITestShortTypeNotation.arc56.json @@ -474,9 +474,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestShortenDynamicElementInTuple.arc56.json b/tests/contracts/artifacts/ABITestShortenDynamicElementInTuple.arc56.json index 7602b988a..346d97c72 100644 --- a/tests/contracts/artifacts/ABITestShortenDynamicElementInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestShortenDynamicElementInTuple.arc56.json @@ -1996,9 +1996,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSimpleTuple.arc56.json b/tests/contracts/artifacts/ABITestSimpleTuple.arc56.json index 783222ade..35fd24706 100644 --- a/tests/contracts/artifacts/ABITestSimpleTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestSimpleTuple.arc56.json @@ -470,9 +470,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSmallerByteCasting.arc56.json b/tests/contracts/artifacts/ABITestSmallerByteCasting.arc56.json index 44088fac3..3415afe9f 100644 --- a/tests/contracts/artifacts/ABITestSmallerByteCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestSmallerByteCasting.arc56.json @@ -409,9 +409,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSpliceFirstElement.arc56.json b/tests/contracts/artifacts/ABITestSpliceFirstElement.arc56.json index 8ad0c48e1..bee1df5eb 100644 --- a/tests/contracts/artifacts/ABITestSpliceFirstElement.arc56.json +++ b/tests/contracts/artifacts/ABITestSpliceFirstElement.arc56.json @@ -611,9 +611,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSpliceFirstElementValue.arc56.json b/tests/contracts/artifacts/ABITestSpliceFirstElementValue.arc56.json index 8a55d7c63..bd6150759 100644 --- a/tests/contracts/artifacts/ABITestSpliceFirstElementValue.arc56.json +++ b/tests/contracts/artifacts/ABITestSpliceFirstElementValue.arc56.json @@ -694,9 +694,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSpliceLastElement.arc56.json b/tests/contracts/artifacts/ABITestSpliceLastElement.arc56.json index 46aff83c2..12b3e88ae 100644 --- a/tests/contracts/artifacts/ABITestSpliceLastElement.arc56.json +++ b/tests/contracts/artifacts/ABITestSpliceLastElement.arc56.json @@ -611,9 +611,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestSpliceLastElementValue.arc56.json b/tests/contracts/artifacts/ABITestSpliceLastElementValue.arc56.json index dadd7a474..b54861048 100644 --- a/tests/contracts/artifacts/ABITestSpliceLastElementValue.arc56.json +++ b/tests/contracts/artifacts/ABITestSpliceLastElementValue.arc56.json @@ -694,9 +694,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticArray.arc56.json b/tests/contracts/artifacts/ABITestStaticArray.arc56.json index e703c8989..e3b1502ee 100644 --- a/tests/contracts/artifacts/ABITestStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticArray.arc56.json @@ -428,9 +428,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticArrayArg.arc56.json b/tests/contracts/artifacts/ABITestStaticArrayArg.arc56.json index 611e0dbc7..76ba3259e 100644 --- a/tests/contracts/artifacts/ABITestStaticArrayArg.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticArrayArg.arc56.json @@ -423,9 +423,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticArrayInStorageMap.arc56.json b/tests/contracts/artifacts/ABITestStaticArrayInStorageMap.arc56.json index 6e6b9d851..eba82aea3 100644 --- a/tests/contracts/artifacts/ABITestStaticArrayInStorageMap.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticArrayInStorageMap.arc56.json @@ -697,9 +697,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticArrayInStorageRef.arc56.json b/tests/contracts/artifacts/ABITestStaticArrayInStorageRef.arc56.json index ef503bb2e..4151e9cd5 100644 --- a/tests/contracts/artifacts/ABITestStaticArrayInStorageRef.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticArrayInStorageRef.arc56.json @@ -697,9 +697,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticArrayLength.arc56.json b/tests/contracts/artifacts/ABITestStaticArrayLength.arc56.json index 89014f280..1d26a319b 100644 --- a/tests/contracts/artifacts/ABITestStaticArrayLength.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticArrayLength.arc56.json @@ -393,9 +393,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticBoolArray.arc56.json b/tests/contracts/artifacts/ABITestStaticBoolArray.arc56.json index 655ddc3eb..3e6c70a25 100644 --- a/tests/contracts/artifacts/ABITestStaticBoolArray.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticBoolArray.arc56.json @@ -579,9 +579,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticBoolArrayAccess.arc56.json b/tests/contracts/artifacts/ABITestStaticBoolArrayAccess.arc56.json index e3d007a82..51ba0ae94 100644 --- a/tests/contracts/artifacts/ABITestStaticBoolArrayAccess.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticBoolArrayAccess.arc56.json @@ -640,9 +640,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticBoolArrayUpdate.arc56.json b/tests/contracts/artifacts/ABITestStaticBoolArrayUpdate.arc56.json index 2c03f2c0e..128e6765c 100644 --- a/tests/contracts/artifacts/ABITestStaticBoolArrayUpdate.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticBoolArrayUpdate.arc56.json @@ -632,9 +632,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticByteCasting.arc56.json b/tests/contracts/artifacts/ABITestStaticByteCasting.arc56.json index f8757adf0..3a84a4616 100644 --- a/tests/contracts/artifacts/ABITestStaticByteCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticByteCasting.arc56.json @@ -354,9 +354,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticForEach.arc56.json b/tests/contracts/artifacts/ABITestStaticForEach.arc56.json index d6f695a14..16f5e9b93 100644 --- a/tests/contracts/artifacts/ABITestStaticForEach.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticForEach.arc56.json @@ -661,9 +661,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticForOf.arc56.json b/tests/contracts/artifacts/ABITestStaticForOf.arc56.json index 9ac97390c..57172b09d 100644 --- a/tests/contracts/artifacts/ABITestStaticForOf.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticForOf.arc56.json @@ -661,9 +661,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticStringArrayArg.arc56.json b/tests/contracts/artifacts/ABITestStaticStringArrayArg.arc56.json index de7fb00fb..d27fde8b2 100644 --- a/tests/contracts/artifacts/ABITestStaticStringArrayArg.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticStringArrayArg.arc56.json @@ -527,9 +527,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStaticTypeInBox.arc56.json b/tests/contracts/artifacts/ABITestStaticTypeInBox.arc56.json index 1a8071978..1abc91841 100644 --- a/tests/contracts/artifacts/ABITestStaticTypeInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestStaticTypeInBox.arc56.json @@ -395,9 +395,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStoragePropertyReferenceInBox.arc56.json b/tests/contracts/artifacts/ABITestStoragePropertyReferenceInBox.arc56.json index 4bee69eff..cfe7a299b 100644 --- a/tests/contracts/artifacts/ABITestStoragePropertyReferenceInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestStoragePropertyReferenceInBox.arc56.json @@ -498,9 +498,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStorageRefAccount.arc56.json b/tests/contracts/artifacts/ABITestStorageRefAccount.arc56.json index b2e0bf6ab..8b6542a47 100644 --- a/tests/contracts/artifacts/ABITestStorageRefAccount.arc56.json +++ b/tests/contracts/artifacts/ABITestStorageRefAccount.arc56.json @@ -728,9 +728,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStorageRefKey.arc56.json b/tests/contracts/artifacts/ABITestStorageRefKey.arc56.json index 6471e430b..c62793857 100644 --- a/tests/contracts/artifacts/ABITestStorageRefKey.arc56.json +++ b/tests/contracts/artifacts/ABITestStorageRefKey.arc56.json @@ -703,9 +703,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStorageTypeHint.arc56.json b/tests/contracts/artifacts/ABITestStorageTypeHint.arc56.json index caa166b8f..bc468e16c 100644 --- a/tests/contracts/artifacts/ABITestStorageTypeHint.arc56.json +++ b/tests/contracts/artifacts/ABITestStorageTypeHint.arc56.json @@ -402,9 +402,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringAccessor.arc56.json b/tests/contracts/artifacts/ABITestStringAccessor.arc56.json index b8fe7010d..feb49ba7b 100644 --- a/tests/contracts/artifacts/ABITestStringAccessor.arc56.json +++ b/tests/contracts/artifacts/ABITestStringAccessor.arc56.json @@ -445,9 +445,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringArg.arc56.json b/tests/contracts/artifacts/ABITestStringArg.arc56.json index 66839de88..25b547532 100644 --- a/tests/contracts/artifacts/ABITestStringArg.arc56.json +++ b/tests/contracts/artifacts/ABITestStringArg.arc56.json @@ -380,9 +380,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringArray.arc56.json b/tests/contracts/artifacts/ABITestStringArray.arc56.json index 1c105b16f..ca9e47a8d 100644 --- a/tests/contracts/artifacts/ABITestStringArray.arc56.json +++ b/tests/contracts/artifacts/ABITestStringArray.arc56.json @@ -362,9 +362,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringInTuple.arc56.json b/tests/contracts/artifacts/ABITestStringInTuple.arc56.json index ebbdbc958..2e4fabf60 100644 --- a/tests/contracts/artifacts/ABITestStringInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestStringInTuple.arc56.json @@ -733,9 +733,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringLength.arc56.json b/tests/contracts/artifacts/ABITestStringLength.arc56.json index 9ed328200..367d2e3fd 100644 --- a/tests/contracts/artifacts/ABITestStringLength.arc56.json +++ b/tests/contracts/artifacts/ABITestStringLength.arc56.json @@ -402,9 +402,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestStringReturn.arc56.json b/tests/contracts/artifacts/ABITestStringReturn.arc56.json index 09b40989e..dd41b5e92 100644 --- a/tests/contracts/artifacts/ABITestStringReturn.arc56.json +++ b/tests/contracts/artifacts/ABITestStringReturn.arc56.json @@ -405,9 +405,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestThreeDimensionalUint16Array.arc56.json b/tests/contracts/artifacts/ABITestThreeDimensionalUint16Array.arc56.json index e03717bf0..fc854bdf8 100644 --- a/tests/contracts/artifacts/ABITestThreeDimensionalUint16Array.arc56.json +++ b/tests/contracts/artifacts/ABITestThreeDimensionalUint16Array.arc56.json @@ -502,9 +502,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTupleArg.arc56.json b/tests/contracts/artifacts/ABITestTupleArg.arc56.json index a4d4d7e0e..e8c917567 100644 --- a/tests/contracts/artifacts/ABITestTupleArg.arc56.json +++ b/tests/contracts/artifacts/ABITestTupleArg.arc56.json @@ -469,9 +469,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTupleInArray.arc56.json b/tests/contracts/artifacts/ABITestTupleInArray.arc56.json index cb38fa1ea..5058dd94e 100644 --- a/tests/contracts/artifacts/ABITestTupleInArray.arc56.json +++ b/tests/contracts/artifacts/ABITestTupleInArray.arc56.json @@ -470,9 +470,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTupleInTuple.arc56.json b/tests/contracts/artifacts/ABITestTupleInTuple.arc56.json index cfb4f2ad6..15702412f 100644 --- a/tests/contracts/artifacts/ABITestTupleInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestTupleInTuple.arc56.json @@ -428,9 +428,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTxnTypes.arc56.json b/tests/contracts/artifacts/ABITestTxnTypes.arc56.json index a2d5d296a..d6f00bada 100644 --- a/tests/contracts/artifacts/ABITestTxnTypes.arc56.json +++ b/tests/contracts/artifacts/ABITestTxnTypes.arc56.json @@ -913,9 +913,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTypedConst.arc56.json b/tests/contracts/artifacts/ABITestTypedConst.arc56.json index e2ce399b0..115a090af 100644 --- a/tests/contracts/artifacts/ABITestTypedConst.arc56.json +++ b/tests/contracts/artifacts/ABITestTypedConst.arc56.json @@ -368,9 +368,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestTypedVarFromStorage.arc56.json b/tests/contracts/artifacts/ABITestTypedVarFromStorage.arc56.json index 3ddf0e90a..35fcf9d6b 100644 --- a/tests/contracts/artifacts/ABITestTypedVarFromStorage.arc56.json +++ b/tests/contracts/artifacts/ABITestTypedVarFromStorage.arc56.json @@ -475,9 +475,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUint64Casting.arc56.json b/tests/contracts/artifacts/ABITestUint64Casting.arc56.json index 24949651a..143a7be2f 100644 --- a/tests/contracts/artifacts/ABITestUint64Casting.arc56.json +++ b/tests/contracts/artifacts/ABITestUint64Casting.arc56.json @@ -460,9 +460,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUintCasting.arc56.json b/tests/contracts/artifacts/ABITestUintCasting.arc56.json index b1b39f799..17746f0bb 100644 --- a/tests/contracts/artifacts/ABITestUintCasting.arc56.json +++ b/tests/contracts/artifacts/ABITestUintCasting.arc56.json @@ -548,9 +548,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUintNComparison.arc56.json b/tests/contracts/artifacts/ABITestUintNComparison.arc56.json index 3acb80514..619ab91e1 100644 --- a/tests/contracts/artifacts/ABITestUintNComparison.arc56.json +++ b/tests/contracts/artifacts/ABITestUintNComparison.arc56.json @@ -496,9 +496,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateArrayRefInBoxStorage.arc56.json b/tests/contracts/artifacts/ABITestUpdateArrayRefInBoxStorage.arc56.json index 066800769..a6ee3f825 100644 --- a/tests/contracts/artifacts/ABITestUpdateArrayRefInBoxStorage.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateArrayRefInBoxStorage.arc56.json @@ -465,9 +465,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateDynamicArrayElement.arc56.json b/tests/contracts/artifacts/ABITestUpdateDynamicArrayElement.arc56.json index 7a2b7b996..34c9b3e2d 100644 --- a/tests/contracts/artifacts/ABITestUpdateDynamicArrayElement.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateDynamicArrayElement.arc56.json @@ -500,9 +500,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateDynamicArrayInMiddleOfTuple.arc56.json b/tests/contracts/artifacts/ABITestUpdateDynamicArrayInMiddleOfTuple.arc56.json index ad70c5dfb..6cbe6dac2 100644 --- a/tests/contracts/artifacts/ABITestUpdateDynamicArrayInMiddleOfTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateDynamicArrayInMiddleOfTuple.arc56.json @@ -1155,9 +1155,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateDynamicArrayInTuple.arc56.json b/tests/contracts/artifacts/ABITestUpdateDynamicArrayInTuple.arc56.json index 25f635f57..b73f87851 100644 --- a/tests/contracts/artifacts/ABITestUpdateDynamicArrayInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateDynamicArrayInTuple.arc56.json @@ -2564,9 +2564,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateDynamicElementInTupleWithSameLength.arc56.json b/tests/contracts/artifacts/ABITestUpdateDynamicElementInTupleWithSameLength.arc56.json index f3bb9d95b..8fafd39e5 100644 --- a/tests/contracts/artifacts/ABITestUpdateDynamicElementInTupleWithSameLength.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateDynamicElementInTupleWithSameLength.arc56.json @@ -1394,9 +1394,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateNamedTuple.arc56.json b/tests/contracts/artifacts/ABITestUpdateNamedTuple.arc56.json index f633d8369..d779f5452 100644 --- a/tests/contracts/artifacts/ABITestUpdateNamedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateNamedTuple.arc56.json @@ -1311,9 +1311,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateNestedStaticArray.arc56.json b/tests/contracts/artifacts/ABITestUpdateNestedStaticArray.arc56.json index df1e26674..7f997b7a9 100644 --- a/tests/contracts/artifacts/ABITestUpdateNestedStaticArray.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateNestedStaticArray.arc56.json @@ -532,9 +532,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateNestedStaticArrayElement.arc56.json b/tests/contracts/artifacts/ABITestUpdateNestedStaticArrayElement.arc56.json index 4584536e7..b4b8fe3be 100644 --- a/tests/contracts/artifacts/ABITestUpdateNestedStaticArrayElement.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateNestedStaticArrayElement.arc56.json @@ -516,9 +516,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageMap.arc56.json b/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageMap.arc56.json index 317b34e1d..a413ec3a4 100644 --- a/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageMap.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageMap.arc56.json @@ -869,9 +869,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageRef.arc56.json b/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageRef.arc56.json index 8993cdffb..991848e2c 100644 --- a/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageRef.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateStaticArrayInStorageRef.arc56.json @@ -869,9 +869,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateStaticFieldInDynamicObjectInBox.arc56.json b/tests/contracts/artifacts/ABITestUpdateStaticFieldInDynamicObjectInBox.arc56.json index a2acf7208..a0c83b70e 100644 --- a/tests/contracts/artifacts/ABITestUpdateStaticFieldInDynamicObjectInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateStaticFieldInDynamicObjectInBox.arc56.json @@ -1008,9 +1008,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateStringInTuple.arc56.json b/tests/contracts/artifacts/ABITestUpdateStringInTuple.arc56.json index a23bdd7c4..2727eb425 100644 --- a/tests/contracts/artifacts/ABITestUpdateStringInTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateStringInTuple.arc56.json @@ -2576,9 +2576,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestUpdateTupleWithOnlyDynamicTypes.arc56.json b/tests/contracts/artifacts/ABITestUpdateTupleWithOnlyDynamicTypes.arc56.json index 461e00472..63241f990 100644 --- a/tests/contracts/artifacts/ABITestUpdateTupleWithOnlyDynamicTypes.arc56.json +++ b/tests/contracts/artifacts/ABITestUpdateTupleWithOnlyDynamicTypes.arc56.json @@ -1996,9 +1996,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/AD.arc56.json b/tests/contracts/artifacts/AD.arc56.json index 25b175804..bfb494f03 100644 --- a/tests/contracts/artifacts/AD.arc56.json +++ b/tests/contracts/artifacts/AD.arc56.json @@ -585,9 +585,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ARC56Test.arc56.json b/tests/contracts/artifacts/ARC56Test.arc56.json index c9bb9dc7c..729c22fa7 100644 --- a/tests/contracts/artifacts/ARC56Test.arc56.json +++ b/tests/contracts/artifacts/ARC56Test.arc56.json @@ -1331,9 +1331,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ARC56TestNoTemplateVars.arc56.json b/tests/contracts/artifacts/ARC56TestNoTemplateVars.arc56.json index 69283276d..4213db03c 100644 --- a/tests/contracts/artifacts/ARC56TestNoTemplateVars.arc56.json +++ b/tests/contracts/artifacts/ARC56TestNoTemplateVars.arc56.json @@ -216,9 +216,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/AccountTest.arc56.json b/tests/contracts/artifacts/AccountTest.arc56.json index bca464190..3b224a6f2 100644 --- a/tests/contracts/artifacts/AccountTest.arc56.json +++ b/tests/contracts/artifacts/AccountTest.arc56.json @@ -2622,9 +2622,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/B.arc56.json b/tests/contracts/artifacts/B.arc56.json index edc221200..6a022d7a3 100644 --- a/tests/contracts/artifacts/B.arc56.json +++ b/tests/contracts/artifacts/B.arc56.json @@ -484,9 +484,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/B2.arc56.json b/tests/contracts/artifacts/B2.arc56.json index 0ec974fb3..66bd6f3fe 100644 --- a/tests/contracts/artifacts/B2.arc56.json +++ b/tests/contracts/artifacts/B2.arc56.json @@ -429,9 +429,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/BigComment.arc56.json b/tests/contracts/artifacts/BigComment.arc56.json index 62b504353..421ebda3b 100644 --- a/tests/contracts/artifacts/BigComment.arc56.json +++ b/tests/contracts/artifacts/BigComment.arc56.json @@ -628,9 +628,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/BinaryTest.arc56.json b/tests/contracts/artifacts/BinaryTest.arc56.json index f9eec2ee9..ff00a4897 100644 --- a/tests/contracts/artifacts/BinaryTest.arc56.json +++ b/tests/contracts/artifacts/BinaryTest.arc56.json @@ -1950,9 +1950,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/BytecblockTest.arc56.json b/tests/contracts/artifacts/BytecblockTest.arc56.json index 32927aaa3..ed78e5457 100644 --- a/tests/contracts/artifacts/BytecblockTest.arc56.json +++ b/tests/contracts/artifacts/BytecblockTest.arc56.json @@ -6915,9 +6915,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/C.arc56.json b/tests/contracts/artifacts/C.arc56.json index 6f868a935..cf7a6b0b4 100644 --- a/tests/contracts/artifacts/C.arc56.json +++ b/tests/contracts/artifacts/C.arc56.json @@ -620,9 +620,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ContractWithCustomStruct.arc56.json b/tests/contracts/artifacts/ContractWithCustomStruct.arc56.json index 5a0a8f7be..b991a1c9b 100644 --- a/tests/contracts/artifacts/ContractWithCustomStruct.arc56.json +++ b/tests/contracts/artifacts/ContractWithCustomStruct.arc56.json @@ -409,9 +409,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ContractWithLsigProgram.arc56.json b/tests/contracts/artifacts/ContractWithLsigProgram.arc56.json index 99d2b7e8f..666c571ec 100644 --- a/tests/contracts/artifacts/ContractWithLsigProgram.arc56.json +++ b/tests/contracts/artifacts/ContractWithLsigProgram.arc56.json @@ -274,9 +274,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ContratWithLsigAddress.arc56.json b/tests/contracts/artifacts/ContratWithLsigAddress.arc56.json index 8fcc06bdb..5bd1a575a 100644 --- a/tests/contracts/artifacts/ContratWithLsigAddress.arc56.json +++ b/tests/contracts/artifacts/ContratWithLsigAddress.arc56.json @@ -288,9 +288,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/D.arc56.json b/tests/contracts/artifacts/D.arc56.json index 8ee25e38c..68529177e 100644 --- a/tests/contracts/artifacts/D.arc56.json +++ b/tests/contracts/artifacts/D.arc56.json @@ -345,9 +345,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/DummyContract.arc56.json b/tests/contracts/artifacts/DummyContract.arc56.json index ca7c5b860..7d4cdcf6c 100644 --- a/tests/contracts/artifacts/DummyContract.arc56.json +++ b/tests/contracts/artifacts/DummyContract.arc56.json @@ -216,9 +216,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/E.arc56.json b/tests/contracts/artifacts/E.arc56.json index d75bce6d4..3af0cf006 100644 --- a/tests/contracts/artifacts/E.arc56.json +++ b/tests/contracts/artifacts/E.arc56.json @@ -755,9 +755,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ExternalContract.arc56.json b/tests/contracts/artifacts/ExternalContract.arc56.json index 9c7998045..e46f2c670 100644 --- a/tests/contracts/artifacts/ExternalContract.arc56.json +++ b/tests/contracts/artifacts/ExternalContract.arc56.json @@ -464,9 +464,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/F.arc56.json b/tests/contracts/artifacts/F.arc56.json index 784eedc18..7338941e1 100644 --- a/tests/contracts/artifacts/F.arc56.json +++ b/tests/contracts/artifacts/F.arc56.json @@ -463,9 +463,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/FunctionsTest.arc56.json b/tests/contracts/artifacts/FunctionsTest.arc56.json index b6b3af3e7..8dbb1f9e0 100644 --- a/tests/contracts/artifacts/FunctionsTest.arc56.json +++ b/tests/contracts/artifacts/FunctionsTest.arc56.json @@ -859,9 +859,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/G.arc56.json b/tests/contracts/artifacts/G.arc56.json index 1e6c9b7bd..8f1fe5be8 100644 --- a/tests/contracts/artifacts/G.arc56.json +++ b/tests/contracts/artifacts/G.arc56.json @@ -597,9 +597,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/GeneralTest.arc56.json b/tests/contracts/artifacts/GeneralTest.arc56.json index 101dc88d5..471551772 100644 --- a/tests/contracts/artifacts/GeneralTest.arc56.json +++ b/tests/contracts/artifacts/GeneralTest.arc56.json @@ -14826,9 +14826,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/IfTest.arc56.json b/tests/contracts/artifacts/IfTest.arc56.json index 0999457f5..57bb7d84b 100644 --- a/tests/contracts/artifacts/IfTest.arc56.json +++ b/tests/contracts/artifacts/IfTest.arc56.json @@ -4639,9 +4639,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/IntcblockTest.arc56.json b/tests/contracts/artifacts/IntcblockTest.arc56.json index 708e57e66..1a5ce9c78 100644 --- a/tests/contracts/artifacts/IntcblockTest.arc56.json +++ b/tests/contracts/artifacts/IntcblockTest.arc56.json @@ -4316,9 +4316,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ItxnsTest.arc56.json b/tests/contracts/artifacts/ItxnsTest.arc56.json index 041a56c9a..f16e0e9ad 100644 --- a/tests/contracts/artifacts/ItxnsTest.arc56.json +++ b/tests/contracts/artifacts/ItxnsTest.arc56.json @@ -2451,9 +2451,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/LoopsTest.arc56.json b/tests/contracts/artifacts/LoopsTest.arc56.json index d4a824350..af1b0e071 100644 --- a/tests/contracts/artifacts/LoopsTest.arc56.json +++ b/tests/contracts/artifacts/LoopsTest.arc56.json @@ -2527,9 +2527,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/MathTest.approval.teal b/tests/contracts/artifacts/MathTest.approval.teal index e95c936eb..00a5e4be9 100644 --- a/tests/contracts/artifacts/MathTest.approval.teal +++ b/tests/contracts/artifacts/MathTest.approval.teal @@ -1,6 +1,6 @@ #pragma version 10 -intcblock 1 32 256 8 0 16 18446744073709551615 2 3 4 5 64 128 -bytecblock 0x151f7c75 0x 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0x626f784b6579 0x674b6579 0x0000000000000000000000000000000000000000000000000000000000000001 0x00000000000000000000000000000000000000000000000000000000000003e8 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0xFFFFFFFFFFFFFFFF +intcblock 1 32 256 16 8 0 128 18446744073709551615 2 3 4 5 64 +bytecblock 0x151f7c75 0x 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0x626f784b6579 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0x674b6579 0x0000000000000000000000000000000000000000000000000000000000000001 0x00000000000000000000000000000000000000000000000000000000000003e8 0x7265776172645065725368617265 0xFFFFFFFFFFFFFFFF // This TEAL was generated by TEALScript v0.107.0 // https://github.com/algorandfoundation/TEALScript @@ -49,7 +49,7 @@ switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEM u64plus: proto 2 1 - // tests/contracts/math.algo.ts:8 + // tests/contracts/math.algo.ts:14 // return a + b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -81,7 +81,7 @@ u64plus: u64minus: proto 2 1 - // tests/contracts/math.algo.ts:12 + // tests/contracts/math.algo.ts:18 // return a - b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -113,7 +113,7 @@ u64minus: u64mul: proto 2 1 - // tests/contracts/math.algo.ts:16 + // tests/contracts/math.algo.ts:22 // return a * b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -145,7 +145,7 @@ u64mul: u64div: proto 2 1 - // tests/contracts/math.algo.ts:20 + // tests/contracts/math.algo.ts:26 // return a / b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -204,7 +204,7 @@ u64div: u256plus: proto 2 1 - // tests/contracts/math.algo.ts:24 + // tests/contracts/math.algo.ts:30 // return (a + b); frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -263,7 +263,7 @@ u256plus: u256minus: proto 2 1 - // tests/contracts/math.algo.ts:28 + // tests/contracts/math.algo.ts:34 // return (a - b); frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -322,7 +322,7 @@ u256minus: u256mul: proto 2 1 - // tests/contracts/math.algo.ts:32 + // tests/contracts/math.algo.ts:38 // return (a * b); frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -381,7 +381,7 @@ u256mul: u256div: proto 2 1 - // tests/contracts/math.algo.ts:36 + // tests/contracts/math.algo.ts:42 // return (a / b); frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -428,7 +428,7 @@ u256div: u64Return256: proto 2 1 - // tests/contracts/math.algo.ts:40 + // tests/contracts/math.algo.ts:46 // return (a + b); frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -453,9 +453,9 @@ u64Return256: maxU64: proto 0 1 - // tests/contracts/math.algo.ts:44 + // tests/contracts/math.algo.ts:50 // return Uint<64>('18446744073709551615'); - intc 6 // 18446744073709551615 + intc 7 // 18446744073709551615 retsub // exponent(uint64,uint64)uint64 @@ -483,7 +483,7 @@ maxU64: exponent: proto 2 1 - // tests/contracts/math.algo.ts:48 + // tests/contracts/math.algo.ts:54 // return a ** b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -522,7 +522,7 @@ exponent: itob dup bitlen - intc 5 // 16 + intc 3 // 16 <= // variableTypeHint return value overflowed 16 bits @@ -540,14 +540,14 @@ variableTypeHint: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:52 + // tests/contracts/math.algo.ts:58 // z = (x + y) frame_dig -1 // x: uint<8> frame_dig -2 // y: uint<8> + frame_bury 0 // z: unsafe uint16 - // tests/contracts/math.algo.ts:54 + // tests/contracts/math.algo.ts:60 // return z; frame_dig 0 // z: unsafe uint16 @@ -587,7 +587,7 @@ variableTypeHint: itob dup bitlen - intc 3 // 8 + intc 4 // 8 <= // uint8plus return value overflowed 8 bits @@ -602,7 +602,7 @@ variableTypeHint: uint8plus: proto 2 1 - // tests/contracts/math.algo.ts:58 + // tests/contracts/math.algo.ts:64 // return a + b; frame_dig -1 // a: uint<8> frame_dig -2 // b: uint<8> @@ -641,7 +641,7 @@ uint8plus: itob dup bitlen - intc 3 // 8 + intc 4 // 8 <= // uint8exp return value overflowed 8 bits @@ -656,7 +656,7 @@ uint8plus: uint8exp: proto 2 1 - // tests/contracts/math.algo.ts:62 + // tests/contracts/math.algo.ts:68 // return a ** b; frame_dig -1 // a: uint<8> frame_dig -2 // b: uint<8> @@ -691,19 +691,19 @@ plusEquals: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:66 + // tests/contracts/math.algo.ts:72 // x = a frame_dig -1 // a: uint64 frame_bury 0 // x: uint64 - // tests/contracts/math.algo.ts:68 + // tests/contracts/math.algo.ts:74 // x += b frame_dig 0 // x: uint64 frame_dig -2 // b: uint64 + frame_bury 0 // x: uint64 - // tests/contracts/math.algo.ts:70 + // tests/contracts/math.algo.ts:76 // return x; frame_dig 0 // x: uint64 @@ -736,25 +736,25 @@ plusEquals: plusEqualsFromGlobal: proto 2 1 - // tests/contracts/math.algo.ts:74 + // tests/contracts/math.algo.ts:80 // this.gKey.value = a - bytec 4 // "gKey" + bytec 5 // "gKey" frame_dig -1 // a: uint64 app_global_put - // tests/contracts/math.algo.ts:76 + // tests/contracts/math.algo.ts:82 // this.gKey.value += b - bytec 4 // "gKey" + bytec 5 // "gKey" app_global_get frame_dig -2 // b: uint64 + - bytec 4 // "gKey" + bytec 5 // "gKey" swap app_global_put - // tests/contracts/math.algo.ts:78 + // tests/contracts/math.algo.ts:84 // return this.gKey.value; - bytec 4 // "gKey" + bytec 5 // "gKey" app_global_get retsub @@ -790,20 +790,20 @@ plusEqualsFromGlobal: boxTest: proto 0 1 - // tests/contracts/math.algo.ts:84 + // tests/contracts/math.algo.ts:90 // this.boxKey.value = 1 bytec 3 // "boxKey" - bytec 5 // 0x0000000000000000000000000000000000000000000000000000000000000001 + bytec 6 // 0x0000000000000000000000000000000000000000000000000000000000000001 box_put - // tests/contracts/math.algo.ts:85 + // tests/contracts/math.algo.ts:91 // this.boxKey.value += 1 bytec 3 // "boxKey" box_get // box value does not exist: this.boxKey.value assert - bytec 5 // 0x0000000000000000000000000000000000000000000000000000000000000001 + bytec 6 // 0x0000000000000000000000000000000000000000000000000000000000000001 b+ bytec 3 // "boxKey" dup @@ -825,7 +825,7 @@ boxTest: swap box_put - // tests/contracts/math.algo.ts:87 + // tests/contracts/math.algo.ts:93 // return this.boxKey.value; bytec 3 // "boxKey" box_get @@ -838,7 +838,7 @@ boxTest: foo: proto 1 1 - // tests/contracts/math.algo.ts:91 + // tests/contracts/math.algo.ts:97 // return x; frame_dig -1 // x: uint256 retsub @@ -898,14 +898,14 @@ unsafeMethodArgs: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:95 + // tests/contracts/math.algo.ts:101 // c = a + b frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 b+ frame_bury 0 // c: unsafe uint256 - // tests/contracts/math.algo.ts:97 + // tests/contracts/math.algo.ts:103 // return this.foo(c); frame_dig 0 // c: unsafe uint256 dup @@ -964,7 +964,7 @@ uint256ComparisonType: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:101 + // tests/contracts/math.algo.ts:107 // senderBalanceAfter = a - b frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -972,7 +972,7 @@ uint256ComparisonType: frame_bury 0 // senderBalanceAfter: unsafe uint256 // *if0_condition - // tests/contracts/math.algo.ts:102 + // tests/contracts/math.algo.ts:108 // senderBalanceAfter > 0 frame_dig 0 // senderBalanceAfter: unsafe uint256 pushbytes 0x0000000000000000000000000000000000000000000000000000000000000000 @@ -980,14 +980,14 @@ uint256ComparisonType: bz *if0_else // *if0_consequent - // tests/contracts/math.algo.ts:103 + // tests/contracts/math.algo.ts:109 // log('nonZero') pushbytes 0x6e6f6e5a65726f // "nonZero" log b *if0_end *if0_else: - // tests/contracts/math.algo.ts:105 + // tests/contracts/math.algo.ts:111 // log('zero') pushbytes 0x7a65726f // "zero" log @@ -1047,7 +1047,7 @@ uint256ComparisonType: squareRoot256: proto 2 1 - // tests/contracts/math.algo.ts:110 + // tests/contracts/math.algo.ts:116 // return sqrt(a * b); frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -1080,7 +1080,7 @@ squareRoot256: squareRoot64: proto 2 1 - // tests/contracts/math.algo.ts:114 + // tests/contracts/math.algo.ts:120 // return sqrt(a * b); frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1106,7 +1106,7 @@ squareRoot64: // execute addressToBigInt(address)bool callsub addressToBigInt pushbytes 0x00 - intc 4 // 0 + intc 5 // 0 uncover 2 setbit concat @@ -1118,7 +1118,7 @@ squareRoot64: addressToBigInt: proto 1 1 - // tests/contracts/math.algo.ts:118 + // tests/contracts/math.algo.ts:124 // return btobigint(addr) > btobigint(this.txn.sender); frame_dig -1 // addr: Address txn Sender @@ -1145,12 +1145,12 @@ u8Tou64: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:122 + // tests/contracts/math.algo.ts:128 // x: uint8 = 7 pushint 7 frame_bury 0 // x: uint8 - // tests/contracts/math.algo.ts:123 + // tests/contracts/math.algo.ts:129 // return x; frame_dig 0 // x: uint8 @@ -1162,7 +1162,7 @@ u8Tou64: privateFuncName: proto 2 0 - // tests/contracts/math.algo.ts:127 + // tests/contracts/math.algo.ts:133 // assert(y > x) frame_dig -2 // y: uint64 frame_dig -1 // x: uint8 @@ -1191,13 +1191,13 @@ privateFuncName: funcName: proto 1 0 - // tests/contracts/math.algo.ts:131 + // tests/contracts/math.algo.ts:137 // this.privateFuncName(x, 1337) pushint 1337 frame_dig -1 // x: uint256 dup bitlen - intc 3 // 8 + intc 4 // 8 <= // x overflowed 8 bits @@ -1236,36 +1236,36 @@ bigintPlus: bytec 1 // 0x dup - // tests/contracts/math.algo.ts:135 + // tests/contracts/math.algo.ts:141 // x = itob(a) frame_dig -1 // a: uint64 itob frame_bury 0 // x: byte[] - // tests/contracts/math.algo.ts:136 + // tests/contracts/math.algo.ts:142 // y = itob(b) frame_dig -2 // b: uint64 itob frame_bury 1 // y: byte[] - // tests/contracts/math.algo.ts:137 + // tests/contracts/math.algo.ts:143 // return (btobigint(x) + btobigint(y)) as uint64; frame_dig 0 // x: byte[] frame_dig 1 // y: byte[] b+ dup bitlen - intc 11 // 64 + intc 12 // 64 <= // (btobigint(x) + btobigint(y)) as uint64 overflowed 64 bits assert - bytec 8 // 0xFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFF b& dup len dup - intc 3 // 8 + intc 4 // 8 - swap substring3 @@ -1303,7 +1303,7 @@ bigintPlus: bitwiseOr: proto 2 1 - // tests/contracts/math.algo.ts:141 + // tests/contracts/math.algo.ts:147 // return a | b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1335,7 +1335,7 @@ bitwiseOr: bitwiseAnd: proto 2 1 - // tests/contracts/math.algo.ts:145 + // tests/contracts/math.algo.ts:151 // return a & b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1367,7 +1367,7 @@ bitwiseAnd: bitwiseXor: proto 2 1 - // tests/contracts/math.algo.ts:149 + // tests/contracts/math.algo.ts:155 // return a ^ b; frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1426,7 +1426,7 @@ bitwiseXor: bitwiseOrU256: proto 2 1 - // tests/contracts/math.algo.ts:153 + // tests/contracts/math.algo.ts:159 // return a | b; frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -1485,7 +1485,7 @@ bitwiseOrU256: bitwiseAndU256: proto 2 1 - // tests/contracts/math.algo.ts:157 + // tests/contracts/math.algo.ts:163 // return a & b; frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -1544,7 +1544,7 @@ bitwiseAndU256: bitwiseXorU256: proto 2 1 - // tests/contracts/math.algo.ts:161 + // tests/contracts/math.algo.ts:167 // return a ^ b; frame_dig -1 // a: uint256 frame_dig -2 // b: uint256 @@ -1572,7 +1572,7 @@ bitwiseXorU256: bitwiseNot: proto 1 1 - // tests/contracts/math.algo.ts:165 + // tests/contracts/math.algo.ts:171 // return ~a; frame_dig -1 // a: uint64 ~ @@ -1620,7 +1620,7 @@ bitwiseNot: bitwiseNotU256: proto 1 1 - // tests/contracts/math.algo.ts:169 + // tests/contracts/math.algo.ts:175 // return ~a; frame_dig -1 // a: uint256 b~ @@ -1655,7 +1655,7 @@ mulw: bytec 1 // 0x dup - // tests/contracts/math.algo.ts:173 + // tests/contracts/math.algo.ts:179 // p = mulw(a, b) frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1663,7 +1663,7 @@ mulw: frame_bury 0 // p low: uint64 frame_bury 1 // p high: uint64 - // tests/contracts/math.algo.ts:177 + // tests/contracts/math.algo.ts:183 // return p2.low; frame_dig 0 // p low: uint64 @@ -1703,7 +1703,7 @@ addw: bytec 1 // 0x dup - // tests/contracts/math.algo.ts:181 + // tests/contracts/math.algo.ts:187 // p = addw(a, b) frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1711,7 +1711,7 @@ addw: frame_bury 0 // p low: uint64 frame_bury 1 // p high: uint64 - // tests/contracts/math.algo.ts:185 + // tests/contracts/math.algo.ts:191 // return p2.low; frame_dig 0 // p low: uint64 @@ -1751,7 +1751,7 @@ expw: bytec 1 // 0x dup - // tests/contracts/math.algo.ts:189 + // tests/contracts/math.algo.ts:195 // p = expw(a, b) frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 @@ -1759,7 +1759,7 @@ expw: frame_bury 0 // p low: uint64 frame_bury 1 // p high: uint64 - // tests/contracts/math.algo.ts:193 + // tests/contracts/math.algo.ts:199 // return p2.low; frame_dig 0 // p low: uint64 @@ -1795,9 +1795,9 @@ expw: divw: proto 2 1 - // tests/contracts/math.algo.ts:197 + // tests/contracts/math.algo.ts:203 // return divw(0, a, b); - intc 4 // 0 + intc 5 // 0 frame_dig -1 // a: uint64 frame_dig -2 // b: uint64 divw @@ -1832,11 +1832,11 @@ divmodw: bytec 1 // 0x dupn 3 - // tests/contracts/math.algo.ts:201 + // tests/contracts/math.algo.ts:207 // p = divmodw(0, a, 0, b) - intc 4 // 0 + intc 5 // 0 frame_dig -1 // a: uint64 - intc 4 // 0 + intc 5 // 0 frame_dig -2 // b: uint64 divmodw frame_bury 0 // p remainderLow: uint64 @@ -1844,7 +1844,7 @@ divmodw: frame_bury 2 // p quotientLow: uint64 frame_bury 3 // p quotientHigh: uint64 - // tests/contracts/math.algo.ts:205 + // tests/contracts/math.algo.ts:211 // return p2.quotientLow; frame_dig 2 // p quotientLow: uint64 @@ -1876,46 +1876,46 @@ unsafeVariables: bytec 1 // 0x dupn 2 - // tests/contracts/math.algo.ts:209 + // tests/contracts/math.algo.ts:215 // A = 250000000 pushbytes 0x000000000000000000000000000000000000000000000000000000000ee6b280 frame_bury 0 // A: unsafe uint256 - // tests/contracts/math.algo.ts:210 + // tests/contracts/math.algo.ts:216 // B = 1000 - bytec 6 // 0x00000000000000000000000000000000000000000000000000000000000003e8 + bytec 7 // 0x00000000000000000000000000000000000000000000000000000000000003e8 frame_bury 1 // B: uint256 - // tests/contracts/math.algo.ts:212 + // tests/contracts/math.algo.ts:218 // A = A / B frame_dig 0 // A: unsafe uint256 - bytec 6 // B: uint256 + bytec 7 // B: uint256 b/ frame_bury 0 // A: unsafe uint256 - // tests/contracts/math.algo.ts:214 + // tests/contracts/math.algo.ts:220 // c = A as uint64 frame_dig 0 // A: unsafe uint256 dup bitlen - intc 11 // 64 + intc 12 // 64 <= // A as uint64 overflowed 64 bits assert - bytec 8 // 0xFFFFFFFFFFFFFFFF + bytec 9 // 0xFFFFFFFFFFFFFFFF b& dup len dup - intc 3 // 8 + intc 4 // 8 - swap substring3 btoi frame_bury 2 // c: uint64 - // tests/contracts/math.algo.ts:216 + // tests/contracts/math.algo.ts:222 // return c; frame_dig 2 // c: uint64 @@ -1935,7 +1935,7 @@ unsafeVariables: txna ApplicationArgs 1 dup len - intc 5 // 16 + intc 3 // 16 == // argument 0 (x) for foobar must be a uint128 @@ -1945,17 +1945,17 @@ unsafeVariables: callsub foobar dup bitlen - intc 12 // 128 + intc 6 // 128 <= // foobar return value overflowed 128 bits assert - bytec 7 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 4 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - intc 5 // 16 + intc 3 // 16 - swap substring3 @@ -1971,30 +1971,30 @@ foobar: // Push empty bytes after the frame pointer to reserve space for local variables bytec 1 // 0x - // tests/contracts/math.algo.ts:220 + // tests/contracts/math.algo.ts:226 // avgStake: uint128 = x / (30000 as uint128) frame_dig -1 // x: uint128 pushbytes 0x00000000000000000000000000007530 b/ dup bitlen - intc 12 // 128 + intc 6 // 128 <= // x / (30000 as uint128) overflowed 128 bits assert - bytec 7 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + bytec 4 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF b& dup len dup - intc 5 // 16 + intc 3 // 16 - swap substring3 frame_bury 0 // avgStake: uint128 - // tests/contracts/math.algo.ts:222 + // tests/contracts/math.algo.ts:228 // return avgStake; frame_dig 0 // avgStake: uint128 @@ -2034,7 +2034,7 @@ foobar: uintFromHex: proto 0 1 - // tests/contracts/math.algo.ts:226 + // tests/contracts/math.algo.ts:232 // return Uint<256>('0xFF'); pushbytes 0x00000000000000000000000000000000000000000000000000000000000000ff retsub @@ -2056,12 +2056,12 @@ uintFromHex: wideRatioTest: proto 0 1 - // tests/contracts/math.algo.ts:230 + // tests/contracts/math.algo.ts:236 // return wideRatio([Uint<64>('18446744073709551615'), 2, 3, 4, 5], [2, 3, 4, 5]); - intc 6 // 18446744073709551615 - intc 7 // 2 + intc 7 // 18446744073709551615 + intc 8 // 2 mulw - intc 8 // 3 + intc 9 // 3 uncover 2 dig 1 * @@ -2070,7 +2070,7 @@ wideRatioTest: cover 2 + swap - intc 9 // 4 + intc 10 // 4 uncover 2 dig 1 * @@ -2079,7 +2079,7 @@ wideRatioTest: cover 2 + swap - intc 10 // 5 + intc 11 // 5 uncover 2 dig 1 * @@ -2088,10 +2088,10 @@ wideRatioTest: cover 2 + swap - intc 7 // 2 - intc 8 // 3 + intc 8 // 2 + intc 9 // 3 mulw - intc 9 // 4 + intc 10 // 4 uncover 2 dig 1 * @@ -2100,7 +2100,7 @@ wideRatioTest: cover 2 + swap - intc 10 // 5 + intc 11 // 5 uncover 2 dig 1 * @@ -2119,6 +2119,118 @@ wideRatioTest: assert retsub +// u128InTuple((uint64,uint64,uint128),uint128,uint64)uint128 +*abi_route_u128InTuple: + // The ABI return prefix + bytec 0 // 0x151f7c75 + + // scale: uint64 + txna ApplicationArgs 3 + btoi + + // accRps: uint128 + txna ApplicationArgs 2 + dup + len + intc 3 // 16 + == + + // argument 1 (accRps) for u128InTuple must be a uint128 + assert + + // userData: (uint64,uint64,uint128) + txna ApplicationArgs 1 + dup + len + intc 1 // 32 + == + + // argument 2 (userData) for u128InTuple must be a (uint64,uint64,uint128) + assert + + // execute u128InTuple((uint64,uint64,uint128),uint128,uint64)uint128 + callsub u128InTuple + dup + bitlen + intc 6 // 128 + <= + + // u128InTuple return value overflowed 128 bits + assert + bytec 4 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + b& + dup + len + dup + intc 3 // 16 + - + swap + substring3 + concat + log + intc 0 // 1 + return + +// u128InTuple(userData: UserData, accRps: uint128, scale: uint64): uint128 +u128InTuple: + proto 3 1 + + // Push empty bytes after the frame pointer to reserve space for local variables + bytec 1 // 0x + + // tests/contracts/math.algo.ts:242 + // this.accRPS.value = accRps + bytec 8 // "rewardPerShare" + frame_dig -2 // accRps: uint128 + app_global_put + + // tests/contracts/math.algo.ts:243 + // retVal = clone(userData) + frame_dig -1 // userData: UserData + frame_bury 0 // retVal: (uint64,uint64,uint128) + + // tests/contracts/math.algo.ts:245 + // retVal.rewardDebt = ((userData.stake as uint128) * (this.accRPS.value as uint128)) / (scale as uint128) + frame_dig 0 // retVal: (uint64,uint64,uint128) + intc 3 // headOffset + frame_dig -1 // userData: UserData + extract 0 8 + btoi + itob + bytec 8 // "rewardPerShare" + app_global_get + b* + frame_dig -3 // scale: uint64 + itob + b/ + dup + bitlen + intc 6 // 128 + <= + + // retVal.rewardDebt overflowed 128 bits + assert + bytec 4 // 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + b& + dup + len + dup + intc 3 // 16 + - + swap + substring3 + replace3 + frame_bury 0 // retVal: (uint64,uint64,uint128) + + // tests/contracts/math.algo.ts:247 + // return retVal.rewardDebt; + frame_dig 0 // retVal: (uint64,uint64,uint128) + extract 16 16 + + // set the subroutine return value + frame_bury 0 + retsub + *abi_route_createApplication: intc 0 // 1 return @@ -2174,8 +2286,9 @@ wideRatioTest: pushbytes 0x92465d08 // method "foobar(uint128)uint128" pushbytes 0xf01facce // method "uintFromHex()uint256" pushbytes 0x5ac8a0a0 // method "wideRatioTest()uint64" + pushbytes 0xcfb00692 // method "u128InTuple((uint64,uint64,uint128),uint128,uint64)uint128" txna ApplicationArgs 0 - match *abi_route_u64plus *abi_route_u64minus *abi_route_u64mul *abi_route_u64div *abi_route_u256plus *abi_route_u256minus *abi_route_u256mul *abi_route_u256div *abi_route_u64Return256 *abi_route_maxU64 *abi_route_exponent *abi_route_variableTypeHint *abi_route_uint8plus *abi_route_uint8exp *abi_route_plusEquals *abi_route_plusEqualsFromGlobal *abi_route_boxTest *abi_route_unsafeMethodArgs *abi_route_uint256ComparisonType *abi_route_squareRoot256 *abi_route_squareRoot64 *abi_route_addressToBigInt *abi_route_u8Tou64 *abi_route_funcName *abi_route_bigintPlus *abi_route_bitwiseOr *abi_route_bitwiseAnd *abi_route_bitwiseXor *abi_route_bitwiseOrU256 *abi_route_bitwiseAndU256 *abi_route_bitwiseXorU256 *abi_route_bitwiseNot *abi_route_bitwiseNotU256 *abi_route_mulw *abi_route_addw *abi_route_expw *abi_route_divw *abi_route_divmodw *abi_route_unsafeVariables *abi_route_foobar *abi_route_uintFromHex *abi_route_wideRatioTest + match *abi_route_u64plus *abi_route_u64minus *abi_route_u64mul *abi_route_u64div *abi_route_u256plus *abi_route_u256minus *abi_route_u256mul *abi_route_u256div *abi_route_u64Return256 *abi_route_maxU64 *abi_route_exponent *abi_route_variableTypeHint *abi_route_uint8plus *abi_route_uint8exp *abi_route_plusEquals *abi_route_plusEqualsFromGlobal *abi_route_boxTest *abi_route_unsafeMethodArgs *abi_route_uint256ComparisonType *abi_route_squareRoot256 *abi_route_squareRoot64 *abi_route_addressToBigInt *abi_route_u8Tou64 *abi_route_funcName *abi_route_bigintPlus *abi_route_bitwiseOr *abi_route_bitwiseAnd *abi_route_bitwiseXor *abi_route_bitwiseOrU256 *abi_route_bitwiseAndU256 *abi_route_bitwiseXorU256 *abi_route_bitwiseNot *abi_route_bitwiseNotU256 *abi_route_mulw *abi_route_addw *abi_route_expw *abi_route_divw *abi_route_divmodw *abi_route_unsafeVariables *abi_route_foobar *abi_route_uintFromHex *abi_route_wideRatioTest *abi_route_u128InTuple // this contract does not implement the given ABI method for call NoOp err \ No newline at end of file diff --git a/tests/contracts/artifacts/MathTest.arc32.json b/tests/contracts/artifacts/MathTest.arc32.json index 47c14c0ab..12346757d 100644 --- a/tests/contracts/artifacts/MathTest.arc32.json +++ b/tests/contracts/artifacts/MathTest.arc32.json @@ -210,6 +210,11 @@ "no_op": "CALL" } }, + "u128InTuple((uint64,uint64,uint128),uint128,uint64)uint128": { + "call_config": { + "no_op": "CALL" + } + }, "createApplication()void": { "call_config": { "no_op": "CREATE" @@ -233,6 +238,10 @@ "gKey": { "type": "uint64", "key": "gKey" + }, + "accRPS": { + "type": "bytes", + "key": "rewardPerShare" } }, "reserved": {} @@ -240,7 +249,7 @@ }, "state": { "global": { - "num_byte_slices": 0, + "num_byte_slices": 1, "num_uints": 1 }, "local": { @@ -249,7 +258,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDMyIDI1NiA4IDAgMTYgMTg0NDY3NDQwNzM3MDk1NTE2MTUgMiAzIDQgNSA2NCAxMjgKYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4IDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweDYyNmY3ODRiNjU3OSAweDY3NGI2NTc5IDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzZTggMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweEZGRkZGRkZGRkZGRkZGRkYKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA3LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyB1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfdTY0cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NHBsdXMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1NjRwbHVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NHBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjgKCS8vIHJldHVybiBhICsgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCXJldHN1YgoKLy8gdTY0bWludXModWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV91NjRtaW51czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRtaW51cwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NG1pbnVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NG1pbnVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMgoJLy8gcmV0dXJuIGEgLSBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJLQoJcmV0c3ViCgovLyB1NjRtdWwodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV91NjRtdWw6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NG11bAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NG11bChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAp1NjRtdWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE2CgkvLyByZXR1cm4gYSAqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkqCglyZXRzdWIKCi8vIHU2NGRpdih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NGRpdjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgdTY0ZGl2CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0ZGl2KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NGRpdjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjAKCS8vIHJldHVybiBhIC8gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCS8KCXJldHN1YgoKLy8gdTI1NnBsdXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV91MjU2cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1NnBsdXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZwbHVzIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZwbHVzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2cGx1cyByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHUyNTZwbHVzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyNAoJLy8gcmV0dXJuIDx1aW50MjU2PihhICsgYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWIrCglyZXRzdWIKCi8vIHUyNTZtaW51cyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZtaW51czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1Nm1pbnVzIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1MjU2bWludXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1Nm1pbnVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZtaW51cwoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTI1Nm1pbnVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1Nm1pbnVzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZtaW51czoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjgKCS8vIHJldHVybiA8dWludDI1Nj4oYSAtIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliLQoJcmV0c3ViCgovLyB1MjU2bXVsKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1Nm11bDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1Nm11bCBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1Nm11bCBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2bXVsKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZtdWwKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZtdWwgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2bXVsKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZtdWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjMyCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYioKCXJldHN1YgoKLy8gdTI1NmRpdih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZkaXY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHUyNTZkaXYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZkaXYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1NmRpdih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiB1MjU2ZGl2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2ZGl2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1NmRpdihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1Ngp1MjU2ZGl2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czozNgoJLy8gcmV0dXJuIDx1aW50MjU2PihhIC8gYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWIvCglyZXRzdWIKCi8vIHU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYKKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0UmV0dXJuMjU2KHVpbnQ2NCx1aW50NjQpdWludDI1NgoJY2FsbHN1YiB1NjRSZXR1cm4yNTYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHU2NFJldHVybjI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NFJldHVybjI1NihhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQyNTYKdTY0UmV0dXJuMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo0MAoJLy8gcmV0dXJuIDx1aW50MjU2PihhICsgYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglpdG9iCglyZXRzdWIKCi8vIG1heFU2NCgpdWludDY0CiphYmlfcm91dGVfbWF4VTY0OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG1heFU2NCgpdWludDY0CgljYWxsc3ViIG1heFU2NAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG1heFU2NCgpOiB1aW50NjQKbWF4VTY0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo0NAoJLy8gcmV0dXJuIFVpbnQ8NjQ+KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpOwoJaW50YyA2IC8vIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CglyZXRzdWIKCi8vIGV4cG9uZW50KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZXhwb25lbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZXhwb25lbnQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZXhwb25lbnQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHBvbmVudChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApleHBvbmVudDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NDgKCS8vIHJldHVybiBhICoqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglleHAKCXJldHN1YgoKLy8gdmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYKKmFiaV9yb3V0ZV92YXJpYWJsZVR5cGVIaW50OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyB5OiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHkpIGZvciB2YXJpYWJsZVR5cGVIaW50IG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8geDogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxICh4KSBmb3IgdmFyaWFibGVUeXBlSGludCBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYKCWNhbGxzdWIgdmFyaWFibGVUeXBlSGludAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgNSAvLyAxNgoJPD0KCgkvLyB2YXJpYWJsZVR5cGVIaW50IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB2YXJpYWJsZVR5cGVIaW50KHg6IHVpbnQ8OD4sIHk6IHVpbnQ8OD4pOiB1aW50MTYKdmFyaWFibGVUeXBlSGludDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1MgoJLy8geiA9IDx1aW50MTY+KHggKyB5KQoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyB5OiB1aW50PDg+CgkrCglmcmFtZV9idXJ5IDAgLy8gejogdW5zYWZlIHVpbnQxNgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NTQKCS8vIHJldHVybiB6OwoJZnJhbWVfZGlnIDAgLy8gejogdW5zYWZlIHVpbnQxNgoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyB1aW50OHBsdXModWludDgsdWludDgpdWludDgKKmFiaV9yb3V0ZV91aW50OHBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQ4cGx1cyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGE6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVpbnQ4cGx1cyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdWludDhwbHVzKHVpbnQ4LHVpbnQ4KXVpbnQ4CgljYWxsc3ViIHVpbnQ4cGx1cwoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMyAvLyA4Cgk8PQoKCS8vIHVpbnQ4cGx1cyByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA3IDEKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50OHBsdXMoYTogdWludDw4PiwgYjogdWludDw4Pik6IHVpbnQ8OD4KdWludDhwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1OAoJLy8gcmV0dXJuIGEgKyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50PDg+CgkrCglyZXRzdWIKCi8vIHVpbnQ4ZXhwKHVpbnQ4LHVpbnQ4KXVpbnQ4CiphYmlfcm91dGVfdWludDhleHA6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQ4ZXhwIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gYTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDhleHAgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyBleGVjdXRlIHVpbnQ4ZXhwKHVpbnQ4LHVpbnQ4KXVpbnQ4CgljYWxsc3ViIHVpbnQ4ZXhwCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDgKCTw9CgoJLy8gdWludDhleHAgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgOCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNyAxCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdWludDhleHAoYTogdWludDw4PiwgYjogdWludDw4Pik6IHVpbnQ8OD4KdWludDhleHA6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjYyCgkvLyByZXR1cm4gYSAqKiBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50PDg+CglleHAKCXJldHN1YgoKLy8gcGx1c0VxdWFscyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3BsdXNFcXVhbHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgcGx1c0VxdWFscyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBwbHVzRXF1YWxzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gcGx1c0VxdWFscyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApwbHVzRXF1YWxzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjY2CgkvLyB4ID0gYQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfYnVyeSAwIC8vIHg6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NjgKCS8vIHggKz0gYgoJZnJhbWVfZGlnIDAgLy8geDogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglmcmFtZV9idXJ5IDAgLy8geDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3MAoJLy8gcmV0dXJuIHg7CglmcmFtZV9kaWcgMCAvLyB4OiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGx1c0VxdWFsc0Zyb21HbG9iYWwodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBwbHVzRXF1YWxzRnJvbUdsb2JhbCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBwbHVzRXF1YWxzRnJvbUdsb2JhbAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHBsdXNFcXVhbHNGcm9tR2xvYmFsKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnBsdXNFcXVhbHNGcm9tR2xvYmFsOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3NAoJLy8gdGhpcy5nS2V5LnZhbHVlID0gYQoJYnl0ZWMgNCAvLyAgImdLZXkiCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NzYKCS8vIHRoaXMuZ0tleS52YWx1ZSArPSBiCglieXRlYyA0IC8vICAiZ0tleSIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglieXRlYyA0IC8vICAiZ0tleSIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3OAoJLy8gcmV0dXJuIHRoaXMuZ0tleS52YWx1ZTsKCWJ5dGVjIDQgLy8gICJnS2V5IgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gYm94VGVzdCgpdWludDI1NgoqYWJpX3JvdXRlX2JveFRlc3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYm94VGVzdCgpdWludDI1NgoJY2FsbHN1YiBib3hUZXN0CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBib3hUZXN0IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYm94VGVzdCgpOiB1aW50MjU2CmJveFRlc3Q6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjg0CgkvLyB0aGlzLmJveEtleS52YWx1ZSA9IDx1aW50MjU2PjEKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQoJYm94X3B1dAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6ODUKCS8vIHRoaXMuYm94S2V5LnZhbHVlICs9IDEKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJveEtleS52YWx1ZQoJYXNzZXJ0CglieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQoJYisKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB0aGlzLmJveEtleS52YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCglzd2FwCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo4NwoJLy8gcmV0dXJuIHRoaXMuYm94S2V5LnZhbHVlOwoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYm94S2V5LnZhbHVlCglhc3NlcnQKCXJldHN1YgoKLy8gZm9vKHg6IHVpbnQyNTYpOiB1aW50MjU2CmZvbzoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTEKCS8vIHJldHVybiB4OwoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQyNTYKCXJldHN1YgoKLy8gdW5zYWZlTWV0aG9kQXJncyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3Vuc2FmZU1ldGhvZEFyZ3M6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVuc2FmZU1ldGhvZEFyZ3MgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVuc2FmZU1ldGhvZEFyZ3MgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdW5zYWZlTWV0aG9kQXJncyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiB1bnNhZmVNZXRob2RBcmdzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1bnNhZmVNZXRob2RBcmdzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdW5zYWZlTWV0aG9kQXJncyhhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1Ngp1bnNhZmVNZXRob2RBcmdzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjk1CgkvLyBjID0gYSArIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCWZyYW1lX2J1cnkgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTcKCS8vIHJldHVybiB0aGlzLmZvbyhjKTsKCWZyYW1lX2RpZyAwIC8vIGM6IHVuc2FmZSB1aW50MjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBjIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNhbGxzdWIgZm9vCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnQyNTZDb21wYXJpc29uVHlwZSh1aW50MjU2LHVpbnQyNTYpdm9pZAoqYWJpX3JvdXRlX3VpbnQyNTZDb21wYXJpc29uVHlwZToKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQyNTZDb21wYXJpc29uVHlwZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDI1NkNvbXBhcmlzb25UeXBlIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHVpbnQyNTZDb21wYXJpc29uVHlwZSh1aW50MjU2LHVpbnQyNTYpdm9pZAoJY2FsbHN1YiB1aW50MjU2Q29tcGFyaXNvblR5cGUKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVpbnQyNTZDb21wYXJpc29uVHlwZShhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdm9pZAp1aW50MjU2Q29tcGFyaXNvblR5cGU6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAxCgkvLyBzZW5kZXJCYWxhbmNlQWZ0ZXIgPSBhIC0gYgoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliLQoJZnJhbWVfYnVyeSAwIC8vIHNlbmRlckJhbGFuY2VBZnRlcjogdW5zYWZlIHVpbnQyNTYKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMDIKCS8vIHNlbmRlckJhbGFuY2VBZnRlciA+IDx1aW50MjU2PjAKCWZyYW1lX2RpZyAwIC8vIHNlbmRlckJhbGFuY2VBZnRlcjogdW5zYWZlIHVpbnQyNTYKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWI+CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAzCgkvLyBsb2coJ25vblplcm8nKQoJcHVzaGJ5dGVzIDB4NmU2ZjZlNWE2NTcyNmYgLy8gIm5vblplcm8iCglsb2cKCWIgKmlmMF9lbmQKCippZjBfZWxzZToKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTA1CgkvLyBsb2coJ3plcm8nKQoJcHVzaGJ5dGVzIDB4N2E2NTcyNmYgLy8gInplcm8iCglsb2cKCippZjBfZW5kOgoJcmV0c3ViCgovLyBzcXVhcmVSb290MjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfc3F1YXJlUm9vdDI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3Igc3F1YXJlUm9vdDI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3Igc3F1YXJlUm9vdDI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzcXVhcmVSb290MjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHNxdWFyZVJvb3QyNTYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHNxdWFyZVJvb3QyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBzcXVhcmVSb290MjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnNxdWFyZVJvb3QyNTY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjExMAoJLy8gcmV0dXJuIHNxcnQoYSAqIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliKgoJYnNxcnQKCXJldHN1YgoKLy8gc3F1YXJlUm9vdDY0KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfc3F1YXJlUm9vdDY0OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBzcXVhcmVSb290NjQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBzcXVhcmVSb290NjQoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKc3F1YXJlUm9vdDY0OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMTQKCS8vIHJldHVybiBzcXJ0KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSoKCXNxcnQKCXJldHN1YgoKLy8gYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYWRkcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhZGRyKSBmb3IgYWRkcmVzc1RvQmlnSW50IG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZHJlc3NUb0JpZ0ludChhZGRyZXNzKWJvb2wKCWNhbGxzdWIgYWRkcmVzc1RvQmlnSW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyA0IC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYWRkcmVzc1RvQmlnSW50KGFkZHI6IEFkZHJlc3MpOiBib29sZWFuCmFkZHJlc3NUb0JpZ0ludDoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTE4CgkvLyByZXR1cm4gYnRvYmlnaW50KGFkZHIpID4gYnRvYmlnaW50KHRoaXMudHhuLnNlbmRlcik7CglmcmFtZV9kaWcgLTEgLy8gYWRkcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJYj4KCXJldHN1YgoKLy8gdThUb3U2NCgpdWludDY0CiphYmlfcm91dGVfdThUb3U2NDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB1OFRvdTY0KCl1aW50NjQKCWNhbGxzdWIgdThUb3U2NAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU4VG91NjQoKTogdWludDY0CnU4VG91NjQ6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTIyCgkvLyB4OiB1aW50OCA9IDcKCXB1c2hpbnQgNwoJZnJhbWVfYnVyeSAwIC8vIHg6IHVpbnQ4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMjMKCS8vIHJldHVybiA8dWludDY0Png7CglmcmFtZV9kaWcgMCAvLyB4OiB1aW50OAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwcml2YXRlRnVuY05hbWUoeDogdWludDgsIHk6IHVpbnQ2NCk6IHZvaWQKcHJpdmF0ZUZ1bmNOYW1lOgoJcHJvdG8gMiAwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMjcKCS8vIGFzc2VydCg8dWludDg+eSA+IHgpCglmcmFtZV9kaWcgLTIgLy8geTogdWludDY0CglmcmFtZV9kaWcgLTEgLy8geDogdWludDgKCT4KCWFzc2VydAoJcmV0c3ViCgovLyBmdW5jTmFtZSh1aW50MjU2KXZvaWQKKmFiaV9yb3V0ZV9mdW5jTmFtZToKCS8vIHg6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoeCkgZm9yIGZ1bmNOYW1lIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGZ1bmNOYW1lKHVpbnQyNTYpdm9pZAoJY2FsbHN1YiBmdW5jTmFtZQoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZnVuY05hbWUoeDogdWludDI1Nik6IHZvaWQKZnVuY05hbWU6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEzMQoJLy8gdGhpcy5wcml2YXRlRnVuY05hbWUoPHVpbnQ4PngsIDEzMzcpCglwdXNoaW50IDEzMzcKCWZyYW1lX2RpZyAtMSAvLyB4OiB1aW50MjU2CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDgKCTw9CgoJLy8gPHVpbnQ4Pnggb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCAzMSAxCglidG9pCgljYWxsc3ViIHByaXZhdGVGdW5jTmFtZQoJcmV0c3ViCgovLyBiaWdpbnRQbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYmlnaW50UGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaWdpbnRQbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGJpZ2ludFBsdXMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaWdpbnRQbHVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmJpZ2ludFBsdXM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzUKCS8vIHggPSBpdG9iKGEpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglpdG9iCglmcmFtZV9idXJ5IDAgLy8geDogYnl0ZVtdCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzYKCS8vIHkgPSBpdG9iKGIpCglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglpdG9iCglmcmFtZV9idXJ5IDEgLy8geTogYnl0ZVtdCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzcKCS8vIHJldHVybiAoYnRvYmlnaW50KHgpICsgYnRvYmlnaW50KHkpKSBhcyB1aW50NjQ7CglmcmFtZV9kaWcgMCAvLyB4OiBieXRlW10KCWZyYW1lX2RpZyAxIC8vIHk6IGJ5dGVbXQoJYisKCWR1cAoJYml0bGVuCglpbnRjIDExIC8vIDY0Cgk8PQoKCS8vIChidG9iaWdpbnQoeCkgKyBidG9iaWdpbnQoeSkpIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJYnl0ZWMgOCAvLyAweEZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYml0d2lzZU9yKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYml0d2lzZU9yOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlT3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlT3IoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZU9yOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDEKCS8vIHJldHVybiBhIHwgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCXwKCXJldHN1YgoKLy8gYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VBbmQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlQW5kCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZUFuZChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlQW5kOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDUKCS8vIHJldHVybiBhICYgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSYKCXJldHN1YgoKLy8gYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VYb3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlWG9yCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZVhvcihhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlWG9yOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDkKCS8vIHJldHVybiBhIF4gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCV4KCXJldHN1YgoKLy8gYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VPclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VPclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlT3JVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlT3JVMjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZU9yVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlT3JVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNTMKCS8vIHJldHVybiBhIHwgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYnwKCXJldHN1YgoKLy8gYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgYml0d2lzZUFuZFUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VBbmRVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VBbmRVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VBbmRVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlQW5kVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VBbmRVMjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VBbmRVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNTcKCS8vIHJldHVybiBhICYgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYiYKCXJldHN1YgoKLy8gYml0d2lzZVhvclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlWG9yVTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgYml0d2lzZVhvclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VYb3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VYb3JVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlWG9yVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VYb3JVMjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VYb3JVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNjEKCS8vIHJldHVybiBhIF4gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYl4KCXJldHN1YgoKLy8gYml0d2lzZU5vdCh1aW50NjQpdWludDY0CiphYmlfcm91dGVfYml0d2lzZU5vdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZU5vdAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VOb3QoYTogdWludDY0KTogdWludDY0CmJpdHdpc2VOb3Q6Cglwcm90byAxIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE2NQoJLy8gcmV0dXJuIH5hOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJfgoJcmV0c3ViCgovLyBiaXR3aXNlTm90VTI1Nih1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlTm90VTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhKSBmb3IgYml0d2lzZU5vdFUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgYml0d2lzZU5vdFUyNTYodWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VOb3RVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlTm90VTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VOb3RVMjU2KGE6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VOb3RVMjU2OgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNjkKCS8vIHJldHVybiB+YTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglifgoJcmV0c3ViCgovLyBtdWx3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfbXVsdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBtdWx3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIG11bHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBtdWx3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0Cm11bHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzMKCS8vIHAgPSBtdWx3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgltdWx3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzcKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGR3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYWRkdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBhZGR3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGFkZHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBhZGR3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmFkZHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODEKCS8vIHAgPSBhZGR3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglhZGR3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODUKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBleHB3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZXhwdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBleHB3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGV4cHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHB3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmV4cHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODkKCS8vIHAgPSBleHB3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglleHB3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxOTMKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBkaXZ3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZGl2dzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBkaXZ3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGRpdncKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBkaXZ3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmRpdnc6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE5NwoJLy8gcmV0dXJuIGRpdncoMCwgYSwgYik7CglpbnRjIDQgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJZGl2dwoJcmV0c3ViCgovLyBkaXZtb2R3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZGl2bW9kdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBkaXZtb2R3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGRpdm1vZHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBkaXZtb2R3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmRpdm1vZHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDEKCS8vIHAgPSBkaXZtb2R3KDAsIGEsIDAsIGIpCglpbnRjIDQgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJaW50YyA0IC8vIDAKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWRpdm1vZHcKCWZyYW1lX2J1cnkgMCAvLyBwIHJlbWFpbmRlckxvdzogdWludDY0CglmcmFtZV9idXJ5IDEgLy8gcCByZW1haW5kZXJIaWdoOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBwIHF1b3RpZW50TG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMyAvLyBwIHF1b3RpZW50SGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDUKCS8vIHJldHVybiBwMi5xdW90aWVudExvdzsKCWZyYW1lX2RpZyAyIC8vIHAgcXVvdGllbnRMb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gdW5zYWZlVmFyaWFibGVzKCl1aW50NjQKKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdW5zYWZlVmFyaWFibGVzKCl1aW50NjQKCWNhbGxzdWIgdW5zYWZlVmFyaWFibGVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdW5zYWZlVmFyaWFibGVzKCk6IHVpbnQ2NAp1bnNhZmVWYXJpYWJsZXM6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDkKCS8vIEEgPSA8dWludDI1Nj4yNTAwMDAwMDAKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGVlNmIyODAKCWZyYW1lX2J1cnkgMCAvLyBBOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjEwCgkvLyBCID0gPHVpbnQyNTY+MTAwMAoJYnl0ZWMgNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzZTgKCWZyYW1lX2J1cnkgMSAvLyBCOiB1aW50MjU2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMTIKCS8vIEEgPSBBIC8gQgoJZnJhbWVfZGlnIDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCWJ5dGVjIDYgLy8gIEI6IHVpbnQyNTYKCWIvCglmcmFtZV9idXJ5IDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNAoJLy8gYyA9IEEgYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyBBOiB1bnNhZmUgdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgMTEgLy8gNjQKCTw9CgoJLy8gQSBhcyB1aW50NjQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWJ5dGVjIDggLy8gMHhGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAzIC8vIDgKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBjOiB1aW50NjQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNgoJLy8gcmV0dXJuIGM7CglmcmFtZV9kaWcgMiAvLyBjOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGZvb2Jhcih1aW50MTI4KXVpbnQxMjgKKmFiaV9yb3V0ZV9mb29iYXI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHg6IHVpbnQxMjgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDUgLy8gMTYKCT09CgoJLy8gYXJndW1lbnQgMCAoeCkgZm9yIGZvb2JhciBtdXN0IGJlIGEgdWludDEyOAoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBmb29iYXIodWludDEyOCl1aW50MTI4CgljYWxsc3ViIGZvb2JhcgoJZHVwCgliaXRsZW4KCWludGMgMTIgLy8gMTI4Cgk8PQoKCS8vIGZvb2JhciByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA3IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBmb29iYXIoeDogdWludDEyOCk6IHVpbnQxMjgKZm9vYmFyOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyMAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc1MzAKCWIvCglkdXAKCWJpdGxlbgoJaW50YyAxMiAvLyAxMjgKCTw9CgoJLy8geCAvICgzMDAwMCBhcyB1aW50MTI4KSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDcgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAwIC8vIGF2Z1N0YWtlOiB1aW50MTI4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjIKCS8vIHJldHVybiBhdmdTdGFrZTsKCWZyYW1lX2RpZyAwIC8vIGF2Z1N0YWtlOiB1aW50MTI4CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnRGcm9tSGV4KCl1aW50MjU2CiphYmlfcm91dGVfdWludEZyb21IZXg6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdWludEZyb21IZXgoKXVpbnQyNTYKCWNhbGxzdWIgdWludEZyb21IZXgKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHVpbnRGcm9tSGV4IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdWludEZyb21IZXgoKTogdWludDI1Ngp1aW50RnJvbUhleDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjI2CgkvLyByZXR1cm4gVWludDwyNTY+KCcweEZGJyk7CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmCglyZXRzdWIKCi8vIHdpZGVSYXRpb1Rlc3QoKXVpbnQ2NAoqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgd2lkZVJhdGlvVGVzdCgpdWludDY0CgljYWxsc3ViIHdpZGVSYXRpb1Rlc3QKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB3aWRlUmF0aW9UZXN0KCk6IHVpbnQ2NAp3aWRlUmF0aW9UZXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMzAKCS8vIHJldHVybiB3aWRlUmF0aW8oW1VpbnQ8NjQ+KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpLCAyLCAzLCA0LCA1XSwgWzIsIDMsIDQsIDVdKTsKCWludGMgNiAvLyAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJaW50YyA3IC8vIDIKCW11bHcKCWludGMgOCAvLyAzCgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDkgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMCAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDcgLy8gMgoJaW50YyA4IC8vIDMKCW11bHcKCWludGMgOSAvLyA0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDEwIC8vIDUKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4M2NlNmYxYWYgLy8gbWV0aG9kICJ1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDAzMWExODYgLy8gbWV0aG9kICJ1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGU1MmU0Mzk0IC8vIG1ldGhvZCAidTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OTUwZDQ3ODkgLy8gbWV0aG9kICJ1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg2NWJkZGE2ZSAvLyBtZXRob2QgInUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4MGE2YWQyODQgLy8gbWV0aG9kICJ1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMDQ0YmYyNCAvLyBtZXRob2QgInUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhjNDhmOGMwNSAvLyBtZXRob2QgInUyNTZkaXYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMmUxZDYzMiAvLyBtZXRob2QgInU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgzOGIxYTM5ZSAvLyBtZXRob2QgIm1heFU2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4NmMxMzZmMWQgLy8gbWV0aG9kICJleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyZGEyNTAyIC8vIG1ldGhvZCAidmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYiCglwdXNoYnl0ZXMgMHhhMmZlYWQ2YyAvLyBtZXRob2QgInVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OCIKCXB1c2hieXRlcyAweGQyMjU2ZjdhIC8vIG1ldGhvZCAidWludDhleHAodWludDgsdWludDgpdWludDgiCglwdXNoYnl0ZXMgMHhjMTdkNjI0ZSAvLyBtZXRob2QgInBsdXNFcXVhbHModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1Y2FiMDQzOCAvLyBtZXRob2QgInBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4NTg5ODljY2QgLy8gbWV0aG9kICJib3hUZXN0KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NDgzMGI0ZGUgLy8gbWV0aG9kICJ1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTFjNTVjZTUgLy8gbWV0aG9kICJ1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHg3ZDFkNDI2ZSAvLyBtZXRob2QgInNxdWFyZVJvb3QyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgxYzI5ODFmMSAvLyBtZXRob2QgInNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGI3Y2EwNGI5IC8vIG1ldGhvZCAiYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGJiOTUyMzM4IC8vIG1ldGhvZCAidThUb3U2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDEyOGUyN2IgLy8gbWV0aG9kICJmdW5jTmFtZSh1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHhmOTE2Y2RiMyAvLyBtZXRob2QgImJpZ2ludFBsdXModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1MjczNzU0NSAvLyBtZXRob2QgImJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDc5YzFhZGMwIC8vIG1ldGhvZCAiYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyNDc0YWJjIC8vIG1ldGhvZCAiYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDA1OTNmZGY4IC8vIG1ldGhvZCAiYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDA2ZmI5MzM3IC8vIG1ldGhvZCAiYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgyNjQ5M2Q3OCAvLyBtZXRob2QgImJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTljMjJlZWEgLy8gbWV0aG9kICJiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHhlZGUzZTliYyAvLyBtZXRob2QgImJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDJlNGEyMTY0IC8vIG1ldGhvZCAibXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDUwMTM0YjVhIC8vIG1ldGhvZCAiYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGY1M2FmZjliIC8vIG1ldGhvZCAiZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGNhZjcxMTBkIC8vIG1ldGhvZCAiZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGJlZDBlMzg2IC8vIG1ldGhvZCAiZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI3NGQ3NzA1IC8vIG1ldGhvZCAidW5zYWZlVmFyaWFibGVzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5MjQ2NWQwOCAvLyBtZXRob2QgImZvb2Jhcih1aW50MTI4KXVpbnQxMjgiCglwdXNoYnl0ZXMgMHhmMDFmYWNjZSAvLyBtZXRob2QgInVpbnRGcm9tSGV4KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NWFjOGEwYTAgLy8gbWV0aG9kICJ3aWRlUmF0aW9UZXN0KCl1aW50NjQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3U2NHBsdXMgKmFiaV9yb3V0ZV91NjRtaW51cyAqYWJpX3JvdXRlX3U2NG11bCAqYWJpX3JvdXRlX3U2NGRpdiAqYWJpX3JvdXRlX3UyNTZwbHVzICphYmlfcm91dGVfdTI1Nm1pbnVzICphYmlfcm91dGVfdTI1Nm11bCAqYWJpX3JvdXRlX3UyNTZkaXYgKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTYgKmFiaV9yb3V0ZV9tYXhVNjQgKmFiaV9yb3V0ZV9leHBvbmVudCAqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQgKmFiaV9yb3V0ZV91aW50OHBsdXMgKmFiaV9yb3V0ZV91aW50OGV4cCAqYWJpX3JvdXRlX3BsdXNFcXVhbHMgKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbCAqYWJpX3JvdXRlX2JveFRlc3QgKmFiaV9yb3V0ZV91bnNhZmVNZXRob2RBcmdzICphYmlfcm91dGVfdWludDI1NkNvbXBhcmlzb25UeXBlICphYmlfcm91dGVfc3F1YXJlUm9vdDI1NiAqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NCAqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludCAqYWJpX3JvdXRlX3U4VG91NjQgKmFiaV9yb3V0ZV9mdW5jTmFtZSAqYWJpX3JvdXRlX2JpZ2ludFBsdXMgKmFiaV9yb3V0ZV9iaXR3aXNlT3IgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kICphYmlfcm91dGVfYml0d2lzZVhvciAqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTYgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NiAqYWJpX3JvdXRlX2JpdHdpc2VYb3JVMjU2ICphYmlfcm91dGVfYml0d2lzZU5vdCAqYWJpX3JvdXRlX2JpdHdpc2VOb3RVMjU2ICphYmlfcm91dGVfbXVsdyAqYWJpX3JvdXRlX2FkZHcgKmFiaV9yb3V0ZV9leHB3ICphYmlfcm91dGVfZGl2dyAqYWJpX3JvdXRlX2Rpdm1vZHcgKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXMgKmFiaV9yb3V0ZV9mb29iYXIgKmFiaV9yb3V0ZV91aW50RnJvbUhleCAqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3QKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDMyIDI1NiAxNiA4IDAgMTI4IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IDIgMyA0IDUgNjQKYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4IDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweDYyNmY3ODRiNjU3OSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4Njc0YjY1NzkgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNlOCAweDcyNjU3NzYxNzI2NDUwNjU3MjUzNjg2MTcyNjUgMHhGRkZGRkZGRkZGRkZGRkZGCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdTY0cGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NHBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0cGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRwbHVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0cGx1cyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAp1NjRwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNAoJLy8gcmV0dXJuIGEgKyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJKwoJcmV0c3ViCgovLyB1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NG1pbnVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHU2NG1pbnVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NG1pbnVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0bWludXMoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKdTY0bWludXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE4CgkvLyByZXR1cm4gYSAtIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgktCglyZXRzdWIKCi8vIHU2NG11bCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NG11bDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRtdWwodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgdTY0bXVsCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0bXVsKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NG11bDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjIKCS8vIHJldHVybiBhICogYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSoKCXJldHN1YgoKLy8gdTY0ZGl2KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfdTY0ZGl2OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHU2NGRpdih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRkaXYKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1NjRkaXYoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKdTY0ZGl2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyNgoJLy8gcmV0dXJuIGEgLyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJLwoJcmV0c3ViCgovLyB1MjU2cGx1cyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZwbHVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2cGx1cyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1NnBsdXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1NnBsdXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1NnBsdXMKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZwbHVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1NnBsdXMoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1NnBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjMwCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCXJldHN1YgoKLy8gdTI1Nm1pbnVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1Nm1pbnVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2bWludXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZtaW51cyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1Nm1pbnVzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2bWludXMgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2bWludXMoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1Nm1pbnVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czozNAoJLy8gcmV0dXJuIDx1aW50MjU2PihhIC0gYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWItCglyZXRzdWIKCi8vIHUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV91MjU2bXVsOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2bXVsIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1MjU2bXVsIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1Nm11bAoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTI1Nm11bCByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHUyNTZtdWwoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1Nm11bDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MzgKCS8vIHJldHVybiA8dWludDI1Nj4oYSAqIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliKgoJcmV0c3ViCgovLyB1MjU2ZGl2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1NmRpdjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1NmRpdiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1NmRpdiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2ZGl2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZkaXYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZkaXYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2ZGl2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZkaXY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjQyCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgLyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYi8KCXJldHN1YgoKLy8gdTY0UmV0dXJuMjU2KHVpbnQ2NCx1aW50NjQpdWludDI1NgoqYWJpX3JvdXRlX3U2NFJldHVybjI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRSZXR1cm4yNTYodWludDY0LHVpbnQ2NCl1aW50MjU2CgljYWxsc3ViIHU2NFJldHVybjI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTY0UmV0dXJuMjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0UmV0dXJuMjU2KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDI1Ngp1NjRSZXR1cm4yNTY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjQ2CgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWl0b2IKCXJldHN1YgoKLy8gbWF4VTY0KCl1aW50NjQKKmFiaV9yb3V0ZV9tYXhVNjQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgbWF4VTY0KCl1aW50NjQKCWNhbGxzdWIgbWF4VTY0CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gbWF4VTY0KCk6IHVpbnQ2NAptYXhVNjQ6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjUwCgkvLyByZXR1cm4gVWludDw2ND4oJzE4NDQ2NzQ0MDczNzA5NTUxNjE1Jyk7CglpbnRjIDcgLy8gMTg0NDY3NDQwNzM3MDk1NTE2MTUKCXJldHN1YgoKLy8gZXhwb25lbnQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9leHBvbmVudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBleHBvbmVudAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGV4cG9uZW50KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmV4cG9uZW50OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1NAoJLy8gcmV0dXJuIGEgKiogYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWV4cAoJcmV0c3ViCgovLyB2YXJpYWJsZVR5cGVIaW50KHVpbnQ4LHVpbnQ4KXVpbnQxNgoqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHk6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoeSkgZm9yIHZhcmlhYmxlVHlwZUhpbnQgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyB4OiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHgpIGZvciB2YXJpYWJsZVR5cGVIaW50IG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gZXhlY3V0ZSB2YXJpYWJsZVR5cGVIaW50KHVpbnQ4LHVpbnQ4KXVpbnQxNgoJY2FsbHN1YiB2YXJpYWJsZVR5cGVIaW50CglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDE2Cgk8PQoKCS8vIHZhcmlhYmxlVHlwZUhpbnQgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHZhcmlhYmxlVHlwZUhpbnQoeDogdWludDw4PiwgeTogdWludDw4Pik6IHVpbnQxNgp2YXJpYWJsZVR5cGVIaW50OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjU4CgkvLyB6ID0gPHVpbnQxNj4oeCArIHkpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIHk6IHVpbnQ8OD4KCSsKCWZyYW1lX2J1cnkgMCAvLyB6OiB1bnNhZmUgdWludDE2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo2MAoJLy8gcmV0dXJuIHo7CglmcmFtZV9kaWcgMCAvLyB6OiB1bnNhZmUgdWludDE2CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OAoqYWJpX3JvdXRlX3VpbnQ4cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdWludDhwbHVzIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gYTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDhwbHVzIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gZXhlY3V0ZSB1aW50OHBsdXModWludDgsdWludDgpdWludDgKCWNhbGxzdWIgdWludDhwbHVzCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyA0IC8vIDgKCTw9CgoJLy8gdWludDhwbHVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDggYml0cwoJYXNzZXJ0CglleHRyYWN0IDcgMQoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVpbnQ4cGx1cyhhOiB1aW50PDg+LCBiOiB1aW50PDg+KTogdWludDw4Pgp1aW50OHBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjY0CgkvLyByZXR1cm4gYSArIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ8OD4KCSsKCXJldHN1YgoKLy8gdWludDhleHAodWludDgsdWludDgpdWludDgKKmFiaV9yb3V0ZV91aW50OGV4cDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdWludDhleHAgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyBhOiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1aW50OGV4cCBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdWludDhleHAodWludDgsdWludDgpdWludDgKCWNhbGxzdWIgdWludDhleHAKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDQgLy8gOAoJPD0KCgkvLyB1aW50OGV4cCByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA3IDEKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50OGV4cChhOiB1aW50PDg+LCBiOiB1aW50PDg+KTogdWludDw4Pgp1aW50OGV4cDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NjgKCS8vIHJldHVybiBhICoqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ8OD4KCWV4cAoJcmV0c3ViCgovLyBwbHVzRXF1YWxzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfcGx1c0VxdWFsczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBwbHVzRXF1YWxzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHBsdXNFcXVhbHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBwbHVzRXF1YWxzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnBsdXNFcXVhbHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NzIKCS8vIHggPSBhCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9idXJ5IDAgLy8geDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3NAoJLy8geCArPSBiCglmcmFtZV9kaWcgMCAvLyB4OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMCAvLyB4OiB1aW50NjQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjc2CgkvLyByZXR1cm4geDsKCWZyYW1lX2RpZyAwIC8vIHg6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwbHVzRXF1YWxzRnJvbUdsb2JhbCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3BsdXNFcXVhbHNGcm9tR2xvYmFsOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHBsdXNFcXVhbHNGcm9tR2xvYmFsCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gcGx1c0VxdWFsc0Zyb21HbG9iYWwoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKcGx1c0VxdWFsc0Zyb21HbG9iYWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjgwCgkvLyB0aGlzLmdLZXkudmFsdWUgPSBhCglieXRlYyA1IC8vICAiZ0tleSIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo4MgoJLy8gdGhpcy5nS2V5LnZhbHVlICs9IGIKCWJ5dGVjIDUgLy8gICJnS2V5IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWJ5dGVjIDUgLy8gICJnS2V5IgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjg0CgkvLyByZXR1cm4gdGhpcy5nS2V5LnZhbHVlOwoJYnl0ZWMgNSAvLyAgImdLZXkiCglhcHBfZ2xvYmFsX2dldAoJcmV0c3ViCgovLyBib3hUZXN0KCl1aW50MjU2CiphYmlfcm91dGVfYm94VGVzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib3hUZXN0KCl1aW50MjU2CgljYWxsc3ViIGJveFRlc3QKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIGJveFRlc3QgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib3hUZXN0KCk6IHVpbnQyNTYKYm94VGVzdDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTAKCS8vIHRoaXMuYm94S2V5LnZhbHVlID0gPHVpbnQyNTY+MQoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJ5dGVjIDYgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo5MQoJLy8gdGhpcy5ib3hLZXkudmFsdWUgKz0gMQoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYm94S2V5LnZhbHVlCglhc3NlcnQKCWJ5dGVjIDYgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCgliKwoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHRoaXMuYm94S2V5LnZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCXN3YXAKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjkzCgkvLyByZXR1cm4gdGhpcy5ib3hLZXkudmFsdWU7CglieXRlYyAzIC8vICAiYm94S2V5IgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5ib3hLZXkudmFsdWUKCWFzc2VydAoJcmV0c3ViCgovLyBmb28oeDogdWludDI1Nik6IHVpbnQyNTYKZm9vOgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo5NwoJLy8gcmV0dXJuIHg7CglmcmFtZV9kaWcgLTEgLy8geDogdWludDI1NgoJcmV0c3ViCgovLyB1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdW5zYWZlTWV0aG9kQXJnczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdW5zYWZlTWV0aG9kQXJncyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdW5zYWZlTWV0aG9kQXJncyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHVuc2FmZU1ldGhvZEFyZ3MKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHVuc2FmZU1ldGhvZEFyZ3MgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1bnNhZmVNZXRob2RBcmdzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnVuc2FmZU1ldGhvZEFyZ3M6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAxCgkvLyBjID0gYSArIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCWZyYW1lX2J1cnkgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAzCgkvLyByZXR1cm4gdGhpcy5mb28oYyk7CglmcmFtZV9kaWcgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYyBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljYWxsc3ViIGZvbwoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyB1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQKKmFiaV9yb3V0ZV91aW50MjU2Q29tcGFyaXNvblR5cGU6CgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1aW50MjU2Q29tcGFyaXNvblR5cGUgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVpbnQyNTZDb21wYXJpc29uVHlwZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQKCWNhbGxzdWIgdWludDI1NkNvbXBhcmlzb25UeXBlCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50MjU2Q29tcGFyaXNvblR5cGUoYTogdWludDI1NiwgYjogdWludDI1Nik6IHZvaWQKdWludDI1NkNvbXBhcmlzb25UeXBlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEwNwoJLy8gc2VuZGVyQmFsYW5jZUFmdGVyID0gYSAtIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYi0KCWZyYW1lX2J1cnkgMCAvLyBzZW5kZXJCYWxhbmNlQWZ0ZXI6IHVuc2FmZSB1aW50MjU2CgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTA4CgkvLyBzZW5kZXJCYWxhbmNlQWZ0ZXIgPiA8dWludDI1Nj4wCglmcmFtZV9kaWcgMCAvLyBzZW5kZXJCYWxhbmNlQWZ0ZXI6IHVuc2FmZSB1aW50MjU2CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCgliPgoJYnogKmlmMF9lbHNlCgoJLy8gKmlmMF9jb25zZXF1ZW50CgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEwOQoJLy8gbG9nKCdub25aZXJvJykKCXB1c2hieXRlcyAweDZlNmY2ZTVhNjU3MjZmIC8vICJub25aZXJvIgoJbG9nCgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjExMQoJLy8gbG9nKCd6ZXJvJykKCXB1c2hieXRlcyAweDdhNjU3MjZmIC8vICJ6ZXJvIgoJbG9nCgoqaWYwX2VuZDoKCXJldHN1YgoKLy8gc3F1YXJlUm9vdDI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3NxdWFyZVJvb3QyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHNxdWFyZVJvb3QyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHNxdWFyZVJvb3QyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3F1YXJlUm9vdDI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBzcXVhcmVSb290MjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBzcXVhcmVSb290MjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gc3F1YXJlUm9vdDI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpzcXVhcmVSb290MjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMTYKCS8vIHJldHVybiBzcXJ0KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYioKCWJzcXJ0CglyZXRzdWIKCi8vIHNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzcXVhcmVSb290NjQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgc3F1YXJlUm9vdDY0CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gc3F1YXJlUm9vdDY0KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnNxdWFyZVJvb3Q2NDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTIwCgkvLyByZXR1cm4gc3FydChhICogYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkqCglzcXJ0CglyZXRzdWIKCi8vIGFkZHJlc3NUb0JpZ0ludChhZGRyZXNzKWJvb2wKKmFiaV9yb3V0ZV9hZGRyZXNzVG9CaWdJbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGFkZHI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYWRkcikgZm9yIGFkZHJlc3NUb0JpZ0ludCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRyZXNzVG9CaWdJbnQoYWRkcmVzcylib29sCgljYWxsc3ViIGFkZHJlc3NUb0JpZ0ludAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgNSAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGFkZHJlc3NUb0JpZ0ludChhZGRyOiBBZGRyZXNzKTogYm9vbGVhbgphZGRyZXNzVG9CaWdJbnQ6Cglwcm90byAxIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEyNAoJLy8gcmV0dXJuIGJ0b2JpZ2ludChhZGRyKSA+IGJ0b2JpZ2ludCh0aGlzLnR4bi5zZW5kZXIpOwoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCXR4biBTZW5kZXIKCWI+CglyZXRzdWIKCi8vIHU4VG91NjQoKXVpbnQ2NAoqYWJpX3JvdXRlX3U4VG91NjQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdThUb3U2NCgpdWludDY0CgljYWxsc3ViIHU4VG91NjQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1OFRvdTY0KCk6IHVpbnQ2NAp1OFRvdTY0OgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEyOAoJLy8geDogdWludDggPSA3CglwdXNoaW50IDcKCWZyYW1lX2J1cnkgMCAvLyB4OiB1aW50OAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTI5CgkvLyByZXR1cm4gPHVpbnQ2ND54OwoJZnJhbWVfZGlnIDAgLy8geDogdWludDgKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcHJpdmF0ZUZ1bmNOYW1lKHg6IHVpbnQ4LCB5OiB1aW50NjQpOiB2b2lkCnByaXZhdGVGdW5jTmFtZToKCXByb3RvIDIgMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTMzCgkvLyBhc3NlcnQoPHVpbnQ4PnkgPiB4KQoJZnJhbWVfZGlnIC0yIC8vIHk6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQ4Cgk+Cglhc3NlcnQKCXJldHN1YgoKLy8gZnVuY05hbWUodWludDI1Nil2b2lkCiphYmlfcm91dGVfZnVuY05hbWU6CgkvLyB4OiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHgpIGZvciBmdW5jTmFtZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBmdW5jTmFtZSh1aW50MjU2KXZvaWQKCWNhbGxzdWIgZnVuY05hbWUKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGZ1bmNOYW1lKHg6IHVpbnQyNTYpOiB2b2lkCmZ1bmNOYW1lOgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzcKCS8vIHRoaXMucHJpdmF0ZUZ1bmNOYW1lKDx1aW50OD54LCAxMzM3KQoJcHVzaGludCAxMzM3CglmcmFtZV9kaWcgLTEgLy8geDogdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgNCAvLyA4Cgk8PQoKCS8vIDx1aW50OD54IG92ZXJmbG93ZWQgOCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgMzEgMQoJYnRvaQoJY2FsbHN1YiBwcml2YXRlRnVuY05hbWUKCXJldHN1YgoKLy8gYmlnaW50UGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpZ2ludFBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYmlnaW50UGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaWdpbnRQbHVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYmlnaW50UGx1cyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaWdpbnRQbHVzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQxCgkvLyB4ID0gaXRvYihhKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIHg6IGJ5dGVbXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQyCgkvLyB5ID0gaXRvYihiKQoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfYnVyeSAxIC8vIHk6IGJ5dGVbXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQzCgkvLyByZXR1cm4gKGJ0b2JpZ2ludCh4KSArIGJ0b2JpZ2ludCh5KSkgYXMgdWludDY0OwoJZnJhbWVfZGlnIDAgLy8geDogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyB5OiBieXRlW10KCWIrCglkdXAKCWJpdGxlbgoJaW50YyAxMiAvLyA2NAoJPD0KCgkvLyAoYnRvYmlnaW50KHgpICsgYnRvYmlnaW50KHkpKSBhcyB1aW50NjQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA0IC8vIDgKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWJ0b2kKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAxCglyZXRzdWIKCi8vIGJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VPcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaXR3aXNlT3IodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZU9yCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZU9yKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmJpdHdpc2VPcjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQ3CgkvLyByZXR1cm4gYSB8IGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0Cgl8CglyZXRzdWIKCi8vIGJpdHdpc2VBbmQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9iaXR3aXNlQW5kOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VBbmQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZUFuZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VBbmQoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZUFuZDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTUxCgkvLyByZXR1cm4gYSAmIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkmCglyZXRzdWIKCi8vIGJpdHdpc2VYb3IodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9iaXR3aXNlWG9yOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VYb3IodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZVhvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VYb3IoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZVhvcjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTU1CgkvLyByZXR1cm4gYSBeIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgleCglyZXRzdWIKCi8vIGJpdHdpc2VPclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlT3JVMjU2OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciBiaXR3aXNlT3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlT3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VPclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgYml0d2lzZU9yVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZU9yVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VPclUyNTYoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKYml0d2lzZU9yVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTU5CgkvLyByZXR1cm4gYSB8IGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWJ8CglyZXRzdWIKCi8vIGJpdHdpc2VBbmRVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZUFuZFUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VBbmRVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlQW5kVTI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBiaXR3aXNlQW5kVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlQW5kVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZUFuZFUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlQW5kVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlQW5kVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTYzCgkvLyByZXR1cm4gYSAmIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWImCglyZXRzdWIKCi8vIGJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZVhvclUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VYb3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlWG9yVTI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBiaXR3aXNlWG9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlWG9yVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZVhvclUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlWG9yVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlWG9yVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTY3CgkvLyByZXR1cm4gYSBeIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWJeCglyZXRzdWIKCi8vIGJpdHdpc2VOb3QodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VOb3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZU5vdCh1aW50NjQpdWludDY0CgljYWxsc3ViIGJpdHdpc2VOb3QKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlTm90KGE6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlTm90OgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzEKCS8vIHJldHVybiB+YTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCX4KCXJldHN1YgoKLy8gYml0d2lzZU5vdFUyNTYodWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZU5vdFUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYSkgZm9yIGJpdHdpc2VOb3RVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlTm90VTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZU5vdFUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlTm90VTI1NihhOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlTm90VTI1NjoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTc1CgkvLyByZXR1cm4gfmE7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJYn4KCXJldHN1YgoKLy8gbXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX211bHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBtdWx3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gbXVsdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAptdWx3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTc5CgkvLyBwID0gbXVsdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTgzCgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2FkZHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBhZGR3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYWRkdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAphZGR3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTg3CgkvLyBwID0gYWRkdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJYWRkdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTkxCgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2V4cHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBleHB3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZXhwdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApleHB3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTk1CgkvLyBwID0gZXhwdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJZXhwdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTk5CgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2Rpdnc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBkaXZ3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZGl2dyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApkaXZ3OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDMKCS8vIHJldHVybiBkaXZ3KDAsIGEsIGIpOwoJaW50YyA1IC8vIDAKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWRpdncKCXJldHN1YgoKLy8gZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2Rpdm1vZHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBkaXZtb2R3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZGl2bW9kdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApkaXZtb2R3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMwoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjA3CgkvLyBwID0gZGl2bW9kdygwLCBhLCAwLCBiKQoJaW50YyA1IC8vIDAKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWludGMgNSAvLyAwCglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglkaXZtb2R3CglmcmFtZV9idXJ5IDAgLy8gcCByZW1haW5kZXJMb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgcmVtYWluZGVySGlnaDogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gcCBxdW90aWVudExvdzogdWludDY0CglmcmFtZV9idXJ5IDMgLy8gcCBxdW90aWVudEhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjExCgkvLyByZXR1cm4gcDIucXVvdGllbnRMb3c7CglmcmFtZV9kaWcgMiAvLyBwIHF1b3RpZW50TG93OiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAzCglyZXRzdWIKCi8vIHVuc2FmZVZhcmlhYmxlcygpdWludDY0CiphYmlfcm91dGVfdW5zYWZlVmFyaWFibGVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIHVuc2FmZVZhcmlhYmxlcygpdWludDY0CgljYWxsc3ViIHVuc2FmZVZhcmlhYmxlcwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVuc2FmZVZhcmlhYmxlcygpOiB1aW50NjQKdW5zYWZlVmFyaWFibGVzOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjE1CgkvLyBBID0gPHVpbnQyNTY+MjUwMDAwMDAwCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZTZiMjgwCglmcmFtZV9idXJ5IDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNgoJLy8gQiA9IDx1aW50MjU2PjEwMDAKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM2U4CglmcmFtZV9idXJ5IDEgLy8gQjogdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjE4CgkvLyBBID0gQSAvIEIKCWZyYW1lX2RpZyAwIC8vIEE6IHVuc2FmZSB1aW50MjU2CglieXRlYyA3IC8vICBCOiB1aW50MjU2CgliLwoJZnJhbWVfYnVyeSAwIC8vIEE6IHVuc2FmZSB1aW50MjU2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjAKCS8vIGMgPSBBIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCWR1cAoJYml0bGVuCglpbnRjIDEyIC8vIDY0Cgk8PQoKCS8vIEEgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNCAvLyA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCglmcmFtZV9idXJ5IDIgLy8gYzogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjIKCS8vIHJldHVybiBjOwoJZnJhbWVfZGlnIDIgLy8gYzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBmb29iYXIodWludDEyOCl1aW50MTI4CiphYmlfcm91dGVfZm9vYmFyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyB4OiB1aW50MTI4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDE2Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHgpIGZvciBmb29iYXIgbXVzdCBiZSBhIHVpbnQxMjgKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZm9vYmFyKHVpbnQxMjgpdWludDEyOAoJY2FsbHN1YiBmb29iYXIKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIGZvb2JhciByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBmb29iYXIoeDogdWludDEyOCk6IHVpbnQxMjgKZm9vYmFyOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyNgoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc1MzAKCWIvCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgNCAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAzIC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDAgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyOAoJLy8gcmV0dXJuIGF2Z1N0YWtlOwoJZnJhbWVfZGlnIDAgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gdWludEZyb21IZXgoKXVpbnQyNTYKKmFiaV9yb3V0ZV91aW50RnJvbUhleDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB1aW50RnJvbUhleCgpdWludDI1NgoJY2FsbHN1YiB1aW50RnJvbUhleAoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdWludEZyb21IZXggcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50RnJvbUhleCgpOiB1aW50MjU2CnVpbnRGcm9tSGV4OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMzIKCS8vIHJldHVybiBVaW50PDI1Nj4oJzB4RkYnKTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmYKCXJldHN1YgoKLy8gd2lkZVJhdGlvVGVzdCgpdWludDY0CiphYmlfcm91dGVfd2lkZVJhdGlvVGVzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB3aWRlUmF0aW9UZXN0KCl1aW50NjQKCWNhbGxzdWIgd2lkZVJhdGlvVGVzdAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHdpZGVSYXRpb1Rlc3QoKTogdWludDY0CndpZGVSYXRpb1Rlc3Q6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIzNgoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbVWludDw2ND4oJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JyksIDIsIDMsIDQsIDVdLCBbMiwgMywgNCwgNV0pOwoJaW50YyA3IC8vIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CglpbnRjIDggLy8gMgoJbXVsdwoJaW50YyA5IC8vIDMKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWludGMgMTAgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMSAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDggLy8gMgoJaW50YyA5IC8vIDMKCW11bHcKCWludGMgMTAgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMSAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJcmV0c3ViCgovLyB1MTI4SW5UdXBsZSgodWludDY0LHVpbnQ2NCx1aW50MTI4KSx1aW50MTI4LHVpbnQ2NCl1aW50MTI4CiphYmlfcm91dGVfdTEyOEluVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHNjYWxlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBhY2NScHM6IHVpbnQxMjgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDMgLy8gMTYKCT09CgoJLy8gYXJndW1lbnQgMSAoYWNjUnBzKSBmb3IgdTEyOEluVHVwbGUgbXVzdCBiZSBhIHVpbnQxMjgKCWFzc2VydAoKCS8vIHVzZXJEYXRhOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyICh1c2VyRGF0YSkgZm9yIHUxMjhJblR1cGxlIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MTI4SW5UdXBsZSgodWludDY0LHVpbnQ2NCx1aW50MTI4KSx1aW50MTI4LHVpbnQ2NCl1aW50MTI4CgljYWxsc3ViIHUxMjhJblR1cGxlCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB1MTI4SW5UdXBsZSByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MTI4SW5UdXBsZSh1c2VyRGF0YTogVXNlckRhdGEsIGFjY1JwczogdWludDEyOCwgc2NhbGU6IHVpbnQ2NCk6IHVpbnQxMjgKdTEyOEluVHVwbGU6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQyCgkvLyB0aGlzLmFjY1JQUy52YWx1ZSA9IGFjY1JwcwoJYnl0ZWMgOCAvLyAgInJld2FyZFBlclNoYXJlIgoJZnJhbWVfZGlnIC0yIC8vIGFjY1JwczogdWludDEyOAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjI0MwoJLy8gcmV0VmFsID0gY2xvbmUodXNlckRhdGEpCglmcmFtZV9kaWcgLTEgLy8gdXNlckRhdGE6IFVzZXJEYXRhCglmcmFtZV9idXJ5IDAgLy8gcmV0VmFsOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQ1CgkvLyByZXRWYWwucmV3YXJkRGVidCA9ICgodXNlckRhdGEuc3Rha2UgYXMgdWludDEyOCkgKiAodGhpcy5hY2NSUFMudmFsdWUgYXMgdWludDEyOCkpIC8gKHNjYWxlIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyByZXRWYWw6ICh1aW50NjQsdWludDY0LHVpbnQxMjgpCglpbnRjIDMgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyB1c2VyRGF0YTogVXNlckRhdGEKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglieXRlYyA4IC8vICAicmV3YXJkUGVyU2hhcmUiCglhcHBfZ2xvYmFsX2dldAoJYioKCWZyYW1lX2RpZyAtMyAvLyBzY2FsZTogdWludDY0CglpdG9iCgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gcmV0VmFsLnJld2FyZERlYnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDAgLy8gcmV0VmFsOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gcmV0VmFsLnJld2FyZERlYnQ7CglmcmFtZV9kaWcgMCAvLyByZXRWYWw6ICh1aW50NjQsdWludDY0LHVpbnQxMjgpCglleHRyYWN0IDE2IDE2CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4M2NlNmYxYWYgLy8gbWV0aG9kICJ1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDAzMWExODYgLy8gbWV0aG9kICJ1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGU1MmU0Mzk0IC8vIG1ldGhvZCAidTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OTUwZDQ3ODkgLy8gbWV0aG9kICJ1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg2NWJkZGE2ZSAvLyBtZXRob2QgInUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4MGE2YWQyODQgLy8gbWV0aG9kICJ1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMDQ0YmYyNCAvLyBtZXRob2QgInUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhjNDhmOGMwNSAvLyBtZXRob2QgInUyNTZkaXYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMmUxZDYzMiAvLyBtZXRob2QgInU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgzOGIxYTM5ZSAvLyBtZXRob2QgIm1heFU2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4NmMxMzZmMWQgLy8gbWV0aG9kICJleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyZGEyNTAyIC8vIG1ldGhvZCAidmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYiCglwdXNoYnl0ZXMgMHhhMmZlYWQ2YyAvLyBtZXRob2QgInVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OCIKCXB1c2hieXRlcyAweGQyMjU2ZjdhIC8vIG1ldGhvZCAidWludDhleHAodWludDgsdWludDgpdWludDgiCglwdXNoYnl0ZXMgMHhjMTdkNjI0ZSAvLyBtZXRob2QgInBsdXNFcXVhbHModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1Y2FiMDQzOCAvLyBtZXRob2QgInBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4NTg5ODljY2QgLy8gbWV0aG9kICJib3hUZXN0KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NDgzMGI0ZGUgLy8gbWV0aG9kICJ1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTFjNTVjZTUgLy8gbWV0aG9kICJ1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHg3ZDFkNDI2ZSAvLyBtZXRob2QgInNxdWFyZVJvb3QyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgxYzI5ODFmMSAvLyBtZXRob2QgInNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGI3Y2EwNGI5IC8vIG1ldGhvZCAiYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGJiOTUyMzM4IC8vIG1ldGhvZCAidThUb3U2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDEyOGUyN2IgLy8gbWV0aG9kICJmdW5jTmFtZSh1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHhmOTE2Y2RiMyAvLyBtZXRob2QgImJpZ2ludFBsdXModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1MjczNzU0NSAvLyBtZXRob2QgImJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDc5YzFhZGMwIC8vIG1ldGhvZCAiYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyNDc0YWJjIC8vIG1ldGhvZCAiYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDA1OTNmZGY4IC8vIG1ldGhvZCAiYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDA2ZmI5MzM3IC8vIG1ldGhvZCAiYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgyNjQ5M2Q3OCAvLyBtZXRob2QgImJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTljMjJlZWEgLy8gbWV0aG9kICJiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHhlZGUzZTliYyAvLyBtZXRob2QgImJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDJlNGEyMTY0IC8vIG1ldGhvZCAibXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDUwMTM0YjVhIC8vIG1ldGhvZCAiYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGY1M2FmZjliIC8vIG1ldGhvZCAiZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGNhZjcxMTBkIC8vIG1ldGhvZCAiZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGJlZDBlMzg2IC8vIG1ldGhvZCAiZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI3NGQ3NzA1IC8vIG1ldGhvZCAidW5zYWZlVmFyaWFibGVzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5MjQ2NWQwOCAvLyBtZXRob2QgImZvb2Jhcih1aW50MTI4KXVpbnQxMjgiCglwdXNoYnl0ZXMgMHhmMDFmYWNjZSAvLyBtZXRob2QgInVpbnRGcm9tSGV4KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NWFjOGEwYTAgLy8gbWV0aG9kICJ3aWRlUmF0aW9UZXN0KCl1aW50NjQiCglwdXNoYnl0ZXMgMHhjZmIwMDY5MiAvLyBtZXRob2QgInUxMjhJblR1cGxlKCh1aW50NjQsdWludDY0LHVpbnQxMjgpLHVpbnQxMjgsdWludDY0KXVpbnQxMjgiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3U2NHBsdXMgKmFiaV9yb3V0ZV91NjRtaW51cyAqYWJpX3JvdXRlX3U2NG11bCAqYWJpX3JvdXRlX3U2NGRpdiAqYWJpX3JvdXRlX3UyNTZwbHVzICphYmlfcm91dGVfdTI1Nm1pbnVzICphYmlfcm91dGVfdTI1Nm11bCAqYWJpX3JvdXRlX3UyNTZkaXYgKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTYgKmFiaV9yb3V0ZV9tYXhVNjQgKmFiaV9yb3V0ZV9leHBvbmVudCAqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQgKmFiaV9yb3V0ZV91aW50OHBsdXMgKmFiaV9yb3V0ZV91aW50OGV4cCAqYWJpX3JvdXRlX3BsdXNFcXVhbHMgKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbCAqYWJpX3JvdXRlX2JveFRlc3QgKmFiaV9yb3V0ZV91bnNhZmVNZXRob2RBcmdzICphYmlfcm91dGVfdWludDI1NkNvbXBhcmlzb25UeXBlICphYmlfcm91dGVfc3F1YXJlUm9vdDI1NiAqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NCAqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludCAqYWJpX3JvdXRlX3U4VG91NjQgKmFiaV9yb3V0ZV9mdW5jTmFtZSAqYWJpX3JvdXRlX2JpZ2ludFBsdXMgKmFiaV9yb3V0ZV9iaXR3aXNlT3IgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kICphYmlfcm91dGVfYml0d2lzZVhvciAqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTYgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NiAqYWJpX3JvdXRlX2JpdHdpc2VYb3JVMjU2ICphYmlfcm91dGVfYml0d2lzZU5vdCAqYWJpX3JvdXRlX2JpdHdpc2VOb3RVMjU2ICphYmlfcm91dGVfbXVsdyAqYWJpX3JvdXRlX2FkZHcgKmFiaV9yb3V0ZV9leHB3ICphYmlfcm91dGVfZGl2dyAqYWJpX3JvdXRlX2Rpdm1vZHcgKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXMgKmFiaV9yb3V0ZV9mb29iYXIgKmFiaV9yb3V0ZV91aW50RnJvbUhleCAqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3QgKmFiaV9yb3V0ZV91MTI4SW5UdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { @@ -854,6 +863,26 @@ "type": "uint64" } }, + { + "name": "u128InTuple", + "args": [ + { + "name": "userData", + "type": "(uint64,uint64,uint128)" + }, + { + "name": "accRps", + "type": "uint128" + }, + { + "name": "scale", + "type": "uint64" + } + ], + "returns": { + "type": "uint128" + } + }, { "name": "createApplication", "args": [], diff --git a/tests/contracts/artifacts/MathTest.arc4.json b/tests/contracts/artifacts/MathTest.arc4.json index 046c6c3a9..c43b40244 100644 --- a/tests/contracts/artifacts/MathTest.arc4.json +++ b/tests/contracts/artifacts/MathTest.arc4.json @@ -600,6 +600,26 @@ "type": "uint64" } }, + { + "name": "u128InTuple", + "args": [ + { + "name": "userData", + "type": "(uint64,uint64,uint128)" + }, + { + "name": "accRps", + "type": "uint128" + }, + { + "name": "scale", + "type": "uint64" + } + ], + "returns": { + "type": "uint128" + } + }, { "name": "createApplication", "args": [], diff --git a/tests/contracts/artifacts/MathTest.arc56.json b/tests/contracts/artifacts/MathTest.arc56.json index b4b0972fa..695bcd793 100644 --- a/tests/contracts/artifacts/MathTest.arc56.json +++ b/tests/contracts/artifacts/MathTest.arc56.json @@ -852,6 +852,33 @@ ] } }, + { + "name": "u128InTuple", + "args": [ + { + "name": "userData", + "type": "(uint64,uint64,uint128)", + "struct": "UserData" + }, + { + "name": "accRps", + "type": "uint128" + }, + { + "name": "scale", + "type": "uint64" + } + ], + "returns": { + "type": "uint128" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, { "name": "createApplication", "args": [], @@ -870,11 +897,26 @@ 4, 56 ], - "structs": {}, + "structs": { + "UserData": [ + { + "name": "stake", + "type": "uint64" + }, + { + "name": "pendingRewards", + "type": "uint64" + }, + { + "name": "rewardDebt", + "type": "uint128" + } + ] + }, "state": { "schema": { "global": { - "bytes": 0, + "bytes": 1, "ints": 1 }, "local": { @@ -888,6 +930,11 @@ "key": "Z0tleQ==", "keyType": "AVMBytes", "valueType": "uint64" + }, + "accRPS": { + "key": "cmV3YXJkUGVyU2hhcmU=", + "keyType": "AVMBytes", + "valueType": "uint128" } }, "local": {}, @@ -914,14 +961,14 @@ "sourceInfo": [ { "teal": 1, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ 0 ] }, { "teal": 2, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ 1, 2, @@ -953,7 +1000,7 @@ }, { "teal": 3, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ 27, 28, @@ -1099,73 +1146,73 @@ 168, 169, 170, - 171 + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186 ] }, { "teal": 15, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 172, - 173 + 187, + 188 ] }, { "teal": 16, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 174 + 189 ] }, { "teal": 17, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 175, - 176 + 190, + 191 ] }, { "teal": 18, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 177 + 192 ] }, { "teal": 19, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 178, - 179 + 193, + 194 ] }, { "teal": 20, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 180 + 195 ] }, { "teal": 21, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, 196, 197, 198, @@ -1176,4101 +1223,4101 @@ 203, 204, 205, - 206 + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221 ] }, { "teal": 25, - "source": "tests/contracts/math.algo.ts:4", + "source": "tests/contracts/math.algo.ts:10", "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", "pc": [ - 207 + 222 ] }, { "teal": 30, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 208 + 223 ] }, { "teal": 33, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 209, - 210, - 211 + 224, + 225, + 226 ] }, { "teal": 34, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 212 + 227 ] }, { "teal": 37, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 213, - 214, - 215 + 228, + 229, + 230 ] }, { "teal": 38, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 216 + 231 ] }, { "teal": 41, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 217, - 218, - 219 + 232, + 233, + 234 ] }, { "teal": 42, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 220 + 235 ] }, { "teal": 43, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 221 + 236 ] }, { "teal": 44, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 222 + 237 ] }, { "teal": 45, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 223 + 238 ] }, { "teal": 46, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 224 + 239 ] }, { "teal": 50, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 225, - 226, - 227 + 240, + 241, + 242 ] }, { "teal": 54, - "source": "tests/contracts/math.algo.ts:8", + "source": "tests/contracts/math.algo.ts:14", "pc": [ - 228, - 229 + 243, + 244 ] }, { "teal": 55, - "source": "tests/contracts/math.algo.ts:8", + "source": "tests/contracts/math.algo.ts:14", "pc": [ - 230, - 231 + 245, + 246 ] }, { "teal": 56, - "source": "tests/contracts/math.algo.ts:8", + "source": "tests/contracts/math.algo.ts:14", "pc": [ - 232 + 247 ] }, { "teal": 57, - "source": "tests/contracts/math.algo.ts:7", + "source": "tests/contracts/math.algo.ts:13", "pc": [ - 233 + 248 ] }, { "teal": 62, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 234 + 249 ] }, { "teal": 65, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 235, - 236, - 237 + 250, + 251, + 252 ] }, { "teal": 66, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 238 + 253 ] }, { "teal": 69, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 239, - 240, - 241 + 254, + 255, + 256 ] }, { "teal": 70, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 242 + 257 ] }, { "teal": 73, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 243, - 244, - 245 + 258, + 259, + 260 ] }, { "teal": 74, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 246 + 261 ] }, { "teal": 75, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 247 + 262 ] }, { "teal": 76, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 248 + 263 ] }, { "teal": 77, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 249 + 264 ] }, { "teal": 78, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 250 + 265 ] }, { "teal": 82, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 251, - 252, - 253 + 266, + 267, + 268 ] }, { "teal": 86, - "source": "tests/contracts/math.algo.ts:12", + "source": "tests/contracts/math.algo.ts:18", "pc": [ - 254, - 255 + 269, + 270 ] }, { "teal": 87, - "source": "tests/contracts/math.algo.ts:12", + "source": "tests/contracts/math.algo.ts:18", "pc": [ - 256, - 257 + 271, + 272 ] }, { "teal": 88, - "source": "tests/contracts/math.algo.ts:12", + "source": "tests/contracts/math.algo.ts:18", "pc": [ - 258 + 273 ] }, { "teal": 89, - "source": "tests/contracts/math.algo.ts:11", + "source": "tests/contracts/math.algo.ts:17", "pc": [ - 259 + 274 ] }, { "teal": 94, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 260 + 275 ] }, { "teal": 97, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 261, - 262, - 263 + 276, + 277, + 278 ] }, { "teal": 98, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 264 + 279 ] }, { "teal": 101, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 265, - 266, - 267 + 280, + 281, + 282 ] }, { "teal": 102, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 268 + 283 ] }, { "teal": 105, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 269, - 270, - 271 + 284, + 285, + 286 ] }, { "teal": 106, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 272 + 287 ] }, { "teal": 107, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 273 + 288 ] }, { "teal": 108, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 274 + 289 ] }, { "teal": 109, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 275 + 290 ] }, { "teal": 110, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 276 + 291 ] }, { "teal": 114, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 277, - 278, - 279 + 292, + 293, + 294 ] }, { "teal": 118, - "source": "tests/contracts/math.algo.ts:16", + "source": "tests/contracts/math.algo.ts:22", "pc": [ - 280, - 281 + 295, + 296 ] }, { "teal": 119, - "source": "tests/contracts/math.algo.ts:16", + "source": "tests/contracts/math.algo.ts:22", "pc": [ - 282, - 283 + 297, + 298 ] }, { "teal": 120, - "source": "tests/contracts/math.algo.ts:16", + "source": "tests/contracts/math.algo.ts:22", "pc": [ - 284 + 299 ] }, { "teal": 121, - "source": "tests/contracts/math.algo.ts:15", + "source": "tests/contracts/math.algo.ts:21", "pc": [ - 285 + 300 ] }, { "teal": 126, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 286 + 301 ] }, { "teal": 129, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 287, - 288, - 289 + 302, + 303, + 304 ] }, { "teal": 130, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 290 + 305 ] }, { "teal": 133, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 291, - 292, - 293 + 306, + 307, + 308 ] }, { "teal": 134, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 294 + 309 ] }, { "teal": 137, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 295, - 296, - 297 + 310, + 311, + 312 ] }, { "teal": 138, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 298 + 313 ] }, { "teal": 139, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 299 + 314 ] }, { "teal": 140, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 300 + 315 ] }, { "teal": 141, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 301 + 316 ] }, { "teal": 142, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 302 + 317 ] }, { "teal": 146, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 303, - 304, - 305 + 318, + 319, + 320 ] }, { "teal": 150, - "source": "tests/contracts/math.algo.ts:20", + "source": "tests/contracts/math.algo.ts:26", "pc": [ - 306, - 307 + 321, + 322 ] }, { "teal": 151, - "source": "tests/contracts/math.algo.ts:20", + "source": "tests/contracts/math.algo.ts:26", "pc": [ - 308, - 309 + 323, + 324 ] }, { "teal": 152, - "source": "tests/contracts/math.algo.ts:20", + "source": "tests/contracts/math.algo.ts:26", "pc": [ - 310 + 325 ] }, { "teal": 153, - "source": "tests/contracts/math.algo.ts:19", + "source": "tests/contracts/math.algo.ts:25", "pc": [ - 311 + 326 ] }, { "teal": 158, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 312 + 327 ] }, { "teal": 161, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 313, - 314, - 315 + 328, + 329, + 330 ] }, { "teal": 162, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 316 + 331 ] }, { "teal": 163, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 317 + 332 ] }, { "teal": 164, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 318 + 333 ] }, { "teal": 165, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 319 + 334 ] }, { "teal": 168, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "errorMessage": "argument 0 (b) for u256plus must be a uint256", "pc": [ - 320 + 335 ] }, { "teal": 171, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 321, - 322, - 323 + 336, + 337, + 338 ] }, { "teal": 172, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 324 + 339 ] }, { "teal": 173, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 325 + 340 ] }, { "teal": 174, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 326 + 341 ] }, { "teal": 175, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 327 + 342 ] }, { "teal": 178, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "errorMessage": "argument 1 (a) for u256plus must be a uint256", "pc": [ - 328 + 343 ] }, { "teal": 181, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 329, - 330, - 331 + 344, + 345, + 346 ] }, { "teal": 182, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 332 + 347 ] }, { "teal": 183, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 333 + 348 ] }, { "teal": 184, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 334 + 349 ] }, { "teal": 185, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 335 + 350 ] }, { "teal": 188, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "errorMessage": "u256plus return value overflowed 256 bits", "pc": [ - 336 + 351 ] }, { "teal": 189, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 337 + 352 ] }, { "teal": 190, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 338 + 353 ] }, { "teal": 191, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 339 + 354 ] }, { "teal": 192, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 340 + 355 ] }, { "teal": 193, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 341 + 356 ] }, { "teal": 194, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 342 + 357 ] }, { "teal": 195, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 343 + 358 ] }, { "teal": 196, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 344 + 359 ] }, { "teal": 197, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 345 + 360 ] }, { "teal": 198, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 346 + 361 ] }, { "teal": 199, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 347 + 362 ] }, { "teal": 200, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 348 + 363 ] }, { "teal": 201, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 349 + 364 ] }, { "teal": 205, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 350, - 351, - 352 + 365, + 366, + 367 ] }, { "teal": 209, - "source": "tests/contracts/math.algo.ts:24", + "source": "tests/contracts/math.algo.ts:30", "pc": [ - 353, - 354 + 368, + 369 ] }, { "teal": 210, - "source": "tests/contracts/math.algo.ts:24", + "source": "tests/contracts/math.algo.ts:30", "pc": [ - 355, - 356 + 370, + 371 ] }, { "teal": 211, - "source": "tests/contracts/math.algo.ts:24", + "source": "tests/contracts/math.algo.ts:30", "pc": [ - 357 + 372 ] }, { "teal": 212, - "source": "tests/contracts/math.algo.ts:23", + "source": "tests/contracts/math.algo.ts:29", "pc": [ - 358 + 373 ] }, { "teal": 217, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 359 + 374 ] }, { "teal": 220, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 360, - 361, - 362 + 375, + 376, + 377 ] }, { "teal": 221, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 363 + 378 ] }, { "teal": 222, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 364 + 379 ] }, { "teal": 223, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 365 + 380 ] }, { "teal": 224, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 366 + 381 ] }, { "teal": 227, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "errorMessage": "argument 0 (b) for u256minus must be a uint256", "pc": [ - 367 + 382 ] }, { "teal": 230, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 368, - 369, - 370 + 383, + 384, + 385 ] }, { "teal": 231, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 371 + 386 ] }, { "teal": 232, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 372 + 387 ] }, { "teal": 233, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 373 + 388 ] }, { "teal": 234, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 374 + 389 ] }, { "teal": 237, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "errorMessage": "argument 1 (a) for u256minus must be a uint256", "pc": [ - 375 + 390 ] }, { "teal": 240, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 376, - 377, - 378 + 391, + 392, + 393 ] }, { "teal": 241, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 379 + 394 ] }, { "teal": 242, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 380 + 395 ] }, { "teal": 243, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 381 + 396 ] }, { "teal": 244, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 382 + 397 ] }, { "teal": 247, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "errorMessage": "u256minus return value overflowed 256 bits", "pc": [ - 383 + 398 ] }, { "teal": 248, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 384 + 399 ] }, { "teal": 249, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 385 + 400 ] }, { "teal": 250, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 386 + 401 ] }, { "teal": 251, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 387 + 402 ] }, { "teal": 252, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 388 + 403 ] }, { "teal": 253, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 389 + 404 ] }, { "teal": 254, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 390 + 405 ] }, { "teal": 255, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 391 + 406 ] }, { "teal": 256, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 392 + 407 ] }, { "teal": 257, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 393 + 408 ] }, { "teal": 258, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 394 + 409 ] }, { "teal": 259, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 395 + 410 ] }, { "teal": 260, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 396 + 411 ] }, { "teal": 264, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 397, - 398, - 399 + 412, + 413, + 414 ] }, { "teal": 268, - "source": "tests/contracts/math.algo.ts:28", + "source": "tests/contracts/math.algo.ts:34", "pc": [ - 400, - 401 + 415, + 416 ] }, { "teal": 269, - "source": "tests/contracts/math.algo.ts:28", + "source": "tests/contracts/math.algo.ts:34", "pc": [ - 402, - 403 + 417, + 418 ] }, { "teal": 270, - "source": "tests/contracts/math.algo.ts:28", + "source": "tests/contracts/math.algo.ts:34", "pc": [ - 404 + 419 ] }, { "teal": 271, - "source": "tests/contracts/math.algo.ts:27", + "source": "tests/contracts/math.algo.ts:33", "pc": [ - 405 + 420 ] }, { "teal": 276, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 406 + 421 ] }, { "teal": 279, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 407, - 408, - 409 + 422, + 423, + 424 ] }, { "teal": 280, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 410 + 425 ] }, { "teal": 281, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 411 + 426 ] }, { "teal": 282, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 412 + 427 ] }, { "teal": 283, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 413 + 428 ] }, { "teal": 286, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "errorMessage": "argument 0 (b) for u256mul must be a uint256", "pc": [ - 414 + 429 ] }, { "teal": 289, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 415, - 416, - 417 + 430, + 431, + 432 ] }, { "teal": 290, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 418 + 433 ] }, { "teal": 291, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 419 + 434 ] }, { "teal": 292, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 420 + 435 ] }, { "teal": 293, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 421 + 436 ] }, { "teal": 296, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "errorMessage": "argument 1 (a) for u256mul must be a uint256", "pc": [ - 422 + 437 ] }, { "teal": 299, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 423, - 424, - 425 + 438, + 439, + 440 ] }, { "teal": 300, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 426 + 441 ] }, { "teal": 301, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 427 + 442 ] }, { "teal": 302, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 428 + 443 ] }, { "teal": 303, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 429 + 444 ] }, { "teal": 306, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "errorMessage": "u256mul return value overflowed 256 bits", "pc": [ - 430 + 445 ] }, { "teal": 307, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 431 + 446 ] }, { "teal": 308, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 432 + 447 ] }, { "teal": 309, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 433 + 448 ] }, { "teal": 310, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 434 + 449 ] }, { "teal": 311, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 435 + 450 ] }, { "teal": 312, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 436 + 451 ] }, { "teal": 313, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 437 + 452 ] }, { "teal": 314, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 438 + 453 ] }, { "teal": 315, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 439 + 454 ] }, { "teal": 316, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 440 + 455 ] }, { "teal": 317, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 441 + 456 ] }, { "teal": 318, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 442 + 457 ] }, { "teal": 319, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 443 + 458 ] }, { "teal": 323, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 444, - 445, - 446 + 459, + 460, + 461 ] }, { "teal": 327, - "source": "tests/contracts/math.algo.ts:32", + "source": "tests/contracts/math.algo.ts:38", "pc": [ - 447, - 448 + 462, + 463 ] }, { "teal": 328, - "source": "tests/contracts/math.algo.ts:32", + "source": "tests/contracts/math.algo.ts:38", "pc": [ - 449, - 450 + 464, + 465 ] }, { "teal": 329, - "source": "tests/contracts/math.algo.ts:32", + "source": "tests/contracts/math.algo.ts:38", "pc": [ - 451 + 466 ] }, { "teal": 330, - "source": "tests/contracts/math.algo.ts:31", + "source": "tests/contracts/math.algo.ts:37", "pc": [ - 452 + 467 ] }, { "teal": 335, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 453 + 468 ] }, { "teal": 338, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 454, - 455, - 456 + 469, + 470, + 471 ] }, { "teal": 339, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 457 + 472 ] }, { "teal": 340, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 458 + 473 ] }, { "teal": 341, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 459 + 474 ] }, { "teal": 342, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 460 + 475 ] }, { "teal": 345, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "errorMessage": "argument 0 (b) for u256div must be a uint256", "pc": [ - 461 + 476 ] }, { "teal": 348, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 462, - 463, - 464 + 477, + 478, + 479 ] }, { "teal": 349, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 465 + 480 ] }, { "teal": 350, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 466 + 481 ] }, { "teal": 351, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 467 + 482 ] }, { "teal": 352, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 468 + 483 ] }, { "teal": 355, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "errorMessage": "argument 1 (a) for u256div must be a uint256", "pc": [ - 469 + 484 ] }, { "teal": 358, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 470, - 471, - 472 + 485, + 486, + 487 ] }, { "teal": 359, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 473 + 488 ] }, { "teal": 360, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 474 + 489 ] }, { "teal": 361, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 475 + 490 ] }, { "teal": 362, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 476 + 491 ] }, { "teal": 365, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "errorMessage": "u256div return value overflowed 256 bits", "pc": [ - 477 + 492 ] }, { "teal": 366, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 478 + 493 ] }, { "teal": 367, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 479 + 494 ] }, { "teal": 368, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 480 + 495 ] }, { "teal": 369, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 481 + 496 ] }, { "teal": 370, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 482 + 497 ] }, { "teal": 371, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 483 + 498 ] }, { "teal": 372, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 484 + 499 ] }, { "teal": 373, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 485 + 500 ] }, { "teal": 374, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 486 + 501 ] }, { "teal": 375, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 487 + 502 ] }, { "teal": 376, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 488 + 503 ] }, { "teal": 377, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 489 + 504 ] }, { "teal": 378, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 490 + 505 ] }, { "teal": 382, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 491, - 492, - 493 + 506, + 507, + 508 ] }, { "teal": 386, - "source": "tests/contracts/math.algo.ts:36", + "source": "tests/contracts/math.algo.ts:42", "pc": [ - 494, - 495 + 509, + 510 ] }, { "teal": 387, - "source": "tests/contracts/math.algo.ts:36", + "source": "tests/contracts/math.algo.ts:42", "pc": [ - 496, - 497 + 511, + 512 ] }, { "teal": 388, - "source": "tests/contracts/math.algo.ts:36", + "source": "tests/contracts/math.algo.ts:42", "pc": [ - 498 + 513 ] }, { "teal": 389, - "source": "tests/contracts/math.algo.ts:35", + "source": "tests/contracts/math.algo.ts:41", "pc": [ - 499 + 514 ] }, { "teal": 394, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 500 + 515 ] }, { "teal": 397, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 501, - 502, - 503 + 516, + 517, + 518 ] }, { "teal": 398, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 504 + 519 ] }, { "teal": 401, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 505, - 506, - 507 + 520, + 521, + 522 ] }, { "teal": 402, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 508 + 523 ] }, { "teal": 405, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 509, - 510, - 511 + 524, + 525, + 526 ] }, { "teal": 406, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 512 + 527 ] }, { "teal": 407, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 513 + 528 ] }, { "teal": 408, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 514 + 529 ] }, { "teal": 409, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 515 + 530 ] }, { "teal": 412, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "errorMessage": "u64Return256 return value overflowed 256 bits", "pc": [ - 516 + 531 ] }, { "teal": 413, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 517 + 532 ] }, { "teal": 414, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 518 + 533 ] }, { "teal": 415, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 519 + 534 ] }, { "teal": 416, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 520 + 535 ] }, { "teal": 417, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 521 + 536 ] }, { "teal": 418, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 522 + 537 ] }, { "teal": 419, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 523 + 538 ] }, { "teal": 420, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 524 + 539 ] }, { "teal": 421, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 525 + 540 ] }, { "teal": 422, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 526 + 541 ] }, { "teal": 423, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 527 + 542 ] }, { "teal": 424, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 528 + 543 ] }, { "teal": 425, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 529 + 544 ] }, { "teal": 429, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 530, - 531, - 532 + 545, + 546, + 547 ] }, { "teal": 433, - "source": "tests/contracts/math.algo.ts:40", + "source": "tests/contracts/math.algo.ts:46", "pc": [ - 533, - 534 + 548, + 549 ] }, { "teal": 434, - "source": "tests/contracts/math.algo.ts:40", + "source": "tests/contracts/math.algo.ts:46", "pc": [ - 535, - 536 + 550, + 551 ] }, { "teal": 435, - "source": "tests/contracts/math.algo.ts:40", + "source": "tests/contracts/math.algo.ts:46", "pc": [ - 537 + 552 ] }, { "teal": 436, - "source": "tests/contracts/math.algo.ts:40", + "source": "tests/contracts/math.algo.ts:46", "pc": [ - 538 + 553 ] }, { "teal": 437, - "source": "tests/contracts/math.algo.ts:39", + "source": "tests/contracts/math.algo.ts:45", "pc": [ - 539 + 554 ] }, { "teal": 442, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 540 + 555 ] }, { "teal": 445, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 541, - 542, - 543 + 556, + 557, + 558 ] }, { "teal": 446, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 544 + 559 ] }, { "teal": 447, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 545 + 560 ] }, { "teal": 448, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 546 + 561 ] }, { "teal": 449, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 547 + 562 ] }, { "teal": 450, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 548 + 563 ] }, { "teal": 454, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 549, - 550, - 551 + 564, + 565, + 566 ] }, { "teal": 458, - "source": "tests/contracts/math.algo.ts:44", + "source": "tests/contracts/math.algo.ts:50", "pc": [ - 552, - 553 + 567, + 568 ] }, { "teal": 459, - "source": "tests/contracts/math.algo.ts:43", + "source": "tests/contracts/math.algo.ts:49", "pc": [ - 554 + 569 ] }, { "teal": 464, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 555 + 570 ] }, { "teal": 467, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 556, - 557, - 558 + 571, + 572, + 573 ] }, { "teal": 468, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 559 + 574 ] }, { "teal": 471, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 560, - 561, - 562 + 575, + 576, + 577 ] }, { "teal": 472, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 563 + 578 ] }, { "teal": 475, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 564, - 565, - 566 + 579, + 580, + 581 ] }, { "teal": 476, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 567 + 582 ] }, { "teal": 477, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 568 + 583 ] }, { "teal": 478, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 569 + 584 ] }, { "teal": 479, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 570 + 585 ] }, { "teal": 480, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 571 + 586 ] }, { "teal": 484, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 572, - 573, - 574 + 587, + 588, + 589 ] }, { "teal": 488, - "source": "tests/contracts/math.algo.ts:48", + "source": "tests/contracts/math.algo.ts:54", "pc": [ - 575, - 576 + 590, + 591 ] }, { "teal": 489, - "source": "tests/contracts/math.algo.ts:48", + "source": "tests/contracts/math.algo.ts:54", "pc": [ - 577, - 578 + 592, + 593 ] }, { "teal": 490, - "source": "tests/contracts/math.algo.ts:48", + "source": "tests/contracts/math.algo.ts:54", "pc": [ - 579 + 594 ] }, { "teal": 491, - "source": "tests/contracts/math.algo.ts:47", + "source": "tests/contracts/math.algo.ts:53", "pc": [ - 580 + 595 ] }, { "teal": 496, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 581 + 596 ] }, { "teal": 499, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 582, - 583, - 584 + 597, + 598, + 599 ] }, { "teal": 500, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 585 + 600 ] }, { "teal": 501, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 586 + 601 ] }, { "teal": 502, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 587 + 602 ] }, { "teal": 503, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 588 + 603 ] }, { "teal": 506, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "errorMessage": "argument 0 (y) for variableTypeHint must be a uint8", "pc": [ - 589 + 604 ] }, { "teal": 507, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 590 + 605 ] }, { "teal": 510, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 591, - 592, - 593 + 606, + 607, + 608 ] }, { "teal": 511, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 594 + 609 ] }, { "teal": 512, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 595 + 610 ] }, { "teal": 513, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 596 + 611 ] }, { "teal": 514, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 597 + 612 ] }, { "teal": 517, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "errorMessage": "argument 1 (x) for variableTypeHint must be a uint8", "pc": [ - 598 + 613 ] }, { "teal": 518, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 599 + 614 ] }, { "teal": 521, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 600, - 601, - 602 + 615, + 616, + 617 ] }, { "teal": 522, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 603 + 618 ] }, { "teal": 523, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 604 + 619 ] }, { "teal": 524, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 605 + 620 ] }, { "teal": 525, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 606, - 607 + 621 ] }, { "teal": 526, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 608 + 622 ] }, { "teal": 529, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "errorMessage": "variableTypeHint return value overflowed 16 bits", "pc": [ - 609 + 623 ] }, { "teal": 530, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 610, - 611, - 612 + 624, + 625, + 626 ] }, { "teal": 531, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 613 + 627 ] }, { "teal": 532, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 614 + 628 ] }, { "teal": 533, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 615 + 629 ] }, { "teal": 534, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 616 + 630 ] }, { "teal": 538, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 617, - 618, - 619 + 631, + 632, + 633 ] }, { "teal": 541, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 620 + 634 ] }, { "teal": 545, - "source": "tests/contracts/math.algo.ts:52", + "source": "tests/contracts/math.algo.ts:58", "pc": [ - 621, - 622 + 635, + 636 ] }, { "teal": 546, - "source": "tests/contracts/math.algo.ts:52", + "source": "tests/contracts/math.algo.ts:58", "pc": [ - 623, - 624 + 637, + 638 ] }, { "teal": 547, - "source": "tests/contracts/math.algo.ts:52", + "source": "tests/contracts/math.algo.ts:58", "pc": [ - 625 + 639 ] }, { "teal": 548, - "source": "tests/contracts/math.algo.ts:52", + "source": "tests/contracts/math.algo.ts:58", "pc": [ - 626, - 627 + 640, + 641 ] }, { "teal": 552, - "source": "tests/contracts/math.algo.ts:54", + "source": "tests/contracts/math.algo.ts:60", "pc": [ - 628, - 629 + 642, + 643 ] }, { "teal": 555, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 630, - 631 + 644, + 645 ] }, { "teal": 556, - "source": "tests/contracts/math.algo.ts:51", + "source": "tests/contracts/math.algo.ts:57", "pc": [ - 632 + 646 ] }, { "teal": 561, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 633 + 647 ] }, { "teal": 564, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 634, - 635, - 636 + 648, + 649, + 650 ] }, { "teal": 565, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 637 + 651 ] }, { "teal": 566, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 638 + 652 ] }, { "teal": 567, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 639 + 653 ] }, { "teal": 568, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 640 + 654 ] }, { "teal": 571, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "errorMessage": "argument 0 (b) for uint8plus must be a uint8", "pc": [ - 641 + 655 ] }, { "teal": 572, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 642 + 656 ] }, { "teal": 575, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 643, - 644, - 645 + 657, + 658, + 659 ] }, { "teal": 576, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 646 + 660 ] }, { "teal": 577, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 647 + 661 ] }, { "teal": 578, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 648 + 662 ] }, { "teal": 579, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 649 + 663 ] }, { "teal": 582, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "errorMessage": "argument 1 (a) for uint8plus must be a uint8", "pc": [ - 650 + 664 ] }, { "teal": 583, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 651 + 665 ] }, { "teal": 586, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 652, - 653, - 654 + 666, + 667, + 668 ] }, { "teal": 587, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 655 + 669 ] }, { "teal": 588, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 656 + 670 ] }, { "teal": 589, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 657 + 671 ] }, { "teal": 590, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 658 + 672, + 673 ] }, { "teal": 591, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 659 + 674 ] }, { "teal": 594, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "errorMessage": "uint8plus return value overflowed 8 bits", "pc": [ - 660 + 675 ] }, { "teal": 595, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 661, - 662, - 663 + 676, + 677, + 678 ] }, { "teal": 596, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 664 + 679 ] }, { "teal": 597, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 665 + 680 ] }, { "teal": 598, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 666 + 681 ] }, { "teal": 599, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 667 + 682 ] }, { "teal": 603, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 668, - 669, - 670 + 683, + 684, + 685 ] }, { "teal": 607, - "source": "tests/contracts/math.algo.ts:58", + "source": "tests/contracts/math.algo.ts:64", "pc": [ - 671, - 672 + 686, + 687 ] }, { "teal": 608, - "source": "tests/contracts/math.algo.ts:58", + "source": "tests/contracts/math.algo.ts:64", "pc": [ - 673, - 674 + 688, + 689 ] }, { "teal": 609, - "source": "tests/contracts/math.algo.ts:58", + "source": "tests/contracts/math.algo.ts:64", "pc": [ - 675 + 690 ] }, { "teal": 610, - "source": "tests/contracts/math.algo.ts:57", + "source": "tests/contracts/math.algo.ts:63", "pc": [ - 676 + 691 ] }, { "teal": 615, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 677 + 692 ] }, { "teal": 618, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 678, - 679, - 680 + 693, + 694, + 695 ] }, { "teal": 619, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 681 + 696 ] }, { "teal": 620, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 682 + 697 ] }, { "teal": 621, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 683 + 698 ] }, { "teal": 622, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 684 + 699 ] }, { "teal": 625, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "errorMessage": "argument 0 (b) for uint8exp must be a uint8", "pc": [ - 685 + 700 ] }, { "teal": 626, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 686 + 701 ] }, { "teal": 629, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 687, - 688, - 689 + 702, + 703, + 704 ] }, { "teal": 630, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 690 + 705 ] }, { "teal": 631, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 691 + 706 ] }, { "teal": 632, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 692 + 707 ] }, { "teal": 633, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 693 + 708 ] }, { "teal": 636, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "errorMessage": "argument 1 (a) for uint8exp must be a uint8", "pc": [ - 694 + 709 ] }, { "teal": 637, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 695 + 710 ] }, { "teal": 640, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 696, - 697, - 698 + 711, + 712, + 713 ] }, { "teal": 641, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 699 + 714 ] }, { "teal": 642, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 700 + 715 ] }, { "teal": 643, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 701 + 716 ] }, { "teal": 644, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 702 + 717, + 718 ] }, { "teal": 645, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 703 + 719 ] }, { "teal": 648, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "errorMessage": "uint8exp return value overflowed 8 bits", "pc": [ - 704 + 720 ] }, { "teal": 649, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 705, - 706, - 707 + 721, + 722, + 723 ] }, { "teal": 650, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 708 + 724 ] }, { "teal": 651, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 709 + 725 ] }, { "teal": 652, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 710 + 726 ] }, { "teal": 653, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 711 + 727 ] }, { "teal": 657, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 712, - 713, - 714 + 728, + 729, + 730 ] }, { "teal": 661, - "source": "tests/contracts/math.algo.ts:62", + "source": "tests/contracts/math.algo.ts:68", "pc": [ - 715, - 716 + 731, + 732 ] }, { "teal": 662, - "source": "tests/contracts/math.algo.ts:62", + "source": "tests/contracts/math.algo.ts:68", "pc": [ - 717, - 718 + 733, + 734 ] }, { "teal": 663, - "source": "tests/contracts/math.algo.ts:62", + "source": "tests/contracts/math.algo.ts:68", "pc": [ - 719 + 735 ] }, { "teal": 664, - "source": "tests/contracts/math.algo.ts:61", + "source": "tests/contracts/math.algo.ts:67", "pc": [ - 720 + 736 ] }, { "teal": 669, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 721 + 737 ] }, { "teal": 672, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 722, - 723, - 724 + 738, + 739, + 740 ] }, { "teal": 673, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 725 + 741 ] }, { "teal": 676, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 726, - 727, - 728 + 742, + 743, + 744 ] }, { "teal": 677, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 729 + 745 ] }, { "teal": 680, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 730, - 731, - 732 + 746, + 747, + 748 ] }, { "teal": 681, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 733 + 749 ] }, { "teal": 682, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 734 + 750 ] }, { "teal": 683, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 735 + 751 ] }, { "teal": 684, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 736 + 752 ] }, { "teal": 685, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 737 + 753 ] }, { "teal": 689, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 738, - 739, - 740 + 754, + 755, + 756 ] }, { "teal": 692, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 741 + 757 ] }, { "teal": 696, - "source": "tests/contracts/math.algo.ts:66", + "source": "tests/contracts/math.algo.ts:72", "pc": [ - 742, - 743 + 758, + 759 ] }, { "teal": 697, - "source": "tests/contracts/math.algo.ts:66", + "source": "tests/contracts/math.algo.ts:72", "pc": [ - 744, - 745 + 760, + 761 ] }, { "teal": 701, - "source": "tests/contracts/math.algo.ts:68", + "source": "tests/contracts/math.algo.ts:74", "pc": [ - 746, - 747 + 762, + 763 ] }, { "teal": 702, - "source": "tests/contracts/math.algo.ts:68", + "source": "tests/contracts/math.algo.ts:74", "pc": [ - 748, - 749 + 764, + 765 ] }, { "teal": 703, - "source": "tests/contracts/math.algo.ts:68", + "source": "tests/contracts/math.algo.ts:74", "pc": [ - 750 + 766 ] }, { "teal": 704, - "source": "tests/contracts/math.algo.ts:68", + "source": "tests/contracts/math.algo.ts:74", "pc": [ - 751, - 752 + 767, + 768 ] }, { "teal": 708, - "source": "tests/contracts/math.algo.ts:70", + "source": "tests/contracts/math.algo.ts:76", "pc": [ - 753, - 754 + 769, + 770 ] }, { "teal": 711, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 755, - 756 + 771, + 772 ] }, { "teal": 712, - "source": "tests/contracts/math.algo.ts:65", + "source": "tests/contracts/math.algo.ts:71", "pc": [ - 757 + 773 ] }, { "teal": 717, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 758 + 774 ] }, { "teal": 720, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 759, - 760, - 761 + 775, + 776, + 777 ] }, { "teal": 721, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 762 + 778 ] }, { "teal": 724, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 763, - 764, - 765 + 779, + 780, + 781 ] }, { "teal": 725, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 766 + 782 ] }, { "teal": 728, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 767, - 768, - 769 + 783, + 784, + 785 ] }, { "teal": 729, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 770 + 786 ] }, { "teal": 730, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 771 + 787 ] }, { "teal": 731, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 772 + 788 ] }, { "teal": 732, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 773 + 789 ] }, { "teal": 733, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 774 + 790 ] }, { "teal": 737, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 775, - 776, - 777 + 791, + 792, + 793 ] }, { "teal": 741, - "source": "tests/contracts/math.algo.ts:74", + "source": "tests/contracts/math.algo.ts:80", "pc": [ - 778, - 779 + 794, + 795 ] }, { "teal": 742, - "source": "tests/contracts/math.algo.ts:74", + "source": "tests/contracts/math.algo.ts:80", "pc": [ - 780, - 781 + 796, + 797 ] }, { "teal": 743, - "source": "tests/contracts/math.algo.ts:74", + "source": "tests/contracts/math.algo.ts:80", "pc": [ - 782 + 798 ] }, { "teal": 747, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 783, - 784 + 799, + 800 ] }, { "teal": 748, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 785 + 801 ] }, { "teal": 749, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 786, - 787 + 802, + 803 ] }, { "teal": 750, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 788 + 804 ] }, { "teal": 751, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 789, - 790 + 805, + 806 ] }, { "teal": 752, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 791 + 807 ] }, { "teal": 753, - "source": "tests/contracts/math.algo.ts:76", + "source": "tests/contracts/math.algo.ts:82", "pc": [ - 792 + 808 ] }, { "teal": 757, - "source": "tests/contracts/math.algo.ts:78", + "source": "tests/contracts/math.algo.ts:84", "pc": [ - 793, - 794 + 809, + 810 ] }, { "teal": 758, - "source": "tests/contracts/math.algo.ts:78", + "source": "tests/contracts/math.algo.ts:84", "pc": [ - 795 + 811 ] }, { "teal": 759, - "source": "tests/contracts/math.algo.ts:73", + "source": "tests/contracts/math.algo.ts:79", "pc": [ - 796 + 812 ] }, { "teal": 764, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 797 + 813 ] }, { "teal": 767, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 798, - 799, - 800 + 814, + 815, + 816 ] }, { "teal": 768, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 801 + 817 ] }, { "teal": 769, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 802 + 818 ] }, { "teal": 770, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 803 + 819 ] }, { "teal": 771, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 804 + 820 ] }, { "teal": 774, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "errorMessage": "boxTest return value overflowed 256 bits", "pc": [ - 805 + 821 ] }, { "teal": 775, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 806 + 822 ] }, { "teal": 776, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 807 + 823 ] }, { "teal": 777, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 808 + 824 ] }, { "teal": 778, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 809 + 825 ] }, { "teal": 779, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 810 + 826 ] }, { "teal": 780, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 811 + 827 ] }, { "teal": 781, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 812 + 828 ] }, { "teal": 782, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 813 + 829 ] }, { "teal": 783, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 814 + 830 ] }, { "teal": 784, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 815 + 831 ] }, { "teal": 785, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 816 + 832 ] }, { "teal": 786, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 817 + 833 ] }, { "teal": 787, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 818 + 834 ] }, { "teal": 791, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 819, - 820, - 821 + 835, + 836, + 837 ] }, { "teal": 795, - "source": "tests/contracts/math.algo.ts:84", + "source": "tests/contracts/math.algo.ts:90", "pc": [ - 822 + 838 ] }, { "teal": 796, - "source": "tests/contracts/math.algo.ts:84", + "source": "tests/contracts/math.algo.ts:90", "pc": [ - 823, - 824 + 839, + 840 ] }, { "teal": 797, - "source": "tests/contracts/math.algo.ts:84", + "source": "tests/contracts/math.algo.ts:90", "pc": [ - 825 + 841 ] }, { "teal": 801, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 826 + 842 ] }, { "teal": 802, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 827 + 843 ] }, { "teal": 805, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "errorMessage": "box value does not exist: this.boxKey.value", "pc": [ - 828 + 844 ] }, { "teal": 806, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 829, - 830 + 845, + 846 ] }, { "teal": 807, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 831 + 847 ] }, { "teal": 808, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 832 + 848 ] }, { "teal": 809, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 833 + 849 ] }, { "teal": 810, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 834 + 850 ] }, { "teal": 811, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 835 + 851 ] }, { "teal": 812, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 836 + 852 ] }, { "teal": 815, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "errorMessage": "this.boxKey.value overflowed 256 bits", "pc": [ - 837 + 853 ] }, { "teal": 816, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 838 + 854 ] }, { "teal": 817, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 839 + 855 ] }, { "teal": 818, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 840 + 856 ] }, { "teal": 819, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 841 + 857 ] }, { "teal": 820, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 842 + 858 ] }, { "teal": 821, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 843 + 859 ] }, { "teal": 822, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 844 + 860 ] }, { "teal": 823, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 845 + 861 ] }, { "teal": 824, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 846 + 862 ] }, { "teal": 825, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 847 + 863 ] }, { "teal": 826, - "source": "tests/contracts/math.algo.ts:85", + "source": "tests/contracts/math.algo.ts:91", "pc": [ - 848 + 864 ] }, { "teal": 830, - "source": "tests/contracts/math.algo.ts:87", + "source": "tests/contracts/math.algo.ts:93", "pc": [ - 849 + 865 ] }, { "teal": 831, - "source": "tests/contracts/math.algo.ts:87", + "source": "tests/contracts/math.algo.ts:93", "pc": [ - 850 + 866 ] }, { "teal": 834, - "source": "tests/contracts/math.algo.ts:87", + "source": "tests/contracts/math.algo.ts:93", "errorMessage": "box value does not exist: this.boxKey.value", "pc": [ - 851 + 867 ] }, { "teal": 835, - "source": "tests/contracts/math.algo.ts:83", + "source": "tests/contracts/math.algo.ts:89", "pc": [ - 852 + 868 ] }, { "teal": 839, - "source": "tests/contracts/math.algo.ts:90", + "source": "tests/contracts/math.algo.ts:96", "pc": [ - 853, - 854, - 855 + 869, + 870, + 871 ] }, { "teal": 843, - "source": "tests/contracts/math.algo.ts:91", + "source": "tests/contracts/math.algo.ts:97", "pc": [ - 856, - 857 + 872, + 873 ] }, { "teal": 844, - "source": "tests/contracts/math.algo.ts:90", + "source": "tests/contracts/math.algo.ts:96", "pc": [ - 858 + 874 ] }, { "teal": 849, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 859 + 875 ] }, { "teal": 852, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 860, - 861, - 862 + 876, + 877, + 878 ] }, { "teal": 853, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 863 + 879 ] }, { "teal": 854, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 864 + 880 ] }, { "teal": 855, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 865 + 881 ] }, { "teal": 856, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 866 + 882 ] }, { "teal": 859, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "errorMessage": "argument 0 (b) for unsafeMethodArgs must be a uint256", "pc": [ - 867 + 883 ] }, { "teal": 862, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 868, - 869, - 870 + 884, + 885, + 886 ] }, { "teal": 863, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 871 + 887 ] }, { "teal": 864, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 872 + 888 ] }, { "teal": 865, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 873 + 889 ] }, { "teal": 866, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 874 + 890 ] }, { "teal": 869, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "errorMessage": "argument 1 (a) for unsafeMethodArgs must be a uint256", "pc": [ - 875 + 891 ] }, { "teal": 872, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 876, - 877, - 878 + 892, + 893, + 894 ] }, { "teal": 873, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 879 + 895 ] }, { "teal": 874, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 880 + 896 ] }, { "teal": 875, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 881 + 897 ] }, { "teal": 876, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 882 + 898 ] }, { "teal": 879, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "errorMessage": "unsafeMethodArgs return value overflowed 256 bits", "pc": [ - 883 + 899 ] }, { "teal": 880, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 884 + 900 ] }, { "teal": 881, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 885 + 901 ] }, { "teal": 882, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 886 + 902 ] }, { "teal": 883, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 887 + 903 ] }, { "teal": 884, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 888 + 904 ] }, { "teal": 885, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 889 + 905 ] }, { "teal": 886, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 890 + 906 ] }, { "teal": 887, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 891 + 907 ] }, { "teal": 888, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 892 + 908 ] }, { "teal": 889, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 893 + 909 ] }, { "teal": 890, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 894 + 910 ] }, { "teal": 891, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 895 + 911 ] }, { "teal": 892, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 896 + 912 ] }, { "teal": 896, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 897, - 898, - 899 + 913, + 914, + 915 ] }, { "teal": 899, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 900 + 916 ] }, { "teal": 903, - "source": "tests/contracts/math.algo.ts:95", + "source": "tests/contracts/math.algo.ts:101", "pc": [ - 901, - 902 + 917, + 918 ] }, { "teal": 904, - "source": "tests/contracts/math.algo.ts:95", + "source": "tests/contracts/math.algo.ts:101", "pc": [ - 903, - 904 + 919, + 920 ] }, { "teal": 905, - "source": "tests/contracts/math.algo.ts:95", + "source": "tests/contracts/math.algo.ts:101", "pc": [ - 905 + 921 ] }, { "teal": 906, - "source": "tests/contracts/math.algo.ts:95", + "source": "tests/contracts/math.algo.ts:101", "pc": [ - 906, - 907 + 922, + 923 ] }, { "teal": 910, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 908, - 909 + 924, + 925 ] }, { "teal": 911, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 910 + 926 ] }, { "teal": 912, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 911 + 927 ] }, { "teal": 913, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 912 + 928 ] }, { "teal": 914, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 913 + 929 ] }, { "teal": 917, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "errorMessage": "c overflowed 256 bits", "pc": [ - 914 + 930 ] }, { "teal": 918, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 915 + 931 ] }, { "teal": 919, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 916 + 932 ] }, { "teal": 920, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 917 + 933 ] }, { "teal": 921, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 918 + 934 ] }, { "teal": 922, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 919 + 935 ] }, { "teal": 923, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 920 + 936 ] }, { "teal": 924, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 921 + 937 ] }, { "teal": 925, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 922 + 938 ] }, { "teal": 926, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 923 + 939 ] }, { "teal": 927, - "source": "tests/contracts/math.algo.ts:97", + "source": "tests/contracts/math.algo.ts:103", "pc": [ - 924, - 925, - 926 + 940, + 941, + 942 ] }, { "teal": 930, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 927, - 928 + 943, + 944 ] }, { "teal": 931, - "source": "tests/contracts/math.algo.ts:94", + "source": "tests/contracts/math.algo.ts:100", "pc": [ - 929 + 945 ] }, { "teal": 936, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 930, - 931, - 932 + 946, + 947, + 948 ] }, { "teal": 937, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 933 + 949 ] }, { "teal": 938, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 934 + 950 ] }, { "teal": 939, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 935 + 951 ] }, { "teal": 940, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 936 + 952 ] }, { "teal": 943, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "errorMessage": "argument 0 (b) for uint256ComparisonType must be a uint256", "pc": [ - 937 + 953 ] }, { "teal": 946, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 938, - 939, - 940 + 954, + 955, + 956 ] }, { "teal": 947, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 941 + 957 ] }, { "teal": 948, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 942 + 958 ] }, { "teal": 949, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 943 + 959 ] }, { "teal": 950, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 944 + 960 ] }, { "teal": 953, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "errorMessage": "argument 1 (a) for uint256ComparisonType must be a uint256", "pc": [ - 945 + 961 ] }, { "teal": 956, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 946, - 947, - 948 + 962, + 963, + 964 ] }, { "teal": 957, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 949 + 965 ] }, { "teal": 958, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 950 + 966 ] }, { "teal": 962, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 951, - 952, - 953 + 967, + 968, + 969 ] }, { "teal": 965, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 954 + 970 ] }, { "teal": 969, - "source": "tests/contracts/math.algo.ts:101", + "source": "tests/contracts/math.algo.ts:107", "pc": [ - 955, - 956 + 971, + 972 ] }, { "teal": 970, - "source": "tests/contracts/math.algo.ts:101", + "source": "tests/contracts/math.algo.ts:107", "pc": [ - 957, - 958 + 973, + 974 ] }, { "teal": 971, - "source": "tests/contracts/math.algo.ts:101", + "source": "tests/contracts/math.algo.ts:107", "pc": [ - 959 + 975 ] }, { "teal": 972, - "source": "tests/contracts/math.algo.ts:101", + "source": "tests/contracts/math.algo.ts:107", "pc": [ - 960, - 961 + 976, + 977 ] }, { "teal": 977, - "source": "tests/contracts/math.algo.ts:102", + "source": "tests/contracts/math.algo.ts:108", "pc": [ - 962, - 963 + 978, + 979 ] }, { "teal": 978, - "source": "tests/contracts/math.algo.ts:102", + "source": "tests/contracts/math.algo.ts:108", "pc": [ - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, 980, 981, 982, @@ -5288,3733 +5335,3733 @@ 994, 995, 996, - 997 + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1005, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013 ] }, { "teal": 979, - "source": "tests/contracts/math.algo.ts:102", + "source": "tests/contracts/math.algo.ts:108", "pc": [ - 998 + 1014 ] }, { "teal": 980, - "source": "tests/contracts/math.algo.ts:102", + "source": "tests/contracts/math.algo.ts:108", "pc": [ - 999, - 1000, - 1001 + 1015, + 1016, + 1017 ] }, { "teal": 985, - "source": "tests/contracts/math.algo.ts:103", + "source": "tests/contracts/math.algo.ts:109", "pc": [ - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010 + 1018, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026 ] }, { "teal": 986, - "source": "tests/contracts/math.algo.ts:103", + "source": "tests/contracts/math.algo.ts:109", "pc": [ - 1011 + 1027 ] }, { "teal": 987, - "source": "tests/contracts/math.algo.ts:102", + "source": "tests/contracts/math.algo.ts:108", "pc": [ - 1012, - 1013, - 1014 + 1028, + 1029, + 1030 ] }, { "teal": 992, - "source": "tests/contracts/math.algo.ts:105", + "source": "tests/contracts/math.algo.ts:111", "pc": [ - 1015, - 1016, - 1017, - 1018, - 1019, - 1020 + 1031, + 1032, + 1033, + 1034, + 1035, + 1036 ] }, { "teal": 993, - "source": "tests/contracts/math.algo.ts:105", + "source": "tests/contracts/math.algo.ts:111", "pc": [ - 1021 + 1037 ] }, { "teal": 996, - "source": "tests/contracts/math.algo.ts:100", + "source": "tests/contracts/math.algo.ts:106", "pc": [ - 1022 + 1038 ] }, { "teal": 1001, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1023 + 1039 ] }, { "teal": 1004, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1024, - 1025, - 1026 + 1040, + 1041, + 1042 ] }, { "teal": 1005, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1027 + 1043 ] }, { "teal": 1006, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1028 + 1044 ] }, { "teal": 1007, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1029 + 1045 ] }, { "teal": 1008, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1030 + 1046 ] }, { "teal": 1011, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "errorMessage": "argument 0 (b) for squareRoot256 must be a uint256", "pc": [ - 1031 + 1047 ] }, { "teal": 1014, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1032, - 1033, - 1034 + 1048, + 1049, + 1050 ] }, { "teal": 1015, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1035 + 1051 ] }, { "teal": 1016, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1036 + 1052 ] }, { "teal": 1017, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1037 + 1053 ] }, { "teal": 1018, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1038 + 1054 ] }, { "teal": 1021, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "errorMessage": "argument 1 (a) for squareRoot256 must be a uint256", "pc": [ - 1039 + 1055 ] }, { "teal": 1024, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1040, - 1041, - 1042 + 1056, + 1057, + 1058 ] }, { "teal": 1025, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1043 + 1059 ] }, { "teal": 1026, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1044 + 1060 ] }, { "teal": 1027, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1045 + 1061 ] }, { "teal": 1028, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1046 + 1062 ] }, { "teal": 1031, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "errorMessage": "squareRoot256 return value overflowed 256 bits", "pc": [ - 1047 + 1063 ] }, { "teal": 1032, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1048 + 1064 ] }, { "teal": 1033, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1049 + 1065 ] }, { "teal": 1034, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1050 + 1066 ] }, { "teal": 1035, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1051 + 1067 ] }, { "teal": 1036, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1052 + 1068 ] }, { "teal": 1037, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1053 + 1069 ] }, { "teal": 1038, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1054 + 1070 ] }, { "teal": 1039, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1055 + 1071 ] }, { "teal": 1040, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1056 + 1072 ] }, { "teal": 1041, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1057 + 1073 ] }, { "teal": 1042, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1058 + 1074 ] }, { "teal": 1043, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1059 + 1075 ] }, { "teal": 1044, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1060 + 1076 ] }, { "teal": 1048, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1061, - 1062, - 1063 + 1077, + 1078, + 1079 ] }, { "teal": 1052, - "source": "tests/contracts/math.algo.ts:110", + "source": "tests/contracts/math.algo.ts:116", "pc": [ - 1064, - 1065 + 1080, + 1081 ] }, { "teal": 1053, - "source": "tests/contracts/math.algo.ts:110", + "source": "tests/contracts/math.algo.ts:116", "pc": [ - 1066, - 1067 + 1082, + 1083 ] }, { "teal": 1054, - "source": "tests/contracts/math.algo.ts:110", + "source": "tests/contracts/math.algo.ts:116", "pc": [ - 1068 + 1084 ] }, { "teal": 1055, - "source": "tests/contracts/math.algo.ts:110", + "source": "tests/contracts/math.algo.ts:116", "pc": [ - 1069 + 1085 ] }, { "teal": 1056, - "source": "tests/contracts/math.algo.ts:109", + "source": "tests/contracts/math.algo.ts:115", "pc": [ - 1070 + 1086 ] }, { "teal": 1061, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1071 + 1087 ] }, { "teal": 1064, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1072, - 1073, - 1074 + 1088, + 1089, + 1090 ] }, { "teal": 1065, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1075 + 1091 ] }, { "teal": 1068, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1076, - 1077, - 1078 + 1092, + 1093, + 1094 ] }, { "teal": 1069, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1079 + 1095 ] }, { "teal": 1072, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1080, - 1081, - 1082 + 1096, + 1097, + 1098 ] }, { "teal": 1073, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1083 + 1099 ] }, { "teal": 1074, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1084 + 1100 ] }, { "teal": 1075, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1085 + 1101 ] }, { "teal": 1076, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1086 + 1102 ] }, { "teal": 1077, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1087 + 1103 ] }, { "teal": 1081, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1088, - 1089, - 1090 + 1104, + 1105, + 1106 ] }, { "teal": 1085, - "source": "tests/contracts/math.algo.ts:114", + "source": "tests/contracts/math.algo.ts:120", "pc": [ - 1091, - 1092 + 1107, + 1108 ] }, { "teal": 1086, - "source": "tests/contracts/math.algo.ts:114", + "source": "tests/contracts/math.algo.ts:120", "pc": [ - 1093, - 1094 + 1109, + 1110 ] }, { "teal": 1087, - "source": "tests/contracts/math.algo.ts:114", + "source": "tests/contracts/math.algo.ts:120", "pc": [ - 1095 + 1111 ] }, { "teal": 1088, - "source": "tests/contracts/math.algo.ts:114", + "source": "tests/contracts/math.algo.ts:120", "pc": [ - 1096 + 1112 ] }, { "teal": 1089, - "source": "tests/contracts/math.algo.ts:113", + "source": "tests/contracts/math.algo.ts:119", "pc": [ - 1097 + 1113 ] }, { "teal": 1094, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1098 + 1114 ] }, { "teal": 1097, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1099, - 1100, - 1101 + 1115, + 1116, + 1117 ] }, { "teal": 1098, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1102 + 1118 ] }, { "teal": 1099, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1103 + 1119 ] }, { "teal": 1100, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1104 + 1120 ] }, { "teal": 1101, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1105 + 1121 ] }, { "teal": 1104, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "errorMessage": "argument 0 (addr) for addressToBigInt must be a address", "pc": [ - 1106 + 1122 ] }, { "teal": 1107, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1107, - 1108, - 1109 + 1123, + 1124, + 1125 ] }, { "teal": 1108, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1110, - 1111, - 1112 + 1126, + 1127, + 1128 ] }, { "teal": 1109, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1113, - 1114 + 1129, + 1130 ] }, { "teal": 1110, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1115, - 1116 + 1131, + 1132 ] }, { "teal": 1111, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1117 + 1133 ] }, { "teal": 1112, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1118 + 1134 ] }, { "teal": 1113, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1119 + 1135 ] }, { "teal": 1114, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1120 + 1136 ] }, { "teal": 1115, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1121 + 1137 ] }, { "teal": 1119, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1122, - 1123, - 1124 + 1138, + 1139, + 1140 ] }, { "teal": 1123, - "source": "tests/contracts/math.algo.ts:118", + "source": "tests/contracts/math.algo.ts:124", "pc": [ - 1125, - 1126 + 1141, + 1142 ] }, { "teal": 1124, - "source": "tests/contracts/math.algo.ts:118", + "source": "tests/contracts/math.algo.ts:124", "pc": [ - 1127, - 1128 + 1143, + 1144 ] }, { "teal": 1125, - "source": "tests/contracts/math.algo.ts:118", + "source": "tests/contracts/math.algo.ts:124", "pc": [ - 1129 + 1145 ] }, { "teal": 1126, - "source": "tests/contracts/math.algo.ts:117", + "source": "tests/contracts/math.algo.ts:123", "pc": [ - 1130 + 1146 ] }, { "teal": 1131, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1131 + 1147 ] }, { "teal": 1134, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1132, - 1133, - 1134 + 1148, + 1149, + 1150 ] }, { "teal": 1135, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1135 + 1151 ] }, { "teal": 1136, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1136 + 1152 ] }, { "teal": 1137, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1137 + 1153 ] }, { "teal": 1138, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1138 + 1154 ] }, { "teal": 1139, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1139 + 1155 ] }, { "teal": 1143, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1140, - 1141, - 1142 + 1156, + 1157, + 1158 ] }, { "teal": 1146, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1143 + 1159 ] }, { "teal": 1150, - "source": "tests/contracts/math.algo.ts:122", + "source": "tests/contracts/math.algo.ts:128", "pc": [ - 1144, - 1145 + 1160, + 1161 ] }, { "teal": 1151, - "source": "tests/contracts/math.algo.ts:122", + "source": "tests/contracts/math.algo.ts:128", "pc": [ - 1146, - 1147 + 1162, + 1163 ] }, { "teal": 1155, - "source": "tests/contracts/math.algo.ts:123", + "source": "tests/contracts/math.algo.ts:129", "pc": [ - 1148, - 1149 + 1164, + 1165 ] }, { "teal": 1158, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1150, - 1151 + 1166, + 1167 ] }, { "teal": 1159, - "source": "tests/contracts/math.algo.ts:121", + "source": "tests/contracts/math.algo.ts:127", "pc": [ - 1152 + 1168 ] }, { "teal": 1163, - "source": "tests/contracts/math.algo.ts:126", + "source": "tests/contracts/math.algo.ts:132", "pc": [ - 1153, - 1154, - 1155 + 1169, + 1170, + 1171 ] }, { "teal": 1167, - "source": "tests/contracts/math.algo.ts:127", + "source": "tests/contracts/math.algo.ts:133", "pc": [ - 1156, - 1157 + 1172, + 1173 ] }, { "teal": 1168, - "source": "tests/contracts/math.algo.ts:127", + "source": "tests/contracts/math.algo.ts:133", "pc": [ - 1158, - 1159 + 1174, + 1175 ] }, { "teal": 1169, - "source": "tests/contracts/math.algo.ts:127", + "source": "tests/contracts/math.algo.ts:133", "pc": [ - 1160 + 1176 ] }, { "teal": 1170, - "source": "tests/contracts/math.algo.ts:127", + "source": "tests/contracts/math.algo.ts:133", "pc": [ - 1161 + 1177 ] }, { "teal": 1171, - "source": "tests/contracts/math.algo.ts:126", + "source": "tests/contracts/math.algo.ts:132", "pc": [ - 1162 + 1178 ] }, { "teal": 1176, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1163, - 1164, - 1165 + 1179, + 1180, + 1181 ] }, { "teal": 1177, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1166 + 1182 ] }, { "teal": 1178, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1167 + 1183 ] }, { "teal": 1179, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1168 + 1184 ] }, { "teal": 1180, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1169 + 1185 ] }, { "teal": 1183, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "errorMessage": "argument 0 (x) for funcName must be a uint256", "pc": [ - 1170 + 1186 ] }, { "teal": 1186, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1171, - 1172, - 1173 + 1187, + 1188, + 1189 ] }, { "teal": 1187, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1174 + 1190 ] }, { "teal": 1188, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1175 + 1191 ] }, { "teal": 1192, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1176, - 1177, - 1178 + 1192, + 1193, + 1194 ] }, { "teal": 1196, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1179, - 1180, - 1181 + 1195, + 1196, + 1197 ] }, { "teal": 1197, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1182, - 1183 + 1198, + 1199 ] }, { "teal": 1198, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1184 + 1200 ] }, { "teal": 1199, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1185 + 1201 ] }, { "teal": 1200, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1186 + 1202, + 1203 ] }, { "teal": 1201, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1187 + 1204 ] }, { "teal": 1204, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "errorMessage": "x overflowed 8 bits", "pc": [ - 1188 + 1205 ] }, { "teal": 1205, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1189, - 1190, - 1191 + 1206, + 1207, + 1208 ] }, { "teal": 1206, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1192 + 1209 ] }, { "teal": 1207, - "source": "tests/contracts/math.algo.ts:131", + "source": "tests/contracts/math.algo.ts:137", "pc": [ - 1193, - 1194, - 1195 + 1210, + 1211, + 1212 ] }, { "teal": 1208, - "source": "tests/contracts/math.algo.ts:130", + "source": "tests/contracts/math.algo.ts:136", "pc": [ - 1196 + 1213 ] }, { "teal": 1213, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1197 + 1214 ] }, { "teal": 1216, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1198, - 1199, - 1200 + 1215, + 1216, + 1217 ] }, { "teal": 1217, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1201 + 1218 ] }, { "teal": 1220, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1202, - 1203, - 1204 + 1219, + 1220, + 1221 ] }, { "teal": 1221, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1205 + 1222 ] }, { "teal": 1224, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1206, - 1207, - 1208 + 1223, + 1224, + 1225 ] }, { "teal": 1225, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1209 + 1226 ] }, { "teal": 1226, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1210 + 1227 ] }, { "teal": 1227, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1211 + 1228 ] }, { "teal": 1228, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1212 + 1229 ] }, { "teal": 1229, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1213 + 1230 ] }, { "teal": 1233, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1214, - 1215, - 1216 + 1231, + 1232, + 1233 ] }, { "teal": 1236, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1217 + 1234 ] }, { "teal": 1237, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1218 + 1235 ] }, { "teal": 1241, - "source": "tests/contracts/math.algo.ts:135", + "source": "tests/contracts/math.algo.ts:141", "pc": [ - 1219, - 1220 + 1236, + 1237 ] }, { "teal": 1242, - "source": "tests/contracts/math.algo.ts:135", + "source": "tests/contracts/math.algo.ts:141", "pc": [ - 1221 + 1238 ] }, { "teal": 1243, - "source": "tests/contracts/math.algo.ts:135", + "source": "tests/contracts/math.algo.ts:141", "pc": [ - 1222, - 1223 + 1239, + 1240 ] }, { "teal": 1247, - "source": "tests/contracts/math.algo.ts:136", + "source": "tests/contracts/math.algo.ts:142", "pc": [ - 1224, - 1225 + 1241, + 1242 ] }, { "teal": 1248, - "source": "tests/contracts/math.algo.ts:136", + "source": "tests/contracts/math.algo.ts:142", "pc": [ - 1226 + 1243 ] }, { "teal": 1249, - "source": "tests/contracts/math.algo.ts:136", + "source": "tests/contracts/math.algo.ts:142", "pc": [ - 1227, - 1228 + 1244, + 1245 ] }, { "teal": 1253, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1229, - 1230 + 1246, + 1247 ] }, { "teal": 1254, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1231, - 1232 + 1248, + 1249 ] }, { "teal": 1255, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1233 + 1250 ] }, { "teal": 1256, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1234 + 1251 ] }, { "teal": 1257, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1235 + 1252 ] }, { "teal": 1258, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1236, - 1237 + 1253, + 1254 ] }, { "teal": 1259, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1238 + 1255 ] }, { "teal": 1262, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "errorMessage": "(btobigint(x) + btobigint(y)) as uint64 overflowed 64 bits", "pc": [ - 1239 + 1256 ] }, { "teal": 1263, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1240, - 1241 + 1257, + 1258 ] }, { "teal": 1264, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1242 + 1259 ] }, { "teal": 1265, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1243 + 1260 ] }, { "teal": 1266, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1244 + 1261 ] }, { "teal": 1267, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1245 + 1262 ] }, { "teal": 1268, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1246 + 1263, + 1264 ] }, { "teal": 1269, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1247 + 1265 ] }, { "teal": 1270, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1248 + 1266 ] }, { "teal": 1271, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1249 + 1267 ] }, { "teal": 1272, - "source": "tests/contracts/math.algo.ts:137", + "source": "tests/contracts/math.algo.ts:143", "pc": [ - 1250 + 1268 ] }, { "teal": 1275, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1251, - 1252 + 1269, + 1270 ] }, { "teal": 1278, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1253, - 1254 + 1271, + 1272 ] }, { "teal": 1279, - "source": "tests/contracts/math.algo.ts:134", + "source": "tests/contracts/math.algo.ts:140", "pc": [ - 1255 + 1273 ] }, { "teal": 1284, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1256 + 1274 ] }, { "teal": 1287, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1257, - 1258, - 1259 + 1275, + 1276, + 1277 ] }, { "teal": 1288, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1260 + 1278 ] }, { "teal": 1291, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1261, - 1262, - 1263 + 1279, + 1280, + 1281 ] }, { "teal": 1292, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1264 + 1282 ] }, { "teal": 1295, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1265, - 1266, - 1267 + 1283, + 1284, + 1285 ] }, { "teal": 1296, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1268 + 1286 ] }, { "teal": 1297, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1269 + 1287 ] }, { "teal": 1298, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1270 + 1288 ] }, { "teal": 1299, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1271 + 1289 ] }, { "teal": 1300, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1272 + 1290 ] }, { "teal": 1304, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1273, - 1274, - 1275 + 1291, + 1292, + 1293 ] }, { "teal": 1308, - "source": "tests/contracts/math.algo.ts:141", + "source": "tests/contracts/math.algo.ts:147", "pc": [ - 1276, - 1277 + 1294, + 1295 ] }, { "teal": 1309, - "source": "tests/contracts/math.algo.ts:141", + "source": "tests/contracts/math.algo.ts:147", "pc": [ - 1278, - 1279 + 1296, + 1297 ] }, { "teal": 1310, - "source": "tests/contracts/math.algo.ts:141", + "source": "tests/contracts/math.algo.ts:147", "pc": [ - 1280 + 1298 ] }, { "teal": 1311, - "source": "tests/contracts/math.algo.ts:140", + "source": "tests/contracts/math.algo.ts:146", "pc": [ - 1281 + 1299 ] }, { "teal": 1316, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1282 + 1300 ] }, { "teal": 1319, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1283, - 1284, - 1285 + 1301, + 1302, + 1303 ] }, { "teal": 1320, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1286 + 1304 ] }, { "teal": 1323, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1287, - 1288, - 1289 + 1305, + 1306, + 1307 ] }, { "teal": 1324, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1290 + 1308 ] }, { "teal": 1327, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1291, - 1292, - 1293 + 1309, + 1310, + 1311 ] }, { "teal": 1328, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1294 + 1312 ] }, { "teal": 1329, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1295 + 1313 ] }, { "teal": 1330, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1296 + 1314 ] }, { "teal": 1331, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1297 + 1315 ] }, { "teal": 1332, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1298 + 1316 ] }, { "teal": 1336, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1299, - 1300, - 1301 + 1317, + 1318, + 1319 ] }, { "teal": 1340, - "source": "tests/contracts/math.algo.ts:145", + "source": "tests/contracts/math.algo.ts:151", "pc": [ - 1302, - 1303 + 1320, + 1321 ] }, { "teal": 1341, - "source": "tests/contracts/math.algo.ts:145", + "source": "tests/contracts/math.algo.ts:151", "pc": [ - 1304, - 1305 + 1322, + 1323 ] }, { "teal": 1342, - "source": "tests/contracts/math.algo.ts:145", + "source": "tests/contracts/math.algo.ts:151", "pc": [ - 1306 + 1324 ] }, { "teal": 1343, - "source": "tests/contracts/math.algo.ts:144", + "source": "tests/contracts/math.algo.ts:150", "pc": [ - 1307 + 1325 ] }, { "teal": 1348, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1308 + 1326 ] }, { "teal": 1351, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1309, - 1310, - 1311 + 1327, + 1328, + 1329 ] }, { "teal": 1352, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1312 + 1330 ] }, { "teal": 1355, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1313, - 1314, - 1315 + 1331, + 1332, + 1333 ] }, { "teal": 1356, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1316 + 1334 ] }, { "teal": 1359, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1317, - 1318, - 1319 + 1335, + 1336, + 1337 ] }, { "teal": 1360, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1320 + 1338 ] }, { "teal": 1361, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1321 + 1339 ] }, { "teal": 1362, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1322 + 1340 ] }, { "teal": 1363, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1323 + 1341 ] }, { "teal": 1364, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1324 + 1342 ] }, { "teal": 1368, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1325, - 1326, - 1327 + 1343, + 1344, + 1345 ] }, { "teal": 1372, - "source": "tests/contracts/math.algo.ts:149", + "source": "tests/contracts/math.algo.ts:155", "pc": [ - 1328, - 1329 + 1346, + 1347 ] }, { "teal": 1373, - "source": "tests/contracts/math.algo.ts:149", + "source": "tests/contracts/math.algo.ts:155", "pc": [ - 1330, - 1331 + 1348, + 1349 ] }, { "teal": 1374, - "source": "tests/contracts/math.algo.ts:149", + "source": "tests/contracts/math.algo.ts:155", "pc": [ - 1332 + 1350 ] }, { "teal": 1375, - "source": "tests/contracts/math.algo.ts:148", + "source": "tests/contracts/math.algo.ts:154", "pc": [ - 1333 + 1351 ] }, { "teal": 1380, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1334 + 1352 ] }, { "teal": 1383, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1335, - 1336, - 1337 + 1353, + 1354, + 1355 ] }, { "teal": 1384, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1338 + 1356 ] }, { "teal": 1385, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1339 + 1357 ] }, { "teal": 1386, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1340 + 1358 ] }, { "teal": 1387, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1341 + 1359 ] }, { "teal": 1390, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "errorMessage": "argument 0 (b) for bitwiseOrU256 must be a uint256", "pc": [ - 1342 + 1360 ] }, { "teal": 1393, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1343, - 1344, - 1345 + 1361, + 1362, + 1363 ] }, { "teal": 1394, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1346 + 1364 ] }, { "teal": 1395, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1347 + 1365 ] }, { "teal": 1396, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1348 + 1366 ] }, { "teal": 1397, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1349 + 1367 ] }, { "teal": 1400, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "errorMessage": "argument 1 (a) for bitwiseOrU256 must be a uint256", "pc": [ - 1350 + 1368 ] }, { "teal": 1403, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1351, - 1352, - 1353 + 1369, + 1370, + 1371 ] }, { "teal": 1404, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1354 + 1372 ] }, { "teal": 1405, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1355 + 1373 ] }, { "teal": 1406, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1356 + 1374 ] }, { "teal": 1407, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1357 + 1375 ] }, { "teal": 1410, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "errorMessage": "bitwiseOrU256 return value overflowed 256 bits", "pc": [ - 1358 + 1376 ] }, { "teal": 1411, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1359 + 1377 ] }, { "teal": 1412, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1360 + 1378 ] }, { "teal": 1413, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1361 + 1379 ] }, { "teal": 1414, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1362 + 1380 ] }, { "teal": 1415, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1363 + 1381 ] }, { "teal": 1416, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1364 + 1382 ] }, { "teal": 1417, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1365 + 1383 ] }, { "teal": 1418, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1366 + 1384 ] }, { "teal": 1419, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1367 + 1385 ] }, { "teal": 1420, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1368 + 1386 ] }, { "teal": 1421, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1369 + 1387 ] }, { "teal": 1422, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1370 + 1388 ] }, { "teal": 1423, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1371 + 1389 ] }, { "teal": 1427, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1372, - 1373, - 1374 + 1390, + 1391, + 1392 ] }, { "teal": 1431, - "source": "tests/contracts/math.algo.ts:153", + "source": "tests/contracts/math.algo.ts:159", "pc": [ - 1375, - 1376 + 1393, + 1394 ] }, { "teal": 1432, - "source": "tests/contracts/math.algo.ts:153", + "source": "tests/contracts/math.algo.ts:159", "pc": [ - 1377, - 1378 + 1395, + 1396 ] }, { "teal": 1433, - "source": "tests/contracts/math.algo.ts:153", + "source": "tests/contracts/math.algo.ts:159", "pc": [ - 1379 + 1397 ] }, { "teal": 1434, - "source": "tests/contracts/math.algo.ts:152", + "source": "tests/contracts/math.algo.ts:158", "pc": [ - 1380 + 1398 ] }, { "teal": 1439, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1381 + 1399 ] }, { "teal": 1442, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1382, - 1383, - 1384 + 1400, + 1401, + 1402 ] }, { "teal": 1443, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1385 + 1403 ] }, { "teal": 1444, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1386 + 1404 ] }, { "teal": 1445, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1387 + 1405 ] }, { "teal": 1446, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1388 + 1406 ] }, { "teal": 1449, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "errorMessage": "argument 0 (b) for bitwiseAndU256 must be a uint256", "pc": [ - 1389 + 1407 ] }, { "teal": 1452, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1390, - 1391, - 1392 + 1408, + 1409, + 1410 ] }, { "teal": 1453, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1393 + 1411 ] }, { "teal": 1454, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1394 + 1412 ] }, { "teal": 1455, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1395 + 1413 ] }, { "teal": 1456, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1396 + 1414 ] }, { "teal": 1459, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "errorMessage": "argument 1 (a) for bitwiseAndU256 must be a uint256", "pc": [ - 1397 + 1415 ] }, { "teal": 1462, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1398, - 1399, - 1400 + 1416, + 1417, + 1418 ] }, { "teal": 1463, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1401 + 1419 ] }, { "teal": 1464, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1402 + 1420 ] }, { "teal": 1465, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1403 + 1421 ] }, { "teal": 1466, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1404 + 1422 ] }, { "teal": 1469, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "errorMessage": "bitwiseAndU256 return value overflowed 256 bits", "pc": [ - 1405 + 1423 ] }, { "teal": 1470, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1406 + 1424 ] }, { "teal": 1471, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1407 + 1425 ] }, { "teal": 1472, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1408 + 1426 ] }, { "teal": 1473, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1409 + 1427 ] }, { "teal": 1474, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1410 + 1428 ] }, { "teal": 1475, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1411 + 1429 ] }, { "teal": 1476, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1412 + 1430 ] }, { "teal": 1477, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1413 + 1431 ] }, { "teal": 1478, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1414 + 1432 ] }, { "teal": 1479, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1415 + 1433 ] }, { "teal": 1480, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1416 + 1434 ] }, { "teal": 1481, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1417 + 1435 ] }, { "teal": 1482, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1418 + 1436 ] }, { "teal": 1486, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1419, - 1420, - 1421 + 1437, + 1438, + 1439 ] }, { "teal": 1490, - "source": "tests/contracts/math.algo.ts:157", + "source": "tests/contracts/math.algo.ts:163", "pc": [ - 1422, - 1423 + 1440, + 1441 ] }, { "teal": 1491, - "source": "tests/contracts/math.algo.ts:157", + "source": "tests/contracts/math.algo.ts:163", "pc": [ - 1424, - 1425 + 1442, + 1443 ] }, { "teal": 1492, - "source": "tests/contracts/math.algo.ts:157", + "source": "tests/contracts/math.algo.ts:163", "pc": [ - 1426 + 1444 ] }, { "teal": 1493, - "source": "tests/contracts/math.algo.ts:156", + "source": "tests/contracts/math.algo.ts:162", "pc": [ - 1427 + 1445 ] }, { "teal": 1498, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1428 + 1446 ] }, { "teal": 1501, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1429, - 1430, - 1431 + 1447, + 1448, + 1449 ] }, { "teal": 1502, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1432 + 1450 ] }, { "teal": 1503, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1433 + 1451 ] }, { "teal": 1504, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1434 + 1452 ] }, { "teal": 1505, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1435 + 1453 ] }, { "teal": 1508, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "errorMessage": "argument 0 (b) for bitwiseXorU256 must be a uint256", "pc": [ - 1436 + 1454 ] }, { "teal": 1511, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1437, - 1438, - 1439 + 1455, + 1456, + 1457 ] }, { "teal": 1512, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1440 + 1458 ] }, { "teal": 1513, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1441 + 1459 ] }, { "teal": 1514, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1442 + 1460 ] }, { "teal": 1515, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1443 + 1461 ] }, { "teal": 1518, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "errorMessage": "argument 1 (a) for bitwiseXorU256 must be a uint256", "pc": [ - 1444 + 1462 ] }, { "teal": 1521, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1445, - 1446, - 1447 + 1463, + 1464, + 1465 ] }, { "teal": 1522, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1448 + 1466 ] }, { "teal": 1523, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1449 + 1467 ] }, { "teal": 1524, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1450 + 1468 ] }, { "teal": 1525, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1451 + 1469 ] }, { "teal": 1528, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "errorMessage": "bitwiseXorU256 return value overflowed 256 bits", "pc": [ - 1452 + 1470 ] }, { "teal": 1529, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1453 + 1471 ] }, { "teal": 1530, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1454 + 1472 ] }, { "teal": 1531, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1455 + 1473 ] }, { "teal": 1532, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1456 + 1474 ] }, { "teal": 1533, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1457 + 1475 ] }, { "teal": 1534, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1458 + 1476 ] }, { "teal": 1535, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1459 + 1477 ] }, { "teal": 1536, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1460 + 1478 ] }, { "teal": 1537, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1461 + 1479 ] }, { "teal": 1538, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1462 + 1480 ] }, { "teal": 1539, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1463 + 1481 ] }, { "teal": 1540, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1464 + 1482 ] }, { "teal": 1541, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1465 + 1483 ] }, { "teal": 1545, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1466, - 1467, - 1468 + 1484, + 1485, + 1486 ] }, { "teal": 1549, - "source": "tests/contracts/math.algo.ts:161", + "source": "tests/contracts/math.algo.ts:167", "pc": [ - 1469, - 1470 + 1487, + 1488 ] }, { "teal": 1550, - "source": "tests/contracts/math.algo.ts:161", + "source": "tests/contracts/math.algo.ts:167", "pc": [ - 1471, - 1472 + 1489, + 1490 ] }, { "teal": 1551, - "source": "tests/contracts/math.algo.ts:161", + "source": "tests/contracts/math.algo.ts:167", "pc": [ - 1473 + 1491 ] }, { "teal": 1552, - "source": "tests/contracts/math.algo.ts:160", + "source": "tests/contracts/math.algo.ts:166", "pc": [ - 1474 + 1492 ] }, { "teal": 1557, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1475 + 1493 ] }, { "teal": 1560, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1476, - 1477, - 1478 + 1494, + 1495, + 1496 ] }, { "teal": 1561, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1479 + 1497 ] }, { "teal": 1564, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1480, - 1481, - 1482 + 1498, + 1499, + 1500 ] }, { "teal": 1565, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1483 + 1501 ] }, { "teal": 1566, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1484 + 1502 ] }, { "teal": 1567, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1485 + 1503 ] }, { "teal": 1568, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1486 + 1504 ] }, { "teal": 1569, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1487 + 1505 ] }, { "teal": 1573, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1488, - 1489, - 1490 + 1506, + 1507, + 1508 ] }, { "teal": 1577, - "source": "tests/contracts/math.algo.ts:165", + "source": "tests/contracts/math.algo.ts:171", "pc": [ - 1491, - 1492 + 1509, + 1510 ] }, { "teal": 1578, - "source": "tests/contracts/math.algo.ts:165", + "source": "tests/contracts/math.algo.ts:171", "pc": [ - 1493 + 1511 ] }, { "teal": 1579, - "source": "tests/contracts/math.algo.ts:164", + "source": "tests/contracts/math.algo.ts:170", "pc": [ - 1494 + 1512 ] }, { "teal": 1584, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1495 + 1513 ] }, { "teal": 1587, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1496, - 1497, - 1498 + 1514, + 1515, + 1516 ] }, { "teal": 1588, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1499 + 1517 ] }, { "teal": 1589, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1500 + 1518 ] }, { "teal": 1590, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1501 + 1519 ] }, { "teal": 1591, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1502 + 1520 ] }, { "teal": 1594, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "errorMessage": "argument 0 (a) for bitwiseNotU256 must be a uint256", "pc": [ - 1503 + 1521 ] }, { "teal": 1597, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1504, - 1505, - 1506 + 1522, + 1523, + 1524 ] }, { "teal": 1598, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1507 + 1525 ] }, { "teal": 1599, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1508 + 1526 ] }, { "teal": 1600, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1509 + 1527 ] }, { "teal": 1601, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1510 + 1528 ] }, { "teal": 1604, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "errorMessage": "bitwiseNotU256 return value overflowed 256 bits", "pc": [ - 1511 + 1529 ] }, { "teal": 1605, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1512 + 1530 ] }, { "teal": 1606, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1513 + 1531 ] }, { "teal": 1607, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1514 + 1532 ] }, { "teal": 1608, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1515 + 1533 ] }, { "teal": 1609, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1516 + 1534 ] }, { "teal": 1610, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1517 + 1535 ] }, { "teal": 1611, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1518 + 1536 ] }, { "teal": 1612, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1519 + 1537 ] }, { "teal": 1613, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1520 + 1538 ] }, { "teal": 1614, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1521 + 1539 ] }, { "teal": 1615, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1522 + 1540 ] }, { "teal": 1616, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1523 + 1541 ] }, { "teal": 1617, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1524 + 1542 ] }, { "teal": 1621, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1525, - 1526, - 1527 + 1543, + 1544, + 1545 ] }, { "teal": 1625, - "source": "tests/contracts/math.algo.ts:169", + "source": "tests/contracts/math.algo.ts:175", "pc": [ - 1528, - 1529 + 1546, + 1547 ] }, { "teal": 1626, - "source": "tests/contracts/math.algo.ts:169", + "source": "tests/contracts/math.algo.ts:175", "pc": [ - 1530 + 1548 ] }, { "teal": 1627, - "source": "tests/contracts/math.algo.ts:168", + "source": "tests/contracts/math.algo.ts:174", "pc": [ - 1531 + 1549 ] }, { "teal": 1632, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1532 + 1550 ] }, { "teal": 1635, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1533, - 1534, - 1535 + 1551, + 1552, + 1553 ] }, { "teal": 1636, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1536 + 1554 ] }, { "teal": 1639, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1537, - 1538, - 1539 + 1555, + 1556, + 1557 ] }, { "teal": 1640, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1540 + 1558 ] }, { "teal": 1643, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1541, - 1542, - 1543 + 1559, + 1560, + 1561 ] }, { "teal": 1644, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1544 + 1562 ] }, { "teal": 1645, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1545 + 1563 ] }, { "teal": 1646, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1546 + 1564 ] }, { "teal": 1647, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1547 + 1565 ] }, { "teal": 1648, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1548 + 1566 ] }, { "teal": 1652, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1549, - 1550, - 1551 + 1567, + 1568, + 1569 ] }, { "teal": 1655, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1552 + 1570 ] }, { "teal": 1656, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1553 + 1571 ] }, { "teal": 1660, - "source": "tests/contracts/math.algo.ts:173", + "source": "tests/contracts/math.algo.ts:179", "pc": [ - 1554, - 1555 + 1572, + 1573 ] }, { "teal": 1661, - "source": "tests/contracts/math.algo.ts:173", + "source": "tests/contracts/math.algo.ts:179", "pc": [ - 1556, - 1557 + 1574, + 1575 ] }, { "teal": 1662, - "source": "tests/contracts/math.algo.ts:173", + "source": "tests/contracts/math.algo.ts:179", "pc": [ - 1558 + 1576 ] }, { "teal": 1663, - "source": "tests/contracts/math.algo.ts:173", + "source": "tests/contracts/math.algo.ts:179", "pc": [ - 1559, - 1560 + 1577, + 1578 ] }, { "teal": 1664, - "source": "tests/contracts/math.algo.ts:173", + "source": "tests/contracts/math.algo.ts:179", "pc": [ - 1561, - 1562 + 1579, + 1580 ] }, { "teal": 1668, - "source": "tests/contracts/math.algo.ts:177", + "source": "tests/contracts/math.algo.ts:183", "pc": [ - 1563, - 1564 + 1581, + 1582 ] }, { "teal": 1671, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1565, - 1566 + 1583, + 1584 ] }, { "teal": 1674, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1567, - 1568 + 1585, + 1586 ] }, { "teal": 1675, - "source": "tests/contracts/math.algo.ts:172", + "source": "tests/contracts/math.algo.ts:178", "pc": [ - 1569 + 1587 ] }, { "teal": 1680, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1570 + 1588 ] }, { "teal": 1683, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1571, - 1572, - 1573 + 1589, + 1590, + 1591 ] }, { "teal": 1684, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1574 + 1592 ] }, { "teal": 1687, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1575, - 1576, - 1577 + 1593, + 1594, + 1595 ] }, { "teal": 1688, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1578 + 1596 ] }, { "teal": 1691, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1579, - 1580, - 1581 + 1597, + 1598, + 1599 ] }, { "teal": 1692, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1582 + 1600 ] }, { "teal": 1693, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1583 + 1601 ] }, { "teal": 1694, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1584 + 1602 ] }, { "teal": 1695, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1585 + 1603 ] }, { "teal": 1696, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1586 + 1604 ] }, { "teal": 1700, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1587, - 1588, - 1589 + 1605, + 1606, + 1607 ] }, { "teal": 1703, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1590 + 1608 ] }, { "teal": 1704, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1591 + 1609 ] }, { "teal": 1708, - "source": "tests/contracts/math.algo.ts:181", + "source": "tests/contracts/math.algo.ts:187", "pc": [ - 1592, - 1593 + 1610, + 1611 ] }, { "teal": 1709, - "source": "tests/contracts/math.algo.ts:181", + "source": "tests/contracts/math.algo.ts:187", "pc": [ - 1594, - 1595 + 1612, + 1613 ] }, { "teal": 1710, - "source": "tests/contracts/math.algo.ts:181", + "source": "tests/contracts/math.algo.ts:187", "pc": [ - 1596 + 1614 ] }, { "teal": 1711, - "source": "tests/contracts/math.algo.ts:181", + "source": "tests/contracts/math.algo.ts:187", "pc": [ - 1597, - 1598 + 1615, + 1616 ] }, { "teal": 1712, - "source": "tests/contracts/math.algo.ts:181", + "source": "tests/contracts/math.algo.ts:187", "pc": [ - 1599, - 1600 + 1617, + 1618 ] }, { "teal": 1716, - "source": "tests/contracts/math.algo.ts:185", + "source": "tests/contracts/math.algo.ts:191", "pc": [ - 1601, - 1602 + 1619, + 1620 ] }, { "teal": 1719, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1603, - 1604 + 1621, + 1622 ] }, { "teal": 1722, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1605, - 1606 + 1623, + 1624 ] }, { "teal": 1723, - "source": "tests/contracts/math.algo.ts:180", + "source": "tests/contracts/math.algo.ts:186", "pc": [ - 1607 + 1625 ] }, { "teal": 1728, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1608 + 1626 ] }, { "teal": 1731, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1609, - 1610, - 1611 + 1627, + 1628, + 1629 ] }, { "teal": 1732, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1612 + 1630 ] }, { "teal": 1735, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1613, - 1614, - 1615 + 1631, + 1632, + 1633 ] }, { "teal": 1736, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1616 + 1634 ] }, { "teal": 1739, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1617, - 1618, - 1619 + 1635, + 1636, + 1637 ] }, { "teal": 1740, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1620 + 1638 ] }, { "teal": 1741, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1621 + 1639 ] }, { "teal": 1742, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1622 + 1640 ] }, { "teal": 1743, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1623 + 1641 ] }, { "teal": 1744, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1624 + 1642 ] }, { "teal": 1748, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1625, - 1626, - 1627 + 1643, + 1644, + 1645 ] }, { "teal": 1751, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1628 + 1646 ] }, { "teal": 1752, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1629 + 1647 ] }, { "teal": 1756, - "source": "tests/contracts/math.algo.ts:189", + "source": "tests/contracts/math.algo.ts:195", "pc": [ - 1630, - 1631 + 1648, + 1649 ] }, { "teal": 1757, - "source": "tests/contracts/math.algo.ts:189", + "source": "tests/contracts/math.algo.ts:195", "pc": [ - 1632, - 1633 + 1650, + 1651 ] }, { "teal": 1758, - "source": "tests/contracts/math.algo.ts:189", + "source": "tests/contracts/math.algo.ts:195", "pc": [ - 1634 + 1652 ] }, { "teal": 1759, - "source": "tests/contracts/math.algo.ts:189", + "source": "tests/contracts/math.algo.ts:195", "pc": [ - 1635, - 1636 + 1653, + 1654 ] }, { "teal": 1760, - "source": "tests/contracts/math.algo.ts:189", + "source": "tests/contracts/math.algo.ts:195", "pc": [ - 1637, - 1638 + 1655, + 1656 ] }, { "teal": 1764, - "source": "tests/contracts/math.algo.ts:193", + "source": "tests/contracts/math.algo.ts:199", "pc": [ - 1639, - 1640 + 1657, + 1658 ] }, { "teal": 1767, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1641, - 1642 + 1659, + 1660 ] }, { "teal": 1770, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1643, - 1644 + 1661, + 1662 ] }, { "teal": 1771, - "source": "tests/contracts/math.algo.ts:188", + "source": "tests/contracts/math.algo.ts:194", "pc": [ - 1645 + 1663 ] }, { "teal": 1776, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1646 + 1664 ] }, { "teal": 1779, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1647, - 1648, - 1649 + 1665, + 1666, + 1667 ] }, { "teal": 1780, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1650 + 1668 ] }, { "teal": 1783, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1651, - 1652, - 1653 + 1669, + 1670, + 1671 ] }, { "teal": 1784, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1654 + 1672 ] }, { "teal": 1787, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1655, - 1656, - 1657 + 1673, + 1674, + 1675 ] }, { "teal": 1788, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1658 + 1676 ] }, { "teal": 1789, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1659 + 1677 ] }, { "teal": 1790, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1660 + 1678 ] }, { "teal": 1791, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1661 + 1679 ] }, { "teal": 1792, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1662 + 1680 ] }, { "teal": 1796, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1663, - 1664, - 1665 + 1681, + 1682, + 1683 ] }, { "teal": 1800, - "source": "tests/contracts/math.algo.ts:197", + "source": "tests/contracts/math.algo.ts:203", "pc": [ - 1666, - 1667 + 1684, + 1685 ] }, { "teal": 1801, - "source": "tests/contracts/math.algo.ts:197", + "source": "tests/contracts/math.algo.ts:203", "pc": [ - 1668, - 1669 + 1686, + 1687 ] }, { "teal": 1802, - "source": "tests/contracts/math.algo.ts:197", + "source": "tests/contracts/math.algo.ts:203", "pc": [ - 1670, - 1671 + 1688, + 1689 ] }, { "teal": 1803, - "source": "tests/contracts/math.algo.ts:197", + "source": "tests/contracts/math.algo.ts:203", "pc": [ - 1672 + 1690 ] }, { "teal": 1804, - "source": "tests/contracts/math.algo.ts:196", + "source": "tests/contracts/math.algo.ts:202", "pc": [ - 1673 + 1691 ] }, { "teal": 1809, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1674 + 1692 ] }, { "teal": 1812, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1675, - 1676, - 1677 + 1693, + 1694, + 1695 ] }, { "teal": 1813, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1678 + 1696 ] }, { "teal": 1816, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1679, - 1680, - 1681 + 1697, + 1698, + 1699 ] }, { "teal": 1817, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1682 + 1700 ] }, { "teal": 1820, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1683, - 1684, - 1685 + 1701, + 1702, + 1703 ] }, { "teal": 1821, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1686 + 1704 ] }, { "teal": 1822, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1687 + 1705 ] }, { "teal": 1823, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1688 + 1706 ] }, { "teal": 1824, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1689 + 1707 ] }, { "teal": 1825, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1690 + 1708 ] }, { "teal": 1829, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1691, - 1692, - 1693 + 1709, + 1710, + 1711 ] }, { "teal": 1832, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1694 + 1712 ] }, { "teal": 1833, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1695, - 1696 + 1713, + 1714 ] }, { "teal": 1837, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1697, - 1698 + 1715, + 1716 ] }, { "teal": 1838, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1699, - 1700 + 1717, + 1718 ] }, { "teal": 1839, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1701, - 1702 + 1719, + 1720 ] }, { "teal": 1840, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1703, - 1704 + 1721, + 1722 ] }, { "teal": 1841, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1705 + 1723 ] }, { "teal": 1842, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1706, - 1707 + 1724, + 1725 ] }, { "teal": 1843, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1708, - 1709 + 1726, + 1727 ] }, { "teal": 1844, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1710, - 1711 + 1728, + 1729 ] }, { "teal": 1845, - "source": "tests/contracts/math.algo.ts:201", + "source": "tests/contracts/math.algo.ts:207", "pc": [ - 1712, - 1713 + 1730, + 1731 ] }, { "teal": 1849, - "source": "tests/contracts/math.algo.ts:205", + "source": "tests/contracts/math.algo.ts:211", "pc": [ - 1714, - 1715 + 1732, + 1733 ] }, { "teal": 1852, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1716, - 1717 + 1734, + 1735 ] }, { "teal": 1855, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1718, - 1719 + 1736, + 1737 ] }, { "teal": 1856, - "source": "tests/contracts/math.algo.ts:200", + "source": "tests/contracts/math.algo.ts:206", "pc": [ - 1720 + 1738 ] }, { "teal": 1861, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1721 + 1739 ] }, { "teal": 1864, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1722, - 1723, - 1724 + 1740, + 1741, + 1742 ] }, { "teal": 1865, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1725 + 1743 ] }, { "teal": 1866, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1726 + 1744 ] }, { "teal": 1867, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1727 + 1745 ] }, { "teal": 1868, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1728 + 1746 ] }, { "teal": 1869, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1729 + 1747 ] }, { "teal": 1873, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1730, - 1731, - 1732 + 1748, + 1749, + 1750 ] }, { "teal": 1876, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1733 + 1751 ] }, { "teal": 1877, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1734, - 1735 + 1752, + 1753 ] }, { "teal": 1881, - "source": "tests/contracts/math.algo.ts:209", + "source": "tests/contracts/math.algo.ts:215", "pc": [ - 1736, - 1737, - 1738, - 1739, - 1740, - 1741, - 1742, - 1743, - 1744, - 1745, - 1746, - 1747, - 1748, - 1749, - 1750, - 1751, - 1752, - 1753, 1754, 1755, 1756, @@ -9030,771 +9077,771 @@ 1766, 1767, 1768, - 1769 + 1769, + 1770, + 1771, + 1772, + 1773, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1786, + 1787 ] }, { "teal": 1882, - "source": "tests/contracts/math.algo.ts:209", + "source": "tests/contracts/math.algo.ts:215", "pc": [ - 1770, - 1771 + 1788, + 1789 ] }, { "teal": 1886, - "source": "tests/contracts/math.algo.ts:210", + "source": "tests/contracts/math.algo.ts:216", "pc": [ - 1772, - 1773 + 1790, + 1791 ] }, { "teal": 1887, - "source": "tests/contracts/math.algo.ts:210", + "source": "tests/contracts/math.algo.ts:216", "pc": [ - 1774, - 1775 + 1792, + 1793 ] }, { "teal": 1891, - "source": "tests/contracts/math.algo.ts:212", + "source": "tests/contracts/math.algo.ts:218", "pc": [ - 1776, - 1777 + 1794, + 1795 ] }, { "teal": 1892, - "source": "tests/contracts/math.algo.ts:212", + "source": "tests/contracts/math.algo.ts:218", "pc": [ - 1778, - 1779 + 1796, + 1797 ] }, { "teal": 1893, - "source": "tests/contracts/math.algo.ts:212", + "source": "tests/contracts/math.algo.ts:218", "pc": [ - 1780 + 1798 ] }, { "teal": 1894, - "source": "tests/contracts/math.algo.ts:212", + "source": "tests/contracts/math.algo.ts:218", "pc": [ - 1781, - 1782 + 1799, + 1800 ] }, { "teal": 1898, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1783, - 1784 + 1801, + 1802 ] }, { "teal": 1899, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1785 + 1803 ] }, { "teal": 1900, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1786 + 1804 ] }, { "teal": 1901, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1787, - 1788 + 1805, + 1806 ] }, { "teal": 1902, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1789 + 1807 ] }, { "teal": 1905, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "errorMessage": "A as uint64 overflowed 64 bits", "pc": [ - 1790 + 1808 ] }, { "teal": 1906, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1791, - 1792 + 1809, + 1810 ] }, { "teal": 1907, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1793 + 1811 ] }, { "teal": 1908, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1794 + 1812 ] }, { "teal": 1909, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1795 + 1813 ] }, { "teal": 1910, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1796 + 1814 ] }, { "teal": 1911, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1797 + 1815, + 1816 ] }, { "teal": 1912, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1798 + 1817 ] }, { "teal": 1913, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1799 + 1818 ] }, { "teal": 1914, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1800 + 1819 ] }, { "teal": 1915, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1801 + 1820 ] }, { "teal": 1916, - "source": "tests/contracts/math.algo.ts:214", + "source": "tests/contracts/math.algo.ts:220", "pc": [ - 1802, - 1803 + 1821, + 1822 ] }, { "teal": 1920, - "source": "tests/contracts/math.algo.ts:216", + "source": "tests/contracts/math.algo.ts:222", "pc": [ - 1804, - 1805 + 1823, + 1824 ] }, { "teal": 1923, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1806, - 1807 + 1825, + 1826 ] }, { "teal": 1926, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1808, - 1809 + 1827, + 1828 ] }, { "teal": 1927, - "source": "tests/contracts/math.algo.ts:208", + "source": "tests/contracts/math.algo.ts:214", "pc": [ - 1810 + 1829 ] }, { "teal": 1932, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1811 + 1830 ] }, { "teal": 1935, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1812, - 1813, - 1814 + 1831, + 1832, + 1833 ] }, { "teal": 1936, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1815 + 1834 ] }, { "teal": 1937, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1816 + 1835 ] }, { "teal": 1938, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1817, - 1818 + 1836 ] }, { "teal": 1939, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1819 + 1837 ] }, { "teal": 1942, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "errorMessage": "argument 0 (x) for foobar must be a uint128", "pc": [ - 1820 + 1838 ] }, { "teal": 1945, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1821, - 1822, - 1823 + 1839, + 1840, + 1841 ] }, { "teal": 1946, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1824 + 1842 ] }, { "teal": 1947, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1825 + 1843 ] }, { "teal": 1948, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1826, - 1827 + 1844, + 1845 ] }, { "teal": 1949, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1828 + 1846 ] }, { "teal": 1952, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "errorMessage": "foobar return value overflowed 128 bits", "pc": [ - 1829 + 1847 ] }, { "teal": 1953, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1830, - 1831 + 1848, + 1849 ] }, { "teal": 1954, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1832 + 1850 ] }, { "teal": 1955, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1833 + 1851 ] }, { "teal": 1956, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1834 + 1852 ] }, { "teal": 1957, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1835 + 1853 ] }, { "teal": 1958, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1836, - 1837 + 1854 ] }, { "teal": 1959, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1838 + 1855 ] }, { "teal": 1960, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1839 + 1856 ] }, { "teal": 1961, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1840 + 1857 ] }, { "teal": 1962, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1841 + 1858 ] }, { "teal": 1963, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1842 + 1859 ] }, { "teal": 1964, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1843 + 1860 ] }, { "teal": 1965, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1844 + 1861 ] }, { "teal": 1969, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1845, - 1846, - 1847 + 1862, + 1863, + 1864 ] }, { "teal": 1972, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1848 + 1865 ] }, { "teal": 1976, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1849, - 1850 + 1866, + 1867 ] }, { "teal": 1977, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1851, - 1852, - 1853, - 1854, - 1855, - 1856, - 1857, - 1858, - 1859, - 1860, - 1861, - 1862, - 1863, - 1864, - 1865, - 1866, - 1867, - 1868 + 1868, + 1869, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1882, + 1883, + 1884, + 1885 ] }, { "teal": 1978, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1869 + 1886 ] }, { "teal": 1979, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1870 + 1887 ] }, { "teal": 1980, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1871 + 1888 ] }, { "teal": 1981, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1872, - 1873 + 1889, + 1890 ] }, { "teal": 1982, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1874 + 1891 ] }, { "teal": 1985, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "errorMessage": "x / (30000 as uint128) overflowed 128 bits", "pc": [ - 1875 + 1892 ] }, { "teal": 1986, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1876, - 1877 + 1893, + 1894 ] }, { "teal": 1987, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1878 + 1895 ] }, { "teal": 1988, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1879 + 1896 ] }, { "teal": 1989, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1880 + 1897 ] }, { "teal": 1990, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1881 + 1898 ] }, { "teal": 1991, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1882, - 1883 + 1899 ] }, { "teal": 1992, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1884 + 1900 ] }, { "teal": 1993, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1885 + 1901 ] }, { "teal": 1994, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1886 + 1902 ] }, { "teal": 1995, - "source": "tests/contracts/math.algo.ts:220", + "source": "tests/contracts/math.algo.ts:226", "pc": [ - 1887, - 1888 + 1903, + 1904 ] }, { "teal": 1999, - "source": "tests/contracts/math.algo.ts:222", + "source": "tests/contracts/math.algo.ts:228", "pc": [ - 1889, - 1890 + 1905, + 1906 ] }, { "teal": 2002, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1891, - 1892 + 1907, + 1908 ] }, { "teal": 2003, - "source": "tests/contracts/math.algo.ts:219", + "source": "tests/contracts/math.algo.ts:225", "pc": [ - 1893 + 1909 ] }, { "teal": 2008, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1894 + 1910 ] }, { "teal": 2011, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1895, - 1896, - 1897 + 1911, + 1912, + 1913 ] }, { "teal": 2012, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1898 + 1914 ] }, { "teal": 2013, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1899 + 1915 ] }, { "teal": 2014, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1900 + 1916 ] }, { "teal": 2015, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1901 + 1917 ] }, { "teal": 2018, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "errorMessage": "uintFromHex return value overflowed 256 bits", "pc": [ - 1902 + 1918 ] }, { "teal": 2019, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1903 + 1919 ] }, { "teal": 2020, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1904 + 1920 ] }, { "teal": 2021, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1905 + 1921 ] }, { "teal": 2022, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1906 + 1922 ] }, { "teal": 2023, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1907 + 1923 ] }, { "teal": 2024, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1908 + 1924 ] }, { "teal": 2025, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1909 + 1925 ] }, { "teal": 2026, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1910 + 1926 ] }, { "teal": 2027, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1911 + 1927 ] }, { "teal": 2028, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1912 + 1928 ] }, { "teal": 2029, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1913 + 1929 ] }, { "teal": 2030, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1914 + 1930 ] }, { "teal": 2031, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1915 + 1931 ] }, { "teal": 2035, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1916, - 1917, - 1918 + 1932, + 1933, + 1934 ] }, { "teal": 2039, - "source": "tests/contracts/math.algo.ts:226", + "source": "tests/contracts/math.algo.ts:232", "pc": [ - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1933, - 1934, 1935, 1936, 1937, @@ -9812,1176 +9859,1750 @@ 1949, 1950, 1951, - 1952 + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1965, + 1966, + 1967, + 1968 ] }, { "teal": 2040, - "source": "tests/contracts/math.algo.ts:225", + "source": "tests/contracts/math.algo.ts:231", "pc": [ - 1953 + 1969 ] }, { "teal": 2045, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1954 + 1970 ] }, { "teal": 2048, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1955, - 1956, - 1957 + 1971, + 1972, + 1973 ] }, { "teal": 2049, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1958 + 1974 ] }, { "teal": 2050, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1959 + 1975 ] }, { "teal": 2051, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1960 + 1976 ] }, { "teal": 2052, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1961 + 1977 ] }, { "teal": 2053, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1962 + 1978 ] }, { "teal": 2057, - "source": "tests/contracts/math.algo.ts:229", + "source": "tests/contracts/math.algo.ts:235", "pc": [ - 1963, - 1964, - 1965 + 1979, + 1980, + 1981 ] }, { "teal": 2061, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1966, - 1967 + 1982, + 1983 ] }, { "teal": 2062, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1968, - 1969 + 1984, + 1985 ] }, { "teal": 2063, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1970 + 1986 ] }, { "teal": 2064, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1971, - 1972 + 1987, + 1988 ] }, { "teal": 2065, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1973, - 1974 + 1989, + 1990 ] }, { "teal": 2066, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1975, - 1976 + 1991, + 1992 ] }, { "teal": 2067, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1977 + 1993 ] }, { "teal": 2068, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1978, - 1979 + 1994, + 1995 ] }, { "teal": 2069, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1980 + 1996 ] }, { "teal": 2070, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1981, - 1982 + 1997, + 1998 ] }, { "teal": 2071, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1983 + 1999 ] }, { "teal": 2072, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1984 + 2000 ] }, { "teal": 2073, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1985, - 1986 + 2001, + 2002 ] }, { "teal": 2074, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1987, - 1988 + 2003, + 2004 ] }, { "teal": 2075, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1989, - 1990 + 2005, + 2006 ] }, { "teal": 2076, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1991 + 2007 ] }, { "teal": 2077, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1992, - 1993 + 2008, + 2009 ] }, { "teal": 2078, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1994 + 2010 ] }, { "teal": 2079, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1995, - 1996 + 2011, + 2012 ] }, { "teal": 2080, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1997 + 2013 ] }, { "teal": 2081, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1998 + 2014 ] }, { "teal": 2082, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 1999, - 2000 + 2015, + 2016 ] }, { "teal": 2083, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2001, - 2002 + 2017, + 2018 ] }, { "teal": 2084, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2003, - 2004 + 2019, + 2020 ] }, { "teal": 2085, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2005 + 2021 ] }, { "teal": 2086, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2006, - 2007 + 2022, + 2023 ] }, { "teal": 2087, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2008 + 2024 ] }, { "teal": 2088, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2009, - 2010 + 2025, + 2026 ] }, { "teal": 2089, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2011 + 2027 ] }, { "teal": 2090, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2012 + 2028 ] }, { "teal": 2091, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2013, - 2014 + 2029, + 2030 ] }, { "teal": 2092, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2015, - 2016 + 2031, + 2032 ] }, { "teal": 2093, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2017 + 2033 ] }, { "teal": 2094, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2018, - 2019 + 2034, + 2035 ] }, { "teal": 2095, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2020, - 2021 + 2036, + 2037 ] }, { "teal": 2096, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2022, - 2023 + 2038, + 2039 ] }, { "teal": 2097, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2024 + 2040 ] }, { "teal": 2098, - "source": "tests/contracts/math.algo.ts:230", + "source": "tests/contracts/math.algo.ts:236", "pc": [ - 2025, - 2026 + 2041, + 2042 + ] + }, + { + "teal": 2099, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2043 + ] + }, + { + "teal": 2100, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2044, + 2045 + ] + }, + { + "teal": 2101, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2046 + ] + }, + { + "teal": 2102, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2047 + ] + }, + { + "teal": 2103, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2048, + 2049 + ] + }, + { + "teal": 2104, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2050, + 2051 + ] + }, + { + "teal": 2105, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2052, + 2053 + ] + }, + { + "teal": 2106, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2054 + ] + }, + { + "teal": 2107, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2055, + 2056 + ] + }, + { + "teal": 2108, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2057 + ] + }, + { + "teal": 2109, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2058, + 2059 + ] + }, + { + "teal": 2110, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2060 + ] + }, + { + "teal": 2111, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2061 + ] + }, + { + "teal": 2112, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2062 + ] + }, + { + "teal": 2113, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2063 + ] + }, + { + "teal": 2114, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2064 + ] + }, + { + "teal": 2115, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2065 + ] + }, + { + "teal": 2116, + "source": "tests/contracts/math.algo.ts:236", + "pc": [ + 2066 + ] + }, + { + "teal": 2119, + "source": "tests/contracts/math.algo.ts:236", + "errorMessage": "wideRatio failed", + "pc": [ + 2067 + ] + }, + { + "teal": 2120, + "source": "tests/contracts/math.algo.ts:235", + "pc": [ + 2068 + ] + }, + { + "teal": 2125, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2069 + ] + }, + { + "teal": 2128, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2070, + 2071, + 2072 + ] + }, + { + "teal": 2129, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2073 + ] + }, + { + "teal": 2132, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2074, + 2075, + 2076 + ] + }, + { + "teal": 2133, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2077 + ] + }, + { + "teal": 2134, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2078 + ] + }, + { + "teal": 2135, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2079 + ] + }, + { + "teal": 2136, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2080 + ] + }, + { + "teal": 2139, + "source": "tests/contracts/math.algo.ts:241", + "errorMessage": "argument 1 (accRps) for u128InTuple must be a uint128", + "pc": [ + 2081 + ] + }, + { + "teal": 2142, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2082, + 2083, + 2084 + ] + }, + { + "teal": 2143, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2085 + ] + }, + { + "teal": 2144, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2086 + ] + }, + { + "teal": 2145, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2087 + ] + }, + { + "teal": 2146, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2088 + ] + }, + { + "teal": 2149, + "source": "tests/contracts/math.algo.ts:241", + "errorMessage": "argument 2 (userData) for u128InTuple must be a (uint64,uint64,uint128)", + "pc": [ + 2089 + ] + }, + { + "teal": 2152, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2090, + 2091, + 2092 + ] + }, + { + "teal": 2153, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2093 + ] + }, + { + "teal": 2154, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2094 + ] + }, + { + "teal": 2155, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2095, + 2096 + ] + }, + { + "teal": 2156, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2097 + ] + }, + { + "teal": 2159, + "source": "tests/contracts/math.algo.ts:241", + "errorMessage": "u128InTuple return value overflowed 128 bits", + "pc": [ + 2098 + ] + }, + { + "teal": 2160, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2099, + 2100 + ] + }, + { + "teal": 2161, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2101 + ] + }, + { + "teal": 2162, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2102 + ] + }, + { + "teal": 2163, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2103 + ] + }, + { + "teal": 2164, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2104 + ] + }, + { + "teal": 2165, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2105 + ] + }, + { + "teal": 2166, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2106 + ] + }, + { + "teal": 2167, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2107 + ] + }, + { + "teal": 2168, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2108 + ] + }, + { + "teal": 2169, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2109 + ] + }, + { + "teal": 2170, + "source": "tests/contracts/math.algo.ts:241", + "pc": [ + 2110 ] }, { - "teal": 2099, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2171, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2027 + 2111 ] }, { - "teal": 2100, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2172, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2028, - 2029 + 2112 ] }, { - "teal": 2101, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2176, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2030 + 2113, + 2114, + 2115 ] }, { - "teal": 2102, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2179, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2031 + 2116 ] }, { - "teal": 2103, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2183, + "source": "tests/contracts/math.algo.ts:242", "pc": [ - 2032, - 2033 + 2117, + 2118 ] }, { - "teal": 2104, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2184, + "source": "tests/contracts/math.algo.ts:242", "pc": [ - 2034, - 2035 + 2119, + 2120 ] }, { - "teal": 2105, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2185, + "source": "tests/contracts/math.algo.ts:242", "pc": [ - 2036, - 2037 + 2121 ] }, { - "teal": 2106, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2189, + "source": "tests/contracts/math.algo.ts:243", "pc": [ - 2038 + 2122, + 2123 ] }, { - "teal": 2107, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2190, + "source": "tests/contracts/math.algo.ts:243", "pc": [ - 2039, - 2040 + 2124, + 2125 ] }, { - "teal": 2108, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2194, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2041 + 2126, + 2127 ] }, { - "teal": 2109, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2195, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2042, - 2043 + 2128 ] }, { - "teal": 2110, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2196, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2044 + 2129, + 2130 ] }, { - "teal": 2111, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2197, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2045 + 2131, + 2132, + 2133 ] }, { - "teal": 2112, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2198, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2046 + 2134 ] }, { - "teal": 2113, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2199, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2047 + 2135 ] }, { - "teal": 2114, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2200, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2048 + 2136, + 2137 ] }, { - "teal": 2115, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2201, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2049 + 2138 ] }, { - "teal": 2116, - "source": "tests/contracts/math.algo.ts:230", + "teal": 2202, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2050 + 2139 ] }, { - "teal": 2119, - "source": "tests/contracts/math.algo.ts:230", - "errorMessage": "wideRatio failed", + "teal": 2203, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2051 + 2140, + 2141 ] }, { - "teal": 2120, - "source": "tests/contracts/math.algo.ts:229", + "teal": 2204, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2052 + 2142 ] }, { - "teal": 2123, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2205, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2053 + 2143 ] }, { - "teal": 2124, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2206, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2054 + 2144 ] }, { - "teal": 2127, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2207, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2055, - 2056, - 2057, - 2058, - 2059, - 2060 + 2145 ] }, { - "teal": 2128, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2208, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2061, - 2062, - 2063 + 2146, + 2147 ] }, { - "teal": 2129, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2209, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2064, - 2065, - 2066, - 2067 + 2148 ] }, { - "teal": 2132, - "source": "tests/contracts/math.algo.ts:4", - "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "teal": 2212, + "source": "tests/contracts/math.algo.ts:245", + "errorMessage": "retVal.rewardDebt overflowed 128 bits", "pc": [ - 2068 + 2149 ] }, { - "teal": 2135, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2213, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2069, - 2070, - 2071, - 2072, - 2073, - 2074 + 2150, + 2151 ] }, { - "teal": 2136, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2214, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2075, - 2076, - 2077, - 2078, - 2079, - 2080 + 2152 ] }, { - "teal": 2137, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2215, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2081, - 2082, - 2083, - 2084, - 2085, - 2086 + 2153 ] }, { - "teal": 2138, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2216, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2087, - 2088, - 2089, - 2090, - 2091, - 2092 + 2154 ] }, { - "teal": 2139, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2217, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2093, - 2094, - 2095, - 2096, - 2097, - 2098 + 2155 ] }, { - "teal": 2140, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2218, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2099, - 2100, - 2101, - 2102, - 2103, - 2104 + 2156 ] }, { - "teal": 2141, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2219, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2105, - 2106, - 2107, - 2108, - 2109, - 2110 + 2157 ] }, { - "teal": 2142, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2220, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2111, - 2112, - 2113, - 2114, - 2115, - 2116 + 2158 ] }, { - "teal": 2143, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2221, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2117, - 2118, - 2119, - 2120, - 2121, - 2122 + 2159 ] }, { - "teal": 2144, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2222, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2123, - 2124, - 2125, - 2126, - 2127, - 2128 + 2160 ] }, { - "teal": 2145, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2223, + "source": "tests/contracts/math.algo.ts:245", "pc": [ - 2129, - 2130, - 2131, - 2132, - 2133, - 2134 + 2161, + 2162 ] }, { - "teal": 2146, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2227, + "source": "tests/contracts/math.algo.ts:247", "pc": [ - 2135, - 2136, - 2137, - 2138, - 2139, - 2140 + 2163, + 2164 ] }, { - "teal": 2147, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2228, + "source": "tests/contracts/math.algo.ts:247", "pc": [ - 2141, - 2142, - 2143, - 2144, - 2145, - 2146 + 2165, + 2166, + 2167 ] }, { - "teal": 2148, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2231, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2147, - 2148, - 2149, - 2150, - 2151, - 2152 + 2168, + 2169 ] }, { - "teal": 2149, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2232, + "source": "tests/contracts/math.algo.ts:241", "pc": [ - 2153, - 2154, - 2155, - 2156, - 2157, - 2158 + 2170 ] }, { - "teal": 2150, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2235, + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 2159, - 2160, - 2161, - 2162, - 2163, - 2164 + 2171 ] }, { - "teal": 2151, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2236, + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 2165, - 2166, - 2167, - 2168, - 2169, - 2170 + 2172 ] }, { - "teal": 2152, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2239, + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 2171, - 2172, 2173, 2174, 2175, - 2176 + 2176, + 2177, + 2178 ] }, { - "teal": 2153, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2240, + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 2177, - 2178, 2179, 2180, - 2181, - 2182 + 2181 ] }, { - "teal": 2154, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2241, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2182, 2183, 2184, - 2185, - 2186, - 2187, - 2188 + 2185 ] }, { - "teal": 2155, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2244, + "source": "tests/contracts/math.algo.ts:10", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 2186 + ] + }, + { + "teal": 2247, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2187, + 2188, 2189, 2190, 2191, - 2192, - 2193, - 2194 + 2192 ] }, { - "teal": 2156, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2248, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2193, + 2194, 2195, 2196, 2197, - 2198, - 2199, - 2200 + 2198 ] }, { - "teal": 2157, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2249, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2199, + 2200, 2201, 2202, 2203, - 2204, - 2205, - 2206 + 2204 ] }, { - "teal": 2158, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2250, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2205, + 2206, 2207, 2208, 2209, - 2210, - 2211, - 2212 + 2210 ] }, { - "teal": 2159, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2251, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2211, + 2212, 2213, 2214, 2215, - 2216, - 2217, - 2218 + 2216 ] }, { - "teal": 2160, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2252, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2217, + 2218, 2219, 2220, 2221, - 2222, - 2223, - 2224 + 2222 ] }, { - "teal": 2161, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2253, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2223, + 2224, 2225, 2226, 2227, - 2228, - 2229, - 2230 + 2228 ] }, { - "teal": 2162, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2254, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2229, + 2230, 2231, 2232, 2233, - 2234, - 2235, - 2236 + 2234 ] }, { - "teal": 2163, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2255, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2235, + 2236, 2237, 2238, 2239, - 2240, - 2241, - 2242 + 2240 ] }, { - "teal": 2164, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2256, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2241, + 2242, 2243, 2244, 2245, - 2246, - 2247, - 2248 + 2246 ] }, { - "teal": 2165, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2257, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2247, + 2248, 2249, 2250, 2251, - 2252, - 2253, - 2254 + 2252 ] }, { - "teal": 2166, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2258, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2253, + 2254, 2255, 2256, 2257, - 2258, - 2259, - 2260 + 2258 ] }, { - "teal": 2167, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2259, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2259, + 2260, 2261, 2262, 2263, - 2264, - 2265, - 2266 + 2264 ] }, { - "teal": 2168, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2260, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2265, + 2266, 2267, 2268, 2269, - 2270, - 2271, - 2272 + 2270 ] }, { - "teal": 2169, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2261, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2271, + 2272, 2273, 2274, 2275, - 2276, - 2277, - 2278 + 2276 ] }, { - "teal": 2170, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2262, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2277, + 2278, 2279, 2280, 2281, - 2282, - 2283, - 2284 + 2282 ] }, { - "teal": 2171, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2263, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2283, + 2284, 2285, 2286, 2287, - 2288, - 2289, - 2290 + 2288 ] }, { - "teal": 2172, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2264, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2289, + 2290, 2291, 2292, 2293, - 2294, - 2295, - 2296 + 2294 ] }, { - "teal": 2173, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2265, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2295, + 2296, 2297, 2298, 2299, - 2300, - 2301, - 2302 + 2300 ] }, { - "teal": 2174, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2266, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2301, + 2302, 2303, 2304, 2305, - 2306, - 2307, - 2308 + 2306 ] }, { - "teal": 2175, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2267, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2307, + 2308, 2309, 2310, 2311, - 2312, - 2313, - 2314 + 2312 ] }, { - "teal": 2176, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2268, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2313, + 2314, 2315, 2316, 2317, - 2318, - 2319, - 2320 + 2318 ] }, { - "teal": 2177, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2269, + "source": "tests/contracts/math.algo.ts:10", "pc": [ + 2319, + 2320, 2321, 2322, - 2323 + 2323, + 2324 ] }, { - "teal": 2178, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2270, + "source": "tests/contracts/math.algo.ts:10", "pc": [ - 2324, 2325, 2326, 2327, 2328, 2329, - 2330, + 2330 + ] + }, + { + "teal": 2271, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2331, 2332, 2333, 2334, 2335, - 2336, + 2336 + ] + }, + { + "teal": 2272, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2337, 2338, 2339, 2340, 2341, - 2342, + 2342 + ] + }, + { + "teal": 2273, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2343, 2344, 2345, 2346, 2347, - 2348, + 2348 + ] + }, + { + "teal": 2274, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2349, 2350, 2351, 2352, 2353, - 2354, + 2354 + ] + }, + { + "teal": 2275, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2355, 2356, 2357, 2358, 2359, - 2360, + 2360 + ] + }, + { + "teal": 2276, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2361, 2362, 2363, 2364, 2365, - 2366, + 2366 + ] + }, + { + "teal": 2277, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2367, 2368, 2369, 2370, 2371, - 2372, + 2372 + ] + }, + { + "teal": 2278, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2373, 2374, 2375, 2376, 2377, - 2378, + 2378 + ] + }, + { + "teal": 2279, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2379, 2380, 2381, 2382, 2383, - 2384, + 2384 + ] + }, + { + "teal": 2280, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2385, 2386, 2387, 2388, 2389, - 2390, + 2390 + ] + }, + { + "teal": 2281, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2391, 2392, 2393, 2394, 2395, - 2396, + 2396 + ] + }, + { + "teal": 2282, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2397, 2398, 2399, 2400, 2401, - 2402, + 2402 + ] + }, + { + "teal": 2283, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ 2403, 2404, 2405, 2406, 2407, - 2408, - 2409 + 2408 + ] + }, + { + "teal": 2284, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2409, + 2410, + 2411, + 2412, + 2413, + 2414 + ] + }, + { + "teal": 2285, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2415, + 2416, + 2417, + 2418, + 2419, + 2420 ] }, { - "teal": 2181, - "source": "tests/contracts/math.algo.ts:4", + "teal": 2286, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2421, + 2422, + 2423, + 2424, + 2425, + 2426 + ] + }, + { + "teal": 2287, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2427, + 2428, + 2429, + 2430, + 2431, + 2432 + ] + }, + { + "teal": 2288, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2433, + 2434, + 2435, + 2436, + 2437, + 2438 + ] + }, + { + "teal": 2289, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2439, + 2440, + 2441, + 2442, + 2443, + 2444 + ] + }, + { + "teal": 2290, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2445, + 2446, + 2447 + ] + }, + { + "teal": 2291, + "source": "tests/contracts/math.algo.ts:10", + "pc": [ + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2458, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2477, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2490, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2509, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2522, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535 + ] + }, + { + "teal": 2294, + "source": "tests/contracts/math.algo.ts:10", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 2410 + 2536 ] } ], @@ -10993,20 +11614,20 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDMyIDI1NiA4IDAgMTYgMTg0NDY3NDQwNzM3MDk1NTE2MTUgMiAzIDQgNSA2NCAxMjgKYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4IDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweDYyNmY3ODRiNjU3OSAweDY3NGI2NTc5IDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzZTggMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweEZGRkZGRkZGRkZGRkZGRkYKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA3LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyB1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfdTY0cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NHBsdXMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1NjRwbHVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NHBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjgKCS8vIHJldHVybiBhICsgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCXJldHN1YgoKLy8gdTY0bWludXModWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV91NjRtaW51czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRtaW51cwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NG1pbnVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NG1pbnVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMgoJLy8gcmV0dXJuIGEgLSBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJLQoJcmV0c3ViCgovLyB1NjRtdWwodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV91NjRtdWw6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NG11bAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NG11bChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAp1NjRtdWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE2CgkvLyByZXR1cm4gYSAqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkqCglyZXRzdWIKCi8vIHU2NGRpdih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NGRpdjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgdTY0ZGl2CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0ZGl2KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NGRpdjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjAKCS8vIHJldHVybiBhIC8gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCS8KCXJldHN1YgoKLy8gdTI1NnBsdXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV91MjU2cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1NnBsdXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZwbHVzIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZwbHVzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2cGx1cyByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHUyNTZwbHVzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyNAoJLy8gcmV0dXJuIDx1aW50MjU2PihhICsgYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWIrCglyZXRzdWIKCi8vIHUyNTZtaW51cyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZtaW51czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1Nm1pbnVzIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1MjU2bWludXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1Nm1pbnVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZtaW51cwoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTI1Nm1pbnVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1Nm1pbnVzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZtaW51czoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjgKCS8vIHJldHVybiA8dWludDI1Nj4oYSAtIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliLQoJcmV0c3ViCgovLyB1MjU2bXVsKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1Nm11bDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1Nm11bCBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1Nm11bCBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2bXVsKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZtdWwKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZtdWwgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2bXVsKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZtdWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjMyCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYioKCXJldHN1YgoKLy8gdTI1NmRpdih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZkaXY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHUyNTZkaXYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZkaXYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1NmRpdih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiB1MjU2ZGl2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2ZGl2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1NmRpdihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1Ngp1MjU2ZGl2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czozNgoJLy8gcmV0dXJuIDx1aW50MjU2PihhIC8gYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWIvCglyZXRzdWIKCi8vIHU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYKKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0UmV0dXJuMjU2KHVpbnQ2NCx1aW50NjQpdWludDI1NgoJY2FsbHN1YiB1NjRSZXR1cm4yNTYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHU2NFJldHVybjI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU2NFJldHVybjI1NihhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQyNTYKdTY0UmV0dXJuMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo0MAoJLy8gcmV0dXJuIDx1aW50MjU2PihhICsgYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglpdG9iCglyZXRzdWIKCi8vIG1heFU2NCgpdWludDY0CiphYmlfcm91dGVfbWF4VTY0OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG1heFU2NCgpdWludDY0CgljYWxsc3ViIG1heFU2NAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG1heFU2NCgpOiB1aW50NjQKbWF4VTY0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo0NAoJLy8gcmV0dXJuIFVpbnQ8NjQ+KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpOwoJaW50YyA2IC8vIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CglyZXRzdWIKCi8vIGV4cG9uZW50KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZXhwb25lbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZXhwb25lbnQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZXhwb25lbnQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHBvbmVudChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApleHBvbmVudDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NDgKCS8vIHJldHVybiBhICoqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglleHAKCXJldHN1YgoKLy8gdmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYKKmFiaV9yb3V0ZV92YXJpYWJsZVR5cGVIaW50OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyB5OiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHkpIGZvciB2YXJpYWJsZVR5cGVIaW50IG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8geDogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxICh4KSBmb3IgdmFyaWFibGVUeXBlSGludCBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYKCWNhbGxzdWIgdmFyaWFibGVUeXBlSGludAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgNSAvLyAxNgoJPD0KCgkvLyB2YXJpYWJsZVR5cGVIaW50IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB2YXJpYWJsZVR5cGVIaW50KHg6IHVpbnQ8OD4sIHk6IHVpbnQ8OD4pOiB1aW50MTYKdmFyaWFibGVUeXBlSGludDoKCXByb3RvIDIgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1MgoJLy8geiA9IDx1aW50MTY+KHggKyB5KQoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyB5OiB1aW50PDg+CgkrCglmcmFtZV9idXJ5IDAgLy8gejogdW5zYWZlIHVpbnQxNgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NTQKCS8vIHJldHVybiB6OwoJZnJhbWVfZGlnIDAgLy8gejogdW5zYWZlIHVpbnQxNgoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyB1aW50OHBsdXModWludDgsdWludDgpdWludDgKKmFiaV9yb3V0ZV91aW50OHBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQ4cGx1cyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGE6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVpbnQ4cGx1cyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdWludDhwbHVzKHVpbnQ4LHVpbnQ4KXVpbnQ4CgljYWxsc3ViIHVpbnQ4cGx1cwoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMyAvLyA4Cgk8PQoKCS8vIHVpbnQ4cGx1cyByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA3IDEKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50OHBsdXMoYTogdWludDw4PiwgYjogdWludDw4Pik6IHVpbnQ8OD4KdWludDhwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1OAoJLy8gcmV0dXJuIGEgKyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50PDg+CgkrCglyZXRzdWIKCi8vIHVpbnQ4ZXhwKHVpbnQ4LHVpbnQ4KXVpbnQ4CiphYmlfcm91dGVfdWludDhleHA6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQ4ZXhwIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gYTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDhleHAgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyBleGVjdXRlIHVpbnQ4ZXhwKHVpbnQ4LHVpbnQ4KXVpbnQ4CgljYWxsc3ViIHVpbnQ4ZXhwCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDgKCTw9CgoJLy8gdWludDhleHAgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgOCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNyAxCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdWludDhleHAoYTogdWludDw4PiwgYjogdWludDw4Pik6IHVpbnQ8OD4KdWludDhleHA6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjYyCgkvLyByZXR1cm4gYSAqKiBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ8OD4KCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50PDg+CglleHAKCXJldHN1YgoKLy8gcGx1c0VxdWFscyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3BsdXNFcXVhbHM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgcGx1c0VxdWFscyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBwbHVzRXF1YWxzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gcGx1c0VxdWFscyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApwbHVzRXF1YWxzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjY2CgkvLyB4ID0gYQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfYnVyeSAwIC8vIHg6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NjgKCS8vIHggKz0gYgoJZnJhbWVfZGlnIDAgLy8geDogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglmcmFtZV9idXJ5IDAgLy8geDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3MAoJLy8gcmV0dXJuIHg7CglmcmFtZV9kaWcgMCAvLyB4OiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcGx1c0VxdWFsc0Zyb21HbG9iYWwodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBwbHVzRXF1YWxzRnJvbUdsb2JhbCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBwbHVzRXF1YWxzRnJvbUdsb2JhbAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHBsdXNFcXVhbHNGcm9tR2xvYmFsKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnBsdXNFcXVhbHNGcm9tR2xvYmFsOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3NAoJLy8gdGhpcy5nS2V5LnZhbHVlID0gYQoJYnl0ZWMgNCAvLyAgImdLZXkiCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NzYKCS8vIHRoaXMuZ0tleS52YWx1ZSArPSBiCglieXRlYyA0IC8vICAiZ0tleSIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkrCglieXRlYyA0IC8vICAiZ0tleSIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3OAoJLy8gcmV0dXJuIHRoaXMuZ0tleS52YWx1ZTsKCWJ5dGVjIDQgLy8gICJnS2V5IgoJYXBwX2dsb2JhbF9nZXQKCXJldHN1YgoKLy8gYm94VGVzdCgpdWludDI1NgoqYWJpX3JvdXRlX2JveFRlc3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgYm94VGVzdCgpdWludDI1NgoJY2FsbHN1YiBib3hUZXN0CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBib3hUZXN0IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYm94VGVzdCgpOiB1aW50MjU2CmJveFRlc3Q6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjg0CgkvLyB0aGlzLmJveEtleS52YWx1ZSA9IDx1aW50MjU2PjEKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQoJYm94X3B1dAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6ODUKCS8vIHRoaXMuYm94S2V5LnZhbHVlICs9IDEKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJveEtleS52YWx1ZQoJYXNzZXJ0CglieXRlYyA1IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQoJYisKCWJ5dGVjIDMgLy8gICJib3hLZXkiCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB0aGlzLmJveEtleS52YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCglzd2FwCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo4NwoJLy8gcmV0dXJuIHRoaXMuYm94S2V5LnZhbHVlOwoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYm94S2V5LnZhbHVlCglhc3NlcnQKCXJldHN1YgoKLy8gZm9vKHg6IHVpbnQyNTYpOiB1aW50MjU2CmZvbzoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTEKCS8vIHJldHVybiB4OwoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQyNTYKCXJldHN1YgoKLy8gdW5zYWZlTWV0aG9kQXJncyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3Vuc2FmZU1ldGhvZEFyZ3M6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVuc2FmZU1ldGhvZEFyZ3MgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVuc2FmZU1ldGhvZEFyZ3MgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdW5zYWZlTWV0aG9kQXJncyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiB1bnNhZmVNZXRob2RBcmdzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1bnNhZmVNZXRob2RBcmdzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdW5zYWZlTWV0aG9kQXJncyhhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1Ngp1bnNhZmVNZXRob2RBcmdzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjk1CgkvLyBjID0gYSArIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCWZyYW1lX2J1cnkgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTcKCS8vIHJldHVybiB0aGlzLmZvbyhjKTsKCWZyYW1lX2RpZyAwIC8vIGM6IHVuc2FmZSB1aW50MjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBjIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNhbGxzdWIgZm9vCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnQyNTZDb21wYXJpc29uVHlwZSh1aW50MjU2LHVpbnQyNTYpdm9pZAoqYWJpX3JvdXRlX3VpbnQyNTZDb21wYXJpc29uVHlwZToKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHVpbnQyNTZDb21wYXJpc29uVHlwZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDI1NkNvbXBhcmlzb25UeXBlIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHVpbnQyNTZDb21wYXJpc29uVHlwZSh1aW50MjU2LHVpbnQyNTYpdm9pZAoJY2FsbHN1YiB1aW50MjU2Q29tcGFyaXNvblR5cGUKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVpbnQyNTZDb21wYXJpc29uVHlwZShhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdm9pZAp1aW50MjU2Q29tcGFyaXNvblR5cGU6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAxCgkvLyBzZW5kZXJCYWxhbmNlQWZ0ZXIgPSBhIC0gYgoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliLQoJZnJhbWVfYnVyeSAwIC8vIHNlbmRlckJhbGFuY2VBZnRlcjogdW5zYWZlIHVpbnQyNTYKCgkvLyAqaWYwX2NvbmRpdGlvbgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMDIKCS8vIHNlbmRlckJhbGFuY2VBZnRlciA+IDx1aW50MjU2PjAKCWZyYW1lX2RpZyAwIC8vIHNlbmRlckJhbGFuY2VBZnRlcjogdW5zYWZlIHVpbnQyNTYKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWI+CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAzCgkvLyBsb2coJ25vblplcm8nKQoJcHVzaGJ5dGVzIDB4NmU2ZjZlNWE2NTcyNmYgLy8gIm5vblplcm8iCglsb2cKCWIgKmlmMF9lbmQKCippZjBfZWxzZToKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTA1CgkvLyBsb2coJ3plcm8nKQoJcHVzaGJ5dGVzIDB4N2E2NTcyNmYgLy8gInplcm8iCglsb2cKCippZjBfZW5kOgoJcmV0c3ViCgovLyBzcXVhcmVSb290MjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfc3F1YXJlUm9vdDI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3Igc3F1YXJlUm9vdDI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3Igc3F1YXJlUm9vdDI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzcXVhcmVSb290MjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHNxdWFyZVJvb3QyNTYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHNxdWFyZVJvb3QyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBzcXVhcmVSb290MjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnNxdWFyZVJvb3QyNTY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjExMAoJLy8gcmV0dXJuIHNxcnQoYSAqIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliKgoJYnNxcnQKCXJldHN1YgoKLy8gc3F1YXJlUm9vdDY0KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfc3F1YXJlUm9vdDY0OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBzcXVhcmVSb290NjQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBzcXVhcmVSb290NjQoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKc3F1YXJlUm9vdDY0OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMTQKCS8vIHJldHVybiBzcXJ0KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSoKCXNxcnQKCXJldHN1YgoKLy8gYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYWRkcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhZGRyKSBmb3IgYWRkcmVzc1RvQmlnSW50IG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZHJlc3NUb0JpZ0ludChhZGRyZXNzKWJvb2wKCWNhbGxzdWIgYWRkcmVzc1RvQmlnSW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyA0IC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYWRkcmVzc1RvQmlnSW50KGFkZHI6IEFkZHJlc3MpOiBib29sZWFuCmFkZHJlc3NUb0JpZ0ludDoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTE4CgkvLyByZXR1cm4gYnRvYmlnaW50KGFkZHIpID4gYnRvYmlnaW50KHRoaXMudHhuLnNlbmRlcik7CglmcmFtZV9kaWcgLTEgLy8gYWRkcjogQWRkcmVzcwoJdHhuIFNlbmRlcgoJYj4KCXJldHN1YgoKLy8gdThUb3U2NCgpdWludDY0CiphYmlfcm91dGVfdThUb3U2NDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB1OFRvdTY0KCl1aW50NjQKCWNhbGxzdWIgdThUb3U2NAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHU4VG91NjQoKTogdWludDY0CnU4VG91NjQ6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTIyCgkvLyB4OiB1aW50OCA9IDcKCXB1c2hpbnQgNwoJZnJhbWVfYnVyeSAwIC8vIHg6IHVpbnQ4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMjMKCS8vIHJldHVybiA8dWludDY0Png7CglmcmFtZV9kaWcgMCAvLyB4OiB1aW50OAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwcml2YXRlRnVuY05hbWUoeDogdWludDgsIHk6IHVpbnQ2NCk6IHZvaWQKcHJpdmF0ZUZ1bmNOYW1lOgoJcHJvdG8gMiAwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMjcKCS8vIGFzc2VydCg8dWludDg+eSA+IHgpCglmcmFtZV9kaWcgLTIgLy8geTogdWludDY0CglmcmFtZV9kaWcgLTEgLy8geDogdWludDgKCT4KCWFzc2VydAoJcmV0c3ViCgovLyBmdW5jTmFtZSh1aW50MjU2KXZvaWQKKmFiaV9yb3V0ZV9mdW5jTmFtZToKCS8vIHg6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoeCkgZm9yIGZ1bmNOYW1lIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGZ1bmNOYW1lKHVpbnQyNTYpdm9pZAoJY2FsbHN1YiBmdW5jTmFtZQoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZnVuY05hbWUoeDogdWludDI1Nik6IHZvaWQKZnVuY05hbWU6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEzMQoJLy8gdGhpcy5wcml2YXRlRnVuY05hbWUoPHVpbnQ4PngsIDEzMzcpCglwdXNoaW50IDEzMzcKCWZyYW1lX2RpZyAtMSAvLyB4OiB1aW50MjU2CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDgKCTw9CgoJLy8gPHVpbnQ4Pnggb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCAzMSAxCglidG9pCgljYWxsc3ViIHByaXZhdGVGdW5jTmFtZQoJcmV0c3ViCgovLyBiaWdpbnRQbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYmlnaW50UGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaWdpbnRQbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGJpZ2ludFBsdXMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaWdpbnRQbHVzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmJpZ2ludFBsdXM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzUKCS8vIHggPSBpdG9iKGEpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglpdG9iCglmcmFtZV9idXJ5IDAgLy8geDogYnl0ZVtdCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzYKCS8vIHkgPSBpdG9iKGIpCglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglpdG9iCglmcmFtZV9idXJ5IDEgLy8geTogYnl0ZVtdCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzcKCS8vIHJldHVybiAoYnRvYmlnaW50KHgpICsgYnRvYmlnaW50KHkpKSBhcyB1aW50NjQ7CglmcmFtZV9kaWcgMCAvLyB4OiBieXRlW10KCWZyYW1lX2RpZyAxIC8vIHk6IGJ5dGVbXQoJYisKCWR1cAoJYml0bGVuCglpbnRjIDExIC8vIDY0Cgk8PQoKCS8vIChidG9iaWdpbnQoeCkgKyBidG9iaWdpbnQoeSkpIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJYnl0ZWMgOCAvLyAweEZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYml0d2lzZU9yKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYml0d2lzZU9yOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlT3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlT3IoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZU9yOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDEKCS8vIHJldHVybiBhIHwgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCXwKCXJldHN1YgoKLy8gYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VBbmQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlQW5kCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZUFuZChhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlQW5kOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDUKCS8vIHJldHVybiBhICYgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSYKCXJldHN1YgoKLy8gYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VYb3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaXR3aXNlWG9yCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZVhvcihhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlWG9yOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNDkKCS8vIHJldHVybiBhIF4gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCV4KCXJldHN1YgoKLy8gYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VPclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VPclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlT3JVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlT3JVMjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZU9yVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlT3JVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNTMKCS8vIHJldHVybiBhIHwgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYnwKCXJldHN1YgoKLy8gYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgYml0d2lzZUFuZFUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VBbmRVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VBbmRVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VBbmRVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlQW5kVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VBbmRVMjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VBbmRVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNTcKCS8vIHJldHVybiBhICYgYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYiYKCXJldHN1YgoKLy8gYml0d2lzZVhvclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlWG9yVTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgYml0d2lzZVhvclUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIGJpdHdpc2VYb3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VYb3JVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlWG9yVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VYb3JVMjU2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VYb3JVMjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNjEKCS8vIHJldHVybiBhIF4gYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYl4KCXJldHN1YgoKLy8gYml0d2lzZU5vdCh1aW50NjQpdWludDY0CiphYmlfcm91dGVfYml0d2lzZU5vdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZU5vdAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VOb3QoYTogdWludDY0KTogdWludDY0CmJpdHdpc2VOb3Q6Cglwcm90byAxIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE2NQoJLy8gcmV0dXJuIH5hOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJfgoJcmV0c3ViCgovLyBiaXR3aXNlTm90VTI1Nih1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlTm90VTI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhKSBmb3IgYml0d2lzZU5vdFUyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgYml0d2lzZU5vdFUyNTYodWludDI1Nil1aW50MjU2CgljYWxsc3ViIGJpdHdpc2VOb3RVMjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBiaXR3aXNlTm90VTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VOb3RVMjU2KGE6IHVpbnQyNTYpOiB1aW50MjU2CmJpdHdpc2VOb3RVMjU2OgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNjkKCS8vIHJldHVybiB+YTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglifgoJcmV0c3ViCgovLyBtdWx3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfbXVsdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBtdWx3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIG11bHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBtdWx3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0Cm11bHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzMKCS8vIHAgPSBtdWx3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgltdWx3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzcKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBhZGR3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfYWRkdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBhZGR3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGFkZHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBhZGR3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmFkZHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODEKCS8vIHAgPSBhZGR3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglhZGR3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODUKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBleHB3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZXhwdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBleHB3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGV4cHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHB3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmV4cHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxODkKCS8vIHAgPSBleHB3KGEsIGIpCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglleHB3CglmcmFtZV9idXJ5IDAgLy8gcCBsb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgaGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxOTMKCS8vIHJldHVybiBwMi5sb3c7CglmcmFtZV9kaWcgMCAvLyBwIGxvdzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMQoJcmV0c3ViCgovLyBkaXZ3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZGl2dzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBkaXZ3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGRpdncKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBkaXZ3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmRpdnc6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE5NwoJLy8gcmV0dXJuIGRpdncoMCwgYSwgYik7CglpbnRjIDQgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJZGl2dwoJcmV0c3ViCgovLyBkaXZtb2R3KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfZGl2bW9kdzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBkaXZtb2R3KHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGRpdm1vZHcKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBkaXZtb2R3KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmRpdm1vZHc6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDEKCS8vIHAgPSBkaXZtb2R3KDAsIGEsIDAsIGIpCglpbnRjIDQgLy8gMAoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJaW50YyA0IC8vIDAKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWRpdm1vZHcKCWZyYW1lX2J1cnkgMCAvLyBwIHJlbWFpbmRlckxvdzogdWludDY0CglmcmFtZV9idXJ5IDEgLy8gcCByZW1haW5kZXJIaWdoOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBwIHF1b3RpZW50TG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMyAvLyBwIHF1b3RpZW50SGlnaDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDUKCS8vIHJldHVybiBwMi5xdW90aWVudExvdzsKCWZyYW1lX2RpZyAyIC8vIHAgcXVvdGllbnRMb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gdW5zYWZlVmFyaWFibGVzKCl1aW50NjQKKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdW5zYWZlVmFyaWFibGVzKCl1aW50NjQKCWNhbGxzdWIgdW5zYWZlVmFyaWFibGVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdW5zYWZlVmFyaWFibGVzKCk6IHVpbnQ2NAp1bnNhZmVWYXJpYWJsZXM6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDkKCS8vIEEgPSA8dWludDI1Nj4yNTAwMDAwMDAKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGVlNmIyODAKCWZyYW1lX2J1cnkgMCAvLyBBOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjEwCgkvLyBCID0gPHVpbnQyNTY+MTAwMAoJYnl0ZWMgNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzZTgKCWZyYW1lX2J1cnkgMSAvLyBCOiB1aW50MjU2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMTIKCS8vIEEgPSBBIC8gQgoJZnJhbWVfZGlnIDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCWJ5dGVjIDYgLy8gIEI6IHVpbnQyNTYKCWIvCglmcmFtZV9idXJ5IDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNAoJLy8gYyA9IEEgYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyBBOiB1bnNhZmUgdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgMTEgLy8gNjQKCTw9CgoJLy8gQSBhcyB1aW50NjQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWJ5dGVjIDggLy8gMHhGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAzIC8vIDgKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBjOiB1aW50NjQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNgoJLy8gcmV0dXJuIGM7CglmcmFtZV9kaWcgMiAvLyBjOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAyCglyZXRzdWIKCi8vIGZvb2Jhcih1aW50MTI4KXVpbnQxMjgKKmFiaV9yb3V0ZV9mb29iYXI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHg6IHVpbnQxMjgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDUgLy8gMTYKCT09CgoJLy8gYXJndW1lbnQgMCAoeCkgZm9yIGZvb2JhciBtdXN0IGJlIGEgdWludDEyOAoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBmb29iYXIodWludDEyOCl1aW50MTI4CgljYWxsc3ViIGZvb2JhcgoJZHVwCgliaXRsZW4KCWludGMgMTIgLy8gMTI4Cgk8PQoKCS8vIGZvb2JhciByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA3IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBmb29iYXIoeDogdWludDEyOCk6IHVpbnQxMjgKZm9vYmFyOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyMAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc1MzAKCWIvCglkdXAKCWJpdGxlbgoJaW50YyAxMiAvLyAxMjgKCTw9CgoJLy8geCAvICgzMDAwMCBhcyB1aW50MTI4KSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDcgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAwIC8vIGF2Z1N0YWtlOiB1aW50MTI4CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjIKCS8vIHJldHVybiBhdmdTdGFrZTsKCWZyYW1lX2RpZyAwIC8vIGF2Z1N0YWtlOiB1aW50MTI4CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnRGcm9tSGV4KCl1aW50MjU2CiphYmlfcm91dGVfdWludEZyb21IZXg6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdWludEZyb21IZXgoKXVpbnQyNTYKCWNhbGxzdWIgdWludEZyb21IZXgKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHVpbnRGcm9tSGV4IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdWludEZyb21IZXgoKTogdWludDI1Ngp1aW50RnJvbUhleDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjI2CgkvLyByZXR1cm4gVWludDwyNTY+KCcweEZGJyk7CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmCglyZXRzdWIKCi8vIHdpZGVSYXRpb1Rlc3QoKXVpbnQ2NAoqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgd2lkZVJhdGlvVGVzdCgpdWludDY0CgljYWxsc3ViIHdpZGVSYXRpb1Rlc3QKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB3aWRlUmF0aW9UZXN0KCk6IHVpbnQ2NAp3aWRlUmF0aW9UZXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMzAKCS8vIHJldHVybiB3aWRlUmF0aW8oW1VpbnQ8NjQ+KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpLCAyLCAzLCA0LCA1XSwgWzIsIDMsIDQsIDVdKTsKCWludGMgNiAvLyAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJaW50YyA3IC8vIDIKCW11bHcKCWludGMgOCAvLyAzCgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDkgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMCAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDcgLy8gMgoJaW50YyA4IC8vIDMKCW11bHcKCWludGMgOSAvLyA0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDEwIC8vIDUKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4M2NlNmYxYWYgLy8gbWV0aG9kICJ1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDAzMWExODYgLy8gbWV0aG9kICJ1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGU1MmU0Mzk0IC8vIG1ldGhvZCAidTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OTUwZDQ3ODkgLy8gbWV0aG9kICJ1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg2NWJkZGE2ZSAvLyBtZXRob2QgInUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4MGE2YWQyODQgLy8gbWV0aG9kICJ1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMDQ0YmYyNCAvLyBtZXRob2QgInUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhjNDhmOGMwNSAvLyBtZXRob2QgInUyNTZkaXYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMmUxZDYzMiAvLyBtZXRob2QgInU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgzOGIxYTM5ZSAvLyBtZXRob2QgIm1heFU2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4NmMxMzZmMWQgLy8gbWV0aG9kICJleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyZGEyNTAyIC8vIG1ldGhvZCAidmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYiCglwdXNoYnl0ZXMgMHhhMmZlYWQ2YyAvLyBtZXRob2QgInVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OCIKCXB1c2hieXRlcyAweGQyMjU2ZjdhIC8vIG1ldGhvZCAidWludDhleHAodWludDgsdWludDgpdWludDgiCglwdXNoYnl0ZXMgMHhjMTdkNjI0ZSAvLyBtZXRob2QgInBsdXNFcXVhbHModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1Y2FiMDQzOCAvLyBtZXRob2QgInBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4NTg5ODljY2QgLy8gbWV0aG9kICJib3hUZXN0KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NDgzMGI0ZGUgLy8gbWV0aG9kICJ1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTFjNTVjZTUgLy8gbWV0aG9kICJ1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHg3ZDFkNDI2ZSAvLyBtZXRob2QgInNxdWFyZVJvb3QyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgxYzI5ODFmMSAvLyBtZXRob2QgInNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGI3Y2EwNGI5IC8vIG1ldGhvZCAiYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGJiOTUyMzM4IC8vIG1ldGhvZCAidThUb3U2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDEyOGUyN2IgLy8gbWV0aG9kICJmdW5jTmFtZSh1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHhmOTE2Y2RiMyAvLyBtZXRob2QgImJpZ2ludFBsdXModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1MjczNzU0NSAvLyBtZXRob2QgImJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDc5YzFhZGMwIC8vIG1ldGhvZCAiYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyNDc0YWJjIC8vIG1ldGhvZCAiYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDA1OTNmZGY4IC8vIG1ldGhvZCAiYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDA2ZmI5MzM3IC8vIG1ldGhvZCAiYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgyNjQ5M2Q3OCAvLyBtZXRob2QgImJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTljMjJlZWEgLy8gbWV0aG9kICJiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHhlZGUzZTliYyAvLyBtZXRob2QgImJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDJlNGEyMTY0IC8vIG1ldGhvZCAibXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDUwMTM0YjVhIC8vIG1ldGhvZCAiYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGY1M2FmZjliIC8vIG1ldGhvZCAiZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGNhZjcxMTBkIC8vIG1ldGhvZCAiZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGJlZDBlMzg2IC8vIG1ldGhvZCAiZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI3NGQ3NzA1IC8vIG1ldGhvZCAidW5zYWZlVmFyaWFibGVzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5MjQ2NWQwOCAvLyBtZXRob2QgImZvb2Jhcih1aW50MTI4KXVpbnQxMjgiCglwdXNoYnl0ZXMgMHhmMDFmYWNjZSAvLyBtZXRob2QgInVpbnRGcm9tSGV4KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NWFjOGEwYTAgLy8gbWV0aG9kICJ3aWRlUmF0aW9UZXN0KCl1aW50NjQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3U2NHBsdXMgKmFiaV9yb3V0ZV91NjRtaW51cyAqYWJpX3JvdXRlX3U2NG11bCAqYWJpX3JvdXRlX3U2NGRpdiAqYWJpX3JvdXRlX3UyNTZwbHVzICphYmlfcm91dGVfdTI1Nm1pbnVzICphYmlfcm91dGVfdTI1Nm11bCAqYWJpX3JvdXRlX3UyNTZkaXYgKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTYgKmFiaV9yb3V0ZV9tYXhVNjQgKmFiaV9yb3V0ZV9leHBvbmVudCAqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQgKmFiaV9yb3V0ZV91aW50OHBsdXMgKmFiaV9yb3V0ZV91aW50OGV4cCAqYWJpX3JvdXRlX3BsdXNFcXVhbHMgKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbCAqYWJpX3JvdXRlX2JveFRlc3QgKmFiaV9yb3V0ZV91bnNhZmVNZXRob2RBcmdzICphYmlfcm91dGVfdWludDI1NkNvbXBhcmlzb25UeXBlICphYmlfcm91dGVfc3F1YXJlUm9vdDI1NiAqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NCAqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludCAqYWJpX3JvdXRlX3U4VG91NjQgKmFiaV9yb3V0ZV9mdW5jTmFtZSAqYWJpX3JvdXRlX2JpZ2ludFBsdXMgKmFiaV9yb3V0ZV9iaXR3aXNlT3IgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kICphYmlfcm91dGVfYml0d2lzZVhvciAqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTYgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NiAqYWJpX3JvdXRlX2JpdHdpc2VYb3JVMjU2ICphYmlfcm91dGVfYml0d2lzZU5vdCAqYWJpX3JvdXRlX2JpdHdpc2VOb3RVMjU2ICphYmlfcm91dGVfbXVsdyAqYWJpX3JvdXRlX2FkZHcgKmFiaV9yb3V0ZV9leHB3ICphYmlfcm91dGVfZGl2dyAqYWJpX3JvdXRlX2Rpdm1vZHcgKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXMgKmFiaV9yb3V0ZV9mb29iYXIgKmFiaV9yb3V0ZV91aW50RnJvbUhleCAqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3QKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDMyIDI1NiAxNiA4IDAgMTI4IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IDIgMyA0IDUgNjQKYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4IDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiAweDYyNmY3ODRiNjU3OSAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4Njc0YjY1NzkgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNlOCAweDcyNjU3NzYxNzI2NDUwNjU3MjUzNjg2MTcyNjUgMHhGRkZGRkZGRkZGRkZGRkZGCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNy4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gdTY0cGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NHBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgdTY0cGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRwbHVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0cGx1cyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAp1NjRwbHVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNAoJLy8gcmV0dXJuIGEgKyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJKwoJcmV0c3ViCgovLyB1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NG1pbnVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHU2NG1pbnVzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHU2NG1pbnVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0bWludXMoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKdTY0bWludXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjE4CgkvLyByZXR1cm4gYSAtIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgktCglyZXRzdWIKCi8vIHU2NG11bCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3U2NG11bDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRtdWwodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgdTY0bXVsCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0bXVsKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnU2NG11bDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjIKCS8vIHJldHVybiBhICogYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSoKCXJldHN1YgoKLy8gdTY0ZGl2KHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfdTY0ZGl2OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHU2NGRpdih1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiB1NjRkaXYKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1NjRkaXYoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKdTY0ZGl2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyNgoJLy8gcmV0dXJuIGEgLyBiOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJLwoJcmV0c3ViCgovLyB1MjU2cGx1cyh1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3UyNTZwbHVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2cGx1cyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1NnBsdXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgdTI1NnBsdXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1NnBsdXMKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZwbHVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTI1NnBsdXMoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1NnBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjMwCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCXJldHN1YgoKLy8gdTI1Nm1pbnVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1Nm1pbnVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2bWludXMgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHUyNTZtaW51cyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1Nm1pbnVzCglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyB1MjU2bWludXMgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2bWludXMoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1Nm1pbnVzOgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czozNAoJLy8gcmV0dXJuIDx1aW50MjU2PihhIC0gYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWItCglyZXRzdWIKCi8vIHUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV91MjU2bXVsOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1MjU2bXVsIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1MjU2bXVsIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIHUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgdTI1Nm11bAoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTI1Nm11bCByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHUyNTZtdWwoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKdTI1Nm11bDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MzgKCS8vIHJldHVybiA8dWludDI1Nj4oYSAqIGIpOwoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQyNTYKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50MjU2CgliKgoJcmV0c3ViCgovLyB1MjU2ZGl2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdTI1NmRpdjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdTI1NmRpdiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdTI1NmRpdiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MjU2ZGl2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHUyNTZkaXYKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHUyNTZkaXYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MjU2ZGl2KGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnUyNTZkaXY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjQyCgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgLyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYi8KCXJldHN1YgoKLy8gdTY0UmV0dXJuMjU2KHVpbnQ2NCx1aW50NjQpdWludDI1NgoqYWJpX3JvdXRlX3U2NFJldHVybjI1NjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSB1NjRSZXR1cm4yNTYodWludDY0LHVpbnQ2NCl1aW50MjU2CgljYWxsc3ViIHU2NFJldHVybjI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdTY0UmV0dXJuMjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gdTY0UmV0dXJuMjU2KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDI1Ngp1NjRSZXR1cm4yNTY6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjQ2CgkvLyByZXR1cm4gPHVpbnQyNTY+KGEgKyBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWl0b2IKCXJldHN1YgoKLy8gbWF4VTY0KCl1aW50NjQKKmFiaV9yb3V0ZV9tYXhVNjQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgbWF4VTY0KCl1aW50NjQKCWNhbGxzdWIgbWF4VTY0CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gbWF4VTY0KCk6IHVpbnQ2NAptYXhVNjQ6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjUwCgkvLyByZXR1cm4gVWludDw2ND4oJzE4NDQ2NzQ0MDczNzA5NTUxNjE1Jyk7CglpbnRjIDcgLy8gMTg0NDY3NDQwNzM3MDk1NTE2MTUKCXJldHN1YgoKLy8gZXhwb25lbnQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9leHBvbmVudDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBleHBvbmVudAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGV4cG9uZW50KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmV4cG9uZW50OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo1NAoJLy8gcmV0dXJuIGEgKiogYjsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWV4cAoJcmV0c3ViCgovLyB2YXJpYWJsZVR5cGVIaW50KHVpbnQ4LHVpbnQ4KXVpbnQxNgoqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHk6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAwIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgMCAoeSkgZm9yIHZhcmlhYmxlVHlwZUhpbnQgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyB4OiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHgpIGZvciB2YXJpYWJsZVR5cGVIaW50IG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gZXhlY3V0ZSB2YXJpYWJsZVR5cGVIaW50KHVpbnQ4LHVpbnQ4KXVpbnQxNgoJY2FsbHN1YiB2YXJpYWJsZVR5cGVIaW50CglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDE2Cgk8PQoKCS8vIHZhcmlhYmxlVHlwZUhpbnQgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHZhcmlhYmxlVHlwZUhpbnQoeDogdWludDw4PiwgeTogdWludDw4Pik6IHVpbnQxNgp2YXJpYWJsZVR5cGVIaW50OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjU4CgkvLyB6ID0gPHVpbnQxNj4oeCArIHkpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIHk6IHVpbnQ8OD4KCSsKCWZyYW1lX2J1cnkgMCAvLyB6OiB1bnNhZmUgdWludDE2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo2MAoJLy8gcmV0dXJuIHo7CglmcmFtZV9kaWcgMCAvLyB6OiB1bnNhZmUgdWludDE2CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OAoqYWJpX3JvdXRlX3VpbnQ4cGx1czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdWludDhwbHVzIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gYTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdWludDhwbHVzIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gZXhlY3V0ZSB1aW50OHBsdXModWludDgsdWludDgpdWludDgKCWNhbGxzdWIgdWludDhwbHVzCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyA0IC8vIDgKCTw9CgoJLy8gdWludDhwbHVzIHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDggYml0cwoJYXNzZXJ0CglleHRyYWN0IDcgMQoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVpbnQ4cGx1cyhhOiB1aW50PDg+LCBiOiB1aW50PDg+KTogdWludDw4Pgp1aW50OHBsdXM6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjY0CgkvLyByZXR1cm4gYSArIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ8OD4KCSsKCXJldHN1YgoKLy8gdWludDhleHAodWludDgsdWludDgpdWludDgKKmFiaV9yb3V0ZV91aW50OGV4cDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDAgLy8gMQoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdWludDhleHAgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyBhOiB1aW50OAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMCAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciB1aW50OGV4cCBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIGV4ZWN1dGUgdWludDhleHAodWludDgsdWludDgpdWludDgKCWNhbGxzdWIgdWludDhleHAKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDQgLy8gOAoJPD0KCgkvLyB1aW50OGV4cCByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCA4IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA3IDEKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50OGV4cChhOiB1aW50PDg+LCBiOiB1aW50PDg+KTogdWludDw4Pgp1aW50OGV4cDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NjgKCS8vIHJldHVybiBhICoqIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDw4PgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ8OD4KCWV4cAoJcmV0c3ViCgovLyBwbHVzRXF1YWxzKHVpbnQ2NCx1aW50NjQpdWludDY0CiphYmlfcm91dGVfcGx1c0VxdWFsczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBwbHVzRXF1YWxzKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHBsdXNFcXVhbHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBwbHVzRXF1YWxzKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnBsdXNFcXVhbHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6NzIKCS8vIHggPSBhCglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9idXJ5IDAgLy8geDogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo3NAoJLy8geCArPSBiCglmcmFtZV9kaWcgMCAvLyB4OiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMCAvLyB4OiB1aW50NjQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjc2CgkvLyByZXR1cm4geDsKCWZyYW1lX2RpZyAwIC8vIHg6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwbHVzRXF1YWxzRnJvbUdsb2JhbCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3BsdXNFcXVhbHNGcm9tR2xvYmFsOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIHBsdXNFcXVhbHNGcm9tR2xvYmFsCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gcGx1c0VxdWFsc0Zyb21HbG9iYWwoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKcGx1c0VxdWFsc0Zyb21HbG9iYWw6Cglwcm90byAyIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjgwCgkvLyB0aGlzLmdLZXkudmFsdWUgPSBhCglieXRlYyA1IC8vICAiZ0tleSIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo4MgoJLy8gdGhpcy5nS2V5LnZhbHVlICs9IGIKCWJ5dGVjIDUgLy8gICJnS2V5IgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCSsKCWJ5dGVjIDUgLy8gICJnS2V5IgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjg0CgkvLyByZXR1cm4gdGhpcy5nS2V5LnZhbHVlOwoJYnl0ZWMgNSAvLyAgImdLZXkiCglhcHBfZ2xvYmFsX2dldAoJcmV0c3ViCgovLyBib3hUZXN0KCl1aW50MjU2CiphYmlfcm91dGVfYm94VGVzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib3hUZXN0KCl1aW50MjU2CgljYWxsc3ViIGJveFRlc3QKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIGJveFRlc3QgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib3hUZXN0KCk6IHVpbnQyNTYKYm94VGVzdDoKCXByb3RvIDAgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6OTAKCS8vIHRoaXMuYm94S2V5LnZhbHVlID0gPHVpbnQyNTY+MQoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJ5dGVjIDYgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo5MQoJLy8gdGhpcy5ib3hLZXkudmFsdWUgKz0gMQoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuYm94S2V5LnZhbHVlCglhc3NlcnQKCWJ5dGVjIDYgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCgliKwoJYnl0ZWMgMyAvLyAgImJveEtleSIKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHRoaXMuYm94S2V5LnZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCXN3YXAKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjkzCgkvLyByZXR1cm4gdGhpcy5ib3hLZXkudmFsdWU7CglieXRlYyAzIC8vICAiYm94S2V5IgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5ib3hLZXkudmFsdWUKCWFzc2VydAoJcmV0c3ViCgovLyBmb28oeDogdWludDI1Nik6IHVpbnQyNTYKZm9vOgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czo5NwoJLy8gcmV0dXJuIHg7CglmcmFtZV9kaWcgLTEgLy8geDogdWludDI1NgoJcmV0c3ViCgovLyB1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfdW5zYWZlTWV0aG9kQXJnczoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChiKSBmb3IgdW5zYWZlTWV0aG9kQXJncyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gYTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAxIChhKSBmb3IgdW5zYWZlTWV0aG9kQXJncyBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2CgljYWxsc3ViIHVuc2FmZU1ldGhvZEFyZ3MKCWR1cAoJYml0bGVuCglpbnRjIDIgLy8gMjU2Cgk8PQoKCS8vIHVuc2FmZU1ldGhvZEFyZ3MgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1bnNhZmVNZXRob2RBcmdzKGE6IHVpbnQyNTYsIGI6IHVpbnQyNTYpOiB1aW50MjU2CnVuc2FmZU1ldGhvZEFyZ3M6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAxCgkvLyBjID0gYSArIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYisKCWZyYW1lX2J1cnkgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTAzCgkvLyByZXR1cm4gdGhpcy5mb28oYyk7CglmcmFtZV9kaWcgMCAvLyBjOiB1bnNhZmUgdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYyBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljYWxsc3ViIGZvbwoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyB1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQKKmFiaV9yb3V0ZV91aW50MjU2Q29tcGFyaXNvblR5cGU6CgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciB1aW50MjU2Q29tcGFyaXNvblR5cGUgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHVpbnQyNTZDb21wYXJpc29uVHlwZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQKCWNhbGxzdWIgdWludDI1NkNvbXBhcmlzb25UeXBlCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50MjU2Q29tcGFyaXNvblR5cGUoYTogdWludDI1NiwgYjogdWludDI1Nik6IHZvaWQKdWludDI1NkNvbXBhcmlzb25UeXBlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEwNwoJLy8gc2VuZGVyQmFsYW5jZUFmdGVyID0gYSAtIGIKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYi0KCWZyYW1lX2J1cnkgMCAvLyBzZW5kZXJCYWxhbmNlQWZ0ZXI6IHVuc2FmZSB1aW50MjU2CgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTA4CgkvLyBzZW5kZXJCYWxhbmNlQWZ0ZXIgPiA8dWludDI1Nj4wCglmcmFtZV9kaWcgMCAvLyBzZW5kZXJCYWxhbmNlQWZ0ZXI6IHVuc2FmZSB1aW50MjU2CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCgliPgoJYnogKmlmMF9lbHNlCgoJLy8gKmlmMF9jb25zZXF1ZW50CgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEwOQoJLy8gbG9nKCdub25aZXJvJykKCXB1c2hieXRlcyAweDZlNmY2ZTVhNjU3MjZmIC8vICJub25aZXJvIgoJbG9nCgliICppZjBfZW5kCgoqaWYwX2Vsc2U6CgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjExMQoJLy8gbG9nKCd6ZXJvJykKCXB1c2hieXRlcyAweDdhNjU3MjZmIC8vICJ6ZXJvIgoJbG9nCgoqaWYwX2VuZDoKCXJldHN1YgoKLy8gc3F1YXJlUm9vdDI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoqYWJpX3JvdXRlX3NxdWFyZVJvb3QyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIHNxdWFyZVJvb3QyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoYSkgZm9yIHNxdWFyZVJvb3QyNTYgbXVzdCBiZSBhIHVpbnQyNTYKCWFzc2VydAoKCS8vIGV4ZWN1dGUgc3F1YXJlUm9vdDI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBzcXVhcmVSb290MjU2CglkdXAKCWJpdGxlbgoJaW50YyAyIC8vIDI1NgoJPD0KCgkvLyBzcXVhcmVSb290MjU2IHJldHVybiB2YWx1ZSBvdmVyZmxvd2VkIDI1NiBiaXRzCglhc3NlcnQKCWJ5dGVjIDIgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAxIC8vIDMyCgktCglzd2FwCglzdWJzdHJpbmczCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gc3F1YXJlUm9vdDI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpzcXVhcmVSb290MjU2OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMTYKCS8vIHJldHVybiBzcXJ0KGEgKiBiKTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50MjU2CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDI1NgoJYioKCWJzcXJ0CglyZXRzdWIKCi8vIHNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzcXVhcmVSb290NjQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgc3F1YXJlUm9vdDY0CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gc3F1YXJlUm9vdDY0KGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CnNxdWFyZVJvb3Q2NDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTIwCgkvLyByZXR1cm4gc3FydChhICogYik7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkqCglzcXJ0CglyZXRzdWIKCi8vIGFkZHJlc3NUb0JpZ0ludChhZGRyZXNzKWJvb2wKKmFiaV9yb3V0ZV9hZGRyZXNzVG9CaWdJbnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGFkZHI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYWRkcikgZm9yIGFkZHJlc3NUb0JpZ0ludCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRyZXNzVG9CaWdJbnQoYWRkcmVzcylib29sCgljYWxsc3ViIGFkZHJlc3NUb0JpZ0ludAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgNSAvLyAwCgl1bmNvdmVyIDIKCXNldGJpdAoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGFkZHJlc3NUb0JpZ0ludChhZGRyOiBBZGRyZXNzKTogYm9vbGVhbgphZGRyZXNzVG9CaWdJbnQ6Cglwcm90byAxIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEyNAoJLy8gcmV0dXJuIGJ0b2JpZ2ludChhZGRyKSA+IGJ0b2JpZ2ludCh0aGlzLnR4bi5zZW5kZXIpOwoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCXR4biBTZW5kZXIKCWI+CglyZXRzdWIKCi8vIHU4VG91NjQoKXVpbnQ2NAoqYWJpX3JvdXRlX3U4VG91NjQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgdThUb3U2NCgpdWludDY0CgljYWxsc3ViIHU4VG91NjQKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1OFRvdTY0KCk6IHVpbnQ2NAp1OFRvdTY0OgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjEyOAoJLy8geDogdWludDggPSA3CglwdXNoaW50IDcKCWZyYW1lX2J1cnkgMCAvLyB4OiB1aW50OAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTI5CgkvLyByZXR1cm4gPHVpbnQ2ND54OwoJZnJhbWVfZGlnIDAgLy8geDogdWludDgKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gcHJpdmF0ZUZ1bmNOYW1lKHg6IHVpbnQ4LCB5OiB1aW50NjQpOiB2b2lkCnByaXZhdGVGdW5jTmFtZToKCXByb3RvIDIgMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTMzCgkvLyBhc3NlcnQoPHVpbnQ4PnkgPiB4KQoJZnJhbWVfZGlnIC0yIC8vIHk6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHg6IHVpbnQ4Cgk+Cglhc3NlcnQKCXJldHN1YgoKLy8gZnVuY05hbWUodWludDI1Nil2b2lkCiphYmlfcm91dGVfZnVuY05hbWU6CgkvLyB4OiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHgpIGZvciBmdW5jTmFtZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBmdW5jTmFtZSh1aW50MjU2KXZvaWQKCWNhbGxzdWIgZnVuY05hbWUKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGZ1bmNOYW1lKHg6IHVpbnQyNTYpOiB2b2lkCmZ1bmNOYW1lOgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxMzcKCS8vIHRoaXMucHJpdmF0ZUZ1bmNOYW1lKDx1aW50OD54LCAxMzM3KQoJcHVzaGludCAxMzM3CglmcmFtZV9kaWcgLTEgLy8geDogdWludDI1NgoJZHVwCgliaXRsZW4KCWludGMgNCAvLyA4Cgk8PQoKCS8vIDx1aW50OD54IG92ZXJmbG93ZWQgOCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgMzEgMQoJYnRvaQoJY2FsbHN1YiBwcml2YXRlRnVuY05hbWUKCXJldHN1YgoKLy8gYmlnaW50UGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpZ2ludFBsdXM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYmlnaW50UGx1cyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBiaWdpbnRQbHVzCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYmlnaW50UGx1cyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApiaWdpbnRQbHVzOgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQxCgkvLyB4ID0gaXRvYihhKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfYnVyeSAwIC8vIHg6IGJ5dGVbXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQyCgkvLyB5ID0gaXRvYihiKQoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfYnVyeSAxIC8vIHk6IGJ5dGVbXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQzCgkvLyByZXR1cm4gKGJ0b2JpZ2ludCh4KSArIGJ0b2JpZ2ludCh5KSkgYXMgdWludDY0OwoJZnJhbWVfZGlnIDAgLy8geDogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyB5OiBieXRlW10KCWIrCglkdXAKCWJpdGxlbgoJaW50YyAxMiAvLyA2NAoJPD0KCgkvLyAoYnRvYmlnaW50KHgpICsgYnRvYmlnaW50KHkpKSBhcyB1aW50NjQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA0IC8vIDgKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWJ0b2kKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAxCglyZXRzdWIKCi8vIGJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VPcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gYjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gYTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBiaXR3aXNlT3IodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZU9yCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYml0d2lzZU9yKGE6IHVpbnQ2NCwgYjogdWludDY0KTogdWludDY0CmJpdHdpc2VPcjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTQ3CgkvLyByZXR1cm4gYSB8IGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0Cgl8CglyZXRzdWIKCi8vIGJpdHdpc2VBbmQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9iaXR3aXNlQW5kOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VBbmQodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZUFuZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VBbmQoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZUFuZDoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTUxCgkvLyByZXR1cm4gYSAmIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgkmCglyZXRzdWIKCi8vIGJpdHdpc2VYb3IodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9iaXR3aXNlWG9yOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBhOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGJpdHdpc2VYb3IodWludDY0LHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgYml0d2lzZVhvcgoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VYb3IoYTogdWludDY0LCBiOiB1aW50NjQpOiB1aW50NjQKYml0d2lzZVhvcjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTU1CgkvLyByZXR1cm4gYSBeIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CgleCglyZXRzdWIKCi8vIGJpdHdpc2VPclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKKmFiaV9yb3V0ZV9iaXR3aXNlT3JVMjU2OgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBiOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGIpIGZvciBiaXR3aXNlT3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlT3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VPclUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYKCWNhbGxzdWIgYml0d2lzZU9yVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZU9yVTI1NiByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAyNTYgYml0cwoJYXNzZXJ0CglieXRlYyAyIC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMSAvLyAzMgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGJpdHdpc2VPclUyNTYoYTogdWludDI1NiwgYjogdWludDI1Nik6IHVpbnQyNTYKYml0d2lzZU9yVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTU5CgkvLyByZXR1cm4gYSB8IGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWJ8CglyZXRzdWIKCi8vIGJpdHdpc2VBbmRVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZUFuZFUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VBbmRVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlQW5kVTI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBiaXR3aXNlQW5kVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlQW5kVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZUFuZFUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlQW5kVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlQW5kVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTYzCgkvLyByZXR1cm4gYSAmIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWImCglyZXRzdWIKCi8vIGJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZVhvclUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYikgZm9yIGJpdHdpc2VYb3JVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBhOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAxIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGEpIGZvciBiaXR3aXNlWG9yVTI1NiBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBiaXR3aXNlWG9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlWG9yVTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZVhvclUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlWG9yVTI1NihhOiB1aW50MjU2LCBiOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlWG9yVTI1NjoKCXByb3RvIDIgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTY3CgkvLyByZXR1cm4gYSBeIGI7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQyNTYKCWJeCglyZXRzdWIKCi8vIGJpdHdpc2VOb3QodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2JpdHdpc2VOb3Q6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYml0d2lzZU5vdCh1aW50NjQpdWludDY0CgljYWxsc3ViIGJpdHdpc2VOb3QKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlTm90KGE6IHVpbnQ2NCk6IHVpbnQ2NApiaXR3aXNlTm90OgoJcHJvdG8gMSAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoxNzEKCS8vIHJldHVybiB+YTsKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCX4KCXJldHN1YgoKLy8gYml0d2lzZU5vdFUyNTYodWludDI1Nil1aW50MjU2CiphYmlfcm91dGVfYml0d2lzZU5vdFUyNTY6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGE6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDEgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYSkgZm9yIGJpdHdpc2VOb3RVMjU2IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NgoJY2FsbHN1YiBiaXR3aXNlTm90VTI1NgoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gYml0d2lzZU5vdFUyNTYgcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBiaXR3aXNlTm90VTI1NihhOiB1aW50MjU2KTogdWludDI1NgpiaXR3aXNlTm90VTI1NjoKCXByb3RvIDEgMQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTc1CgkvLyByZXR1cm4gfmE7CglmcmFtZV9kaWcgLTEgLy8gYTogdWludDI1NgoJYn4KCXJldHN1YgoKLy8gbXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX211bHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBtdWx3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gbXVsdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAptdWx3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTc5CgkvLyBwID0gbXVsdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTgzCgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2FkZHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBhZGR3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYWRkdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NAphZGR3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTg3CgkvLyBwID0gYWRkdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJYWRkdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTkxCgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2V4cHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBleHB3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZXhwdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApleHB3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTk1CgkvLyBwID0gZXhwdyhhLCBiKQoJZnJhbWVfZGlnIC0xIC8vIGE6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGI6IHVpbnQ2NAoJZXhwdwoJZnJhbWVfYnVyeSAwIC8vIHAgbG93OiB1aW50NjQKCWZyYW1lX2J1cnkgMSAvLyBwIGhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MTk5CgkvLyByZXR1cm4gcDIubG93OwoJZnJhbWVfZGlnIDAgLy8gcCBsb3c6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2Rpdnc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBkaXZ3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZGl2dyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApkaXZ3OgoJcHJvdG8gMiAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMDMKCS8vIHJldHVybiBkaXZ3KDAsIGEsIGIpOwoJaW50YyA1IC8vIDAKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBiOiB1aW50NjQKCWRpdncKCXJldHN1YgoKLy8gZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2Rpdm1vZHc6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIGI6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGE6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NAoJY2FsbHN1YiBkaXZtb2R3CglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZGl2bW9kdyhhOiB1aW50NjQsIGI6IHVpbnQ2NCk6IHVpbnQ2NApkaXZtb2R3OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMwoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjA3CgkvLyBwID0gZGl2bW9kdygwLCBhLCAwLCBiKQoJaW50YyA1IC8vIDAKCWZyYW1lX2RpZyAtMSAvLyBhOiB1aW50NjQKCWludGMgNSAvLyAwCglmcmFtZV9kaWcgLTIgLy8gYjogdWludDY0CglkaXZtb2R3CglmcmFtZV9idXJ5IDAgLy8gcCByZW1haW5kZXJMb3c6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxIC8vIHAgcmVtYWluZGVySGlnaDogdWludDY0CglmcmFtZV9idXJ5IDIgLy8gcCBxdW90aWVudExvdzogdWludDY0CglmcmFtZV9idXJ5IDMgLy8gcCBxdW90aWVudEhpZ2g6IHVpbnQ2NAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjExCgkvLyByZXR1cm4gcDIucXVvdGllbnRMb3c7CglmcmFtZV9kaWcgMiAvLyBwIHF1b3RpZW50TG93OiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiAzCglyZXRzdWIKCi8vIHVuc2FmZVZhcmlhYmxlcygpdWludDY0CiphYmlfcm91dGVfdW5zYWZlVmFyaWFibGVzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIHVuc2FmZVZhcmlhYmxlcygpdWludDY0CgljYWxsc3ViIHVuc2FmZVZhcmlhYmxlcwoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHVuc2FmZVZhcmlhYmxlcygpOiB1aW50NjQKdW5zYWZlVmFyaWFibGVzOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjE1CgkvLyBBID0gPHVpbnQyNTY+MjUwMDAwMDAwCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlZTZiMjgwCglmcmFtZV9idXJ5IDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIxNgoJLy8gQiA9IDx1aW50MjU2PjEwMDAKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM2U4CglmcmFtZV9idXJ5IDEgLy8gQjogdWludDI1NgoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjE4CgkvLyBBID0gQSAvIEIKCWZyYW1lX2RpZyAwIC8vIEE6IHVuc2FmZSB1aW50MjU2CglieXRlYyA3IC8vICBCOiB1aW50MjU2CgliLwoJZnJhbWVfYnVyeSAwIC8vIEE6IHVuc2FmZSB1aW50MjU2CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjAKCS8vIGMgPSBBIGFzIHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gQTogdW5zYWZlIHVpbnQyNTYKCWR1cAoJYml0bGVuCglpbnRjIDEyIC8vIDY0Cgk8PQoKCS8vIEEgYXMgdWludDY0IG92ZXJmbG93ZWQgNjQgYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNCAvLyA4CgktCglzd2FwCglzdWJzdHJpbmczCglidG9pCglmcmFtZV9idXJ5IDIgLy8gYzogdWludDY0CgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMjIKCS8vIHJldHVybiBjOwoJZnJhbWVfZGlnIDIgLy8gYzogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBmb29iYXIodWludDEyOCl1aW50MTI4CiphYmlfcm91dGVfZm9vYmFyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAwIC8vIDB4MTUxZjdjNzUKCgkvLyB4OiB1aW50MTI4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDE2Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHgpIGZvciBmb29iYXIgbXVzdCBiZSBhIHVpbnQxMjgKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZm9vYmFyKHVpbnQxMjgpdWludDEyOAoJY2FsbHN1YiBmb29iYXIKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIGZvb2JhciByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBmb29iYXIoeDogdWludDEyOCk6IHVpbnQxMjgKZm9vYmFyOgoJcHJvdG8gMSAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyNgoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgLTEgLy8geDogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc1MzAKCWIvCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB4IC8gKDMwMDAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgNCAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyAzIC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDAgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIyOAoJLy8gcmV0dXJuIGF2Z1N0YWtlOwoJZnJhbWVfZGlnIDAgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gdWludEZyb21IZXgoKXVpbnQyNTYKKmFiaV9yb3V0ZV91aW50RnJvbUhleDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB1aW50RnJvbUhleCgpdWludDI1NgoJY2FsbHN1YiB1aW50RnJvbUhleAoJZHVwCgliaXRsZW4KCWludGMgMiAvLyAyNTYKCTw9CgoJLy8gdWludEZyb21IZXggcmV0dXJuIHZhbHVlIG92ZXJmbG93ZWQgMjU2IGJpdHMKCWFzc2VydAoJYnl0ZWMgMiAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDEgLy8gMzIKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1aW50RnJvbUhleCgpOiB1aW50MjU2CnVpbnRGcm9tSGV4OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL21hdGguYWxnby50czoyMzIKCS8vIHJldHVybiBVaW50PDI1Nj4oJzB4RkYnKTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmYKCXJldHN1YgoKLy8gd2lkZVJhdGlvVGVzdCgpdWludDY0CiphYmlfcm91dGVfd2lkZVJhdGlvVGVzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMCAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSB3aWRlUmF0aW9UZXN0KCl1aW50NjQKCWNhbGxzdWIgd2lkZVJhdGlvVGVzdAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHdpZGVSYXRpb1Rlc3QoKTogdWludDY0CndpZGVSYXRpb1Rlc3Q6Cglwcm90byAwIDEKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjIzNgoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbVWludDw2ND4oJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JyksIDIsIDMsIDQsIDVdLCBbMiwgMywgNCwgNV0pOwoJaW50YyA3IC8vIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CglpbnRjIDggLy8gMgoJbXVsdwoJaW50YyA5IC8vIDMKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWludGMgMTAgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMSAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglpbnRjIDggLy8gMgoJaW50YyA5IC8vIDMKCW11bHcKCWludGMgMTAgLy8gNAoJdW5jb3ZlciAyCglkaWcgMQoJKgoJY292ZXIgMgoJbXVsdwoJY292ZXIgMgoJKwoJc3dhcAoJaW50YyAxMSAvLyA1Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJcmV0c3ViCgovLyB1MTI4SW5UdXBsZSgodWludDY0LHVpbnQ2NCx1aW50MTI4KSx1aW50MTI4LHVpbnQ2NCl1aW50MTI4CiphYmlfcm91dGVfdTEyOEluVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDAgLy8gMHgxNTFmN2M3NQoKCS8vIHNjYWxlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBhY2NScHM6IHVpbnQxMjgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDMgLy8gMTYKCT09CgoJLy8gYXJndW1lbnQgMSAoYWNjUnBzKSBmb3IgdTEyOEluVHVwbGUgbXVzdCBiZSBhIHVpbnQxMjgKCWFzc2VydAoKCS8vIHVzZXJEYXRhOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMSAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAyICh1c2VyRGF0YSkgZm9yIHUxMjhJblR1cGxlIG11c3QgYmUgYSAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSB1MTI4SW5UdXBsZSgodWludDY0LHVpbnQ2NCx1aW50MTI4KSx1aW50MTI4LHVpbnQ2NCl1aW50MTI4CgljYWxsc3ViIHUxMjhJblR1cGxlCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB1MTI4SW5UdXBsZSByZXR1cm4gdmFsdWUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyB1MTI4SW5UdXBsZSh1c2VyRGF0YTogVXNlckRhdGEsIGFjY1JwczogdWludDEyOCwgc2NhbGU6IHVpbnQ2NCk6IHVpbnQxMjgKdTEyOEluVHVwbGU6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQyCgkvLyB0aGlzLmFjY1JQUy52YWx1ZSA9IGFjY1JwcwoJYnl0ZWMgOCAvLyAgInJld2FyZFBlclNoYXJlIgoJZnJhbWVfZGlnIC0yIC8vIGFjY1JwczogdWludDEyOAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvbWF0aC5hbGdvLnRzOjI0MwoJLy8gcmV0VmFsID0gY2xvbmUodXNlckRhdGEpCglmcmFtZV9kaWcgLTEgLy8gdXNlckRhdGE6IFVzZXJEYXRhCglmcmFtZV9idXJ5IDAgLy8gcmV0VmFsOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQ1CgkvLyByZXRWYWwucmV3YXJkRGVidCA9ICgodXNlckRhdGEuc3Rha2UgYXMgdWludDEyOCkgKiAodGhpcy5hY2NSUFMudmFsdWUgYXMgdWludDEyOCkpIC8gKHNjYWxlIGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyByZXRWYWw6ICh1aW50NjQsdWludDY0LHVpbnQxMjgpCglpbnRjIDMgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyB1c2VyRGF0YTogVXNlckRhdGEKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglieXRlYyA4IC8vICAicmV3YXJkUGVyU2hhcmUiCglhcHBfZ2xvYmFsX2dldAoJYioKCWZyYW1lX2RpZyAtMyAvLyBzY2FsZTogdWludDY0CglpdG9iCgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gcmV0VmFsLnJld2FyZERlYnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA0IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDMgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDAgLy8gcmV0VmFsOiAodWludDY0LHVpbnQ2NCx1aW50MTI4KQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9tYXRoLmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gcmV0VmFsLnJld2FyZERlYnQ7CglmcmFtZV9kaWcgMCAvLyByZXRWYWw6ICh1aW50NjQsdWludDY0LHVpbnQxMjgpCglleHRyYWN0IDE2IDE2CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4M2NlNmYxYWYgLy8gbWV0aG9kICJ1NjRwbHVzKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDAzMWExODYgLy8gbWV0aG9kICJ1NjRtaW51cyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGU1MmU0Mzk0IC8vIG1ldGhvZCAidTY0bXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OTUwZDQ3ODkgLy8gbWV0aG9kICJ1NjRkaXYodWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg2NWJkZGE2ZSAvLyBtZXRob2QgInUyNTZwbHVzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4MGE2YWQyODQgLy8gbWV0aG9kICJ1MjU2bWludXModWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMDQ0YmYyNCAvLyBtZXRob2QgInUyNTZtdWwodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhjNDhmOGMwNSAvLyBtZXRob2QgInUyNTZkaXYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHhmMmUxZDYzMiAvLyBtZXRob2QgInU2NFJldHVybjI1Nih1aW50NjQsdWludDY0KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgzOGIxYTM5ZSAvLyBtZXRob2QgIm1heFU2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4NmMxMzZmMWQgLy8gbWV0aG9kICJleHBvbmVudCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyZGEyNTAyIC8vIG1ldGhvZCAidmFyaWFibGVUeXBlSGludCh1aW50OCx1aW50OCl1aW50MTYiCglwdXNoYnl0ZXMgMHhhMmZlYWQ2YyAvLyBtZXRob2QgInVpbnQ4cGx1cyh1aW50OCx1aW50OCl1aW50OCIKCXB1c2hieXRlcyAweGQyMjU2ZjdhIC8vIG1ldGhvZCAidWludDhleHAodWludDgsdWludDgpdWludDgiCglwdXNoYnl0ZXMgMHhjMTdkNjI0ZSAvLyBtZXRob2QgInBsdXNFcXVhbHModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1Y2FiMDQzOCAvLyBtZXRob2QgInBsdXNFcXVhbHNGcm9tR2xvYmFsKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4NTg5ODljY2QgLy8gbWV0aG9kICJib3hUZXN0KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NDgzMGI0ZGUgLy8gbWV0aG9kICJ1bnNhZmVNZXRob2RBcmdzKHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTFjNTVjZTUgLy8gbWV0aG9kICJ1aW50MjU2Q29tcGFyaXNvblR5cGUodWludDI1Nix1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHg3ZDFkNDI2ZSAvLyBtZXRob2QgInNxdWFyZVJvb3QyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgxYzI5ODFmMSAvLyBtZXRob2QgInNxdWFyZVJvb3Q2NCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGI3Y2EwNGI5IC8vIG1ldGhvZCAiYWRkcmVzc1RvQmlnSW50KGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGJiOTUyMzM4IC8vIG1ldGhvZCAidThUb3U2NCgpdWludDY0IgoJcHVzaGJ5dGVzIDB4MDEyOGUyN2IgLy8gbWV0aG9kICJmdW5jTmFtZSh1aW50MjU2KXZvaWQiCglwdXNoYnl0ZXMgMHhmOTE2Y2RiMyAvLyBtZXRob2QgImJpZ2ludFBsdXModWludDY0LHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHg1MjczNzU0NSAvLyBtZXRob2QgImJpdHdpc2VPcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDc5YzFhZGMwIC8vIG1ldGhvZCAiYml0d2lzZUFuZCh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDIyNDc0YWJjIC8vIG1ldGhvZCAiYml0d2lzZVhvcih1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDA1OTNmZGY4IC8vIG1ldGhvZCAiYml0d2lzZU9yVTI1Nih1aW50MjU2LHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDA2ZmI5MzM3IC8vIG1ldGhvZCAiYml0d2lzZUFuZFUyNTYodWludDI1Nix1aW50MjU2KXVpbnQyNTYiCglwdXNoYnl0ZXMgMHgyNjQ5M2Q3OCAvLyBtZXRob2QgImJpdHdpc2VYb3JVMjU2KHVpbnQyNTYsdWludDI1Nil1aW50MjU2IgoJcHVzaGJ5dGVzIDB4ZTljMjJlZWEgLy8gbWV0aG9kICJiaXR3aXNlTm90KHVpbnQ2NCl1aW50NjQiCglwdXNoYnl0ZXMgMHhlZGUzZTliYyAvLyBtZXRob2QgImJpdHdpc2VOb3RVMjU2KHVpbnQyNTYpdWludDI1NiIKCXB1c2hieXRlcyAweDJlNGEyMTY0IC8vIG1ldGhvZCAibXVsdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDUwMTM0YjVhIC8vIG1ldGhvZCAiYWRkdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGY1M2FmZjliIC8vIG1ldGhvZCAiZXhwdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGNhZjcxMTBkIC8vIG1ldGhvZCAiZGl2dyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweGJlZDBlMzg2IC8vIG1ldGhvZCAiZGl2bW9kdyh1aW50NjQsdWludDY0KXVpbnQ2NCIKCXB1c2hieXRlcyAweDI3NGQ3NzA1IC8vIG1ldGhvZCAidW5zYWZlVmFyaWFibGVzKCl1aW50NjQiCglwdXNoYnl0ZXMgMHg5MjQ2NWQwOCAvLyBtZXRob2QgImZvb2Jhcih1aW50MTI4KXVpbnQxMjgiCglwdXNoYnl0ZXMgMHhmMDFmYWNjZSAvLyBtZXRob2QgInVpbnRGcm9tSGV4KCl1aW50MjU2IgoJcHVzaGJ5dGVzIDB4NWFjOGEwYTAgLy8gbWV0aG9kICJ3aWRlUmF0aW9UZXN0KCl1aW50NjQiCglwdXNoYnl0ZXMgMHhjZmIwMDY5MiAvLyBtZXRob2QgInUxMjhJblR1cGxlKCh1aW50NjQsdWludDY0LHVpbnQxMjgpLHVpbnQxMjgsdWludDY0KXVpbnQxMjgiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3U2NHBsdXMgKmFiaV9yb3V0ZV91NjRtaW51cyAqYWJpX3JvdXRlX3U2NG11bCAqYWJpX3JvdXRlX3U2NGRpdiAqYWJpX3JvdXRlX3UyNTZwbHVzICphYmlfcm91dGVfdTI1Nm1pbnVzICphYmlfcm91dGVfdTI1Nm11bCAqYWJpX3JvdXRlX3UyNTZkaXYgKmFiaV9yb3V0ZV91NjRSZXR1cm4yNTYgKmFiaV9yb3V0ZV9tYXhVNjQgKmFiaV9yb3V0ZV9leHBvbmVudCAqYWJpX3JvdXRlX3ZhcmlhYmxlVHlwZUhpbnQgKmFiaV9yb3V0ZV91aW50OHBsdXMgKmFiaV9yb3V0ZV91aW50OGV4cCAqYWJpX3JvdXRlX3BsdXNFcXVhbHMgKmFiaV9yb3V0ZV9wbHVzRXF1YWxzRnJvbUdsb2JhbCAqYWJpX3JvdXRlX2JveFRlc3QgKmFiaV9yb3V0ZV91bnNhZmVNZXRob2RBcmdzICphYmlfcm91dGVfdWludDI1NkNvbXBhcmlzb25UeXBlICphYmlfcm91dGVfc3F1YXJlUm9vdDI1NiAqYWJpX3JvdXRlX3NxdWFyZVJvb3Q2NCAqYWJpX3JvdXRlX2FkZHJlc3NUb0JpZ0ludCAqYWJpX3JvdXRlX3U4VG91NjQgKmFiaV9yb3V0ZV9mdW5jTmFtZSAqYWJpX3JvdXRlX2JpZ2ludFBsdXMgKmFiaV9yb3V0ZV9iaXR3aXNlT3IgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kICphYmlfcm91dGVfYml0d2lzZVhvciAqYWJpX3JvdXRlX2JpdHdpc2VPclUyNTYgKmFiaV9yb3V0ZV9iaXR3aXNlQW5kVTI1NiAqYWJpX3JvdXRlX2JpdHdpc2VYb3JVMjU2ICphYmlfcm91dGVfYml0d2lzZU5vdCAqYWJpX3JvdXRlX2JpdHdpc2VOb3RVMjU2ICphYmlfcm91dGVfbXVsdyAqYWJpX3JvdXRlX2FkZHcgKmFiaV9yb3V0ZV9leHB3ICphYmlfcm91dGVfZGl2dyAqYWJpX3JvdXRlX2Rpdm1vZHcgKmFiaV9yb3V0ZV91bnNhZmVWYXJpYWJsZXMgKmFiaV9yb3V0ZV9mb29iYXIgKmFiaV9yb3V0ZV91aW50RnJvbUhleCAqYWJpX3JvdXRlX3dpZGVSYXRpb1Rlc3QgKmFiaV9yb3V0ZV91MTI4SW5UdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiANASCAAggAEP///////////wECAwQFQIABJgkEFR98dQAg//////////////////////////////////////////8GYm94S2V5BGdLZXkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+gQ/////////////////////wj//////////zEYFIEGCzEZCI0MB0YAAAAAAAAAAAAABzgAAAAAAAAAAAAAACg2GgIXNhoBF4gABRZQsCJDigIBi/+L/giJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+CYkoNhoCFzYaAReIAAUWULAiQ4oCAYv/i/4LiSg2GgIXNhoBF4gABRZQsCJDigIBi/+L/gqJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+oIkoNhoCSRUjEkQ2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oCAYv/i/6hiSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBi/+L/qOJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+ookoNhoCFzYaAReIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+CBaJKIgABRZQsCJDigABIQaJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+lIkoNhoCSRUiEkQXNhoBSRUiEkQXiAAOFkmTIQUORFcGAlCwIkOKAgEpi/+L/giMAIsAjACJKDYaAkkVIhJEFzYaAUkVIhJEF4gADRZJkyUORFcHAVCwIkOKAgGL/4v+CIkoNhoCSRUiEkQXNhoBSRUiEkQXiAANFkmTJQ5EVwcBULAiQ4oCAYv/i/6UiSg2GgIXNhoBF4gABRZQsCJDigIBKYv/jACLAIv+CIwAiwCMAIkoNhoCFzYaAReIAAUWULAiQ4oCAScEi/9nJwRki/4IJwRMZycEZIkoiAASSZMkDkQqrEkVSSMJTFJQsCJDigABKycFvyu+RCcFoCtJkyQORCqsSRVJIwlMUky/K75EiYoBAYv/iSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBKYv/i/6gjACLAEmTJA5EKqxJFUkjCUxSiP+2jACJNhoCSRUjEkQ2GgFJFSMSRIgAAiJDigIAKYv/i/6hjACLAIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClQQANgAdub25aZXJvsEIAB4AEemVyb7CJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+o5aJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+C5KJKDYaAUkVIxJEiAAMgAEAIQRPAlRQsCJDigEBi/8xAKWJKIgABRZQsCJDigABKYEHjACLAIwAiYoCAIv+i/8NRIk2GgFJFSMSRIgAAiJDigEAgbkKi/9JkyUORFcfAReI/9WJKDYaAhc2GgEXiAAFFlCwIkOKAgEpSYv/FowAi/4WjAGLAIsBoEmTIQsORCcIrEkVSSUJTFIXjABGAYkoNhoCFzYaAReIAAUWULAiQ4oCAYv/i/4ZiSg2GgIXNhoBF4gABRZQsCJDigIBi/+L/hqJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+G4koNhoCSRUjEkQ2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oCAYv/i/6riSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBi/+L/qyJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+rYkoNhoBF4gABRZQsCJDigEBi/8ciSg2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oBAYv/rokoNhoCFzYaAReIAAUWULAiQ4oCASlJi/+L/h2MAIwBiwCMAEYBiSg2GgIXNhoBF4gABRZQsCJDigIBKUmL/4v+HowAjAGLAIwARgGJKDYaAhc2GgEXiAAFFlCwIkOKAgEpSYv/i/6VjACMAYsAjABGAYkoNhoCFzYaAReIAAUWULAiQ4oCASEEi/+L/peJKDYaAhc2GgEXiAAFFlCwIkOKAgEpRwMhBIv/IQSL/h+MAIwBjAKMA4sCjABGA4koiAAFFlCwIkOKAAEpRwKAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5rKAjAAnBowBiwAnBqKMAIsASZMhCw5EJwisSRVJJQlMUheMAosCjABGAokoNhoBSRUhBRJEiAAVSZMhDA5EJwesSRVJIQUJTFJQsCJDigEBKYv/gBAAAAAAAAAAAAAAAAAAAHUwokmTIQwORCcHrEkVSSEFCUxSjACLAIwAiSiIABJJkyQORCqsSRVJIwlMUlCwIkOKAAGAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iSiIAAUWULAiQ4oAASEGIQcdIQhPAksBC04CHU4CCEwhCU8CSwELTgIdTgIITCEKTwJLAQtOAh1OAghMIQchCB0hCU8CSwELTgIdTgIITCEKTwJLAQtOAh1OAghMH0hITBREiSJDgAS4RHs2NhoAjgH/8QCABDzm8a+ABAAxoYaABOUuQ5SABJUNR4mABGW92m6ABApq0oSABPBEvySABMSPjAWABPLh1jKABDixo56ABGwTbx2ABCLaJQKABKL+rWyABNIlb3qABMF9Yk6ABFyrBDiABFiYnM2ABEgwtN6ABOHFXOWABH0dQm6ABBwpgfGABLfKBLmABLuVIziABAEo4nuABPkWzbOABFJzdUWABHnBrcCABCJHSryABAWT/fiABAb7kzeABCZJPXiABOnCLuqABO3j6byABC5KIWSABFATS1qABPU6/5uABMr3EQ2ABL7Q44aABCdNdwWABJJGXQiABPAfrM6ABFrIoKA2GgCOKvdm94D3mve09873/fgs+Fv4iviy+MH42/kP+Tv5Z/mM+bP58fo4+pX6xfrg+wH7IftD+377mPuy+8z7+/wq/Fn8bfyS/Lj83v0E/SD9T/2p/fz+OAA=", + "approval": "CiANASCAAhAIAIAB////////////AQIDBAVAJgoEFR98dQAg//////////////////////////////////////////8GYm94S2V5EP////////////////////8EZ0tleSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6A5yZXdhcmRQZXJTaGFyZQj//////////zEYFIEGCzEZCI0MB60AAAAAAAAAAAAAB58AAAAAAAAAAAAAACg2GgIXNhoBF4gABRZQsCJDigIBi/+L/giJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+CYkoNhoCFzYaAReIAAUWULAiQ4oCAYv/i/4LiSg2GgIXNhoBF4gABRZQsCJDigIBi/+L/gqJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+oIkoNhoCSRUjEkQ2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oCAYv/i/6hiSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBi/+L/qOJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+ookoNhoCFzYaAReIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+CBaJKIgABRZQsCJDigABIQeJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+lIkoNhoCSRUiEkQXNhoBSRUiEkQXiAANFkmTJQ5EVwYCULAiQ4oCASmL/4v+CIwAiwCMAIkoNhoCSRUiEkQXNhoBSRUiEkQXiAAOFkmTIQQORFcHAVCwIkOKAgGL/4v+CIkoNhoCSRUiEkQXNhoBSRUiEkQXiAAOFkmTIQQORFcHAVCwIkOKAgGL/4v+lIkoNhoCFzYaAReIAAUWULAiQ4oCASmL/4wAiwCL/giMAIsAjACJKDYaAhc2GgEXiAAFFlCwIkOKAgEnBYv/ZycFZIv+CCcFTGcnBWSJKIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oAASsnBr8rvkQnBqArSZMkDkQqrEkVSSMJTFJMvyu+RImKAQGL/4koNhoCSRUjEkQ2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oCASmL/4v+oIwAiwBJkyQORCqsSRVJIwlMUoj/towAiTYaAkkVIxJENhoBSRUjEkSIAAIiQ4oCACmL/4v+oYwAiwCAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApUEADYAHbm9uWmVyb7BCAAeABHplcm+wiSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBi/+L/qOWiSg2GgIXNhoBF4gABRZQsCJDigIBi/+L/guSiSg2GgFJFSMSRIgADIABACEFTwJUULAiQ4oBAYv/MQCliSiIAAUWULAiQ4oAASmBB4wAiwCMAImKAgCL/ov/DUSJNhoBSRUjEkSIAAIiQ4oBAIG5Cov/SZMhBA5EVx8BF4j/1IkoNhoCFzYaAReIAAUWULAiQ4oCASlJi/8WjACL/haMAYsAiwGgSZMhDA5EJwmsSRVJIQQJTFIXjABGAYkoNhoCFzYaAReIAAUWULAiQ4oCAYv/i/4ZiSg2GgIXNhoBF4gABRZQsCJDigIBi/+L/hqJKDYaAhc2GgEXiAAFFlCwIkOKAgGL/4v+G4koNhoCSRUjEkQ2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oCAYv/i/6riSg2GgJJFSMSRDYaAUkVIxJEiAASSZMkDkQqrEkVSSMJTFJQsCJDigIBi/+L/qyJKDYaAkkVIxJENhoBSRUjEkSIABJJkyQORCqsSRVJIwlMUlCwIkOKAgGL/4v+rYkoNhoBF4gABRZQsCJDigEBi/8ciSg2GgFJFSMSRIgAEkmTJA5EKqxJFUkjCUxSULAiQ4oBAYv/rokoNhoCFzYaAReIAAUWULAiQ4oCASlJi/+L/h2MAIwBiwCMAEYBiSg2GgIXNhoBF4gABRZQsCJDigIBKUmL/4v+HowAjAGLAIwARgGJKDYaAhc2GgEXiAAFFlCwIkOKAgEpSYv/i/6VjACMAYsAjABGAYkoNhoCFzYaAReIAAUWULAiQ4oCASEFi/+L/peJKDYaAhc2GgEXiAAFFlCwIkOKAgEpRwMhBYv/IQWL/h+MAIwBjAKMA4sCjABGA4koiAAFFlCwIkOKAAEpRwKAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO5rKAjAAnB4wBiwAnB6KMAIsASZMhDA5EJwmsSRVJIQQJTFIXjAKLAowARgKJKDYaAUkVJRJEiAAUSZMhBg5EJwSsSRVJJQlMUlCwIkOKAQEpi/+AEAAAAAAAAAAAAAAAAAAAdTCiSZMhBg5EJwSsSRVJJQlMUowAiwCMAIkoiAASSZMkDkQqrEkVSSMJTFJQsCJDigABgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4koiAAFFlCwIkOKAAEhByEIHSEJTwJLAQtOAh1OAghMIQpPAksBC04CHU4CCEwhC08CSwELTgIdTgIITCEIIQkdIQpPAksBC04CHU4CCEwhC08CSwELTgIdTgIITB9ISEwURIkoNhoDFzYaAkkVJRJENhoBSRUjEkSIABRJkyEGDkQnBKxJFUklCUxSULAiQ4oDASknCIv+Z4v/jACLACWL/1cACBcWJwhko4v9FqJJkyEGDkQnBKxJFUklCUxSXYwAiwBXEBCMAIkiQ4AEuER7NjYaAI4B//EAgAQ85vGvgAQAMaGGgATlLkOUgASVDUeJgARlvdpugAQKatKEgATwRL8kgATEj4wFgATy4dYygAQ4saOegARsE28dgAQi2iUCgASi/q1sgATSJW96gATBfWJOgARcqwQ4gARYmJzNgARIMLTegAThxVzlgAR9HUJugAQcKYHxgAS3ygS5gAS7lSM4gAQBKOJ7gAT5Fs2zgARSc3VFgAR5wa3AgAQiR0q8gAQFk/34gAQG+5M3gAQmST14gATpwi7qgATt4+m8gAQuSiFkgARQE0tagAT1Ov+bgATK9xENgAS+0OOGgAQnTXcFgASSRl0IgATwH6zOgARayKCggATPsAaSNhoAjiv29/cR9yv3Rfdf9473vffs+Bv4Q/hS+Gz4n/jM+Pn5HvlF+YP5yvon+lf6cvqT+rP61vsS+yz7Rvtg+4/7vvvt/AH8JvxM/HL8mPy0/OP9Pv2O/cr+LQA=", "clear": "Cg==" }, "compilerInfo": { "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/MultiInheritance.arc56.json b/tests/contracts/artifacts/MultiInheritance.arc56.json index e1dfd2f00..83edffbae 100644 --- a/tests/contracts/artifacts/MultiInheritance.arc56.json +++ b/tests/contracts/artifacts/MultiInheritance.arc56.json @@ -756,9 +756,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/MultiInheritanceProgram.arc56.json b/tests/contracts/artifacts/MultiInheritanceProgram.arc56.json index 3f6383f9c..ff4a45ff6 100644 --- a/tests/contracts/artifacts/MultiInheritanceProgram.arc56.json +++ b/tests/contracts/artifacts/MultiInheritanceProgram.arc56.json @@ -597,9 +597,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/ProgramVersion.arc56.json b/tests/contracts/artifacts/ProgramVersion.arc56.json index 153a1690c..c11224fb2 100644 --- a/tests/contracts/artifacts/ProgramVersion.arc56.json +++ b/tests/contracts/artifacts/ProgramVersion.arc56.json @@ -216,9 +216,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/SchemaContract.arc56.json b/tests/contracts/artifacts/SchemaContract.arc56.json index adfeb6481..c60e5741c 100644 --- a/tests/contracts/artifacts/SchemaContract.arc56.json +++ b/tests/contracts/artifacts/SchemaContract.arc56.json @@ -234,9 +234,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/StorageTest.arc56.json b/tests/contracts/artifacts/StorageTest.arc56.json index 5d0104b98..0506946ff 100644 --- a/tests/contracts/artifacts/StorageTest.arc56.json +++ b/tests/contracts/artifacts/StorageTest.arc56.json @@ -5486,9 +5486,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/artifacts/Templates.arc56.json b/tests/contracts/artifacts/Templates.arc56.json index 8306f6d82..d1fd26b10 100644 --- a/tests/contracts/artifacts/Templates.arc56.json +++ b/tests/contracts/artifacts/Templates.arc56.json @@ -673,9 +673,9 @@ "compiler": "algod", "compilerVersion": { "major": 4, - "minor": 1, - "patch": 2, - "commitHash": "088f89dd" + "minor": 3, + "patch": 0, + "commitHash": "3e5d694b" } } } \ No newline at end of file diff --git a/tests/contracts/math.algo.ts b/tests/contracts/math.algo.ts index 6ab5c87f9..48d57bec7 100644 --- a/tests/contracts/math.algo.ts +++ b/tests/contracts/math.algo.ts @@ -1,5 +1,11 @@ import { Contract } from '../../src/lib/index'; +export type UserData = { + stake: uint64; + pendingRewards: uint64; + rewardDebt: uint128; +}; + // eslint-disable-next-line no-unused-vars class MathTest extends Contract { gKey = GlobalStateKey(); @@ -229,4 +235,15 @@ class MathTest extends Contract { wideRatioTest(): uint64 { return wideRatio([Uint<64>('18446744073709551615'), 2, 3, 4, 5], [2, 3, 4, 5]); } + + accRPS = GlobalStateKey({ key: 'rewardPerShare' }); + + u128InTuple(userData: UserData, accRps: uint128, scale: uint64): uint128 { + this.accRPS.value = accRps; + const retVal = clone(userData); + + retVal.rewardDebt = ((userData.stake as uint128) * (this.accRPS.value as uint128)) / (scale as uint128); + + return retVal.rewardDebt; + } } diff --git a/tests/math.test.ts b/tests/math.test.ts index 2eb0100f0..527dcc729 100644 --- a/tests/math.test.ts +++ b/tests/math.test.ts @@ -80,6 +80,33 @@ describe('Math', function () { expect(await runMethod({ appClient, method: 'uintFromHex' })).toBe(BigInt('0xFF')); }); + test('u128InTuple', async function () { + // export type UserData = { + // stake: uint64; + // pendingRewards: uint64; + // rewardDebt: uint128; + // }; + + // repro(userData: UserData, accRps: uint128, scale: uint64): uint128 { + + const { appClient } = await compileAndCreate(await sender, PATH, ARTIFACTS_DIR, NAME); + const stake = 2_000; + const accRPS = 500; + const scale = 1; + const pendingRewards = 3; + const rewardDebt = 0; + + const userData = [stake, pendingRewards, rewardDebt]; + + expect( + await runMethod({ + appClient, + method: 'u128InTuple', + methodArgs: [userData, accRPS, scale], + }) + ).toBe(BigInt((stake * accRPS) / scale)); + }); + test('overflow', async function () { const { appClient, compiler } = await compileAndCreate(await sender, PATH, ARTIFACTS_DIR, NAME);