@d9-network/spec 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@polkadot-api/descriptors/dist/chunk-7P6ASYW6.mjs +9 -0
- package/node_modules/@polkadot-api/descriptors/dist/common-types.d.ts +3371 -0
- package/node_modules/@polkadot-api/descriptors/dist/common.d.ts +1 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/burnManager.d.ts +183 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/burnMining.d.ts +184 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/crossChainTransfer.d.ts +249 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/index.d.ts +8 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/marketMaker.d.ts +209 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/merchantMining.d.ts +263 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/miningPool.d.ts +159 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/nodeReward.d.ts +172 -0
- package/node_modules/@polkadot-api/descriptors/dist/contracts/usdt.d.ts +145 -0
- package/node_modules/@polkadot-api/descriptors/dist/d9.d.ts +3346 -0
- package/node_modules/@polkadot-api/descriptors/dist/d9_metadata-EHIEZLL5.mjs +8 -0
- package/node_modules/@polkadot-api/descriptors/dist/d9_metadata.d.ts +2 -0
- package/node_modules/@polkadot-api/descriptors/dist/descriptors-JQ4ZJQ4V.mjs +29 -0
- package/node_modules/@polkadot-api/descriptors/dist/descriptors.d.ts +1 -0
- package/node_modules/@polkadot-api/descriptors/dist/index.d.ts +11 -0
- package/node_modules/@polkadot-api/descriptors/dist/index.js +200 -0
- package/node_modules/@polkadot-api/descriptors/dist/index.mjs +115 -0
- package/node_modules/@polkadot-api/descriptors/dist/metadataTypes-32V7BYUB.mjs +8 -0
- package/node_modules/@polkadot-api/descriptors/dist/metadataTypes.d.ts +2 -0
- package/node_modules/@polkadot-api/descriptors/generated.json +1 -0
- package/node_modules/@polkadot-api/descriptors/package.json +24 -0
- package/package.json +5 -2
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __esm = (fn, res) => function __init() {
|
|
7
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
8
|
+
};
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
|
|
23
|
+
// .papi/descriptors/src/descriptors.ts
|
|
24
|
+
var descriptors_exports = {};
|
|
25
|
+
__export(descriptors_exports, {
|
|
26
|
+
D9: () => D9
|
|
27
|
+
});
|
|
28
|
+
var minified, commonTrees, tokens, replaceTokens, tokenizedCommonTrees, unwrap, getChainDescriptors, D9;
|
|
29
|
+
var init_descriptors = __esm({
|
|
30
|
+
".papi/descriptors/src/descriptors.ts"() {
|
|
31
|
+
"use strict";
|
|
32
|
+
[minified, commonTrees, tokens] = JSON.parse(`[{"d9":{"storage":{"0":{"Authorities":0,"CurrentSlot":1},"1":{"MaxReferralDepth":2,"ReferralRelationships":3,"DirectReferralsCount":4},"2":{"Treasurer":10},"4":{"3":18,"UsersVotingInterests":12,"UserToNodeVotesTotals":13,"NodeToUserVotesTotals":13,"NodeAccumulativeVotes":14,"CurrentNumberOfCandidatesNodes":2,"SessionNodeList":15,"CurrentSessionIndex":2,"CurrentValidatorVoteStats":16,"NodeMetadata":17},"5":{"3":18,"NodeRewardContract":18},"7":{"6":32,"TotalIssuance":1,"InactiveIssuance":1,"Locks":33,"Reserves":34,"Holds":34,"Freezes":34},"8":{"State":50,"PendingChange":51,"NextForced":2,"Stalled":52,"CurrentSetId":1,"SetIdSession":53},"9":{"Key":18},"10":{"6":63,"ExtrinsicCount":2,"BlockWeight":64,"AllExtrinsicsLen":2,"BlockHash":65,"ExtrinsicData":66,"Number":2,"ParentHash":67,"Digest":68,"Events":69,"EventCount":2,"EventTopics":70,"LastRuntimeUpgrade":71,"UpgradedToU32RefCount":72,"UpgradedToTripleRefCount":72,"ExecutionPhase":73},"11":{"Now":1,"DidUpdate":72},"12":{"NextFeeMultiplier":1,"StorageVersion":89},"14":{"6":92,"13":93,"Asset":91,"Metadata":94},"17":{"15":0,"16":0},"20":{"18":0,"19":2,"ProposalOf":129,"Voting":130,"Members":131,"Prime":18},"21":{"PristineCode":144,"CodeStorage":145,"OwnerInfoOf":146,"Nonce":1,"ContractInfoOf":147,"DeletionQueue":66,"DeletionQueueCounter":148},"22":{"HistoricalSessions":166,"StoredRange":52},"23":{"15":0,"HeartbeatAfter":2,"ReceivedHeartbeats":167,"AuthoredBlocks":168},"24":{"RandomMaterial":0},"25":{"16":174,"Validators":131,"CurrentIndex":2,"QueuedChanged":72,"QueuedKeys":172,"DisabledValidators":173,"KeyOwner":175},"26":{"13":173,"18":178,"19":2,"Deactivated":1},"27":{"3":18,"18":192,"ProposalFee":1,"MiningPoolContract":18,"Referendums":193,"Resolutions":194,"LockedAccounts":195},"28":{"MultiSignatureAccounts":206,"UserMultiSigAccounts":207,"MinApprovalProposals":208}},"tx":{"0":0,"1":{"change_referral_depth":5},"2":{"new_treasurer":11},"4":{"29":27,"submit_candidacy":19,"add_voting_interest":20,"delegate_votes":21,"remove_candidacy":22,"try_remove_votes_from_candidate":23,"redistribute_votes":24,"change_candidate_name":25,"change_candidate_supporter_share":26},"5":{"29":27,"set_node_reward_contract":29},"7":{"30":37,"31":35,"32":35,"transfer_allow_death":35,"set_balance_deprecated":36,"transfer_all":38,"force_unreserve":39,"upgrade_accounts":40,"force_set_balance":41},"8":{"report_equivocation":54,"report_equivocation_unsigned":54,"note_stalled":55},"9":{"sudo":57,"sudo_unchecked_weight":58,"set_key":59,"sudo_as":60},"10":{"33":80,"remark":78,"set_heap_pages":79,"set_code_without_checks":80,"set_storage":81,"kill_storage":82,"kill_prefix":83,"remark_with_event":78},"11":{"set":88},"12":0,"14":{"30":101,"31":100,"32":100,"create":95,"force_create":96,"start_destroy":97,"destroy_accounts":97,"destroy_approvals":97,"finish_destroy":97,"mint":98,"burn":99,"freeze":102,"thaw":102,"freeze_asset":97,"thaw_asset":97,"transfer_ownership":103,"set_team":104,"set_metadata":105,"clear_metadata":97,"force_set_metadata":106,"force_clear_metadata":97,"force_asset_status":107,"approve_transfer":108,"cancel_approval":109,"force_cancel_approval":110,"transfer_approved":111,"touch":97,"refund":112,"set_min_balance":113},"17":0,"20":{"set_members":133,"execute":134,"propose":135,"vote":136,"disapprove_proposal":137,"close":138},"21":{"33":155,"call_old_weight":150,"instantiate_with_code_old_weight":151,"instantiate_old_weight":152,"upload_code":153,"remove_code":154,"call":156,"instantiate_with_code":157,"instantiate":158},"22":0,"23":{"heartbeat":169},"24":0,"25":{"set_keys":176,"purge_keys":22},"26":{"propose_spend":180,"reject_proposal":181,"approve_proposal":181,"spend":182,"remove_approval":181},"27":{"29":27,"set_mining_pool_contract":29,"propose_lock":196,"propose_unlock":197,"vote_in_referendum":198,"set_proposal_fee":199,"admin_lock_accounts":200,"admin_unlock_accounts":201,"admin_remove_proposal":202},"28":{"create_multi_sig_account":209,"author_a_call":210,"add_call_approval":211,"remove_call_approval":211,"proposal_msa_new_minimum":212,"approve_msa_new_minimum":213,"revoke_approval_for_msa_new_minimum":213,"remove_call":211}},"events":{"0":0,"1":{"NewReferralRelationshipCreated":6,"NewReferralDepthSet":7,"NewDefaultParentSet":8},"2":{"NewTreasurer":8},"4":{"CandidacySubmitted":8,"VotesDelegatedBy":8,"CandidacyRemoved":8},"5":{"ErrorIssuingRewards":30,"ContractError":31},"7":{"34":46,"35":46,"36":49,"37":46,"38":46,"Endowed":42,"DustLost":43,"Transfer":44,"BalanceSet":45,"Reserved":46,"Unreserved":46,"ReserveRepatriated":47,"Withdraw":46,"Slashed":46,"Minted":46,"Suspended":46,"Restored":46,"Upgraded":48,"Rescinded":49,"Locked":46,"Unlocked":46},"8":{"NewAuthorities":56,"Paused":30,"Resumed":30},"9":{"Sudid":61,"KeyChanged":62,"SudoAsDone":61},"10":{"ExtrinsicSuccess":84,"ExtrinsicFailed":85,"CodeUpdated":30,"NewAccount":86,"KilledAccount":86,"Remarked":87},"11":0,"12":{"TransactionFeePaid":90},"14":{"35":117,"36":115,"37":120,"38":120,"Created":114,"Transferred":116,"TeamChanged":118,"OwnerChanged":119,"AssetFrozen":121,"AssetThawed":121,"AccountsDestroyed":122,"ApprovalsDestroyed":123,"DestructionStarted":121,"Destroyed":121,"ForceCreated":119,"MetadataSet":124,"MetadataCleared":121,"ApprovedTransfer":125,"ApprovalCancelled":126,"TransferredApproved":127,"AssetStatusChanged":121,"AssetMinBalanceChanged":128},"17":0,"20":{"39":139,"Voted":140,"Approved":141,"Disapproved":141,"Executed":142,"MemberExecuted":142,"Closed":143},"21":{"Instantiated":159,"Terminated":160,"CodeStored":161,"ContractEmitted":162,"CodeRemoved":161,"ContractCodeUpdated":163,"Called":164,"DelegateCalled":165},"22":0,"23":{"HeartbeatReceived":170,"AllGood":30,"SomeOffline":171},"24":0,"25":{"NewSession":177},"26":{"34":189,"39":183,"Spending":184,"Awarded":185,"Rejected":186,"Burnt":187,"Rollover":188,"SpendApproved":190,"UpdatedInactive":191},"27":{"AccountNominatedForLock":8,"ProposalFeePaid":203,"VoteRecorded":204,"AccountLocked":8,"AccountUnlocked":8,"AccountNominatedForUnlock":8,"VoteStarted":30,"VoteEnded":205},"28":{"MultiSignatureAccountCreated":6,"MultiSignatureAccountUpdated":6,"NewCallAuthored":214,"ApprovalAdded":6,"ApprovalRemoved":6,"CallExecuted":215,"MinApprovalsChanged":216}},"constants":{"0":0,"1":0,"2":0,"4":0,"5":{"40":28},"7":{"ExistentialDeposit":1,"MaxLocks":2,"MaxReserves":2,"MaxHolds":2,"MaxFreezes":2},"8":{"MaxAuthorities":2,"MaxSetIdSessionEntries":1},"9":0,"10":{"BlockWeights":74,"BlockLength":75,"BlockHashCount":2,"DbWeight":76,"Version":77,"SS58Prefix":2},"11":{"MinimumPeriod":1},"12":{"OperationalFeeMultiplier":2},"14":{"RemoveItemsLimit":2,"AssetDeposit":1,"AssetAccountDeposit":1,"MetadataDepositBase":1,"MetadataDepositPerByte":1,"ApprovalDeposit":1,"StringLimit":2},"17":0,"20":{"MaxProposalWeight":132},"21":{"Schedule":149,"DepositPerByte":1,"DefaultDepositLimit":1,"DepositPerItem":1,"MaxCodeLen":2,"MaxStorageKeyLen":2,"UnsafeUnstableInterface":72,"MaxDebugBufferLen":2},"22":0,"23":{"UnsignedPriority":1},"24":0,"25":0,"26":{"40":28,"ProposalBond":2,"ProposalBondMinimum":1,"ProposalBondMaximum":179,"SpendPeriod":2,"Burn":2,"MaxApprovals":2},"27":{"CouncilPalletId":28},"28":0},"viewFns":{"0":0,"1":0,"2":0,"4":0,"5":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"14":0,"17":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0},"apis":{}}},[{}],["Aura","D9Referral","D9Treasury","PalletAdmin","D9NodeVoting","D9NodeRewards","Account","Balances","Grandpa","Sudo","System","Timestamp","TransactionPayment","Approvals","Assets","Keys","NextKeys","AuthorityDiscovery","Proposals","ProposalCount","Collective","Contracts","Historical","ImOnline","RandomnessCollectiveFlip","Session","Treasury","CouncilLock","D9MultiSig","set_pallet_admin","force_transfer","transfer_keep_alive","transfer","set_code","Deposit","Burned","Issued","Frozen","Thawed","Proposed","PalletId"]]`);
|
|
33
|
+
replaceTokens = (obj) => Object.fromEntries(
|
|
34
|
+
Object.entries(obj).map(([key, value]) => {
|
|
35
|
+
const unwrappedValue = typeof value === "object" ? replaceTokens(value) : value;
|
|
36
|
+
const numericKey = Number(key);
|
|
37
|
+
if (Number.isNaN(numericKey)) {
|
|
38
|
+
return [key, unwrappedValue];
|
|
39
|
+
}
|
|
40
|
+
return [tokens[numericKey], unwrappedValue];
|
|
41
|
+
})
|
|
42
|
+
);
|
|
43
|
+
tokenizedCommonTrees = commonTrees.map(replaceTokens);
|
|
44
|
+
unwrap = (obj, depth) => depth === 0 ? obj : Object.fromEntries(
|
|
45
|
+
Object.entries(obj).map(([key, value]) => [
|
|
46
|
+
key,
|
|
47
|
+
unwrap(
|
|
48
|
+
typeof value === "object" ? value : tokenizedCommonTrees[value],
|
|
49
|
+
depth - 1
|
|
50
|
+
)
|
|
51
|
+
])
|
|
52
|
+
);
|
|
53
|
+
getChainDescriptors = (key) => unwrap(replaceTokens(minified[key]), 2);
|
|
54
|
+
D9 = getChainDescriptors("d9");
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// .papi/descriptors/src/metadataTypes.ts
|
|
59
|
+
var metadataTypes_exports = {};
|
|
60
|
+
__export(metadataTypes_exports, {
|
|
61
|
+
default: () => metadataTypes_default
|
|
62
|
+
});
|
|
63
|
+
var content, metadataTypes_default;
|
|
64
|
+
var init_metadataTypes = __esm({
|
|
65
|
+
".papi/descriptors/src/metadataTypes.ts"() {
|
|
66
|
+
"use strict";
|
|
67
|
+
content = "ZQMBAQUABAEBBQAIAQEFAAwAEAAQABAADAEABCRuZXdfZGVwdGgMAQEFAQEFAQQQAQgBAQUADAEBBQAQAQEFAQEFAQEFABQBAAQ0bmV3X3RyZWFzdXJlchABAQUAEAAYABwACAAQAAgADAAgABAAJAAQACwBAQUAEAEABEhjYW5kaWRhdGVfbWV0YWRhdGEsAQEFAQAQRGJlbmVmaWNpYXJ5X3ZvdGVyECRtYWluX3Bvb2wQOGFtb3VudF90b19idXJuCDRidXJuX2NvbnRyYWN0EAEBBQEABCxkZWxlZ2F0aW9uczQBAQUBAQUBAQUBAAgkY2FuZGlkYXRlEBR2b3RlcwgBAQUBAAgQZnJvbRAIdG8QAQEFAQAEEG5hbWUoAQEFAQAEPHNoYXJpbmdfcGVyY2VudAwBAQUBAAQkbmV3X2FkbWluEAEBBQEBBQA4AQAEMG5ld19jb250cmFjdBABAQUBAQUBAQUBAQUAjAAQAJAAEACcABAApAEACBBkZXN0sBR2YWx1ZQgBAQUBAAwMd2hvsCBuZXdfZnJlZQgwb2xkX3Jlc2VydmVkCAEBBQEADBhzb3VyY2WwEGRlc3SwFHZhbHVlCAEBBQEACBBkZXN0sChrZWVwX2FsaXZltAEBBQEACAx3aG+wGGFtb3VudAgBAQUBAAQMd2hvIAEBBQEACAx3aG+wIG5ld19mcmVlCAEBBQEBBQEACBxhY2NvdW50EDBmcmVlX2JhbGFuY2UIAQEFAQAIHGFjY291bnQQGGFtb3VudAgBAQUBAAwQZnJvbRAIdG8QGGFtb3VudAgBAQUBAAgMd2hvEBBmcmVlCAEBBQEACAx3aG8QGGFtb3VudAgBAQUBABAQZnJvbRAIdG8QGGFtb3VudAhIZGVzdGluYXRpb25fc3RhdHVzuAEBBQEABAx3aG8QAQEFAQAEGGFtb3VudAgBAQUAvAEBBQDMAQEFANAACAAMAQAESGVxdWl2b2NhdGlvbl9wcm9vZugBAQUBAAgUZGVsYXkMbGJlc3RfZmluYWxpemVkX2Jsb2NrX251bWJlcgwBAQUBAQUBAAQ0YXV0aG9yaXR5X3NldMQBAAQQY2FsbFkBAQEFAQAIEGNhbGxZARh3ZWlnaHQFAQEBBQEABAxuZXewAQEFAQAIDHdob7AQY2FsbFkBAQEFAQEFAQAELHN1ZG9fcmVzdWx0XQEBAQUBAAQob2xkX3N1ZG9lchQAEABhAQEBBQBlAQAMAAAADAAoAQEFAAABAQUAcQEBAQUA4QEAAADlAQEBBQDtAQEBBQC0AQEFAHUBAQEFAP0BAQEFAAECAQEFAAUCAQEFABECAQAEGHJlbWFyaygBAQUBAAQUcGFnZXMIAQEFAQAEEGNvZGUoAQEFAQAEFGl0ZW1zEQEBAQUBAAQQa2V5cxUBAQEFAQAIGHByZWZpeCgcc3Via2V5cwwBAQUBAQUBAAQ0ZGlzcGF0Y2hfaW5mb50BAQEFAQAIOGRpc3BhdGNoX2Vycm9yjDRkaXNwYXRjaF9pbmZvnQEBAQUBAAQcYWNjb3VudBABAQUBAAgYc2VuZGVyEBBoYXNoAAEABAxub3cIAQEFAQEFABUCAQEFAQAMDHdobxAoYWN0dWFsX2ZlZQgMdGlwCAAMAB0CACECACkCAC0CADECAAwANQIBAAwIaWQMFGFkbWlusCxtaW5fYmFsYW5jZQgBAQUBABAIaWQMFG93bmVysDRpc19zdWZmaWNpZW50tCxtaW5fYmFsYW5jZQgBAQUBAAQIaWQMAQEFAQAMCGlkDCxiZW5lZmljaWFyebAYYW1vdW50CAEBBQEADAhpZAwMd2hvsBhhbW91bnQIAQEFAQAMCGlkDBh0YXJnZXSwGGFtb3VudAgBAQUBABAIaWQMGHNvdXJjZbAQZGVzdLAYYW1vdW50CAEBBQEACAhpZAwMd2hvsAEBBQEACAhpZAwUb3duZXKwAQEFAQAQCGlkDBhpc3N1ZXKwFGFkbWlusBxmcmVlemVysAEBBQEAEAhpZAwQbmFtZSgYc3ltYm9sKCBkZWNpbWFscwwBAQUBABQIaWQMEG5hbWUoGHN5bWJvbCggZGVjaW1hbHMMJGlzX2Zyb3plbrQBAQUBACAIaWQMFG93bmVysBhpc3N1ZXKwFGFkbWlusBxmcmVlemVysCxtaW5fYmFsYW5jZQg0aXNfc3VmZmljaWVudLQkaXNfZnJvemVutAEBBQEADAhpZAwgZGVsZWdhdGWwGGFtb3VudAgBAQUBAAgIaWQMIGRlbGVnYXRlsAEBBQEADAhpZAwUb3duZXKwIGRlbGVnYXRlsAEBBQEAEAhpZAwUb3duZXKwLGRlc3RpbmF0aW9usBhhbW91bnQIAQEFAQAICGlkDChhbGxvd19idXJutAEBBQEACAhpZAwsbWluX2JhbGFuY2UIAQEFAQEFAQAMIGFzc2V0X2lkDBxjcmVhdG9yEBRvd25lchABAQUBAAwgYXNzZXRfaWQMFG93bmVyEBhhbW91bnQIAQEFAQAQIGFzc2V0X2lkDBBmcm9tEAh0bxAYYW1vdW50CAEBBQEADCBhc3NldF9pZAwUb3duZXIQHGJhbGFuY2UIAQEFAQAQIGFzc2V0X2lkDBhpc3N1ZXIQFGFkbWluEBxmcmVlemVyEAEBBQEACCBhc3NldF9pZAwUb3duZXIQAQEFAQAIIGFzc2V0X2lkDAx3aG8QAQEFAQAEIGFzc2V0X2lkDAEBBQEADCBhc3NldF9pZAxIYWNjb3VudHNfZGVzdHJveWVkDEhhY2NvdW50c19yZW1haW5pbmcMAQEFAQAMIGFzc2V0X2lkDExhcHByb3ZhbHNfZGVzdHJveWVkDExhcHByb3ZhbHNfcmVtYWluaW5nDAEBBQEAFCBhc3NldF9pZAwQbmFtZSgYc3ltYm9sKCBkZWNpbWFscwwkaXNfZnJvemVutAEBBQEAECBhc3NldF9pZAwYc291cmNlECBkZWxlZ2F0ZRAYYW1vdW50CAEBBQEADCBhc3NldF9pZAwUb3duZXIQIGRlbGVnYXRlEAEBBQEAFCBhc3NldF9pZAwUb3duZXIQIGRlbGVnYXRlECxkZXN0aW5hdGlvbhAYYW1vdW50CAEBBQEACCBhc3NldF9pZAw8bmV3X21pbl9iYWxhbmNlCAAAAFkBAAAAOQIBAQUAIAEBBQAFAQEADCxuZXdfbWVtYmVycyAUcHJpbWUUJG9sZF9jb3VudAwBAQUBAAggcHJvcG9zYWxZATBsZW5ndGhfYm91bmQMAQEFAQAMJHRocmVzaG9sZAwgcHJvcG9zYWxZATBsZW5ndGhfYm91bmQMAQEFAQAMIHByb3Bvc2FsABRpbmRleAwcYXBwcm92ZbQBAQUBAAQ0cHJvcG9zYWxfaGFzaAABAQUBABA0cHJvcG9zYWxfaGFzaAAUaW5kZXgMVHByb3Bvc2FsX3dlaWdodF9ib3VuZAUBMGxlbmd0aF9ib3VuZAwBAQUBAQUBABAcYWNjb3VudBA4cHJvcG9zYWxfaW5kZXgMNHByb3Bvc2FsX2hhc2gAJHRocmVzaG9sZAwBAQUBABQcYWNjb3VudBA0cHJvcG9zYWxfaGFzaAAUdm90ZWS0DHllcwwIbm8MAQEFAQAENHByb3Bvc2FsX2hhc2gAAQEFAQAINHByb3Bvc2FsX2hhc2gAGHJlc3VsdF0BAQEFAQAMNHByb3Bvc2FsX2hhc2gADHllcwwIbm8MAAAAKAAAAD0CAAAAQQIAEABFAgEBBQBJAgEBBQBZAgEAFBBkZXN0sBR2YWx1ZQgkZ2FzX2xpbWl0CFRzdG9yYWdlX2RlcG9zaXRfbGltaXQpARBkYXRhKAEBBQEAGBR2YWx1ZQgkZ2FzX2xpbWl0CFRzdG9yYWdlX2RlcG9zaXRfbGltaXQpARBjb2RlKBBkYXRhKBBzYWx0KAEBBQEAGBR2YWx1ZQgkZ2FzX2xpbWl0CFRzdG9yYWdlX2RlcG9zaXRfbGltaXQpASRjb2RlX2hhc2gAEGRhdGEoEHNhbHQoAQEFAQAMEGNvZGUoVHN0b3JhZ2VfZGVwb3NpdF9saW1pdCkBLGRldGVybWluaXNtLQEBAQUBAAQkY29kZV9oYXNoAAEBBQEACBBkZXN0sCRjb2RlX2hhc2gAAQEFAQAUEGRlc3SwFHZhbHVlCCRnYXNfbGltaXQFAVRzdG9yYWdlX2RlcG9zaXRfbGltaXQpARBkYXRhKAEBBQEAGBR2YWx1ZQgkZ2FzX2xpbWl0BQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0KQEQY29kZSgQZGF0YSgQc2FsdCgBAQUBABgUdmFsdWUIJGdhc19saW1pdAUBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdCkBJGNvZGVfaGFzaAAQZGF0YSgQc2FsdCgBAQUBAQUBAAggZGVwbG95ZXIQIGNvbnRyYWN0EAEBBQEACCBjb250cmFjdBAsYmVuZWZpY2lhcnkQAQEFAQAEJGNvZGVfaGFzaAABAQUBAAggY29udHJhY3QQEGRhdGEoAQEFAQAMIGNvbnRyYWN0EDRuZXdfY29kZV9oYXNoADRvbGRfY29kZV9oYXNoAAEBBQEACBhjYWxsZXIQIGNvbnRyYWN0EAEBBQEACCBjb250cmFjdBAkY29kZV9oYXNoAAAMAF0CANAAYQIAIQIADAEACCRoZWFydGJlYXQ5ASRzaWduYXR1cmXYAQEFAQEFAQAEMGF1dGhvcml0eV9pZAABAQUBAAQcb2ZmbGluZbkBAQEFAGkCAQEFAG0CABAAQQEAcQIAEAEACBBrZXlzQQEUcHJvb2YoAQEFAQEFAQAENHNlc3Npb25faW5kZXgMAAwAdQIBAQUAKQEBAAgUdmFsdWUILGJlbmVmaWNpYXJ5sAEBBQEABCxwcm9wb3NhbF9pZAwBAQUBAAgYYW1vdW50CCxiZW5lZmljaWFyebABAQUBAQUBAAQ4cHJvcG9zYWxfaW5kZXgMAQEFAQAEQGJ1ZGdldF9yZW1haW5pbmcIAQEFAQAMOHByb3Bvc2FsX2luZGV4DBRhd2FyZAgcYWNjb3VudBABAQUBAAg4cHJvcG9zYWxfaW5kZXgMHHNsYXNoZWQIAQEFAQAELGJ1cm50X2Z1bmRzCAEBBQEABEByb2xsb3Zlcl9iYWxhbmNlCAEBBQEABBR2YWx1ZQgBAQUBAAw4cHJvcG9zYWxfaW5kZXgMGGFtb3VudAgsYmVuZWZpY2lhcnkQAQEFAQAILHJlYWN0aXZhdGVkCCxkZWFjdGl2YXRlZAgAEAB5AgAQAH0CACECAIECABAAhQIBAAg8YWNjb3VudF90b19sb2NrEDBwcm9wb3NhbF9mZWUIAQEFAQAIRGFjY291bnRfdG9fdW5sb2NrEDBwcm9wb3NhbF9mZWUIAQEFAQAIOGxvY2tfY2FuZGlkYXRlEEhhc3NlbnRfb25fZGVjaXNpb260AQEFAQAEHG5ld19mZWUIAQEFAQAIQGFjY291bnRzX3RvX2xvY2sgIHByb3Bvc2VyEAEBBQEABEhhY2NvdW50c190b191bmxvY2sgAQEFAQAEQHByb3Bvc2VkX2FjY291bnQQAQEFAQEFAQMIEAgBAQUBAxAQEMkBtAEBBQEDCBDNAQAQAJECABAAIAAQAJUCAQAMLHNpZ25hdG9yaWVzICxhdXRob3JzX29wdFEBZG1pbl9hcHByb3Zpbmdfc2lnbmF0b3JpZXMMAQEFAQAIRG11bHRpX3NpZ19hY2NvdW50EBBjYWxsWQEBAQUBAAhEbXVsdGlfc2lnX2FjY291bnQQHGNhbGxfaWQAAQEFAQAILG1zYV9hZGRyZXNzEERuZXdfbWluX2FwcHJvdmFscwwBAQUBAAQsbXNhX2FkZHJlc3MQAQEFAQEFAQMIEAABAQUAAAEBBQEDCBAMmQIFAYAEAAABAwECAQEGEAAIFHRvdGFsCCRkZWxlZ2F0ZWQIBBABCAQQAAAQKGFjY291bnRfaWQQLHRvdGFsX3ZvdGVzCChzZWxmX3ZvdGVzCDxkZWxlZ2F0ZWRfdm90ZXMIBQAADBBuYW1lKDxzaGFyaW5nX3BlcmNlbnQMcGluZGV4X29mX2xhc3RfcGVyY2VudF9jaGFuZ2UMAAgkY2FuZGlkYXRlEBR2b3RlcwgEMAAFASACBFxOb1JlZmVycmFsQWNjb3VudFJlY29yZAABBQIIWE9ubHlUcmVhc3VyZXJDYW5Eb1RoaXMAAQU4Tm9UcmVhc3VyZXJTZXQAAQUCQDhIZXhEZWNvZGVFcnJvcgABBUxFbXB0eURlbGVnYXRpb25MaXN0AAEFWERlbGVnYXRpb25MaXN0VG9vTGFyZ2UAAQVwRGVsZWdhdG9ySGFzTm9Wb3RpbmdDYXBhY2l0eQABBXBEZWxlZ2F0b3JIYXNOb0F2YWlsYWJsZVZvdGVzAAEFdERlbGVnYXRvckhhc0luc3VmZmljaWVudFZvdGVzAAEFoEF0dGVtcHRpbmdUb1JlbW92ZU1vcmVWb3Rlc1RoYW5EZWxlZ2F0ZWQAAQVUQ2FuZGlkYXRlRG9lc05vdEV4aXN0AAEFWENhbmRpZGF0ZUFscmVhZHlFeGlzdHMAAQVgRXJyb3JHZXR0aW5nTm9kZU1ldGFkYXRhAAEFhFZvdGVyRGlkbnREZWxlZ2F0ZVRvVGhpc0NhbmRpZGF0ZQABBUhOb3RBY3RpdmVWYWxpZGF0b3IAAQVsQXRNYXhpbXVtTnVtYmVyT2ZDYW5kaWRhdGVzAAEFeEJ1cm5BbW91bnRNdXN0QmVHcmVhdGVyVGhhbjEwMAABBWBTdXBwb3J0ZXJTaGFyZU91dE9mUmFuZ2UAAQWsQ3VycmVudFZhbGlkYXRvckNhbk5vdENoYW5nZVNoYXJlUGVyY2VudGFnZQABBQIMQFJlc3RyaWN0ZWRBY2Nlc3MAAQVgTm9kZVJld2FyZENvbnRyYWN0Tm90U2V0AAEFfEVycm9yVXBkYXRpbmdOb2RlUmV3YXJkQ29udHJhY3QAAQUCKDhWZXN0aW5nQmFsYW5jZQABBVRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQVMSW5zdWZmaWNpZW50QmFsYW5jZQABBUhFeGlzdGVudGlhbERlcG9zaXQAAQU0RXhwZW5kYWJpbGl0eQABBVxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQABBSxEZWFkQWNjb3VudAABBTxUb29NYW55UmVzZXJ2ZXMAAQUwVG9vTWFueUhvbGRzAAEFOFRvb01hbnlGcmVlemVzAAEFAhwsUGF1c2VGYWlsZWQAAQUwUmVzdW1lRmFpbGVkAAEFNENoYW5nZVBlbmRpbmcAAQUcVG9vU29vbgABBWBJbnZhbGlkS2V5T3duZXJzaGlwUHJvb2YAAQVgSW52YWxpZEVxdWl2b2NhdGlvblByb29mAAEFWER1cGxpY2F0ZU9mZmVuY2VSZXBvcnQAAQUCBCxSZXF1aXJlU3VkbwABBQIYPEludmFsaWRTcGVjTmFtZQABBWhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABBXRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgABBUxOb25EZWZhdWx0Q29tcG9zaXRlAAEFPE5vblplcm9SZWZDb3VudAABBTBDYWxsRmlsdGVyZWQAAQUCUChCYWxhbmNlTG93AAEFJE5vQWNjb3VudAABBTBOb1Blcm1pc3Npb24AAQUcVW5rbm93bgABBRhGcm96ZW4AAQUUSW5Vc2UAAQUoQmFkV2l0bmVzcwABBThNaW5CYWxhbmNlWmVybwABBUxVbmF2YWlsYWJsZUNvbnN1bWVyAAEFLEJhZE1ldGFkYXRhAAEFKFVuYXBwcm92ZWQAAQUgV291bGREaWUAAQU0QWxyZWFkeUV4aXN0cwABBSROb0RlcG9zaXQAAQUkV291bGRCdXJuAAEFJExpdmVBc3NldAABBTBBc3NldE5vdExpdmUAAQU8SW5jb3JyZWN0U3RhdHVzAAEFJE5vdEZyb3plbgABBThDYWxsYmFja0ZhaWxlZAABBQIoJE5vdE1lbWJlcgABBUREdXBsaWNhdGVQcm9wb3NhbAABBTxQcm9wb3NhbE1pc3NpbmcAAQUoV3JvbmdJbmRleAABBTREdXBsaWNhdGVWb3RlAAEFSEFscmVhZHlJbml0aWFsaXplZAABBSBUb29FYXJseQABBUBUb29NYW55UHJvcG9zYWxzAAEFTFdyb25nUHJvcG9zYWxXZWlnaHQAAQVMV3JvbmdQcm9wb3NhbExlbmd0aAABBQJsWEludmFsaWRTY2hlZHVsZVZlcnNpb24AAQVASW52YWxpZENhbGxGbGFncwABBSBPdXRPZkdhcwABBVBPdXRwdXRCdWZmZXJUb29TbWFsbAABBThUcmFuc2ZlckZhaWxlZAABBUxNYXhDYWxsRGVwdGhSZWFjaGVkAAEFQENvbnRyYWN0Tm90Rm91bmQAAQUwQ29kZVRvb0xhcmdlAAEFMENvZGVOb3RGb3VuZAABBSxPdXRPZkJvdW5kcwABBThEZWNvZGluZ0ZhaWxlZAABBTxDb250cmFjdFRyYXBwZWQAAQU0VmFsdWVUb29MYXJnZQABBWBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQAAQU4SW5wdXRGb3J3YXJkZWQAAQVQUmFuZG9tU3ViamVjdFRvb0xvbmcAAQU0VG9vTWFueVRvcGljcwABBUBOb0NoYWluRXh0ZW5zaW9uAAEFRER1cGxpY2F0ZUNvbnRyYWN0AAEFXFRlcm1pbmF0ZWRJbkNvbnN0cnVjdG9yAAEFQFJlZW50cmFuY2VEZW5pZWQAAQVwU3RvcmFnZURlcG9zaXROb3RFbm91Z2hGdW5kcwABBXBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkAAEFJENvZGVJblVzZQABBUBDb250cmFjdFJldmVydGVkAAEFMENvZGVSZWplY3RlZAABBTxJbmRldGVybWluaXN0aWMAAQUCCChJbnZhbGlkS2V5AAEFTER1cGxpY2F0ZWRIZWFydGJlYXQAAQUCFDBJbnZhbGlkUHJvb2YAAQVcTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQU0RHVwbGljYXRlZEtleQABBRhOb0tleXMAAQUkTm9BY2NvdW50AAEFAhRwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQABBTBJbnZhbGlkSW5kZXgAAQVAVG9vTWFueUFwcHJvdmFscwABBVhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAEFTFByb3Bvc2FsTm90QXBwcm92ZWQAAQUCQEROb3RWYWxpZE5vbWluYXRvcgABBVxQcm9wb3NhbEZlZUluc3VmZmljaWVudAABBWBNaW5pbmdQb29sQ29udHJhY3ROb3RTZXQAAQVcRXJyb3JHZXR0aW5nUmFua2VkTm9kZXMAAQVQQWNjb3VudEFscmVhZHlMb2NrZWQAAQVAQWNjb3VudE5vdExvY2tlZAABBVRQcm9wb3NhbEFscmVhZHlFeGlzdHMAAQVoQWNjb3VudEFscmVhZHlJblJlZmVyZW5kdW0AAQVYQWRtaW5DYW5ub3RCZU5vbWluYXRlZAABBZBMb2NrQ2FuZGlkYXRlc05vdFBlcm1pdHRlZFRvSW50ZXJhY3QAAQWQTG9ja2VkQWNjb3VudHNOb3RQZXJtaXR0ZWRUb0ludGVyYWN0AAEFXExvY2tlZEFjY291bnRDYW5ub3RWb3RlAAEFWFJlZmVyZW5kdW1Eb2VzTm90RXhpc3QAAQVUTm90VmFsaWRDb3VuY2lsTWVtYmVyAAEFVEVycm9yQ2FsY3VsYXRpbmdWb3RlcwABBURWb3RlckFscmVhZHlWb3RlZAABBQJoQER1cGxpY2F0ZXNJbkxpc3QAAQVIQ2FsbGVyTm90U2lnbmF0b3J5AAEFQE1TQUFscmVhZHlFeGlzdHMAAQUsTVNBTm90Rm91bmQAAQVMU2lnbmF0b3JpZXNUb29TaG9ydAABBUhTaWduYXRvcmllc1Rvb0xvbmcAAQU4QXBwcm92YWxFeGlzdHMAAQVMQXBwcm92YWxEb2VzbnRFeGlzdAABBVRNaW5BcHByb3ZhbE91dE9mUmFuZ2UAAQV4TmV3TWluaW11bUVxdWFsc0N1cnJlbnRNaW5pbXVtAAEFUEFjY291bnRBbHJlYWR5QXV0aG9yAAEFWE9ubHlNU0FJdHNlbGZDYW5Eb1RoaXMAAQVAQXV0aG9yVmVjVG9vTG9uZwABBUBBY2NvdW50Tm90QXV0aG9yAAEFTEFjY291bnROb3RTaWduYXRvcnkAAQVYQWNjb3VudEVycm9yTWF4QXV0aG9ycwABBSRDYWxsTGltaXQAAQVUQXBwcm92YWxzTGltaXRSZWFjaGVkAAEFTENhbGxFbmNvZGluZ0ZhaWx1cmUAAQVYQWNjb3VudEF0TXVsdGlTaWdMaW1pdAABBWRGYWlsZWRUb0NyZWF0ZVBlbmRpbmdDYWxsAAEFMENhbGxOb3RGb3VuZAABBUxGYWlsdXJlRGVjb2RpbmdDYWxsAAEFXEZhaWxlZFRvQnVpbGRCb3VuZGVkVmVjAAEFQFByb3Bvc2FsTm90Rm91bmQAAQVYUHJvcG9zYWxBbHJlYWR5UGVuZGluZwABBQJYEEF1cmEAAQUoRDlSZWZlcnJhbAE8KEQ5VHJlYXN1cnkBQDBEOU5vZGVWb3RpbmcBRDREOU5vZGVSZXdhcmRzAUggQmFsYW5jZXMBTBxHcmFuZHBhAVAQU3VkbwFUGFN5c3RlbQFYJFRpbWVzdGFtcAABBUhUcmFuc2FjdGlvblBheW1lbnQAAQUYQXNzZXRzAVxIQXV0aG9yaXR5RGlzY292ZXJ5AAEFKENvbGxlY3RpdmUBYCRDb250cmFjdHMBZChIaXN0b3JpY2FsAAEFIEltT25saW5lAWhgUmFuZG9tbmVzc0NvbGxlY3RpdmVGbGlwAAEFHFNlc3Npb24BbCBUcmVhc3VyeQFwLENvdW5jaWxMb2NrAXQoRDlNdWx0aVNpZwF4AiRARnVuZHNVbmF2YWlsYWJsZQABBTBPbmx5UHJvdmlkZXIAAQUwQmVsb3dNaW5pbXVtAAEFMENhbm5vdENyZWF0ZQABBTBVbmtub3duQXNzZXQAAQUYRnJvemVuAAEFLFVuc3VwcG9ydGVkAAEFQENhbm5vdENyZWF0ZUhvbGQAAQU0Tm90RXhwZW5kYWJsZQABBQIMJFVuZGVyZmxvdwABBSBPdmVyZmxvdwABBThEaXZpc2lvbkJ5WmVybwABBQIIMExpbWl0UmVhY2hlZAABBRxOb0xheWVyAAEFAjQUT3RoZXIAAQUwQ2Fubm90TG9va3VwAAEFJEJhZE9yaWdpbgABBRhNb2R1bGUBfERDb25zdW1lclJlbWFpbmluZwABBSxOb1Byb3ZpZGVycwABBUBUb29NYW55Q29uc3VtZXJzAAEFFFRva2VuAYAoQXJpdGhtZXRpYwGENFRyYW5zYWN0aW9uYWwBiCRFeGhhdXN0ZWQAAQUoQ29ycnVwdGlvbgABBSxVbmF2YWlsYWJsZQABBQAQEGZyZWUIIHJlc2VydmVkCBhmcm96ZW4IFGZsYWdzCAIMDEZlZQABBRBNaXNjAAEFDEFsbAABBQAMCGlkOBhhbW91bnQIHHJlYXNvbnOUBJgAAAQYYW1vdW50CASgAAEFBQFQAhQISWQBEBRJbmRleAGoDFJhdwEoJEFkZHJlc3MzMgEAJEFkZHJlc3MyMAGsAQACCBBGcmVlAAEFIFJlc2VydmVkAAEFAhAQTGl2ZQABBTBQZW5kaW5nUGF1c2UAAAgwc2NoZWR1bGVkX2F0DBRkZWxheQwYUGF1c2VkAAEFNFBlbmRpbmdSZXN1bWUAAAgwc2NoZWR1bGVkX2F0DBRkZWxheQwDCAAIBMAABgwAEDBzY2hlZHVsZWRfYXQMFGRlbGF5DEBuZXh0X2F1dGhvcml0aWVzxBhmb3JjZWTIBAwBCAAILHRhcmdldF9oYXNoADR0YXJnZXRfbnVtYmVyDAUBAQEDCNTYABAwcm91bmRfbnVtYmVyCCBpZGVudGl0eQAUZmlyc3TcGHNlY29uZNwCCBxQcmV2b3RlAeAkUHJlY29tbWl0AeAACBhzZXRfaWQIMGVxdWl2b2NhdGlvbuQCBFRjaGFuZ2VfcmVmZXJyYWxfZGVwdGgAAAQkbmV3X2RlcHRoDAIENG5ld190cmVhc3VyZXIAAAQ0bmV3X3RyZWFzdXJlchACJEBzdWJtaXRfY2FuZGlkYWN5AAAESGNhbmRpZGF0ZV9tZXRhZGF0YSxMYWRkX3ZvdGluZ19pbnRlcmVzdAAAEERiZW5lZmljaWFyeV92b3RlchAkbWFpbl9wb29sEDhhbW91bnRfdG9fYnVybgg0YnVybl9jb250cmFjdBA4ZGVsZWdhdGVfdm90ZXMAAAQsZGVsZWdhdGlvbnM0QHJlbW92ZV9jYW5kaWRhY3kAAQV8dHJ5X3JlbW92ZV92b3Rlc19mcm9tX2NhbmRpZGF0ZQAACCRjYW5kaWRhdGUQFHZvdGVzCEhyZWRpc3RyaWJ1dGVfdm90ZXMAAAgQZnJvbRAIdG8QVGNoYW5nZV9jYW5kaWRhdGVfbmFtZQAABBBuYW1lKIBjaGFuZ2VfY2FuZGlkYXRlX3N1cHBvcnRlcl9zaGFyZQAABDxzaGFyaW5nX3BlcmNlbnQMQHNldF9wYWxsZXRfYWRtaW4AAAQkbmV3X2FkbWluEAIIQHNldF9wYWxsZXRfYWRtaW4AAAQkbmV3X2FkbWluEGBzZXRfbm9kZV9yZXdhcmRfY29udHJhY3QAAAQwbmV3X2NvbnRyYWN0EAIkUHRyYW5zZmVyX2FsbG93X2RlYXRoAAAIEGRlc3SwFHZhbHVlCFhzZXRfYmFsYW5jZV9kZXByZWNhdGVkAAAMDHdob7AgbmV3X2ZyZWUIMG9sZF9yZXNlcnZlZAg4Zm9yY2VfdHJhbnNmZXIAAAwYc291cmNlsBBkZXN0sBR2YWx1ZQhMdHJhbnNmZXJfa2VlcF9hbGl2ZQAACBBkZXN0sBR2YWx1ZQgwdHJhbnNmZXJfYWxsAAAIEGRlc3SwKGtlZXBfYWxpdmW0PGZvcmNlX3VucmVzZXJ2ZQAACAx3aG+wGGFtb3VudAhAdXBncmFkZV9hY2NvdW50cwAABAx3aG8gIHRyYW5zZmVyAAAIEGRlc3SwFHZhbHVlCERmb3JjZV9zZXRfYmFsYW5jZQAACAx3aG+wIG5ld19mcmVlCAIMTHJlcG9ydF9lcXVpdm9jYXRpb24AAARIZXF1aXZvY2F0aW9uX3Byb29m6HByZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkAAAESGVxdWl2b2NhdGlvbl9wcm9vZugwbm90ZV9zdGFsbGVkAAAIFGRlbGF5DGxiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXIMAAggcmVmX3RpbWUIKHByb29mX3NpemUIAhAQc3VkbwAABBBjYWxsWQFUc3Vkb191bmNoZWNrZWRfd2VpZ2h0AAAIEGNhbGxZARh3ZWlnaHQFARxzZXRfa2V5AAAEDG5ld7Acc3Vkb19hcwAACAx3aG+wEGNhbGxZAQQoAQgEDQEABCgAAiAYcmVtYXJrAAAEGHJlbWFyayg4c2V0X2hlYXBfcGFnZXMAAAQUcGFnZXMIIHNldF9jb2RlAAAEEGNvZGUoXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzAAAEEGNvZGUoLHNldF9zdG9yYWdlAAAEFGl0ZW1zEQEwa2lsbF9zdG9yYWdlAAAEEGtleXMVASxraWxsX3ByZWZpeAAACBhwcmVmaXgoHHN1YmtleXMMRHJlbWFya193aXRoX2V2ZW50AAAEGHJlbWFyaygCBAxzZXQAAAQMbm93CAJ0GGNyZWF0ZQAADAhpZAwUYWRtaW6wLG1pbl9iYWxhbmNlCDBmb3JjZV9jcmVhdGUAABAIaWQMFG93bmVysDRpc19zdWZmaWNpZW50tCxtaW5fYmFsYW5jZQg0c3RhcnRfZGVzdHJveQAABAhpZAxAZGVzdHJveV9hY2NvdW50cwAABAhpZAxEZGVzdHJveV9hcHByb3ZhbHMAAAQIaWQMOGZpbmlzaF9kZXN0cm95AAAECGlkDBBtaW50AAAMCGlkDCxiZW5lZmljaWFyebAYYW1vdW50CBBidXJuAAAMCGlkDAx3aG+wGGFtb3VudAggdHJhbnNmZXIAAAwIaWQMGHRhcmdldLAYYW1vdW50CEx0cmFuc2Zlcl9rZWVwX2FsaXZlAAAMCGlkDBh0YXJnZXSwGGFtb3VudAg4Zm9yY2VfdHJhbnNmZXIAABAIaWQMGHNvdXJjZbAQZGVzdLAYYW1vdW50CBhmcmVlemUAAAgIaWQMDHdob7AQdGhhdwAACAhpZAwMd2hvsDBmcmVlemVfYXNzZXQAAAQIaWQMKHRoYXdfYXNzZXQAAAQIaWQMSHRyYW5zZmVyX293bmVyc2hpcAAACAhpZAwUb3duZXKwIHNldF90ZWFtAAAQCGlkDBhpc3N1ZXKwFGFkbWlusBxmcmVlemVysDBzZXRfbWV0YWRhdGEAABAIaWQMEG5hbWUoGHN5bWJvbCggZGVjaW1hbHMMOGNsZWFyX21ldGFkYXRhAAAECGlkDEhmb3JjZV9zZXRfbWV0YWRhdGEAABQIaWQMEG5hbWUoGHN5bWJvbCggZGVjaW1hbHMMJGlzX2Zyb3plbrRQZm9yY2VfY2xlYXJfbWV0YWRhdGEAAAQIaWQMSGZvcmNlX2Fzc2V0X3N0YXR1cwAAIAhpZAwUb3duZXKwGGlzc3VlcrAUYWRtaW6wHGZyZWV6ZXKwLG1pbl9iYWxhbmNlCDRpc19zdWZmaWNpZW50tCRpc19mcm96ZW60QGFwcHJvdmVfdHJhbnNmZXIAAAwIaWQMIGRlbGVnYXRlsBhhbW91bnQIPGNhbmNlbF9hcHByb3ZhbAAACAhpZAwgZGVsZWdhdGWwVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAAADAhpZAwUb3duZXKwIGRlbGVnYXRlsER0cmFuc2Zlcl9hcHByb3ZlZAAAEAhpZAwUb3duZXKwLGRlc3RpbmF0aW9usBhhbW91bnQIFHRvdWNoAAAECGlkDBhyZWZ1bmQAAAgIaWQMKGFsbG93X2J1cm60PHNldF9taW5fYmFsYW5jZQAACAhpZAwsbWluX2JhbGFuY2UIAhgsc2V0X21lbWJlcnMAAAwsbmV3X21lbWJlcnMgFHByaW1lFCRvbGRfY291bnQMHGV4ZWN1dGUAAAggcHJvcG9zYWxZATBsZW5ndGhfYm91bmQMHHByb3Bvc2UAAAwkdGhyZXNob2xkDCBwcm9wb3NhbFkBMGxlbmd0aF9ib3VuZAwQdm90ZQAADCBwcm9wb3NhbAAUaW5kZXgMHGFwcHJvdmW0TGRpc2FwcHJvdmVfcHJvcG9zYWwAAAQ0cHJvcG9zYWxfaGFzaAAUY2xvc2UAABA0cHJvcG9zYWxfaGFzaAAUaW5kZXgMVHByb3Bvc2FsX3dlaWdodF9ib3VuZAUBMGxlbmd0aF9ib3VuZAwGCAIIIEVuZm9yY2VkAAEFHFJlbGF4ZWQAAQUCJDxjYWxsX29sZF93ZWlnaHQAABQQZGVzdLAUdmFsdWUIJGdhc19saW1pdAhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0KQEQZGF0YSiAaW5zdGFudGlhdGVfd2l0aF9jb2RlX29sZF93ZWlnaHQAABgUdmFsdWUIJGdhc19saW1pdAhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0KQEQY29kZSgQZGF0YSgQc2FsdChYaW5zdGFudGlhdGVfb2xkX3dlaWdodAAAGBR2YWx1ZQgkZ2FzX2xpbWl0CFRzdG9yYWdlX2RlcG9zaXRfbGltaXQpASRjb2RlX2hhc2gAEGRhdGEoEHNhbHQoLHVwbG9hZF9jb2RlAAAMEGNvZGUoVHN0b3JhZ2VfZGVwb3NpdF9saW1pdCkBLGRldGVybWluaXNtLQEscmVtb3ZlX2NvZGUAAAQkY29kZV9oYXNoACBzZXRfY29kZQAACBBkZXN0sCRjb2RlX2hhc2gAEGNhbGwAABQQZGVzdLAUdmFsdWUIJGdhc19saW1pdAUBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdCkBEGRhdGEoVGluc3RhbnRpYXRlX3dpdGhfY29kZQAAGBR2YWx1ZQgkZ2FzX2xpbWl0BQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0KQEQY29kZSgQZGF0YSgQc2FsdCgsaW5zdGFudGlhdGUAABgUdmFsdWUIJGdhc19saW1pdAUBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdCkBJGNvZGVfaGFzaAAQZGF0YSgQc2FsdCgACBxwZWVyX2lkKEhleHRlcm5hbF9hZGRyZXNzZXMVAQAUMGJsb2NrX251bWJlcgw0bmV0d29ya19zdGF0ZTUBNHNlc3Npb25faW5kZXgMPGF1dGhvcml0eV9pbmRleAw4dmFsaWRhdG9yc19sZW4MAgQkaGVhcnRiZWF0AAAIJGhlYXJ0YmVhdDkBJHNpZ25hdHVyZdgAEBBhdXJhABxncmFuZHBhACRpbV9vbmxpbmUATGF1dGhvcml0eV9kaXNjb3ZlcnkAAgggc2V0X2tleXMAAAgQa2V5c0EBFHByb29mKChwdXJnZV9rZXlzAAEFAhQ0cHJvcG9zZV9zcGVuZAAACBR2YWx1ZQgsYmVuZWZpY2lhcnmwPHJlamVjdF9wcm9wb3NhbAAABCxwcm9wb3NhbF9pZAxAYXBwcm92ZV9wcm9wb3NhbAAABCxwcm9wb3NhbF9pZAwUc3BlbmQAAAgYYW1vdW50CCxiZW5lZmljaWFyebA8cmVtb3ZlX2FwcHJvdmFsAAAELHByb3Bvc2FsX2lkDAIkQHNldF9wYWxsZXRfYWRtaW4AAAQkbmV3X2FkbWluEGBzZXRfbWluaW5nX3Bvb2xfY29udHJhY3QAAAQwbmV3X2NvbnRyYWN0EDBwcm9wb3NlX2xvY2sAAAg8YWNjb3VudF90b19sb2NrEDBwcm9wb3NhbF9mZWUIOHByb3Bvc2VfdW5sb2NrAAAIRGFjY291bnRfdG9fdW5sb2NrEDBwcm9wb3NhbF9mZWUISHZvdGVfaW5fcmVmZXJlbmR1bQAACDhsb2NrX2NhbmRpZGF0ZRBIYXNzZW50X29uX2RlY2lzaW9utEBzZXRfcHJvcG9zYWxfZmVlAAAEHG5ld19mZWUITGFkbWluX2xvY2tfYWNjb3VudHMAAAhAYWNjb3VudHNfdG9fbG9jayAgcHJvcG9zZXIQVGFkbWluX3VubG9ja19hY2NvdW50cwAABEhhY2NvdW50c190b191bmxvY2sgVGFkbWluX3JlbW92ZV9wcm9wb3NhbAAABEBwcm9wb3NlZF9hY2NvdW50EAYgAiBgY3JlYXRlX211bHRpX3NpZ19hY2NvdW50AAAMLHNpZ25hdG9yaWVzICxhdXRob3JzX29wdFEBZG1pbl9hcHByb3Zpbmdfc2lnbmF0b3JpZXMMNGF1dGhvcl9hX2NhbGwAAAhEbXVsdGlfc2lnX2FjY291bnQQEGNhbGxZAURhZGRfY2FsbF9hcHByb3ZhbAAACERtdWx0aV9zaWdfYWNjb3VudBAcY2FsbF9pZABQcmVtb3ZlX2NhbGxfYXBwcm92YWwAAAhEbXVsdGlfc2lnX2FjY291bnQQHGNhbGxfaWQAYHByb3Bvc2FsX21zYV9uZXdfbWluaW11bQAACCxtc2FfYWRkcmVzcxBEbmV3X21pbl9hcHByb3ZhbHMMXGFwcHJvdmVfbXNhX25ld19taW5pbXVtAAAELG1zYV9hZGRyZXNzEIxyZXZva2VfYXBwcm92YWxfZm9yX21zYV9uZXdfbWluaW11bQAABCxtc2FfYWRkcmVzcxAscmVtb3ZlX2NhbGwAAAhEbXVsdGlfc2lnX2FjY291bnQQHGNhbGxfaWQAAkQoRDlSZWZlcnJhbAHsKEQ5VHJlYXN1cnkB8DBEOU5vZGVWb3RpbmcB9DREOU5vZGVSZXdhcmRzAfggQmFsYW5jZXMB/BxHcmFuZHBhAQEBEFN1ZG8BCQEYU3lzdGVtARkBJFRpbWVzdGFtcAEdARhBc3NldHMBIQEoQ29sbGVjdGl2ZQElASRDb250cmFjdHMBMQEgSW1PbmxpbmUBPQEcU2Vzc2lvbgFFASBUcmVhc3VyeQFJASxDb3VuY2lsTG9jawFNAShEOU11bHRpU2lnAVUBB6iMABQUbm9uY2UMJGNvbnN1bWVycwwkcHJvdmlkZXJzDCxzdWZmaWNpZW50cwwQZGF0YZAADBhub3JtYWwFASxvcGVyYXRpb25hbAUBJG1hbmRhdG9yeQUBBQEQAhQoUHJlUnVudGltZQADCGkBKCRDb25zZW5zdXMAAwhpASgQU2VhbAADCGkBKBRPdGhlcgEoZFJ1bnRpbWVFbnZpcm9ubWVudFVwZGF0ZWQAAQUEbQEAAgw4QXBwbHlFeHRyaW5zaWMBDDBGaW5hbGl6YXRpb24AAQU4SW5pdGlhbGl6YXRpb24AAQUCDHhOZXdSZWZlcnJhbFJlbGF0aW9uc2hpcENyZWF0ZWQABBABCExOZXdSZWZlcnJhbERlcHRoU2V0AQxMTmV3RGVmYXVsdFBhcmVudFNldAEQAgQwTmV3VHJlYXN1cmVyARACDEhDYW5kaWRhY3lTdWJtaXR0ZWQBEEBWb3Rlc0RlbGVnYXRlZEJ5ARBAQ2FuZGlkYWN5UmVtb3ZlZAEQAghMRXJyb3JJc3N1aW5nUmV3YXJkcwABBTRDb250cmFjdEVycm9yAYwCVBxFbmRvd2VkAAAIHGFjY291bnQQMGZyZWVfYmFsYW5jZQggRHVzdExvc3QAAAgcYWNjb3VudBAYYW1vdW50CCBUcmFuc2ZlcgAADBBmcm9tEAh0bxAYYW1vdW50CChCYWxhbmNlU2V0AAAIDHdobxAQZnJlZQggUmVzZXJ2ZWQAAAgMd2hvEBhhbW91bnQIKFVucmVzZXJ2ZWQAAAgMd2hvEBhhbW91bnQISFJlc2VydmVSZXBhdHJpYXRlZAAAEBBmcm9tEAh0bxAYYW1vdW50CEhkZXN0aW5hdGlvbl9zdGF0dXO4HERlcG9zaXQAAAgMd2hvEBhhbW91bnQIIFdpdGhkcmF3AAAIDHdobxAYYW1vdW50CBxTbGFzaGVkAAAIDHdobxAYYW1vdW50CBhNaW50ZWQAAAgMd2hvEBhhbW91bnQIGEJ1cm5lZAAACAx3aG8QGGFtb3VudAgkU3VzcGVuZGVkAAAIDHdobxAYYW1vdW50CCBSZXN0b3JlZAAACAx3aG8QGGFtb3VudAggVXBncmFkZWQAAAQMd2hvEBhJc3N1ZWQAAAQYYW1vdW50CCRSZXNjaW5kZWQAAAQYYW1vdW50CBhMb2NrZWQAAAgMd2hvEBhhbW91bnQIIFVubG9ja2VkAAAIDHdobxAYYW1vdW50CBhGcm96ZW4AAAgMd2hvEBhhbW91bnQIGFRoYXdlZAAACAx3aG8QGGFtb3VudAgCDDhOZXdBdXRob3JpdGllcwAABDRhdXRob3JpdHlfc2V0xBhQYXVzZWQAAQUcUmVzdW1lZAABBQIMFFN1ZGlkAAAELHN1ZG9fcmVzdWx0XQEoS2V5Q2hhbmdlZAAABChvbGRfc3Vkb2VyFChTdWRvQXNEb25lAAAELHN1ZG9fcmVzdWx0XQECDBhOb3JtYWwAAQUsT3BlcmF0aW9uYWwAAQUkTWFuZGF0b3J5AAEFAggMWWVzAAEFCE5vAAEFAAwYd2VpZ2h0BQEUY2xhc3OVASBwYXlzX2ZlZZkBAhhARXh0cmluc2ljU3VjY2VzcwAABDRkaXNwYXRjaF9pbmZvnQE8RXh0cmluc2ljRmFpbGVkAAAIOGRpc3BhdGNoX2Vycm9yjDRkaXNwYXRjaF9pbmZvnQEsQ29kZVVwZGF0ZWQAAQUoTmV3QWNjb3VudAAABBxhY2NvdW50EDRLaWxsZWRBY2NvdW50AAAEHGFjY291bnQQIFJlbWFya2VkAAAIGHNlbmRlchAQaGFzaAACBEhUcmFuc2FjdGlvbkZlZVBhaWQAAAwMd2hvEChhY3R1YWxfZmVlCAx0aXAIAlgcQ3JlYXRlZAAADCBhc3NldF9pZAwcY3JlYXRvchAUb3duZXIQGElzc3VlZAAADCBhc3NldF9pZAwUb3duZXIQGGFtb3VudAgsVHJhbnNmZXJyZWQAABAgYXNzZXRfaWQMEGZyb20QCHRvEBhhbW91bnQIGEJ1cm5lZAAADCBhc3NldF9pZAwUb3duZXIQHGJhbGFuY2UILFRlYW1DaGFuZ2VkAAAQIGFzc2V0X2lkDBhpc3N1ZXIQFGFkbWluEBxmcmVlemVyEDBPd25lckNoYW5nZWQAAAggYXNzZXRfaWQMFG93bmVyEBhGcm96ZW4AAAggYXNzZXRfaWQMDHdobxAYVGhhd2VkAAAIIGFzc2V0X2lkDAx3aG8QLEFzc2V0RnJvemVuAAAEIGFzc2V0X2lkDCxBc3NldFRoYXdlZAAABCBhc3NldF9pZAxEQWNjb3VudHNEZXN0cm95ZWQAAAwgYXNzZXRfaWQMSGFjY291bnRzX2Rlc3Ryb3llZAxIYWNjb3VudHNfcmVtYWluaW5nDEhBcHByb3ZhbHNEZXN0cm95ZWQAAAwgYXNzZXRfaWQMTGFwcHJvdmFsc19kZXN0cm95ZWQMTGFwcHJvdmFsc19yZW1haW5pbmcMSERlc3RydWN0aW9uU3RhcnRlZAAABCBhc3NldF9pZAwkRGVzdHJveWVkAAAEIGFzc2V0X2lkDDBGb3JjZUNyZWF0ZWQAAAggYXNzZXRfaWQMFG93bmVyECxNZXRhZGF0YVNldAAAFCBhc3NldF9pZAwQbmFtZSgYc3ltYm9sKCBkZWNpbWFscwwkaXNfZnJvemVutDxNZXRhZGF0YUNsZWFyZWQAAAQgYXNzZXRfaWQMQEFwcHJvdmVkVHJhbnNmZXIAABAgYXNzZXRfaWQMGHNvdXJjZRAgZGVsZWdhdGUQGGFtb3VudAhEQXBwcm92YWxDYW5jZWxsZWQAAAwgYXNzZXRfaWQMFG93bmVyECBkZWxlZ2F0ZRBMVHJhbnNmZXJyZWRBcHByb3ZlZAAAFCBhc3NldF9pZAwUb3duZXIQIGRlbGVnYXRlECxkZXN0aW5hdGlvbhAYYW1vdW50CEhBc3NldFN0YXR1c0NoYW5nZWQAAAQgYXNzZXRfaWQMWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQAAAggYXNzZXRfaWQMPG5ld19taW5fYmFsYW5jZQgCHCBQcm9wb3NlZAAAEBxhY2NvdW50EDhwcm9wb3NhbF9pbmRleAw0cHJvcG9zYWxfaGFzaAAkdGhyZXNob2xkDBRWb3RlZAAAFBxhY2NvdW50EDRwcm9wb3NhbF9oYXNoABR2b3RlZLQMeWVzDAhubwwgQXBwcm92ZWQAAAQ0cHJvcG9zYWxfaGFzaAAsRGlzYXBwcm92ZWQAAAQ0cHJvcG9zYWxfaGFzaAAgRXhlY3V0ZWQAAAg0cHJvcG9zYWxfaGFzaAAYcmVzdWx0XQE4TWVtYmVyRXhlY3V0ZWQAAAg0cHJvcG9zYWxfaGFzaAAYcmVzdWx0XQEYQ2xvc2VkAAAMNHByb3Bvc2FsX2hhc2gADHllcwwIbm8MAiAwSW5zdGFudGlhdGVkAAAIIGRlcGxveWVyECBjb250cmFjdBAoVGVybWluYXRlZAAACCBjb250cmFjdBAsYmVuZWZpY2lhcnkQKENvZGVTdG9yZWQAAAQkY29kZV9oYXNoADxDb250cmFjdEVtaXR0ZWQAAAggY29udHJhY3QQEGRhdGEoLENvZGVSZW1vdmVkAAAEJGNvZGVfaGFzaABMQ29udHJhY3RDb2RlVXBkYXRlZAAADCBjb250cmFjdBA0bmV3X2NvZGVfaGFzaAA0b2xkX2NvZGVfaGFzaAAYQ2FsbGVkAAAIGGNhbGxlchAgY29udHJhY3QQOERlbGVnYXRlQ2FsbGVkAAAIIGNvbnRyYWN0ECRjb2RlX2hhc2gAAwgQJAS1AQACDERIZWFydGJlYXRSZWNlaXZlZAAABDBhdXRob3JpdHlfaWQAHEFsbEdvb2QAAQUsU29tZU9mZmxpbmUAAAQcb2ZmbGluZbkBAgQoTmV3U2Vzc2lvbgAABDRzZXNzaW9uX2luZGV4DAIkIFByb3Bvc2VkAAAEOHByb3Bvc2FsX2luZGV4DCBTcGVuZGluZwAABEBidWRnZXRfcmVtYWluaW5nCBxBd2FyZGVkAAAMOHByb3Bvc2FsX2luZGV4DBRhd2FyZAgcYWNjb3VudBAgUmVqZWN0ZWQAAAg4cHJvcG9zYWxfaW5kZXgMHHNsYXNoZWQIFEJ1cm50AAAELGJ1cm50X2Z1bmRzCCBSb2xsb3ZlcgAABEByb2xsb3Zlcl9iYWxhbmNlCBxEZXBvc2l0AAAEFHZhbHVlCDRTcGVuZEFwcHJvdmVkAAAMOHByb3Bvc2FsX2luZGV4DBhhbW91bnQILGJlbmVmaWNpYXJ5EDxVcGRhdGVkSW5hY3RpdmUAAAgscmVhY3RpdmF0ZWQILGRlYWN0aXZhdGVkCAIIGExvY2tlZAABBSBVbmxvY2tlZAABBQIMGFBhc3NlZAABBSBSZWplY3RlZAABBTBJbmNvbmNsdXNpdmUABAwBCAIgXEFjY291bnROb21pbmF0ZWRGb3JMb2NrARA8UHJvcG9zYWxGZWVQYWlkAAMIEAgwVm90ZVJlY29yZGVkAAMQEBDJAbQ0QWNjb3VudExvY2tlZAEQPEFjY291bnRVbmxvY2tlZAEQZEFjY291bnROb21pbmF0ZWRGb3JVbmxvY2sBECxWb3RlU3RhcnRlZAABBSRWb3RlRW5kZWQAAwgQzQECHHBNdWx0aVNpZ25hdHVyZUFjY291bnRDcmVhdGVkAAQQAQhwTXVsdGlTaWduYXR1cmVBY2NvdW50VXBkYXRlZAAEEAEIPE5ld0NhbGxBdXRob3JlZAADCBAANEFwcHJvdmFsQWRkZWQABBABCDxBcHByb3ZhbFJlbW92ZWQABBABCDBDYWxsRXhlY3V0ZWQBAExNaW5BcHByb3ZhbHNDaGFuZ2VkAAMIEAwCRChEOVJlZmVycmFsAXkBKEQ5VHJlYXN1cnkBfQEwRDlOb2RlVm90aW5nAYEBNEQ5Tm9kZVJld2FyZHMBhQEgQmFsYW5jZXMBiQEcR3JhbmRwYQGNARBTdWRvAZEBGFN5c3RlbQGhAUhUcmFuc2FjdGlvblBheW1lbnQBpQEYQXNzZXRzAakBKENvbGxlY3RpdmUBrQEkQ29udHJhY3RzAbEBIEltT25saW5lAb0BHFNlc3Npb24BwQEgVHJlYXN1cnkBxQEsQ291bmNpbExvY2sB0QEoRDlNdWx0aVNpZwHVAQAMFHBoYXNldQEUZXZlbnTZARh0b3BpY3MEBN0BAATQAAEBAAgwc3BlY192ZXJzaW9uDCRzcGVjX25hbWXpAQYFAQAQOGJhc2VfZXh0cmluc2ljBQE0bWF4X2V4dHJpbnNpY/EBJG1heF90b3RhbPEBIHJlc2VydmVk8QEADBhub3JtYWz1ASxvcGVyYXRpb25hbPUBJG1hbmRhdG9yefUBAAwoYmFzZV9ibG9jawUBJG1heF9ibG9jawUBJHBlcl9jbGFzc/kBAAwYbm9ybWFsDCxvcGVyYXRpb25hbAwkbWFuZGF0b3J5DAAIEHJlYWQIFHdyaXRlCAMIOAwECQIAACAkc3BlY19uYW1l6QEkaW1wbF9uYW1l6QFEYXV0aG9yaW5nX3ZlcnNpb24MMHNwZWNfdmVyc2lvbgwwaW1wbF92ZXJzaW9uDBBhcGlzDQJMdHJhbnNhY3Rpb25fdmVyc2lvbgw0c3RhdGVfdmVyc2lvbgwCCCRWMUFuY2llbnQAAQUIVjIAAQUCDBBMaXZlAAEFGEZyb3plbgABBShEZXN0cm95aW5nAAEFADAUb3duZXIQGGlzc3VlchAUYWRtaW4QHGZyZWV6ZXIQGHN1cHBseQgcZGVwb3NpdAgsbWluX2JhbGFuY2UINGlzX3N1ZmZpY2llbnS0IGFjY291bnRzDCxzdWZmaWNpZW50cwwkYXBwcm92YWxzDBhzdGF0dXMZAgMIDBACECBDb25zdW1lcgABBShTdWZmaWNpZW50AAEFLERlcG9zaXRIZWxkAQg8RGVwb3NpdFJlZnVuZGVkAAEFAAwcYmFsYW5jZQgkaXNfZnJvemVutBhyZWFzb24lAgMMDBAQAAgYYW1vdW50CBxkZXBvc2l0CAAUHGRlcG9zaXQIEG5hbWUoGHN5bWJvbCggZGVjaW1hbHMMJGlzX2Zyb3plbrQAFBRpbmRleAwkdGhyZXNob2xkDBBheWVzIBBuYXlzIAxlbmQMABRsaW5zdHJ1Y3Rpb25fd2VpZ2h0c192ZXJzaW9uDBxpbml0aWFsDBxtYXhpbXVtDBBjb2RlKCxkZXRlcm1pbmlzbS0BAAwUb3duZXIQHGRlcG9zaXQIIHJlZmNvdW50CAAgHHRyaWVfaWQoPGRlcG9zaXRfYWNjb3VudBAkY29kZV9oYXNoADRzdG9yYWdlX2J5dGVzDDRzdG9yYWdlX2l0ZW1zDFBzdG9yYWdlX2J5dGVfZGVwb3NpdAhQc3RvcmFnZV9pdGVtX2RlcG9zaXQIUHN0b3JhZ2VfYmFzZV9kZXBvc2l0CAAIOGluc2VydF9jb3VudGVyDDhkZWxldGVfY291bnRlcgwAKDBldmVudF90b3BpY3MMHGdsb2JhbHMMGGxvY2FscwwocGFyYW1ldGVycwwwbWVtb3J5X3BhZ2VzDCh0YWJsZV9zaXplDDRicl90YWJsZV9zaXplDCxzdWJqZWN0X2xlbgwscGF5bG9hZF9sZW4MOHJ1bnRpbWVfbWVtb3J5DADUHHZlcnNpb24MIGZhbGxiYWNrDCBpNjRjb25zdAwcaTY0bG9hZAwgaTY0c3RvcmUMGHNlbGVjdAwQciNpZgwIYnIMFGJyX2lmDCBicl90YWJsZQxIYnJfdGFibGVfcGVyX2VudHJ5DBBjYWxsDDRjYWxsX2luZGlyZWN0DDhjYWxsX3Blcl9sb2NhbAwkbG9jYWxfZ2V0DCRsb2NhbF9zZXQMJGxvY2FsX3RlZQwoZ2xvYmFsX2dldAwoZ2xvYmFsX3NldAw4bWVtb3J5X2N1cnJlbnQMLG1lbW9yeV9ncm93DBhpNjRjbHoMGGk2NGN0egwkaTY0cG9wY250DBhpNjRlcXoMNGk2NGV4dGVuZHNpMzIMNGk2NGV4dGVuZHVpMzIMKGkzMndyYXBpNjQMFGk2NGVxDBRpNjRuZQwYaTY0bHRzDBhpNjRsdHUMGGk2NGd0cwwYaTY0Z3R1DBhpNjRsZXMMGGk2NGxldQwYaTY0Z2VzDBhpNjRnZXUMGGk2NGFkZAwYaTY0c3ViDBhpNjRtdWwMHGk2NGRpdnMMHGk2NGRpdnUMHGk2NHJlbXMMHGk2NHJlbXUMGGk2NGFuZAwUaTY0b3IMGGk2NHhvcgwYaTY0c2hsDBxpNjRzaHJzDBxpNjRzaHJ1DBxpNjRyb3RsDBxpNjRyb3RyDAD0GGNhbGxlcgUBLGlzX2NvbnRyYWN0BQEkY29kZV9oYXNoBQE0b3duX2NvZGVfaGFzaAUBQGNhbGxlcl9pc19vcmlnaW4FARxhZGRyZXNzBQEgZ2FzX2xlZnQFARxiYWxhbmNlBQFEdmFsdWVfdHJhbnNmZXJyZWQFATxtaW5pbXVtX2JhbGFuY2UFATBibG9ja19udW1iZXIFAQxub3cFATR3ZWlnaHRfdG9fZmVlBQEMZ2FzBQEUaW5wdXQFAThpbnB1dF9wZXJfYnl0ZQUBIHIjcmV0dXJuBQE8cmV0dXJuX3Blcl9ieXRlBQEkdGVybWluYXRlBQEYcmFuZG9tBQE0ZGVwb3NpdF9ldmVudAUBXGRlcG9zaXRfZXZlbnRfcGVyX3RvcGljBQFYZGVwb3NpdF9ldmVudF9wZXJfYnl0ZQUBNGRlYnVnX21lc3NhZ2UFAVhkZWJ1Z19tZXNzYWdlX3Blcl9ieXRlBQEsc2V0X3N0b3JhZ2UFAWBzZXRfc3RvcmFnZV9wZXJfbmV3X2J5dGUFAWBzZXRfc3RvcmFnZV9wZXJfb2xkX2J5dGUFATRzZXRfY29kZV9oYXNoBQE0Y2xlYXJfc3RvcmFnZQUBWGNsZWFyX3N0b3JhZ2VfcGVyX2J5dGUFAUBjb250YWluc19zdG9yYWdlBQFkY29udGFpbnNfc3RvcmFnZV9wZXJfYnl0ZQUBLGdldF9zdG9yYWdlBQFQZ2V0X3N0b3JhZ2VfcGVyX2J5dGUFATB0YWtlX3N0b3JhZ2UFAVR0YWtlX3N0b3JhZ2VfcGVyX2J5dGUFASB0cmFuc2ZlcgUBEGNhbGwFATRkZWxlZ2F0ZV9jYWxsBQFcY2FsbF90cmFuc2Zlcl9zdXJjaGFyZ2UFAVBjYWxsX3Blcl9jbG9uZWRfYnl0ZQUBLGluc3RhbnRpYXRlBQF4aW5zdGFudGlhdGVfdHJhbnNmZXJfc3VyY2hhcmdlBQFoaW5zdGFudGlhdGVfcGVyX2lucHV0X2J5dGUFAWRpbnN0YW50aWF0ZV9wZXJfc2FsdF9ieXRlBQE0aGFzaF9zaGEyXzI1NgUBWGhhc2hfc2hhMl8yNTZfcGVyX2J5dGUFATxoYXNoX2tlY2Nha18yNTYFAWBoYXNoX2tlY2Nha18yNTZfcGVyX2J5dGUFATxoYXNoX2JsYWtlMl8yNTYFAWBoYXNoX2JsYWtlMl8yNTZfcGVyX2J5dGUFATxoYXNoX2JsYWtlMl8xMjgFAWBoYXNoX2JsYWtlMl8xMjhfcGVyX2J5dGUFATRlY2RzYV9yZWNvdmVyBQFQZWNkc2FfdG9fZXRoX2FkZHJlc3MFAThzcjI1NTE5X3ZlcmlmeQUBXHNyMjU1MTlfdmVyaWZ5X3Blcl9ieXRlBQFAcmVlbnRyYW5jZV9jb3VudAUBYGFjY291bnRfcmVlbnRyYW5jZV9jb3VudAUBTGluc3RhbnRpYXRpb25fbm9uY2UFAQAMGGxpbWl0c00CTGluc3RydWN0aW9uX3dlaWdodHNRAjxob3N0X2ZuX3dlaWdodHNVAgMIAAwDCAw1AQMIEEEBBGUCAAQMAAMIaQEoABAgcHJvcG9zZXIQFHZhbHVlCCxiZW5lZmljaWFyeRAQYm9uZAgAGEBwcm9wb3NlZF9hY2NvdW50EDRzZXNzaW9uX2luZGV4DCRub21pbmF0b3IQJGNoYW5nZV90b8kBNGNyZWF0aW9uX3RpbWUIcGVzdGltYXRlZF90aW1lX3RvX3JlZmVyZW5kdW0pAQAgJG5vbWluYXRvchBAcHJvcG9zZWRfYWNjb3VudBBEaW5kZXhfb2ZfcHJvcG9zYWwMJGNoYW5nZV90b8kBQGFzc2VudGluZ192b3RlcnMgRGRpc3NlbnRpbmdfdm90ZXJzIChzdGFydF90aW1lCEhlc3RpbWF0ZWRfZW5kX3RpbWUIACAkbm9taW5hdG9yEEBwcm9wb3NlZF9hY2NvdW50EERpbmRleF9vZl9wcm9wb3NhbAwoY2hhbmdlZF90b8kBQGFzc2VudGluZ192b3RlcnMgRGRpc3NlbnRpbmdfdm90ZXJzIBhyZXN1bHTNASBlbmRfdGltZQgADBxhY2NvdW50ECRub21pbmF0b3IQKGxvY2tfaW5kZXgMAAwIaWQAEGNhbGwoJGFwcHJvdmFscyAEiQIAABQcYWRkcmVzcxAcYXV0aG9yc1EBLHNpZ25hdG9yaWVzIExtaW5pbXVtX3NpZ25hdG9yaWVzDDRwZW5kaW5nX2NhbGxzjQIAFCxtc2FfYWRkcmVzcxAsbmV3X21pbmltdW0MIHByb3Bvc2VyECRhcHByb3ZhbHMgQHBhc3NfcmVxdWlyZW1lbnQM";
|
|
68
|
+
metadataTypes_default = content;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// .papi/descriptors/src/d9_metadata.ts
|
|
73
|
+
var d9_metadata_exports = {};
|
|
74
|
+
__export(d9_metadata_exports, {
|
|
75
|
+
default: () => d9_metadata_default
|
|
76
|
+
});
|
|
77
|
+
var binMeta, d9_metadata_default;
|
|
78
|
+
var init_d9_metadata = __esm({
|
|
79
|
+
".papi/descriptors/src/d9_metadata.ts"() {
|
|
80
|
+
"use strict";
|
|
81
|
+
binMeta = "bWV0YQ7xAwAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAFAEYVmVjPFQ+AAAEEERzcF9jb25zZW5zdXNfYXVyYRxzcjI1NTE5LGFwcF9zcjI1NTE5GFB1YmxpYwAABAAIATxzcjI1NTE5OjpQdWJsaWMAAAgMHHNwX2NvcmUcc3IyNTUxORhQdWJsaWMAAAQADAEgW3U4OyAzMl0AAAwAAAMgAAAAEAAQAAAFAwAUAAACBAAYCEhzcF9jb25zZW5zdXNfc2xvdHMQU2xvdAAABAAcAQx1NjQAABwAAAUGACAAAAUFACQMHHNwX2NvcmUYY3J5cHRvLEFjY291bnRJZDMyAAAEAAwBIFt1ODsgMzJdAAAoDEhwYWxsZXRfZDlfcmVmZXJyYWwYcGFsbGV0EENhbGwIBFQABEkAAQRUY2hhbmdlX3JlZmVycmFsX2RlcHRoBAEkbmV3X2RlcHRoIAEMdTMyAAAABCUBQ29udGFpbnMgb25lIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYW4gZXh0cmluc2ljLiwMSHBhbGxldF9kOV9yZWZlcnJhbBhwYWxsZXQURXZlbnQIBFQABEkAAQx4TmV3UmVmZXJyYWxSZWxhdGlvbnNoaXBDcmVhdGVkCAAkATBUOjpBY2NvdW50SWQAACQBMFQ6OkFjY291bnRJZAAAAExOZXdSZWZlcnJhbERlcHRoU2V0BAAgAQx1MzIAAQBMTmV3RGVmYXVsdFBhcmVudFNldAQAJAEwVDo6QWNjb3VudElkAAIABKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQkwDEhwYWxsZXRfZDlfcmVmZXJyYWwYcGFsbGV0FEVycm9yCARUAARJAAEEXE5vUmVmZXJyYWxBY2NvdW50UmVjb3JkAAAABLUBCgkJCUN1c3RvbSBbZGlzcGF0Y2ggZXJyb3JzXShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykKCQkJb2YgdGhpcyBwYWxsZXQuCgkJCTQEGE9wdGlvbgQEVAEkAQgQTm9uZQAAABBTb21lBAAkAAABAAA4DEhwYWxsZXRfZDlfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAAQQ0bmV3X3RyZWFzdXJlcgQBNG5ld190cmVhc3VyZXIkATBUOjpBY2NvdW50SWQAAAAEJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMuPAxIcGFsbGV0X2Q5X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABBDBOZXdUcmVhc3VyZXIEACQBMFQ6OkFjY291bnRJZAAAAAShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJQAxIcGFsbGV0X2Q5X3RyZWFzdXJ5GHBhbGxldBRFcnJvcggEVAAESQABCFhPbmx5VHJlYXN1cmVyQ2FuRG9UaGlzAAAAOE5vVHJlYXN1cmVyU2V0AAEABHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC5EDFRwYWxsZXRfZDlfbm9kZV92b3RpbmcUdHlwZXM4Vm90aW5nSW50ZXJlc3QAAAgBFHRvdGFsSAEMdTY0AAEkZGVsZWdhdGVkSAEMdTY0AABIAAAGHABMAAAECCQkAFAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEkBFMAAAQAVAEYVmVjPFQ+AABUAAACJABYDFRwYWxsZXRfZDlfbm9kZV92b3RpbmcUdHlwZXNIVmFsaWRhdG9yVm90ZVN0YXRzBARUAAAQAShhY2NvdW50X2lkJAEwVDo6QWNjb3VudElkAAEsdG90YWxfdm90ZXMcAQx1NjQAAShzZWxmX3ZvdGVzHAEMdTY0AAE8ZGVsZWdhdGVkX3ZvdGVzHAEMdTY0AABcDFRwYWxsZXRfZDlfbm9kZV92b3RpbmcUdHlwZXNITm9kZU1ldGFkYXRhU3RydWN0AAAMARBuYW1lYAF0Qm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MTI4Pj4AATxzaGFyaW5nX3BlcmNlbnQQAQh1OAABcGluZGV4X29mX2xhc3RfcGVyY2VudF9jaGFuZ2UgAQx1MzIAAGAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQAZAEYVmVjPFQ+AABkAAACEABoDFRwYWxsZXRfZDlfbm9kZV92b3RpbmcYcGFsbGV0EENhbGwEBFQAASRAc3VibWl0X2NhbmRpZGFjeQQBSGNhbmRpZGF0ZV9tZXRhZGF0YVwBSE5vZGVNZXRhZGF0YVN0cnVjdAAAAExhZGRfdm90aW5nX2ludGVyZXN0EAFEYmVuZWZpY2lhcnlfdm90ZXIkATBUOjpBY2NvdW50SWQAASRtYWluX3Bvb2wkATBUOjpBY2NvdW50SWQAAThhbW91bnRfdG9fYnVybmwBMEJhbGFuY2VPZjxUPgABNGJ1cm5fY29udHJhY3QkATBUOjpBY2NvdW50SWQAAQA4ZGVsZWdhdGVfdm90ZXMEASxkZWxlZ2F0aW9uc3ABcFZlYzxWYWxpZGF0b3JEZWxlZ2F0aW9uczxUPj4AAgBAcmVtb3ZlX2NhbmRpZGFjeQADAHx0cnlfcmVtb3ZlX3ZvdGVzX2Zyb21fY2FuZGlkYXRlCAEkY2FuZGlkYXRlJAEwVDo6QWNjb3VudElkAAEUdm90ZXMcAQx1NjQABABIcmVkaXN0cmlidXRlX3ZvdGVzCAEQZnJvbSQBMFQ6OkFjY291bnRJZAABCHRvJAEwVDo6QWNjb3VudElkAAUAVGNoYW5nZV9jYW5kaWRhdGVfbmFtZQQBEG5hbWVgAXRCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwxMjg+PgAGAIBjaGFuZ2VfY2FuZGlkYXRlX3N1cHBvcnRlcl9zaGFyZQQBPHNoYXJpbmdfcGVyY2VudBABCHU4AAcAQHNldF9wYWxsZXRfYWRtaW4EASRuZXdfYWRtaW4kATBUOjpBY2NvdW50SWQACAAEJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMubAAABQcAcAAAAnQAdAxUcGFsbGV0X2Q5X25vZGVfdm90aW5nFHR5cGVzUFZhbGlkYXRvckRlbGVnYXRpb25zBARUAAAIASRjYW5kaWRhdGUkATBUOjpBY2NvdW50SWQAARR2b3Rlc0gBDHU2NAAAeAxUcGFsbGV0X2Q5X25vZGVfdm90aW5nGHBhbGxldBRFdmVudAQEVAABDEhDYW5kaWRhY3lTdWJtaXR0ZWQEACQBMFQ6OkFjY291bnRJZAAAAEBWb3Rlc0RlbGVnYXRlZEJ5BAAkATBUOjpBY2NvdW50SWQAAQBAQ2FuZGlkYWN5UmVtb3ZlZAQAJAEwVDo6QWNjb3VudElkAAIABKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQl8DFRwYWxsZXRfZDlfbm9kZV92b3RpbmcYcGFsbGV0FEVycm9yBARUAAFAOEhleERlY29kZUVycm9yAAAATEVtcHR5RGVsZWdhdGlvbkxpc3QAAQBYRGVsZWdhdGlvbkxpc3RUb29MYXJnZQACAHBEZWxlZ2F0b3JIYXNOb1ZvdGluZ0NhcGFjaXR5AAMAcERlbGVnYXRvckhhc05vQXZhaWxhYmxlVm90ZXMABAB0RGVsZWdhdG9ySGFzSW5zdWZmaWNpZW50Vm90ZXMABQCgQXR0ZW1wdGluZ1RvUmVtb3ZlTW9yZVZvdGVzVGhhbkRlbGVnYXRlZAAGAFRDYW5kaWRhdGVEb2VzTm90RXhpc3QABwBYQ2FuZGlkYXRlQWxyZWFkeUV4aXN0cwAIAGBFcnJvckdldHRpbmdOb2RlTWV0YWRhdGEACQCEVm90ZXJEaWRudERlbGVnYXRlVG9UaGlzQ2FuZGlkYXRlAAoASE5vdEFjdGl2ZVZhbGlkYXRvcgALAGxBdE1heGltdW1OdW1iZXJPZkNhbmRpZGF0ZXMADAB4QnVybkFtb3VudE11c3RCZUdyZWF0ZXJUaGFuMTAwAA0AYFN1cHBvcnRlclNoYXJlT3V0T2ZSYW5nZQAOAKxDdXJyZW50VmFsaWRhdG9yQ2FuTm90Q2hhbmdlU2hhcmVQZXJjZW50YWdlAA8ABLUBCgkJCUN1c3RvbSBbZGlzcGF0Y2ggZXJyb3JzXShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykKCQkJb2YgdGhpcyBwYWxsZXQuCgkJCYAMWHBhbGxldF9kOV9ub2RlX3Jld2FyZHMYcGFsbGV0EENhbGwEBFQAAQhAc2V0X3BhbGxldF9hZG1pbgQBJG5ld19hZG1pbiQBMFQ6OkFjY291bnRJZAAAAGBzZXRfbm9kZV9yZXdhcmRfY29udHJhY3QEATBuZXdfY29udHJhY3QkATBUOjpBY2NvdW50SWQAAQAEJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMuhAxYcGFsbGV0X2Q5X25vZGVfcmV3YXJkcxhwYWxsZXQURXZlbnQEBFQAAQhMRXJyb3JJc3N1aW5nUmV3YXJkcwAAADRDb250cmFjdEVycm9yBACIATREaXNwYXRjaEVycm9yAAEABKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQmICChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATQUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEAIwBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAJQBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQAmAE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAJwBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMAACMCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleBABCHU4AAEUZXJyb3KQAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAkAAAAwQAAAAQAJQIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABJEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAAJgINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAACcCChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAACgCDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAKQBHFt1ODsgOF0AAKQAAAMIAAAAEACoDFhwYWxsZXRfZDlfbm9kZV9yZXdhcmRzGHBhbGxldBRFcnJvcgQEVAABDEBSZXN0cmljdGVkQWNjZXNzAAAAYE5vZGVSZXdhcmRDb250cmFjdE5vdFNldAABAHxFcnJvclVwZGF0aW5nTm9kZVJld2FyZENvbnRyYWN0AAIABLUBCgkJCUN1c3RvbSBbZGlzcGF0Y2ggZXJyb3JzXShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykKCQkJb2YgdGhpcyBwYWxsZXQuCgkJCawMSHBhbGxldF9kOV9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQFsABABEGZyZWVsARxCYWxhbmNlAAEgcmVzZXJ2ZWRsARxCYWxhbmNlAAEYZnJvemVubAEcQmFsYW5jZQABFGZsYWdzsAEoRXh0cmFGbGFncwAAsAxIcGFsbGV0X2Q5X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQAbAEQdTEyOAAAtAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAbgEUwAABADAARhWZWM8VD4AALgMSHBhbGxldF9kOV9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQFsAAwBCGlkpAE4TG9ja0lkZW50aWZpZXIAARhhbW91bnRsARxCYWxhbmNlAAEccmVhc29uc7wBHFJlYXNvbnMAALwMSHBhbGxldF9kOV9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAADAAAACuADEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByARTAAAEANABGFZlYzxUPgAAyAxIcGFsbGV0X2Q5X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgHMHEJhbGFuY2UBbAAIAQhpZMwBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50bAEcQmFsYW5jZQAAzAAABAAA0AAAAsgA1AxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdgEUwAABADcARhWZWM8VD4AANgMSHBhbGxldF9kOV9iYWxhbmNlcxR0eXBlcyBJZEFtb3VudAgISWQBzBxCYWxhbmNlAWwACAEIaWTMAQhJZAABGGFtb3VudGwBHEJhbGFuY2UAANwAAALYAOAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHYBFMAAAQA3AEYVmVjPFQ+AADkDEhwYWxsZXRfZDlfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN06AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfQBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci5Yc2V0X2JhbGFuY2VfZGVwcmVjYXRlZAwBDHdob+gBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWX0AShUOjpCYWxhbmNlAAEwb2xkX3Jlc2VydmVk9AEoVDo6QmFsYW5jZQABGFUBU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50OyBpdCBhbHNvIHRha2VzIGEgcmVzZXJ2ZWQgYmFsYW5jZSBidXQgdGhpc+xtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBhY2NvdW50J3MgY3VycmVudCByZXNlcnZlZCBiYWxhbmNlLgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC4ACQFXQVJOSU5HOiBUaGlzIGNhbGwgaXMgREVQUkVDQVRFRCEgVXNlIGBmb3JjZV9zZXRfYmFsYW5jZWAgaW5zdGVhZC44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2XoAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3ToAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl9AEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdOgBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX0AShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN06AFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZl+AEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG/oAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudGwBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvVAFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVccG9zc2liaWxpbHR5IG9mIGNodXJuKS4gdHJhbnNmZXIIARBkZXN06AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfQBKFQ6OkJhbGFuY2UABwwxAUFsaWFzIGZvciBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBwcm92aWRlZCBvbmx5IGZvciBuYW1lLXdpc2UgY29tcGF0aWJpbGl0eS4AAQFXQVJOSU5HOiBERVBSRUNBVEVEISBXaWxsIGJlIHJlbGVhc2VkIGluIGFwcHJveGltYXRlbHkgMyBtb250aHMuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hv6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZfQBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC4EJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMu6Awoc3BfcnVudGltZTBtdWx0aWFkZHJlc3MwTXVsdGlBZGRyZXNzCCRBY2NvdW50SWQBJDBBY2NvdW50SW5kZXgBzAEUCElkBAAkASRBY2NvdW50SWQAAAAUSW5kZXgEAOwBMEFjY291bnRJbmRleAABAAxSYXcEAGQBHFZlYzx1OD4AAgAkQWRkcmVzczMyBAAMASBbdTg7IDMyXQADACRBZGRyZXNzMjAEAPABIFt1ODsgMjBdAAQAAOwAAAbMAPAAAAMUAAAAEAD0AAAGbAD4AAAFAAD8DEhwYWxsZXRfZDlfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAFUHEVuZG93ZWQIARxhY2NvdW50JAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlbAEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudCQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbSQBMFQ6OkFjY291bnRJZAABCHRvJAEwVDo6QWNjb3VudElkAAEYYW1vdW50bAEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8kATBUOjpBY2NvdW50SWQAARBmcmVlbAEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tJAEwVDo6QWNjb3VudElkAAEIdG8kATBUOjpBY2NvdW50SWQAARhhbW91bnRsAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzAQEBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8kATBUOjpBY2NvdW50SWQAARhhbW91bnRsAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8kATBUOjpBY2NvdW50SWQAARhhbW91bnRsAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuGEJ1cm5lZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UACwScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuJFN1c3BlbmRlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UADAQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UADQSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8kATBUOjpBY2NvdW50SWQADgRgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudGwBKFQ6OkJhbGFuY2UADwQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnRsAShUOjpCYWxhbmNlABAEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobyQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UAEQRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvJAEwVDo6QWNjb3VudElkAAEYYW1vdW50bAEoVDo6QmFsYW5jZQASBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8kATBUOjpBY2NvdW50SWQAARhhbW91bnRsAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8kATBUOjpBY2NvdW50SWQAARhhbW91bnRsAShUOjpCYWxhbmNlABQEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLgShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJAQEUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAAAFAQxIcGFsbGV0X2Q5X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABKDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgEiE51bWJlciBvZiBob2xkcyBleGNlZWQgYE1heEhvbGRzYC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC4EtQEKCQkJQ3VzdG9tIFtkaXNwYXRjaCBlcnJvcnNdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKQoJCQlvZiB0aGlzIHBhbGxldC4KCQkJCQEIOHBhbGxldF9ncmFuZHBhLFN0b3JlZFN0YXRlBAROASABEBBMaXZlAAAAMFBlbmRpbmdQYXVzZQgBMHNjaGVkdWxlZF9hdCABBE4AARRkZWxheSABBE4AAQAYUGF1c2VkAAIANFBlbmRpbmdSZXN1bWUIATBzY2hlZHVsZWRfYXQgAQROAAEUZGVsYXkgAQROAAMAAA0BCDhwYWxsZXRfZ3JhbmRwYUxTdG9yZWRQZW5kaW5nQ2hhbmdlCAROASAUTGltaXQAABABMHNjaGVkdWxlZF9hdCABBE4AARRkZWxheSABBE4AAUBuZXh0X2F1dGhvcml0aWVzEQEBbEJvdW5kZWRBdXRob3JpdHlMaXN0PExpbWl0PgABGGZvcmNlZCUBASRPcHRpb248Tj4AABEBDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBFQEEUwAABAAhAQEYVmVjPFQ+AAAVAQAABAgZARwAGQEMUHNwX2NvbnNlbnN1c19ncmFuZHBhDGFwcBhQdWJsaWMAAAQAHQEBPGVkMjU1MTk6OlB1YmxpYwAAHQEMHHNwX2NvcmUcZWQyNTUxORhQdWJsaWMAAAQADAEgW3U4OyAzMl0AACEBAAACFQEAJQEEGE9wdGlvbgQEVAEgAQgQTm9uZQAAABBTb21lBAAgAAABAAApAQAABAggIAAtAQw4cGFsbGV0X2dyYW5kcGEYcGFsbGV0EENhbGwEBFQAAQxMcmVwb3J0X2VxdWl2b2NhdGlvbggBSGVxdWl2b2NhdGlvbl9wcm9vZjEBAbxCb3g8RXF1aXZvY2F0aW9uUHJvb2Y8VDo6SGFzaCwgVDo6QmxvY2tOdW1iZXI+PgABPGtleV9vd25lcl9wcm9vZmEBAUBUOjpLZXlPd25lclByb29mAAAQCQFSZXBvcnQgdm90ZXIgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeSB0aGX0ZXF1aXZvY2F0aW9uIHByb29mIGFuZCB2YWxpZGF0ZSB0aGUgZ2l2ZW4ga2V5IG93bmVyc2hpcCBwcm9vZvhhZ2FpbnN0IHRoZSBleHRyYWN0ZWQgb2ZmZW5kZXIuIElmIGJvdGggYXJlIHZhbGlkLCB0aGUgb2ZmZW5jZUR3aWxsIGJlIHJlcG9ydGVkLnByZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkCAFIZXF1aXZvY2F0aW9uX3Byb29mMQEBvEJveDxFcXVpdm9jYXRpb25Qcm9vZjxUOjpIYXNoLCBUOjpCbG9ja051bWJlcj4+AAE8a2V5X293bmVyX3Byb29mYQEBQFQ6OktleU93bmVyUHJvb2YAASQJAVJlcG9ydCB2b3RlciBlcXVpdm9jYXRpb24vbWlzYmVoYXZpb3IuIFRoaXMgbWV0aG9kIHdpbGwgdmVyaWZ5IHRoZfRlcXVpdm9jYXRpb24gcHJvb2YgYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29m+GFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlRHdpbGwgYmUgcmVwb3J0ZWQuAA0BVGhpcyBleHRyaW5zaWMgbXVzdCBiZSBjYWxsZWQgdW5zaWduZWQgYW5kIGl0IGlzIGV4cGVjdGVkIHRoYXQgb25seRUBYmxvY2sgYXV0aG9ycyB3aWxsIGNhbGwgaXQgKHZhbGlkYXRlZCBpbiBgVmFsaWRhdGVVbnNpZ25lZGApLCBhcyBzdWNoFQFpZiB0aGUgYmxvY2sgYXV0aG9yIGlzIGRlZmluZWQgaXQgd2lsbCBiZSBkZWZpbmVkIGFzIHRoZSBlcXVpdm9jYXRpb24kcmVwb3J0ZXIuMG5vdGVfc3RhbGxlZAgBFGRlbGF5IAE4VDo6QmxvY2tOdW1iZXIAAWxiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXIgAThUOjpCbG9ja051bWJlcgACMD0BTm90ZSB0aGF0IHRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQgb2YgdGhlIEdSQU5EUEEgZmluYWxpdHkgZ2FkZ2V0IGhhcyBzdGFsbGVkLgBhAVRoaXMgd2lsbCB0cmlnZ2VyIGEgZm9yY2VkIGF1dGhvcml0eSBzZXQgY2hhbmdlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgc2Vzc2lvbiwgdG9hAWJlIGVuYWN0ZWQgYGRlbGF5YCBibG9ja3MgYWZ0ZXIgdGhhdC4gVGhlIGBkZWxheWAgc2hvdWxkIGJlIGhpZ2ggZW5vdWdoIHRvIHNhZmVseSBhc3N1bWVJAXRoYXQgdGhlIGJsb2NrIHNpZ25hbGxpbmcgdGhlIGZvcmNlZCBjaGFuZ2Ugd2lsbCBub3QgYmUgcmUtb3JnZWQgZS5nLiAxMDAwIGJsb2Nrcy5dAVRoZSBibG9jayBwcm9kdWN0aW9uIHJhdGUgKHdoaWNoIG1heSBiZSBzbG93ZWQgZG93biBiZWNhdXNlIG9mIGZpbmFsaXR5IGxhZ2dpbmcpIHNob3VsZFEBYmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gY2hvb3NpbmcgdGhlIGBkZWxheWAuIFRoZSBHUkFORFBBIHZvdGVycyBiYXNlZCBvbiB0aGUgbmV3VQFhdXRob3JpdHkgd2lsbCBzdGFydCB2b3Rpbmcgb24gdG9wIG9mIGBiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXJgIGZvciBuZXcgZmluYWxpemVkTQFibG9ja3MuIGBiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXJgIHNob3VsZCBiZSB0aGUgaGlnaGVzdCBvZiB0aGUgbGF0ZXN0IGZpbmFsaXplZMRibG9jayBvZiBhbGwgdmFsaWRhdG9ycyBvZiB0aGUgbmV3IGF1dGhvcml0eSBzZXQuAFhPbmx5IGNhbGxhYmxlIGJ5IHJvb3QuBCUBQ29udGFpbnMgb25lIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYW4gZXh0cmluc2ljLjEBCFBzcF9jb25zZW5zdXNfZ3JhbmRwYURFcXVpdm9jYXRpb25Qcm9vZggESAE1AQROASAACAEYc2V0X2lkHAEUU2V0SWQAATBlcXVpdm9jYXRpb245AQFIRXF1aXZvY2F0aW9uPEgsIE4+AAA1AQg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQADAEgW3U4OyAzMl0AADkBCFBzcF9jb25zZW5zdXNfZ3JhbmRwYTBFcXVpdm9jYXRpb24IBEgBNQEETgEgAQgcUHJldm90ZQQAPQEBOQFncmFuZHBhOjpFcXVpdm9jYXRpb248QXV0aG9yaXR5SWQsIGdyYW5kcGE6OlByZXZvdGU8SCwgTj4sCkF1dGhvcml0eVNpZ25hdHVyZT4AAAAkUHJlY29tbWl0BABVAQFBAWdyYW5kcGE6OkVxdWl2b2NhdGlvbjxBdXRob3JpdHlJZCwgZ3JhbmRwYTo6UHJlY29tbWl0PEgsIE4+LApBdXRob3JpdHlTaWduYXR1cmU+AAEAAD0BCEBmaW5hbGl0eV9ncmFuZHBhMEVxdWl2b2NhdGlvbgwISWQBGQEEVgFBAQRTAUUBABABMHJvdW5kX251bWJlchwBDHU2NAABIGlkZW50aXR5GQEBCElkAAEUZmlyc3RRAQEYKFYsIFMpAAEYc2Vjb25kUQEBGChWLCBTKQAAQQEIQGZpbmFsaXR5X2dyYW5kcGEcUHJldm90ZQgESAE1AQROASAACAEsdGFyZ2V0X2hhc2g1AQEESAABNHRhcmdldF9udW1iZXIgAQROAABFAQxQc3BfY29uc2Vuc3VzX2dyYW5kcGEMYXBwJFNpZ25hdHVyZQAABABJAQFIZWQyNTUxOTo6U2lnbmF0dXJlAABJAQwcc3BfY29yZRxlZDI1NTE5JFNpZ25hdHVyZQAABABNAQEgW3U4OyA2NF0AAE0BAAADQAAAABAAUQEAAAQIQQFFAQBVAQhAZmluYWxpdHlfZ3JhbmRwYTBFcXVpdm9jYXRpb24MCElkARkBBFYBWQEEUwFFAQAQATByb3VuZF9udW1iZXIcAQx1NjQAASBpZGVudGl0eRkBAQhJZAABFGZpcnN0XQEBGChWLCBTKQABGHNlY29uZF0BARgoViwgUykAAFkBCEBmaW5hbGl0eV9ncmFuZHBhJFByZWNvbW1pdAgESAE1AQROASAACAEsdGFyZ2V0X2hhc2g1AQEESAABNHRhcmdldF9udW1iZXIgAQROAABdAQAABAhZAUUBAGEBCBxzcF9jb3JlEFZvaWQAAQAAZQEMOHBhbGxldF9ncmFuZHBhGHBhbGxldBRFdmVudAABDDhOZXdBdXRob3JpdGllcwQBNGF1dGhvcml0eV9zZXQhAQE0QXV0aG9yaXR5TGlzdAAABIxOZXcgYXV0aG9yaXR5IHNldCBoYXMgYmVlbiBhcHBsaWVkLhhQYXVzZWQAAQSYQ3VycmVudCBhdXRob3JpdHkgc2V0IGhhcyBiZWVuIHBhdXNlZC4cUmVzdW1lZAACBJxDdXJyZW50IGF1dGhvcml0eSBzZXQgaGFzIGJlZW4gcmVzdW1lZC4EoQEKCQkJVGhlIFtldmVudF0oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pIGVtaXR0ZWQKCQkJYnkgdGhpcyBwYWxsZXQuCgkJCWkBDDhwYWxsZXRfZ3JhbmRwYRhwYWxsZXQURXJyb3IEBFQAARwsUGF1c2VGYWlsZWQAAAgFAUF0dGVtcHQgdG8gc2lnbmFsIEdSQU5EUEEgcGF1c2Ugd2hlbiB0aGUgYXV0aG9yaXR5IHNldCBpc24ndCBsaXZlpChlaXRoZXIgcGF1c2VkIG9yIGFscmVhZHkgcGVuZGluZyBwYXVzZSkuMFJlc3VtZUZhaWxlZAABCBEBQXR0ZW1wdCB0byBzaWduYWwgR1JBTkRQQSByZXN1bWUgd2hlbiB0aGUgYXV0aG9yaXR5IHNldCBpc24ndCBwYXVzZWSgKGVpdGhlciBsaXZlIG9yIGFscmVhZHkgcGVuZGluZyByZXN1bWUpLjRDaGFuZ2VQZW5kaW5nAAIE6EF0dGVtcHQgdG8gc2lnbmFsIEdSQU5EUEEgY2hhbmdlIHdpdGggb25lIGFscmVhZHkgcGVuZGluZy4cVG9vU29vbgADBLxDYW5ub3Qgc2lnbmFsIGZvcmNlZCBjaGFuZ2Ugc28gc29vbiBhZnRlciBsYXN0LmBJbnZhbGlkS2V5T3duZXJzaGlwUHJvb2YABAQxAUEga2V5IG93bmVyc2hpcCBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC5gSW52YWxpZEVxdWl2b2NhdGlvblByb29mAAUEMQFBbiBlcXVpdm9jYXRpb24gcHJvb2YgcHJvdmlkZWQgYXMgcGFydCBvZiBhbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIGludmFsaWQuWER1cGxpY2F0ZU9mZmVuY2VSZXBvcnQABgQVAUEgZ2l2ZW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyB2YWxpZCBidXQgYWxyZWFkeSBwcmV2aW91c2x5IHJlcG9ydGVkLgS1AQoJCQlDdXN0b20gW2Rpc3BhdGNoIGVycm9yc10oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pCgkJCW9mIHRoaXMgcGFsbGV0LgoJCQltAQwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARAQc3VkbwQBEGNhbGxxAQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAGDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGxxAQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodJUBARhXZWlnaHQAASA1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuHHNldF9rZXkEAQxuZXfoAVBBY2NvdW50SWRMb29rdXBPZjxUPgACHF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuHHN1ZG9fYXMIAQx3aG/oAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGxxAQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADHE0BQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFNpZ25lZGAgb3JpZ2luIGZyb21AYSBnaXZlbiBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4EJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMucQEIPGQ5X25vZGVfcnVudGltZSxSdW50aW1lQ2FsbAABRChEOVJlZmVycmFsBAAoAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEQ5UmVmZXJyYWwsIFJ1bnRpbWU+AAEAKEQ5VHJlYXN1cnkEADgBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RDlUcmVhc3VyeSwgUnVudGltZT4AAgAwRDlOb2RlVm90aW5nBABoAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEQ5Tm9kZVZvdGluZywgUnVudGltZT4AAwA0RDlOb2RlUmV3YXJkcwQAgAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEOU5vZGVSZXdhcmRzLCBSdW50aW1lPgAEACBCYWxhbmNlcwQA5AG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ABQAcR3JhbmRwYQQALQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8R3JhbmRwYSwgUnVudGltZT4ABgAQU3VkbwQAbQEBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4ABwAYU3lzdGVtBAB1AQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAgAJFRpbWVzdGFtcAQAhQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgAJABhBc3NldHMEAIkBAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0cywgUnVudGltZT4ACwAoQ29sbGVjdGl2ZQQAkQEBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGVjdGl2ZSwgUnVudGltZT4ADQAkQ29udHJhY3RzBACZAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb250cmFjdHMsIFJ1bnRpbWU+AA4AIEltT25saW5lBAClAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbU9ubGluZSwgUnVudGltZT4AEAAcU2Vzc2lvbgQAxQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AEgAgVHJlYXN1cnkEANUBAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRyZWFzdXJ5LCBSdW50aW1lPgATACxDb3VuY2lsTG9jawQA2QEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q291bmNpbExvY2ssIFJ1bnRpbWU+ABQAKEQ5TXVsdGlTaWcEAN0BAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEQ5TXVsdGlTaWcsIFJ1bnRpbWU+ABUAAHUBDDBmcmFtZV9zeXN0ZW0YcGFsbGV0EENhbGwEBFQAASAYcmVtYXJrBAEYcmVtYXJrZAEcVmVjPHU4PgAAEGhNYWtlIHNvbWUgb24tY2hhaW4gcmVtYXJrLgA0IyMgQ29tcGxleGl0eSAtIGBPKDEpYDhzZXRfaGVhcF9wYWdlcwQBFHBhZ2VzHAEMdTY0AAEE+FNldCB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBXZWJBc3NlbWJseSBlbnZpcm9ubWVudCdzIGhlYXAuIHNldF9jb2RlBAEQY29kZWQBHFZlYzx1OD4AAhBkU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlLgA0IyMgQ29tcGxleGl0eTEBLSBgTyhDICsgUylgIHdoZXJlIGBDYCBsZW5ndGggb2YgYGNvZGVgIGFuZCBgU2AgY29tcGxleGl0eSBvZiBgY2FuX3NldF9jb2RlYFxzZXRfY29kZV93aXRob3V0X2NoZWNrcwQBEGNvZGVkARxWZWM8dTg+AAMQGQFTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUgd2l0aG91dCBkb2luZyBhbnkgY2hlY2tzIG9mIHRoZSBnaXZlbiBgY29kZWAuADQjIyBDb21wbGV4aXR5jC0gYE8oQylgIHdoZXJlIGBDYCBsZW5ndGggb2YgYGNvZGVgLHNldF9zdG9yYWdlBAEUaXRlbXN5AQE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzgQEBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4ZAEMS2V5AAEcc3Via2V5cyABDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmtkARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuBCUBQ29udGFpbnMgb25lIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYW4gZXh0cmluc2ljLnkBAAACfQEAfQEAAAQIZGQAgQEAAAJkAIUBDEBwYWxsZXRfdGltZXN0YW1wGHBhbGxldBBDYWxsBARUAAEEDHNldAQBDG5vd0gBJFQ6Ok1vbWVudAAAPFRTZXQgdGhlIGN1cnJlbnQgdGltZS4AVQFUaGlzIGNhbGwgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9u1HBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEEBVGhlIHRpbWVzdGFtcCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBvbmUgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnlAYE1pbmltdW1QZXJpb2RgLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YC4ANCMjIENvbXBsZXhpdHkxAS0gYE8oMSlgIChOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mIGBPblRpbWVzdGFtcFNldGAgbXVzdCBhbHNvIGJlIGBPKDEpYClhAS0gMSBzdG9yYWdlIHJlYWQgYW5kIDEgc3RvcmFnZSBtdXRhdGlvbiAoY29kZWMgYE8oMSlgKS4gKGJlY2F1c2Ugb2YgYERpZFVwZGF0ZTo6dGFrZWAgaW5AICBgb25fZmluYWxpemVgKdQtIDEgZXZlbnQgaGFuZGxlciBgb25fdGltZXN0YW1wX3NldGAuIE11c3QgYmUgYE8oMSlgLgQlAUNvbnRhaW5zIG9uZSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IGFuIGV4dHJpbnNpYy6JAQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABdBhjcmVhdGUMAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW7oAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlbAEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlIYW4gZXhpc3RpbmcgYXNzZXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVy6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50+AEQYm9vbAABLG1pbl9iYWxhbmNl9AEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlIYW4gZXhpc3RpbmcgYXNzZXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgACLNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A+FRoZSBhc3NldCBjbGFzcyBtdXN0IGJlIGZyb3plbiBiZWZvcmUgY2FsbGluZyBgc3RhcnRfZGVzdHJveWAuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ56AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT0AShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob+gBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW509AEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldOgBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW509AEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkjQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXToAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudPQBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNl6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN06AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT0AShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hv6AFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyjgRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZyb20gYW4gYWNjb3VudC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hv6AFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjMQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVy6AFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVy6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbugBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcugBUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZWQBHFZlYzx1OD4AARhzeW1ib2xkARxWZWM8dTg+AAEgZGVjaW1hbHMQAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZWQBHFZlYzx1OD4AARhzeW1ib2xkARxWZWM8dTg+AAEgZGVjaW1hbHMQAQh1OAABJGlzX2Zyb3plbvgBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLoAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcugBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW7oAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXLoAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNl9AEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnT4ARBib29sAAEkaXNfZnJvemVu+AEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRl6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT0AShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGXoAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLoAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRl6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZI0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLoAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9u6AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnT0AShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkjQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWSNAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm74ARBib29sABsgwFJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ACQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkjQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZWwBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQlAUNvbnRhaW5zIG9uZSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IGFuIGV4dHJpbnNpYy6NAQAABiAAkQEMRHBhbGxldF9jb2xsZWN0aXZlGHBhbGxldBBDYWxsCARUAARJAAEYLHNldF9tZW1iZXJzDAEsbmV3X21lbWJlcnNUAURWZWM8VDo6QWNjb3VudElkPgABFHByaW1lNAFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRvbGRfY291bnQgASxNZW1iZXJDb3VudAAAYIBTZXQgdGhlIGNvbGxlY3RpdmUncyBtZW1iZXJzaGlwLgBFAS0gYG5ld19tZW1iZXJzYDogVGhlIG5ldyBtZW1iZXIgbGlzdC4gQmUgbmljZSB0byB0aGUgY2hhaW4gYW5kIHByb3ZpZGUgaXQgc29ydGVkLuAtIGBwcmltZWA6IFRoZSBwcmltZSBtZW1iZXIgd2hvc2Ugdm90ZSBzZXRzIHRoZSBkZWZhdWx0LlkBLSBgb2xkX2NvdW50YDogVGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgcHJldmlvdXMgbnVtYmVyIG9mIG1lbWJlcnMgaW4gc3RvcmFnZS4gVXNlZCBmb3JQICB3ZWlnaHQgZXN0aW1hdGlvbi4A1FRoZSBkaXNwYXRjaCBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgU2V0TWVtYmVyc09yaWdpbmAuAFEBTk9URTogRG9lcyBub3QgZW5mb3JjZSB0aGUgZXhwZWN0ZWQgYE1heE1lbWJlcnNgIGxpbWl0IG9uIHRoZSBhbW91bnQgb2YgbWVtYmVycywgYnV0IQEgICAgICB0aGUgd2VpZ2h0IGVzdGltYXRpb25zIHJlbHkgb24gaXQgdG8gZXN0aW1hdGUgZGlzcGF0Y2hhYmxlIHdlaWdodC4AKCMgV0FSTklORzoAWQFUaGUgYHBhbGxldC1jb2xsZWN0aXZlYCBjYW4gYWxzbyBiZSBtYW5hZ2VkIGJ5IGxvZ2ljIG91dHNpZGUgb2YgdGhlIHBhbGxldCB0aHJvdWdoIHRoZbhpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdHJhaXQgW2BDaGFuZ2VNZW1iZXJzYF0uVQFBbnkgY2FsbCB0byBgc2V0X21lbWJlcnNgIG11c3QgYmUgY2FyZWZ1bCB0aGF0IHRoZSBtZW1iZXIgc2V0IGRvZXNuJ3QgZ2V0IG91dCBvZiBzeW5jpHdpdGggb3RoZXIgbG9naWMgbWFuYWdpbmcgdGhlIG1lbWJlciBzZXQuADgjIyBDb21wbGV4aXR5OlAtIGBPKE1QICsgTilgIHdoZXJlOuAgIC0gYE1gIG9sZC1tZW1iZXJzLWNvdW50IChjb2RlLSBhbmQgZ292ZXJuYW5jZS1ib3VuZGVkKeAgIC0gYE5gIG5ldy1tZW1iZXJzLWNvdW50IChjb2RlLSBhbmQgZ292ZXJuYW5jZS1ib3VuZGVkKZggIC0gYFBgIHByb3Bvc2Fscy1jb3VudCAoY29kZS1ib3VuZGVkKRxleGVjdXRlCAEgcHJvcG9zYWxxAQF8Qm94PDxUIGFzIENvbmZpZzxJPj46OlByb3Bvc2FsPgABMGxlbmd0aF9ib3VuZI0BAQx1MzIAASTwRGlzcGF0Y2ggYSBwcm9wb3NhbCBmcm9tIGEgbWVtYmVyIHVzaW5nIHRoZSBgTWVtYmVyYCBvcmlnaW4uAKhPcmlnaW4gbXVzdCBiZSBhIG1lbWJlciBvZiB0aGUgY29sbGVjdGl2ZS4AOCMjIENvbXBsZXhpdHk6XC0gYE8oQiArIE0gKyBQKWAgd2hlcmU62C0gYEJgIGlzIGBwcm9wb3NhbGAgc2l6ZSBpbiBieXRlcyAobGVuZ3RoLWZlZS1ib3VuZGVkKYgtIGBNYCBtZW1iZXJzLWNvdW50IChjb2RlLWJvdW5kZWQpqC0gYFBgIGNvbXBsZXhpdHkgb2YgZGlzcGF0Y2hpbmcgYHByb3Bvc2FsYBxwcm9wb3NlDAEkdGhyZXNob2xkjQEBLE1lbWJlckNvdW50AAEgcHJvcG9zYWxxAQF8Qm94PDxUIGFzIENvbmZpZzxJPj46OlByb3Bvc2FsPgABMGxlbmd0aF9ib3VuZI0BAQx1MzIAAjj4QWRkIGEgbmV3IHByb3Bvc2FsIHRvIGVpdGhlciBiZSB2b3RlZCBvbiBvciBleGVjdXRlZCBkaXJlY3RseS4AhFJlcXVpcmVzIHRoZSBzZW5kZXIgdG8gYmUgbWVtYmVyLgBBAWB0aHJlc2hvbGRgIGRldGVybWluZXMgd2hldGhlciBgcHJvcG9zYWxgIGlzIGV4ZWN1dGVkIGRpcmVjdGx5IChgdGhyZXNob2xkIDwgMmApVG9yIHB1dCB1cCBmb3Igdm90aW5nLgA0IyMgQ29tcGxleGl0eawtIGBPKEIgKyBNICsgUDEpYCBvciBgTyhCICsgTSArIFAyKWAgd2hlcmU64CAgLSBgQmAgaXMgYHByb3Bvc2FsYCBzaXplIGluIGJ5dGVzIChsZW5ndGgtZmVlLWJvdW5kZWQp3CAgLSBgTWAgaXMgbWVtYmVycy1jb3VudCAoY29kZS0gYW5kIGdvdmVybmFuY2UtYm91bmRlZCnEICAtIGJyYW5jaGluZyBpcyBpbmZsdWVuY2VkIGJ5IGB0aHJlc2hvbGRgIHdoZXJlOvQgICAgLSBgUDFgIGlzIHByb3Bvc2FsIGV4ZWN1dGlvbiBjb21wbGV4aXR5IChgdGhyZXNob2xkIDwgMmAp/CAgICAtIGBQMmAgaXMgcHJvcG9zYWxzLWNvdW50IChjb2RlLWJvdW5kZWQpIChgdGhyZXNob2xkID49IDJgKRB2b3RlDAEgcHJvcG9zYWw1AQEcVDo6SGFzaAABFGluZGV4jQEBNFByb3Bvc2FsSW5kZXgAARxhcHByb3Zl+AEQYm9vbAADJPBBZGQgYW4gYXllIG9yIG5heSB2b3RlIGZvciB0aGUgc2VuZGVyIHRvIHRoZSBnaXZlbiBwcm9wb3NhbC4AjFJlcXVpcmVzIHRoZSBzZW5kZXIgdG8gYmUgYSBtZW1iZXIuAEkBVHJhbnNhY3Rpb24gZmVlcyB3aWxsIGJlIHdhaXZlZCBpZiB0aGUgbWVtYmVyIGlzIHZvdGluZyBvbiBhbnkgcGFydGljdWxhciBwcm9wb3NhbFEBZm9yIHRoZSBmaXJzdCB0aW1lIGFuZCB0aGUgY2FsbCBpcyBzdWNjZXNzZnVsLiBTdWJzZXF1ZW50IHZvdGUgY2hhbmdlcyB3aWxsIGNoYXJnZSBhEGZlZS40IyMgQ29tcGxleGl0eQkBLSBgTyhNKWAgd2hlcmUgYE1gIGlzIG1lbWJlcnMtY291bnQgKGNvZGUtIGFuZCBnb3Zlcm5hbmNlLWJvdW5kZWQpTGRpc2FwcHJvdmVfcHJvcG9zYWwEATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gABShZAURpc2FwcHJvdmUgYSBwcm9wb3NhbCwgY2xvc2UsIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgc3lzdGVtLCByZWdhcmRsZXNzIG9mIGl0cyBjdXJyZW50GHN0YXRlLgCITXVzdCBiZSBjYWxsZWQgYnkgdGhlIFJvb3Qgb3JpZ2luLgAsUGFyYW1ldGVyczodASogYHByb3Bvc2FsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJvcG9zYWwgdGhhdCBzaG91bGQgYmUgZGlzYXBwcm92ZWQuADQjIyBDb21wbGV4aXR5rE8oUCkgd2hlcmUgUCBpcyB0aGUgbnVtYmVyIG9mIG1heCBwcm9wb3NhbHMUY2xvc2UQATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gAARRpbmRleI0BATRQcm9wb3NhbEluZGV4AAFUcHJvcG9zYWxfd2VpZ2h0X2JvdW5klQEBGFdlaWdodAABMGxlbmd0aF9ib3VuZI0BAQx1MzIABmBNAUNsb3NlIGEgdm90ZSB0aGF0IGlzIGVpdGhlciBhcHByb3ZlZCwgZGlzYXBwcm92ZWQgb3Igd2hvc2Ugdm90aW5nIHBlcmlvZCBoYXMgZW5kZWQuAFUBTWF5IGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIGFjY291bnQgaW4gb3JkZXIgdG8gZmluaXNoIHZvdGluZyBhbmQgY2xvc2UgdGhlIHByb3Bvc2FsLgBJAUlmIGNhbGxlZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgdm90aW5nIHBlcmlvZCBpdCB3aWxsIG9ubHkgY2xvc2UgdGhlIHZvdGUgaWYgaXQgaXO8aGFzIGVub3VnaCB2b3RlcyB0byBiZSBhcHByb3ZlZCBvciBkaXNhcHByb3ZlZC4ASQFJZiBjYWxsZWQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdm90aW5nIHBlcmlvZCBhYnN0ZW50aW9ucyBhcmUgY291bnRlZCBhcyByZWplY3Rpb25zJQF1bmxlc3MgdGhlcmUgaXMgYSBwcmltZSBtZW1iZXIgc2V0IGFuZCB0aGUgcHJpbWUgbWVtYmVyIGNhc3QgYW4gYXBwcm92YWwuAGEBSWYgdGhlIGNsb3NlIG9wZXJhdGlvbiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5IHdpdGggZGlzYXBwcm92YWwsIHRoZSB0cmFuc2FjdGlvbiBmZWUgd2lsbF0BYmUgd2FpdmVkLiBPdGhlcndpc2UgZXhlY3V0aW9uIG9mIHRoZSBhcHByb3ZlZCBvcGVyYXRpb24gd2lsbCBiZSBjaGFyZ2VkIHRvIHRoZSBjYWxsZXIuAGEBKyBgcHJvcG9zYWxfd2VpZ2h0X2JvdW5kYDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBjb25zdW1lZCBieSBleGVjdXRpbmcgdGhlIGNsb3NlZCRwcm9wb3NhbC5hASsgYGxlbmd0aF9ib3VuZGA6IFRoZSB1cHBlciBib3VuZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgcHJvcG9zYWwgaW4gc3RvcmFnZS4gQ2hlY2tlZCB2aWE1AWBzdG9yYWdlOjpyZWFkYCBzbyBpdCBpcyBgc2l6ZV9vZjo6PHUzMj4oKSA9PSA0YCBsYXJnZXIgdGhhbiB0aGUgcHVyZSBsZW5ndGguADQjIyBDb21wbGV4aXR5dC0gYE8oQiArIE0gKyBQMSArIFAyKWAgd2hlcmU64CAgLSBgQmAgaXMgYHByb3Bvc2FsYCBzaXplIGluIGJ5dGVzIChsZW5ndGgtZmVlLWJvdW5kZWQp3CAgLSBgTWAgaXMgbWVtYmVycy1jb3VudCAoY29kZS0gYW5kIGdvdmVybmFuY2UtYm91bmRlZCnIICAtIGBQMWAgaXMgdGhlIGNvbXBsZXhpdHkgb2YgYHByb3Bvc2FsYCBwcmVpbWFnZS6kICAtIGBQMmAgaXMgcHJvcG9zYWwtY291bnQgKGNvZGUtYm91bmRlZCkEJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMulQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWVIAQx1NjQAAShwcm9vZl9zaXplSAEMdTY0AACZAQxAcGFsbGV0X2NvbnRyYWN0cxhwYWxsZXQQQ2FsbAQEVAABJDxjYWxsX29sZF93ZWlnaHQUARBkZXN06AFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfQBMEJhbGFuY2VPZjxUPgABJGdhc19saW1pdEgBJE9sZFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdJ0BAcRPcHRpb248PEJhbGFuY2VPZjxUPiBhcyBjb2RlYzo6SGFzQ29tcGFjdD46OlR5cGU+AAEQZGF0YWQBHFZlYzx1OD4AAAQVAURlcHJlY2F0ZWQgdmVyc2lvbiBpZiBbYFNlbGY6OmNhbGxgXSBmb3IgdXNlIGluIGFuIGluLXN0b3JhZ2UgYENhbGxgLoBpbnN0YW50aWF0ZV93aXRoX2NvZGVfb2xkX3dlaWdodBgBFHZhbHVl9AEwQmFsYW5jZU9mPFQ+AAEkZ2FzX2xpbWl0SAEkT2xkV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0nQEBxE9wdGlvbjw8QmFsYW5jZU9mPFQ+IGFzIGNvZGVjOjpIYXNDb21wYWN0Pjo6VHlwZT4AARBjb2RlZAEcVmVjPHU4PgABEGRhdGFkARxWZWM8dTg+AAEQc2FsdGQBHFZlYzx1OD4AAQRZAURlcHJlY2F0ZWQgdmVyc2lvbiBpZiBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdIGZvciB1c2UgaW4gYW4gaW4tc3RvcmFnZSBgQ2FsbGAuWGluc3RhbnRpYXRlX29sZF93ZWlnaHQYARR2YWx1ZfQBMEJhbGFuY2VPZjxUPgABJGdhc19saW1pdEgBJE9sZFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdJ0BAcRPcHRpb248PEJhbGFuY2VPZjxUPiBhcyBjb2RlYzo6SGFzQ29tcGFjdD46OlR5cGU+AAEkY29kZV9oYXNoNQEBLENvZGVIYXNoPFQ+AAEQZGF0YWQBHFZlYzx1OD4AARBzYWx0ZAEcVmVjPHU4PgACBDEBRGVwcmVjYXRlZCB2ZXJzaW9uIGlmIFtgU2VsZjo6aW5zdGFudGlhdGVgXSBmb3IgdXNlIGluIGFuIGluLXN0b3JhZ2UgYENhbGxgLix1cGxvYWRfY29kZQwBEGNvZGVkARxWZWM8dTg+AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0nQEBxE9wdGlvbjw8QmFsYW5jZU9mPFQ+IGFzIGNvZGVjOjpIYXNDb21wYWN0Pjo6VHlwZT4AASxkZXRlcm1pbmlzbaEBASxEZXRlcm1pbmlzbQADUOxVcGxvYWQgbmV3IGBjb2RlYCB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgAhAUlmIHRoZSBjb2RlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgYSBkZXBvc2l0IGlzIHJlc2VydmVkIGZyb20gdGhlIGNhbGxlckUBYW5kIHVucmVzZXJ2ZWQgb25seSB3aGVuIFtgU2VsZjo6cmVtb3ZlX2NvZGVgXSBpcyBjYWxsZWQuIFRoZSBzaXplIG9mIHRoZSByZXNlcnZl8GRlcGVuZHMgb24gdGhlIGluc3RydW1lbnRlZCBzaXplIG9mIHRoZSB0aGUgc3VwcGxpZWQgYGNvZGVgLgAxAUlmIHRoZSBjb2RlIGFscmVhZHkgZXhpc3RzIGluIHN0b3JhZ2UgaXQgd2lsbCBzdGlsbCByZXR1cm4gYE9rYCBhbmQgdXBncmFkZXOUdGhlIGluIHN0b3JhZ2UgdmVyc2lvbiB0byB0aGUgY3VycmVudNBbYEluc3RydWN0aW9uV2VpZ2h0czo6dmVyc2lvbmBdKEluc3RydWN0aW9uV2VpZ2h0cykuAFUBLSBgZGV0ZXJtaW5pc21gOiBJZiB0aGlzIGlzIHNldCB0byBhbnkgb3RoZXIgdmFsdWUgYnV0IFtgRGV0ZXJtaW5pc206OkVuZm9yY2VkYF0gdGhlbl0BICB0aGUgb25seSB3YXkgdG8gdXNlIHRoaXMgY29kZSBpcyB0byBkZWxlZ2F0ZSBjYWxsIGludG8gaXQgZnJvbSBhbiBvZmZjaGFpbiBleGVjdXRpb24uvCAgU2V0IHRvIFtgRGV0ZXJtaW5pc206OkVuZm9yY2VkYF0gaWYgaW4gZG91YnQuABgjIE5vdGUAWQFBbnlvbmUgY2FuIGluc3RhbnRpYXRlIGEgY29udHJhY3QgZnJvbSBhbnkgdXBsb2FkZWQgY29kZSBhbmQgdGh1cyBwcmV2ZW50IGl0cyByZW1vdmFsLkEBVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24gYSBjb25zdHJ1Y3RvciBjb3VsZCBlbXBsb3kgYWNjZXNzIGNvbnRyb2wgc28gdGhhdCBpdCBjYW45AW9ubHkgYmUgaW5zdGFudGlhdGVkIGJ5IHBlcm1pc3Npb25lZCBlbnRpdGllcy4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHVwbG9hZGluZ6B0aHJvdWdoIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0uLHJlbW92ZV9jb2RlBAEkY29kZV9oYXNoNQEBLENvZGVIYXNoPFQ+AAQQNQFSZW1vdmUgdGhlIGNvZGUgc3RvcmVkIHVuZGVyIGBjb2RlX2hhc2hgIGFuZCByZWZ1bmQgdGhlIGRlcG9zaXQgdG8gaXRzIG93bmVyLgBFAUEgY29kZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvcmlnaW5hbCB1cGxvYWRlciAoaXRzIG93bmVyKSBhbmQgb25seSBpZiBpdCBpc2Rub3QgdXNlZCBieSBhbnkgY29udHJhY3QuIHNldF9jb2RlCAEQZGVzdOgBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY29kZV9oYXNoNQEBLENvZGVIYXNoPFQ+AAUoCQFQcml2aWxlZ2VkIGZ1bmN0aW9uIHRoYXQgY2hhbmdlcyB0aGUgY29kZSBvZiBhbiBleGlzdGluZyBjb250cmFjdC4ARQFUaGlzIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgcmVmY291bnRzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5IG9wZXJhdGlvbnMuIFJldHVybnPoYW4gZXJyb3IgaWYgZWl0aGVyIHRoZSBgY29kZV9oYXNoYCBvciBgZGVzdGAgZG8gbm90IGV4aXN0LgAYIyBOb3RlADEBVGhpcyBkb2VzICoqbm90KiogY2hhbmdlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCBpbiBxdWVzdGlvbi4gVGhpcyBtZWFucz0BdGhhdCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBubyBsb25nZXIgZGVyaXZlZCBmcm9tIGl0cyBjb2RlIGhhc2ggYWZ0ZXIgY2FsbGluZ0h0aGlzIGRpc3BhdGNoYWJsZS4QY2FsbBQBEGRlc3ToAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl9AEwQmFsYW5jZU9mPFQ+AAEkZ2FzX2xpbWl0lQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdJ0BAcRPcHRpb248PEJhbGFuY2VPZjxUPiBhcyBjb2RlYzo6SGFzQ29tcGFjdD46OlR5cGU+AAEQZGF0YWQBHFZlYzx1OD4ABkAFAU1ha2VzIGEgY2FsbCB0byBhbiBhY2NvdW50LCBvcHRpb25hbGx5IHRyYW5zZmVycmluZyBzb21lIGJhbGFuY2UuADAjIFBhcmFtZXRlcnMAqCogYGRlc3RgOiBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byBjYWxsLvwqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIGBkZXN0YC4VASogYGdhc19saW1pdGA6IFRoZSBnYXMgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZCBmcm9tIHRoZaQgIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLsQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QuACUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQsIHRoZSBhc3NvY2lhdGVkIGNvZGUgd2lsbCBiZaxleGVjdXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuFQEqIElmIHRoZSBhY2NvdW50IGlzIGEgcmVndWxhciBhY2NvdW50LCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5FASogSWYgbm8gYWNjb3VudCBleGlzdHMgYW5kIHRoZSBjYWxsIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gYGV4aXN0ZW50aWFsX2RlcG9zaXRgLBEBYSByZWd1bGFyIGFjY291bnQgd2lsbCBiZSBjcmVhdGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5UaW5zdGFudGlhdGVfd2l0aF9jb2RlGAEUdmFsdWX0ATBCYWxhbmNlT2Y8VD4AASRnYXNfbGltaXSVAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0nQEBxE9wdGlvbjw8QmFsYW5jZU9mPFQ+IGFzIGNvZGVjOjpIYXNDb21wYWN0Pjo6VHlwZT4AARBjb2RlZAEcVmVjPHU4PgABEGRhdGFkARxWZWM8dTg+AAEQc2FsdGQBHFZlYzx1OD4AB2gxAUluc3RhbnRpYXRlcyBhIG5ldyBjb250cmFjdCBmcm9tIHRoZSBzdXBwbGllZCBgY29kZWAgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmc0c29tZSBiYWxhbmNlLgAhAVRoaXMgZGlzcGF0Y2hhYmxlIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgY2FsbGluZyBbYFNlbGY6OnVwbG9hZF9jb2RlYF0gKz0BW2BTZWxmOjppbnN0YW50aWF0ZWBdLiBCdW5kbGluZyB0aGVtIHRvZ2V0aGVyIHByb3ZpZGVzIGVmZmljaWVuY3kgZ2FpbnMuIFBsZWFzZdhhbHNvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgU2VsZjo6dXBsb2FkX2NvZGVgXS4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuFQEqIGBnYXNfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQvcmVzZXJ2ZWTIICBmcm9tIHRoZSBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci4xASogYHNhbHRgOiBVc2VkIGZvciB0aGUgYWRkcmVzcyBkZXJpdmF0aW9uLiBTZWUgW2BQYWxsZXQ6OmNvbnRyYWN0X2FkZHJlc3NgXS4AlEluc3RhbnRpYXRpb24gaXMgZXhlY3V0ZWQgYXMgZm9sbG93czoAWQEtIFRoZSBzdXBwbGllZCBgY29kZWAgaXMgaW5zdHJ1bWVudGVkLCBkZXBsb3llZCwgYW5kIGEgYGNvZGVfaGFzaGAgaXMgY3JlYXRlZCBmb3IgdGhhdBwgIGNvZGUuWQEtIElmIHRoZSBgY29kZV9oYXNoYCBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgY2hhaW4gdGhlIHVuZGVybHlpbmcgYGNvZGVgIHdpbGwgYmUgc2hhcmVkLkkBLSBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgc2VuZGVyLCBjb2RlX2hhc2ggYW5kIHRoZSBzYWx0LgEBLSBUaGUgc21hcnQtY29udHJhY3QgYWNjb3VudCBpcyBjcmVhdGVkIGF0IHRoZSBjb21wdXRlZCBhZGRyZXNzLsAtIFRoZSBgdmFsdWVgIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgYWNjb3VudC5BAS0gVGhlIGBkZXBsb3lgIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXdseS1jcmVhdGVkIGFjY291bnQuLGluc3RhbnRpYXRlGAEUdmFsdWX0ATBCYWxhbmNlT2Y8VD4AASRnYXNfbGltaXSVAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0nQEBxE9wdGlvbjw8QmFsYW5jZU9mPFQ+IGFzIGNvZGVjOjpIYXNDb21wYWN0Pjo6VHlwZT4AASRjb2RlX2hhc2g1AQEsQ29kZUhhc2g8VD4AARBkYXRhZAEcVmVjPHU4PgABEHNhbHRkARxWZWM8dTg+AAgU/Eluc3RhbnRpYXRlcyBhIGNvbnRyYWN0IGZyb20gYSBwcmV2aW91c2x5IGRlcGxveWVkIHdhc20gYmluYXJ5LgA1AVRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0gYnV0IHdpdGhvdXQgdGhlSQFjb2RlIGRlcGxveW1lbnQgc3RlcC4gSW5zdGVhZCwgdGhlIGBjb2RlX2hhc2hgIG9mIGFuIG9uLWNoYWluIGRlcGxveWVkIHdhc20gYmluYXJ5RG11c3QgYmUgc3VwcGxpZWQuBCUBQ29udGFpbnMgb25lIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYW4gZXh0cmluc2ljLp0BBBhPcHRpb24EBFQB9AEIEE5vbmUAAAAQU29tZQQA9AAAAQAAoQEMQHBhbGxldF9jb250cmFjdHMQd2FzbSxEZXRlcm1pbmlzbQABCCBFbmZvcmNlZAAAABxSZWxheGVkAAEAAKUBDEBwYWxsZXRfaW1fb25saW5lGHBhbGxldBBDYWxsBARUAAEEJGhlYXJ0YmVhdAgBJGhlYXJ0YmVhdKkBAWRIZWFydGJlYXQ8VDo6QmxvY2tOdW1iZXI+AAEkc2lnbmF0dXJlvQEBvDxUOjpBdXRob3JpdHlJZCBhcyBSdW50aW1lQXBwUHVibGljPjo6U2lnbmF0dXJlAAAUOCMjIENvbXBsZXhpdHk6WQEtIGBPKEsgKyBFKWAgd2hlcmUgSyBpcyBsZW5ndGggb2YgYEtleXNgIChoZWFydGJlYXQudmFsaWRhdG9yc19sZW4pIGFuZCBFIGlzIGxlbmd0aCBvZrAgIGBoZWFydGJlYXQubmV0d29ya19zdGF0ZS5leHRlcm5hbF9hZGRyZXNzYIggIC0gYE8oSylgOiBkZWNvZGluZyBvZiBsZW5ndGggYEtgrCAgLSBgTyhFKWA6IGRlY29kaW5nL2VuY29kaW5nIG9mIGxlbmd0aCBgRWAEJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMuqQEIQHBhbGxldF9pbV9vbmxpbmUkSGVhcnRiZWF0BCxCbG9ja051bWJlcgEgABQBMGJsb2NrX251bWJlciABLEJsb2NrTnVtYmVyAAE0bmV0d29ya19zdGF0Za0BAUhPcGFxdWVOZXR3b3JrU3RhdGUAATRzZXNzaW9uX2luZGV4IAEwU2Vzc2lvbkluZGV4AAE8YXV0aG9yaXR5X2luZGV4IAEkQXV0aEluZGV4AAE4dmFsaWRhdG9yc19sZW4gAQx1MzIAAK0BDBxzcF9jb3JlIG9mZmNoYWluSE9wYXF1ZU5ldHdvcmtTdGF0ZQAACAEccGVlcl9pZLEBATBPcGFxdWVQZWVySWQAAUhleHRlcm5hbF9hZGRyZXNzZXO1AQFQVmVjPE9wYXF1ZU11bHRpYWRkcj4AALEBCBxzcF9jb3JlME9wYXF1ZVBlZXJJZAAABABkARxWZWM8dTg+AAC1AQAAArkBALkBDBxzcF9jb3JlIG9mZmNoYWluPE9wYXF1ZU11bHRpYWRkcgAABABkARxWZWM8dTg+AAC9ARBAcGFsbGV0X2ltX29ubGluZRxzcjI1NTE5LGFwcF9zcjI1NTE5JFNpZ25hdHVyZQAABADBAQFIc3IyNTUxOTo6U2lnbmF0dXJlAADBAQwcc3BfY29yZRxzcjI1NTE5JFNpZ25hdHVyZQAABABNAQEgW3U4OyA2NF0AAMUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPJAQEcVDo6S2V5cwABFHByb29mZAEcVmVjPHU4PgAAJORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4dAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgc2lnbmVkLgA0IyMgQ29tcGxleGl0eVkBLSBgTygxKWAuIEFjdHVhbCBjb3N0IGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBsZW5ndGggb2YgYFQ6OktleXM6OmtleV9pZHMoKWAgd2hpY2ggaXMgICBmaXhlZC4ocHVyZ2Vfa2V5cwABMMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgA0IyMgQ29tcGxleGl0eT0BLSBgTygxKWAgaW4gbnVtYmVyIG9mIGtleSB0eXBlcy4gQWN0dWFsIGNvc3QgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIGxlbmd0aCBvZpggIGBUOjpLZXlzOjprZXlfaWRzKClgIHdoaWNoIGlzIGZpeGVkLgQlAUNvbnRhaW5zIG9uZSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IGFuIGV4dHJpbnNpYy7JAQw8ZDlfbm9kZV9ydW50aW1lGG9wYXF1ZSxTZXNzaW9uS2V5cwAAEAEQYXVyYQQBxDxBdXJhIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAARxncmFuZHBhGQEB0DxHcmFuZHBhIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAASRpbV9vbmxpbmXNAQHUPEltT25saW5lIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAAUxhdXRob3JpdHlfZGlzY292ZXJ50QEB/DxBdXRob3JpdHlEaXNjb3ZlcnkgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAzQEQQHBhbGxldF9pbV9vbmxpbmUcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAADRAQxYc3BfYXV0aG9yaXR5X2Rpc2NvdmVyeQxhcHAYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA1QEMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQQQ2FsbAgEVAAESQABFDRwcm9wb3NlX3NwZW5kCAEUdmFsdWX0ATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeegBUEFjY291bnRJZExvb2t1cE9mPFQ+AAAYKQFQdXQgZm9yd2FyZCBhIHN1Z2dlc3Rpb24gZm9yIHNwZW5kaW5nLiBBIGRlcG9zaXQgcHJvcG9ydGlvbmFsIHRvIHRoZSB2YWx1ZTEBaXMgcmVzZXJ2ZWQgYW5kIHNsYXNoZWQgaWYgdGhlIHByb3Bvc2FsIGlzIHJlamVjdGVkLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoZVBwcm9wb3NhbCBpcyBhd2FyZGVkLgA0IyMgQ29tcGxleGl0eRgtIE8oMSk8cmVqZWN0X3Byb3Bvc2FsBAEscHJvcG9zYWxfaWSNAQE0UHJvcG9zYWxJbmRleAABGPhSZWplY3QgYSBwcm9wb3NlZCBzcGVuZC4gVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSBzbGFzaGVkLgCoTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlJlamVjdE9yaWdpbmAuADQjIyBDb21wbGV4aXR5GC0gTygxKUBhcHByb3ZlX3Byb3Bvc2FsBAEscHJvcG9zYWxfaWSNAQE0UHJvcG9zYWxJbmRleAACHFkBQXBwcm92ZSBhIHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBwcm9wb3NhbCB3aWxsIGJlIGFsbG9jYXRlZCB0byB0aGUgYmVuZWZpY2lhcnmoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKxNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6QXBwcm92ZU9yaWdpbmAuADQjIyBDb21wbGV4aXR5ICAtIE8oMSkuFHNwZW5kCAEYYW1vdW509AE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnoAVBBY2NvdW50SWRMb29rdXBPZjxUPgADILhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAE0BLSBgb3JpZ2luYDogTXVzdCBiZSBgU3BlbmRPcmlnaW5gIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC5BAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAu6C0gYGJlbmVmaWNpYXJ5YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB0cmFuc2Zlci4ARQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuPHJlbW92ZV9hcHByb3ZhbAQBLHByb3Bvc2FsX2lkjQEBNFByb3Bvc2FsSW5kZXgABDQtAUZvcmNlIGEgcHJldmlvdXNseSBhcHByb3ZlZCBwcm9wb3NhbCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFwcHJvdmFsIHF1ZXVlLsBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AqE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpSZWplY3RPcmlnaW5gLqAtIGBwcm9wb3NhbF9pZGA6IFRoZSBpbmRleCBvZiBhIHByb3Bvc2FsADQjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAHEVycm9yczphAS0gYFByb3Bvc2FsTm90QXBwcm92ZWRgOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZSBhcHByb3ZhbCBxdWV1ZSxRAWkuZS4sIHRoZSBwcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuIFRoaXMgY291bGQgYWxzbyBtZWFuIHRoZSBwcm9wb3NhbCBkb2VzIG5vdFkBZXhpc3QgYWx0b2dldGhlciwgdGh1cyB0aGVyZSBpcyBubyB3YXkgaXQgd291bGQgaGF2ZSBiZWVuIGFwcHJvdmVkIGluIHRoZSBmaXJzdCBwbGFjZS4EJQFDb250YWlucyBvbmUgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBhbiBleHRyaW5zaWMu2QEMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sYcGFsbGV0EENhbGwEBFQAASRAc2V0X3BhbGxldF9hZG1pbgQBJG5ld19hZG1pbiQBMFQ6OkFjY291bnRJZAAAAGBzZXRfbWluaW5nX3Bvb2xfY29udHJhY3QEATBuZXdfY29udHJhY3QkATBUOjpBY2NvdW50SWQAAQAwcHJvcG9zZV9sb2NrCAE8YWNjb3VudF90b19sb2NrJAEwVDo6QWNjb3VudElkAAEwcHJvcG9zYWxfZmVlbAEwQmFsYW5jZU9mPFQ+AAIAOHByb3Bvc2VfdW5sb2NrCAFEYWNjb3VudF90b191bmxvY2skATBUOjpBY2NvdW50SWQAATBwcm9wb3NhbF9mZWVsATBCYWxhbmNlT2Y8VD4AAwBIdm90ZV9pbl9yZWZlcmVuZHVtCAE4bG9ja19jYW5kaWRhdGUkATBUOjpBY2NvdW50SWQAAUhhc3NlbnRfb25fZGVjaXNpb274ARBib29sAAQAQHNldF9wcm9wb3NhbF9mZWUEARxuZXdfZmVlbAEwQmFsYW5jZU9mPFQ+AAUATGFkbWluX2xvY2tfYWNjb3VudHMIAUBhY2NvdW50c190b19sb2NrVAFEVmVjPFQ6OkFjY291bnRJZD4AASBwcm9wb3NlciQBMFQ6OkFjY291bnRJZAAGAFRhZG1pbl91bmxvY2tfYWNjb3VudHMEAUhhY2NvdW50c190b191bmxvY2tUAURWZWM8VDo6QWNjb3VudElkPgAHAFRhZG1pbl9yZW1vdmVfcHJvcG9zYWwEAUBwcm9wb3NlZF9hY2NvdW50JAEwVDo6QWNjb3VudElkAAgABCUBQ29udGFpbnMgb25lIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgYW4gZXh0cmluc2ljLt0BDExwYWxsZXRfZDlfbXVsdGlfc2lnGHBhbGxldBBDYWxsBARUAAEgYGNyZWF0ZV9tdWx0aV9zaWdfYWNjb3VudAwBLHNpZ25hdG9yaWVzVAFEVmVjPFQ6OkFjY291bnRJZD4AASxhdXRob3JzX29wdOEBAWRPcHRpb248VmVjPFQ6OkFjY291bnRJZD4+AAFkbWluX2FwcHJvdmluZ19zaWduYXRvcmllcyABDHUzMgAAKJBjcmVhdGUgYSBuZXcgbXVsdGkgc2lnbmF0dXJlIGFjY291bnQAzHNpZ25hdG9yaWVzIG11c3QgaGF2ZSBjYXJkaW5hbGl0eSBvZiBhdCBsZWFzdCAyIGFuZNhsZXNzIHRoYW4gVDo6TWF4U2lnbmF0b3JpZXMsIHdpdGggYWxsIHVuaXF1ZSBlbGVtZW50cy7Yb3JpZ2luIG11c3QgYmUgYW4gZWxlbWVudCBvZiBzaWduYXRvcmllcyBhbmQgYXV0aG9ycyBhWHN1YnNldCBvZiBzaWduYXRvcmllcy4sUGFyYW1ldGVyczqgLSBgc2lnbmF0b3JpZXNgOiB0aGUgbGlzdCBvZiBzaWduYXRvcmllcyUBLSBgYXV0aG9yc19vcHRgOiB0aGUgbGlzdCBvZiBhdXRob3JzLCBpZiBOb25lIGFsbCBzaWduYXRvcmllcyBhcmUgYXV0aG9yc20BLSBgbWluX2FwcHJvdmluZ19zaWduYXRvcmllc2A6IHRoZSBtaW5pbXVtIG51bWJlciBvZiBzaWduYXRvcmllcyByZXF1aXJlZCB0byBhcHByb3ZlIGEgY2FsbDRhdXRob3JfYV9jYWxsCAFEbXVsdGlfc2lnX2FjY291bnQkATBUOjpBY2NvdW50SWQAARBjYWxscQEBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARhcY3JlYXRlIGEgY2FsbCBmb3IgYSBtc2EAdG9ubHkgYXV0aG9ycyBjYW4gY3JlYXRlIGNhbGxzLFBhcmFtZXRlcnM6yC0gYG11bHRpX3NpZ19hY2NvdW50YDogdGhlIG11bHRpIHNpZ25hdHVyZSBhY2NvdW50UQEtIGBjYWxsYDogdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQgKHJ1bnRpbWUgY2FsbC4gdGhlIGpzIHBvbGthZG90IGNhbiBoZWxwIGNyZWF0ZSBpdClEYWRkX2NhbGxfYXBwcm92YWwIAURtdWx0aV9zaWdfYWNjb3VudCQBMFQ6OkFjY291bnRJZAABHGNhbGxfaWQMASBbdTg7IDMyXQACFGhzaWduYXRvcmllcyBhcHByb3ZlIGEgY2FsbAAsUGFyYW1ldGVyczrILSBgbXVsdGlfc2lnX2FjY291bnRgOiB0aGUgbXVsdGkgc2lnbmF0dXJlIGFjY291bnSQLSBgY2FsbF9pZGA6IHRoZSBjYWxsIHRvIGJlIGFwcHJvdmVkUHJlbW92ZV9jYWxsX2FwcHJvdmFsCAFEbXVsdGlfc2lnX2FjY291bnQkATBUOjpBY2NvdW50SWQAARxjYWxsX2lkDAEgW3U4OyAzMl0AAxRocmVtb3ZlIGFwcHJvdmFsIGZvciBhIGNhbGwALFBhcmFtZXRlcnM6yC0gYG11bHRpX3NpZ19hY2NvdW50YDogdGhlIG11bHRpIHNpZ25hdHVyZSBhY2NvdW50kC0gYGNhbGxfaWRgOiB0aGUgY2FsbCB0byBiZSBhcHByb3ZlZGBwcm9wb3NhbF9tc2FfbmV3X21pbmltdW0IASxtc2FfYWRkcmVzcyQBMFQ6OkFjY291bnRJZAABRG5ld19taW5fYXBwcm92YWxzIAEMdTMyAAQU9HByb3Bvc2UgYSBuZXcgbWluaW11bSBhcHByb3ZhbHMgZm9yIGEgbXVsdGkgc2lnbmF0dXJlIGFjY291bnQALFBhcmFtZXRlcnM6sC0gYG1zYV9hZGRyZXNzYDogdGhlIG11bHRpIHNpZ25hdHVyZSBhY2NvdW50wC0gYG5ld19taW5fYXBwcm92YWxzYDogdGhlIG5ldyBtaW5pbXVtIGFwcHJvdmFsc1xhcHByb3ZlX21zYV9uZXdfbWluaW11bQQBLG1zYV9hZGRyZXNzJAEwVDo6QWNjb3VudElkAAUAjHJldm9rZV9hcHByb3ZhbF9mb3JfbXNhX25ld19taW5pbXVtBAEsbXNhX2FkZHJlc3MkATBUOjpBY2NvdW50SWQABgAscmVtb3ZlX2NhbGwIAURtdWx0aV9zaWdfYWNjb3VudCQBMFQ6OkFjY291bnRJZAABHGNhbGxfaWQMASBbdTg7IDMyXQAHAAQlAUNvbnRhaW5zIG9uZSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IGFuIGV4dHJpbnNpYy7hAQQYT3B0aW9uBARUAVQBCBBOb25lAAAAEFNvbWUEAFQAAAEAAOUBDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAAQwUU3VkaWQEASxzdWRvX3Jlc3VsdOkBAThEaXNwYXRjaFJlc3VsdAAABIhBIHN1ZG8ganVzdCB0b29rIHBsYWNlLiBcW3Jlc3VsdFxdKEtleUNoYW5nZWQEAShvbGRfc3Vkb2VyNAFQT3B0aW9uPFQ6OkFjY291bnRJZD4AAQQ5AVRoZSBcW3N1ZG9lclxdIGp1c3Qgc3dpdGNoZWQgaWRlbnRpdHk7IHRoZSBvbGQga2V5IGlzIHN1cHBsaWVkIGlmIG9uZSBleGlzdGVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHTpAQE4RGlzcGF0Y2hSZXN1bHQAAgSIQSBzdWRvIGp1c3QgdG9vayBwbGFjZS4gXFtyZXN1bHRcXQShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJ6QEEGFJlc3VsdAgEVAHMBEUBiAEICE9rBADMAAAAAAxFcnIEAIgAAAEAAO0BDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAAR8U2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudARkRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldPEBCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFEluZGV4ASAsQWNjb3VudERhdGEBrAAUARRub25jZSABFEluZGV4AAEkY29uc3VtZXJzIAEgUmVmQ291bnQAASRwcm92aWRlcnMgASBSZWZDb3VudAABLHN1ZmZpY2llbnRzIAEgUmVmQ291bnQAARBkYXRhrAEsQWNjb3VudERhdGEAAPUBDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBlQEADAEYbm9ybWFslQEBBFQAASxvcGVyYXRpb25hbJUBAQRUAAEkbWFuZGF0b3J5lQEBBFQAAPkBEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc/0BATxWZWM8RGlnZXN0SXRlbT4AAP0BAAACAQIAAQIQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QoRGlnZXN0SXRlbQABFChQcmVSdW50aW1lCACQAURDb25zZW5zdXNFbmdpbmVJZAAAZAEcVmVjPHU4PgAGACRDb25zZW5zdXMIAJABRENvbnNlbnN1c0VuZ2luZUlkAABkARxWZWM8dTg+AAQAEFNlYWwIAJABRENvbnNlbnN1c0VuZ2luZUlkAABkARxWZWM8dTg+AAUAFE90aGVyBABkARxWZWM8dTg+AAAAZFJ1bnRpbWVFbnZpcm9ubWVudFVwZGF0ZWQACAAABQIAAAIJAgAJAggwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAQ0CBFQBNQEADAEUcGhhc2VVAgEUUGhhc2UAARRldmVudA0CAQRFAAEYdG9waWNzWQIBGFZlYzxUPgAADQIIPGQ5X25vZGVfcnVudGltZTBSdW50aW1lRXZlbnQAAUQoRDlSZWZlcnJhbAQALAGIcGFsbGV0X2Q5X3JlZmVycmFsOjpFdmVudDxSdW50aW1lPgABAChEOVRyZWFzdXJ5BAA8AYhwYWxsZXRfZDlfdHJlYXN1cnk6OkV2ZW50PFJ1bnRpbWU+AAIAMEQ5Tm9kZVZvdGluZwQAeAGUcGFsbGV0X2Q5X25vZGVfdm90aW5nOjpFdmVudDxSdW50aW1lPgADADREOU5vZGVSZXdhcmRzBACEAZhwYWxsZXRfZDlfbm9kZV9yZXdhcmRzOjpFdmVudDxSdW50aW1lPgAEACBCYWxhbmNlcwQA/AGIcGFsbGV0X2Q5X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAFABxHcmFuZHBhBABlAQFUcGFsbGV0X2dyYW5kcGE6OkV2ZW50AAYAEFN1ZG8EAOUBAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4ABwAYU3lzdGVtBAARAgFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAIAEhUcmFuc2FjdGlvblBheW1lbnQEACECAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACgAYQXNzZXRzBAAlAgF0cGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZT4ACwAoQ29sbGVjdGl2ZQQAKQIBhHBhbGxldF9jb2xsZWN0aXZlOjpFdmVudDxSdW50aW1lPgANACRDb250cmFjdHMEAC0CAYBwYWxsZXRfY29udHJhY3RzOjpFdmVudDxSdW50aW1lPgAOACBJbU9ubGluZQQAMQIBgHBhbGxldF9pbV9vbmxpbmU6OkV2ZW50PFJ1bnRpbWU+ABAAHFNlc3Npb24EAD0CAVRwYWxsZXRfc2Vzc2lvbjo6RXZlbnQAEgAgVHJlYXN1cnkEAEECAXxwYWxsZXRfdHJlYXN1cnk6OkV2ZW50PFJ1bnRpbWU+ABMALENvdW5jaWxMb2NrBABFAgGYcGFsbGV0X2Q5X2NvdW5jaWxfbG9jazo6RXZlbnQ8UnVudGltZT4AFAAoRDlNdWx0aVNpZwQAUQIBjHBhbGxldF9kOV9tdWx0aV9zaWc6OkV2ZW50PFJ1bnRpbWU+ABUAABECDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZvFQIBMERpc3BhdGNoSW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3KIATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mbxUCATBEaXNwYXRjaEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQAAgRQYDpjb2RlYCB3YXMgdXBkYXRlZC4oTmV3QWNjb3VudAQBHGFjY291bnQkATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQkATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlciQBMFQ6OkFjY291bnRJZAABEGhhc2g1AQEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQuFQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gwRGlzcGF0Y2hJbmZvAAAMARh3ZWlnaHSVAQEYV2VpZ2h0AAEUY2xhc3MZAgE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVlHQIBEFBheXMAABkCDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAAdAgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAAhAgxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobyQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVsATBCYWxhbmNlT2Y8VD4AAQx0aXBsATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQklAgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAVgcQ3JlYXRlZAwBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABHGNyZWF0b3IkATBUOjpBY2NvdW50SWQAARRvd25lciQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAARRvd25lciQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQgAShUOjpBc3NldElkAAEQZnJvbSQBMFQ6OkFjY291bnRJZAABCHRvJAEwVDo6QWNjb3VudElkAAEYYW1vdW50bAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAARRvd25lciQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VsAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABGGlzc3VlciQBMFQ6OkFjY291bnRJZAABFGFkbWluJAEwVDo6QWNjb3VudElkAAEcZnJlZXplciQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABFG93bmVyJAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAAQx3aG8kATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABDHdobyQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZCABKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQgAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZCABDHUzMgABSGFjY291bnRzX3JlbWFpbmluZyABDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQgAQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nIAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAARRvd25lciQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkIAEoVDo6QXNzZXRJZAABEG5hbWVkARxWZWM8dTg+AAEYc3ltYm9sZAEcVmVjPHU4PgABIGRlY2ltYWxzEAEIdTgAASRpc19mcm96ZW74ARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAARhzb3VyY2UkATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZSQBMFQ6OkFjY291bnRJZAABGGFtb3VudGwBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAARRvd25lciQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlJAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQgAShUOjpBc3NldElkAAEUb3duZXIkATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZSQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uJAEwVDo6QWNjb3VudElkAAEYYW1vdW50bAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQgAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZCABKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VsAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuBKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQkpAgxEcGFsbGV0X2NvbGxlY3RpdmUYcGFsbGV0FEV2ZW50CARUAARJAAEcIFByb3Bvc2VkEAEcYWNjb3VudCQBMFQ6OkFjY291bnRJZAABOHByb3Bvc2FsX2luZGV4IAE0UHJvcG9zYWxJbmRleAABNHByb3Bvc2FsX2hhc2g1AQEcVDo6SGFzaAABJHRocmVzaG9sZCABLE1lbWJlckNvdW50AAAISQFBIG1vdGlvbiAoZ2l2ZW4gaGFzaCkgaGFzIGJlZW4gcHJvcG9zZWQgKGJ5IGdpdmVuIGFjY291bnQpIHdpdGggYSB0aHJlc2hvbGQgKGdpdmVuPGBNZW1iZXJDb3VudGApLhRWb3RlZBQBHGFjY291bnQkATBUOjpBY2NvdW50SWQAATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gAARR2b3RlZPgBEGJvb2wAAQx5ZXMgASxNZW1iZXJDb3VudAABCG5vIAEsTWVtYmVyQ291bnQAAQgFAUEgbW90aW9uIChnaXZlbiBoYXNoKSBoYXMgYmVlbiB2b3RlZCBvbiBieSBnaXZlbiBhY2NvdW50LCBsZWF2aW5nFQFhIHRhbGx5ICh5ZXMgdm90ZXMgYW5kIG5vIHZvdGVzIGdpdmVuIHJlc3BlY3RpdmVseSBhcyBgTWVtYmVyQ291bnRgKS4gQXBwcm92ZWQEATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gAAgTAQSBtb3Rpb24gd2FzIGFwcHJvdmVkIGJ5IHRoZSByZXF1aXJlZCB0aHJlc2hvbGQuLERpc2FwcHJvdmVkBAE0cHJvcG9zYWxfaGFzaDUBARxUOjpIYXNoAAME0EEgbW90aW9uIHdhcyBub3QgYXBwcm92ZWQgYnkgdGhlIHJlcXVpcmVkIHRocmVzaG9sZC4gRXhlY3V0ZWQIATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gAARhyZXN1bHTpAQE4RGlzcGF0Y2hSZXN1bHQABAQhAUEgbW90aW9uIHdhcyBleGVjdXRlZDsgcmVzdWx0IHdpbGwgYmUgYE9rYCBpZiBpdCByZXR1cm5lZCB3aXRob3V0IGVycm9yLjhNZW1iZXJFeGVjdXRlZAgBNHByb3Bvc2FsX2hhc2g1AQEcVDo6SGFzaAABGHJlc3VsdOkBAThEaXNwYXRjaFJlc3VsdAAFBEkBQSBzaW5nbGUgbWVtYmVyIGRpZCBzb21lIGFjdGlvbjsgcmVzdWx0IHdpbGwgYmUgYE9rYCBpZiBpdCByZXR1cm5lZCB3aXRob3V0IGVycm9yLhhDbG9zZWQMATRwcm9wb3NhbF9oYXNoNQEBHFQ6Okhhc2gAAQx5ZXMgASxNZW1iZXJDb3VudAABCG5vIAEsTWVtYmVyQ291bnQABgRVAUEgcHJvcG9zYWwgd2FzIGNsb3NlZCBiZWNhdXNlIGl0cyB0aHJlc2hvbGQgd2FzIHJlYWNoZWQgb3IgYWZ0ZXIgaXRzIGR1cmF0aW9uIHdhcyB1cC4EoQEKCQkJVGhlIFtldmVudF0oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pIGVtaXR0ZWQKCQkJYnkgdGhpcyBwYWxsZXQuCgkJCS0CDEBwYWxsZXRfY29udHJhY3RzGHBhbGxldBRFdmVudAQEVAABIDBJbnN0YW50aWF0ZWQIASBkZXBsb3llciQBMFQ6OkFjY291bnRJZAABIGNvbnRyYWN0JAEwVDo6QWNjb3VudElkAAAE2ENvbnRyYWN0IGRlcGxveWVkIGJ5IGFkZHJlc3MgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLihUZXJtaW5hdGVkCAEgY29udHJhY3QkATBUOjpBY2NvdW50SWQEhFRoZSBjb250cmFjdCB0aGF0IHdhcyB0ZXJtaW5hdGVkLgEsYmVuZWZpY2lhcnkkATBUOjpBY2NvdW50SWQE5FRoZSBhY2NvdW50IHRoYXQgcmVjZWl2ZWQgdGhlIGNvbnRyYWN0cyByZW1haW5pbmcgYmFsYW5jZQEYaENvbnRyYWN0IGhhcyBiZWVuIHJlbW92ZWQuABgjIE5vdGUAPQFUaGUgb25seSB3YXkgZm9yIGEgY29udHJhY3QgdG8gYmUgcmVtb3ZlZCBhbmQgZW1pdHRpbmcgdGhpcyBldmVudCBpcyBieSBjYWxsaW5nRGBzZWFsX3Rlcm1pbmF0ZWAuKENvZGVTdG9yZWQEASRjb2RlX2hhc2g1AQEcVDo6SGFzaAACBLRDb2RlIHdpdGggdGhlIHNwZWNpZmllZCBoYXNoIGhhcyBiZWVuIHN0b3JlZC48Q29udHJhY3RFbWl0dGVkCAEgY29udHJhY3QkATBUOjpBY2NvdW50SWQEkFRoZSBjb250cmFjdCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LgEQZGF0YWQBHFZlYzx1OD4INQFEYXRhIHN1cHBsaWVkIGJ5IHRoZSBjb250cmFjdC4gTWV0YWRhdGEgZ2VuZXJhdGVkIGR1cmluZyBjb250cmFjdCBjb21waWxhdGlvblxpcyBuZWVkZWQgdG8gZGVjb2RlIGl0LgMEnEEgY3VzdG9tIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIGNvbnRyYWN0LixDb2RlUmVtb3ZlZAQBJGNvZGVfaGFzaDUBARxUOjpIYXNoAAQErEEgY29kZSB3aXRoIHRoZSBzcGVjaWZpZWQgaGFzaCB3YXMgcmVtb3ZlZC5MQ29udHJhY3RDb2RlVXBkYXRlZAwBIGNvbnRyYWN0JAEwVDo6QWNjb3VudElkBIxUaGUgY29udHJhY3QgdGhhdCBoYXMgYmVlbiB1cGRhdGVkLgE0bmV3X2NvZGVfaGFzaDUBARxUOjpIYXNoBLBOZXcgY29kZSBoYXNoIHRoYXQgd2FzIHNldCBmb3IgdGhlIGNvbnRyYWN0LgE0b2xkX2NvZGVfaGFzaDUBARxUOjpIYXNoBIxQcmV2aW91cyBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0LgUEeEEgY29udHJhY3QncyBjb2RlIHdhcyB1cGRhdGVkLhhDYWxsZWQIARhjYWxsZXIkATBUOjpBY2NvdW50SWQEnFRoZSBhY2NvdW50IHRoYXQgY2FsbGVkIHRoZSBgY29udHJhY3RgLgEgY29udHJhY3QkATBUOjpBY2NvdW50SWQEdFRoZSBjb250cmFjdCB0aGF0IHdhcyBjYWxsZWQuBhwRAUEgY29udHJhY3Qgd2FzIGNhbGxlZCBlaXRoZXIgYnkgYSBwbGFpbiBhY2NvdW50IG9yIGFub3RoZXIgY29udHJhY3QuABgjIE5vdGUAMQFQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgbGlrZSBhbGwgZXZlbnRzIHRoaXMgaXMgb25seSBlbWl0dGVkIGZvciBzdWNjZXNzZnVsKQFjYWxscy4gVGhpcyBpcyBiZWNhdXNlIG9uIGZhaWx1cmUgYWxsIHN0b3JhZ2UgY2hhbmdlcyBpbmNsdWRpbmcgZXZlbnRzIGFyZTByb2xsZWQgYmFjay44RGVsZWdhdGVDYWxsZWQIASBjb250cmFjdCQBMFQ6OkFjY291bnRJZAghAVRoZSBjb250cmFjdCB0aGF0IHBlcmZvcm1lZCB0aGUgZGVsZWdhdGUgY2FsbCBhbmQgaGVuY2UgaW4gd2hvc2UgY29udGV4dHB0aGUgYGNvZGVfaGFzaGAgaXMgZXhlY3V0ZWQuASRjb2RlX2hhc2g1AQEsQ29kZUhhc2g8VD4EnFRoZSBjb2RlIGhhc2ggdGhhdCB3YXMgZGVsZWdhdGUgY2FsbGVkLgccnEEgY29udHJhY3QgZGVsZWdhdGUgY2FsbGVkIGEgY29kZSBoYXNoLgAYIyBOb3RlADEBUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IGxpa2UgYWxsIGV2ZW50cyB0aGlzIGlzIG9ubHkgZW1pdHRlZCBmb3Igc3VjY2Vzc2Z1bCkBY2FsbHMuIFRoaXMgaXMgYmVjYXVzZSBvbiBmYWlsdXJlIGFsbCBzdG9yYWdlIGNoYW5nZXMgaW5jbHVkaW5nIGV2ZW50cyBhcmUwcm9sbGVkIGJhY2suBKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQkxAgxAcGFsbGV0X2ltX29ubGluZRhwYWxsZXQURXZlbnQEBFQAAQxESGVhcnRiZWF0UmVjZWl2ZWQEATBhdXRob3JpdHlfaWTNAQE4VDo6QXV0aG9yaXR5SWQAAATAQSBuZXcgaGVhcnRiZWF0IHdhcyByZWNlaXZlZCBmcm9tIGBBdXRob3JpdHlJZGAuHEFsbEdvb2QAAQTQQXQgdGhlIGVuZCBvZiB0aGUgc2Vzc2lvbiwgbm8gb2ZmZW5jZSB3YXMgY29tbWl0dGVkLixTb21lT2ZmbGluZQQBHG9mZmxpbmU1AgFsVmVjPElkZW50aWZpY2F0aW9uVHVwbGU8VD4+AAIEKQFBdCB0aGUgZW5kIG9mIHRoZSBzZXNzaW9uLCBhdCBsZWFzdCBvbmUgdmFsaWRhdG9yIHdhcyBmb3VuZCB0byBiZSBvZmZsaW5lLgShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJNQIAAAI5AgA5AgAABAgkWAA9Agw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50AAEEKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4IAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuBKEBCgkJCVRoZSBbZXZlbnRdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKSBlbWl0dGVkCgkJCWJ5IHRoaXMgcGFsbGV0LgoJCQlBAgw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABJCBQcm9wb3NlZAQBOHByb3Bvc2FsX2luZGV4IAE0UHJvcG9zYWxJbmRleAAABDROZXcgcHJvcG9zYWwuIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZ2wBPEJhbGFuY2VPZjxULCBJPgABBORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4IAE0UHJvcG9zYWxJbmRleAABFGF3YXJkbAE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudCQBMFQ6OkFjY291bnRJZAACBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuIFJlamVjdGVkCAE4cHJvcG9zYWxfaW5kZXggATRQcm9wb3NhbEluZGV4AAEcc2xhc2hlZGwBPEJhbGFuY2VPZjxULCBJPgADBLBBIHByb3Bvc2FsIHdhcyByZWplY3RlZDsgZnVuZHMgd2VyZSBzbGFzaGVkLhRCdXJudAQBLGJ1cm50X2Z1bmRzbAE8QmFsYW5jZU9mPFQsIEk+AAQEiFNvbWUgb2Ygb3VyIGZ1bmRzIGhhdmUgYmVlbiBidXJudC4gUm9sbG92ZXIEAUByb2xsb3Zlcl9iYWxhbmNlbAE8QmFsYW5jZU9mPFQsIEk+AAUELQFTcGVuZGluZyBoYXMgZmluaXNoZWQ7IHRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHJvbGxzIG92ZXIgdW50aWwgbmV4dCBzcGVuZC4cRGVwb3NpdAQBFHZhbHVlbAE8QmFsYW5jZU9mPFQsIEk+AAYEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGRlcG9zaXRlZC40U3BlbmRBcHByb3ZlZAwBOHByb3Bvc2FsX2luZGV4IAE0UHJvcG9zYWxJbmRleAABGGFtb3VudGwBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5JAEwVDo6QWNjb3VudElkAAcEnEEgbmV3IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLjxVcGRhdGVkSW5hY3RpdmUIASxyZWFjdGl2YXRlZGwBPEJhbGFuY2VPZjxULCBJPgABLGRlYWN0aXZhdGVkbAE8QmFsYW5jZU9mPFQsIEk+AAgEzFRoZSBpbmFjdGl2ZSBmdW5kcyBvZiB0aGUgcGFsbGV0IGhhdmUgYmVlbiB1cGRhdGVkLgShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJRQIMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sYcGFsbGV0FEV2ZW50BARUAAEgXEFjY291bnROb21pbmF0ZWRGb3JMb2NrBAAkATBUOjpBY2NvdW50SWQAAAA8UHJvcG9zYWxGZWVQYWlkCAAkATBUOjpBY2NvdW50SWQAAGwBMEJhbGFuY2VPZjxUPgABADBWb3RlUmVjb3JkZWQQACQBMFQ6OkFjY291bnRJZAAAJAEwVDo6QWNjb3VudElkAABJAgFAQWNjb3VudExvY2tTdGF0ZQAA+AEQYm9vbAACBLB2b3RlciwgcHJvcG9zZWQgYWNjb3VudCBsb2NrIHN0YXRlLCBkZWNpc2lvbjRBY2NvdW50TG9ja2VkBAAkATBUOjpBY2NvdW50SWQAAwA8QWNjb3VudFVubG9ja2VkBAAkATBUOjpBY2NvdW50SWQABABkQWNjb3VudE5vbWluYXRlZEZvclVubG9jawQAJAEwVDo6QWNjb3VudElkAAUALFZvdGVTdGFydGVkAAYAJFZvdGVFbmRlZAgAJAEwVDo6QWNjb3VudElkAABNAgEoVm90ZVJlc3VsdAAHAAShAQoJCQlUaGUgW2V2ZW50XShodHRwczovL2RvY3Muc3Vic3RyYXRlLmlvL21haW4tZG9jcy9idWlsZC9ldmVudHMtZXJyb3JzLykgZW1pdHRlZAoJCQlieSB0aGlzIHBhbGxldC4KCQkJSQIMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sUdHlwZXNAQWNjb3VudExvY2tTdGF0ZQABCBhMb2NrZWQAAAAgVW5sb2NrZWQAAQAATQIMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sUdHlwZXMoVm90ZVJlc3VsdAABDBhQYXNzZWQAAAAgUmVqZWN0ZWQAAQAwSW5jb25jbHVzaXZlCAAgAQx1MzIAACABDHUzMgACAABRAgxMcGFsbGV0X2Q5X211bHRpX3NpZxhwYWxsZXQURXZlbnQEBFQAARxwTXVsdGlTaWduYXR1cmVBY2NvdW50Q3JlYXRlZAgAJAEwVDo6QWNjb3VudElkAAAkATBUOjpBY2NvdW50SWQAAARIKGNyZWF0b3IsIGNyZWF0ZWQpcE11bHRpU2lnbmF0dXJlQWNjb3VudFVwZGF0ZWQIACQBMFQ6OkFjY291bnRJZAAAJAEwVDo6QWNjb3VudElkAAEESCh1cGRhdGVyLCB1cGRhdGVkKTxOZXdDYWxsQXV0aG9yZWQIACQBMFQ6OkFjY291bnRJZAAADAEgW3U4OyAzMl0AAgSkbmV3IHRyYW5zYWN0aW9uIGF1dGhvcnMgKGF1dGhvciwgY2FsbF9pZCk0QXBwcm92YWxBZGRlZAgAJAEwVDo6QWNjb3VudElkAAAkATBUOjpBY2NvdW50SWQAAwT8YWRkIGFwcHJvdmFsIHRvIHRyYW5zYWN0aW9uIChtdWx0aSBzaWduYXR1cmUgYWNjb3VudCwgYXBwcm92ZXIpPEFwcHJvdmFsUmVtb3ZlZAgAJAEwVDo6QWNjb3VudElkAAAkATBUOjpBY2NvdW50SWQABAQRAXJlbW92ZSBhcHByb3ZhbCBmcm9tIHRyYW5zYWN0aW9uIChtdWx0aSBzaWduYXR1cmUgYWNjb3VudCwgYXBwcm92ZXIpMENhbGxFeGVjdXRlZAQADAEgW3U4OyAzMl0ABQQoKGV4ZWN1dG9yKUxNaW5BcHByb3ZhbHNDaGFuZ2VkCAAkATBUOjpBY2NvdW50SWQAACABDHUzMgAGBBEBbXNhIHNldCBuZXcgbWluaW11bSBhcHByb3ZhbHMgKG11bHRpIHNpZ25hdHVyZSBhY2NvdW50LCBuZXcgbWluaW11bSkEoQEKCQkJVGhlIFtldmVudF0oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pIGVtaXR0ZWQKCQkJYnkgdGhpcyBwYWxsZXQuCgkJCVUCCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEACABDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAWQIAAAI1AQBdAgAAAikBAGECCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9ujQEBTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWVlAgFkc3BfcnVudGltZTo6UnVudGltZVN0cmluZwAAZQIAAAUCAGkCDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja5UBARhXZWlnaHQAASRtYXhfYmxvY2uVAQEYV2VpZ2h0AAEkcGVyX2NsYXNzbQIBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAbQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAFxAgAMARhub3JtYWxxAgEEVAABLG9wZXJhdGlvbmFscQIBBFQAASRtYW5kYXRvcnlxAgEEVAAAcQIMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY5UBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljdQIBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsdQIBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWR1AgE4T3B0aW9uPFdlaWdodD4AAHUCBBhPcHRpb24EBFQBlQEBCBBOb25lAAAAEFNvbWUEAJUBAAABAAB5AgwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAABAEMbWF4fQIBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgAAfQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEgAAwBGG5vcm1hbCABBFQAASxvcGVyYXRpb25hbCABBFQAASRtYW5kYXRvcnkgAQRUAACBAggoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQcAQx1NjQAARR3cml0ZRwBDHU2NAAAhQIIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZWUCATRSdW50aW1lU3RyaW5nAAEkaW1wbF9uYW1lZQIBNFJ1bnRpbWVTdHJpbmcAAURhdXRob3JpbmdfdmVyc2lvbiABDHUzMgABMHNwZWNfdmVyc2lvbiABDHUzMgABMGltcGxfdmVyc2lvbiABDHUzMgABEGFwaXOJAgEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb24gAQx1MzIAATRzdGF0ZV92ZXJzaW9uEAEIdTgAAIkCBAxDb3cEBFQBjQIABACNAgAAAI0CAAACkQIAkQIAAAQIpCAAlQIAAAUEAJkCDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEYPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldJ0CDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABABsARB1MTI4AAChAghocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAKUCDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFsJEFjY291bnRJZAEkOERlcG9zaXRCYWxhbmNlAWwAMAEUb3duZXIkASRBY2NvdW50SWQAARhpc3N1ZXIkASRBY2NvdW50SWQAARRhZG1pbiQBJEFjY291bnRJZAABHGZyZWV6ZXIkASRBY2NvdW50SWQAARhzdXBwbHlsARxCYWxhbmNlAAEcZGVwb3NpdGwBOERlcG9zaXRCYWxhbmNlAAEsbWluX2JhbGFuY2VsARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudPgBEGJvb2wAASBhY2NvdW50cyABDHUzMgABLHN1ZmZpY2llbnRzIAEMdTMyAAEkYXBwcm92YWxzIAEMdTMyAAEYc3RhdHVzqQIBLEFzc2V0U3RhdHVzAACpAgw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAK0CAAAECCAkALECDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudAwcQmFsYW5jZQFsOERlcG9zaXRCYWxhbmNlAWwURXh0cmEBzAAQARxiYWxhbmNlbAEcQmFsYW5jZQABJGlzX2Zyb3plbvgBEGJvb2wAARhyZWFzb261AgF8RXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlPgABFGV4dHJhzAEURXh0cmEAALUCDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbgQcQmFsYW5jZQFsARAgQ29uc3VtZXIAAAAoU3VmZmljaWVudAABACxEZXBvc2l0SGVsZAQAbAEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAAuQIAAAQMICQkAL0CDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAWw4RGVwb3NpdEJhbGFuY2UBbAAIARhhbW91bnRsARxCYWxhbmNlAAEcZGVwb3NpdGwBOERlcG9zaXRCYWxhbmNlAADBAgw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFsNEJvdW5kZWRTdHJpbmcBxQIAFAEcZGVwb3NpdGwBOERlcG9zaXRCYWxhbmNlAAEQbmFtZcUCATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sxQIBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscxABCHU4AAEkaXNfZnJvemVu+AEQYm9vbAAAxQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQAZAEYVmVjPFQ+AADJAgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAVAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IEtQEKCQkJQ3VzdG9tIFtkaXNwYXRjaCBlcnJvcnNdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKQoJCQlvZiB0aGlzIHBhbGxldC4KCQkJzQIMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHRAQRTAAAEANECARhWZWM8VD4AANECAAAC0QEA1QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE1AQRTAAAEAFkCARhWZWM8VD4AANkCCERwYWxsZXRfY29sbGVjdGl2ZRRWb3RlcwgkQWNjb3VudElkASQsQmxvY2tOdW1iZXIBIAAUARRpbmRleCABNFByb3Bvc2FsSW5kZXgAASR0aHJlc2hvbGQgASxNZW1iZXJDb3VudAABEGF5ZXNUAThWZWM8QWNjb3VudElkPgABEG5heXNUAThWZWM8QWNjb3VudElkPgABDGVuZCABLEJsb2NrTnVtYmVyAADdAgxEcGFsbGV0X2NvbGxlY3RpdmUYcGFsbGV0FEVycm9yCARUAARJAAEoJE5vdE1lbWJlcgAABFxBY2NvdW50IGlzIG5vdCBhIG1lbWJlckREdXBsaWNhdGVQcm9wb3NhbAABBHxEdXBsaWNhdGUgcHJvcG9zYWxzIG5vdCBhbGxvd2VkPFByb3Bvc2FsTWlzc2luZwACBExQcm9wb3NhbCBtdXN0IGV4aXN0KFdyb25nSW5kZXgAAwRATWlzbWF0Y2hlZCBpbmRleDREdXBsaWNhdGVWb3RlAAQEWER1cGxpY2F0ZSB2b3RlIGlnbm9yZWRIQWxyZWFkeUluaXRpYWxpemVkAAUEgE1lbWJlcnMgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQhIFRvb0Vhcmx5AAYEAQFUaGUgY2xvc2UgY2FsbCB3YXMgbWFkZSB0b28gZWFybHksIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSB2b3RpbmcuQFRvb01hbnlQcm9wb3NhbHMABwT8VGhlcmUgY2FuIG9ubHkgYmUgYSBtYXhpbXVtIG9mIGBNYXhQcm9wb3NhbHNgIGFjdGl2ZSBwcm9wb3NhbHMuTFdyb25nUHJvcG9zYWxXZWlnaHQACATQVGhlIGdpdmVuIHdlaWdodCBib3VuZCBmb3IgdGhlIHByb3Bvc2FsIHdhcyB0b28gbG93LkxXcm9uZ1Byb3Bvc2FsTGVuZ3RoAAkE0FRoZSBnaXZlbiBsZW5ndGggYm91bmQgZm9yIHRoZSBwcm9wb3NhbCB3YXMgdG9vIGxvdy4EtQEKCQkJQ3VzdG9tIFtkaXNwYXRjaCBlcnJvcnNdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKQoJCQlvZiB0aGlzIHBhbGxldC4KCQkJ4QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQAZAEYVmVjPFQ+AADlAgxAcGFsbGV0X2NvbnRyYWN0cxB3YXNtQFByZWZhYldhc21Nb2R1bGUEBFQAABQBbGluc3RydWN0aW9uX3dlaWdodHNfdmVyc2lvbo0BAQx1MzIAARxpbml0aWFsjQEBDHUzMgABHG1heGltdW2NAQEMdTMyAAEQY29kZekCAURSZWxheGVkQ29kZVZlYzxUPgABLGRldGVybWluaXNtoQEBLERldGVybWluaXNtAADpAgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUARAEUwAABABkARhWZWM8VD4AAO0CDEBwYWxsZXRfY29udHJhY3RzEHdhc20kT3duZXJJbmZvBARUAAAMARRvd25lciQBOEFjY291bnRJZE9mPFQ+AAEcZGVwb3NpdPQBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50SAEMdTY0AADxAgxAcGFsbGV0X2NvbnRyYWN0cxxzdG9yYWdlMENvbnRyYWN0SW5mbwQEVAAAIAEcdHJpZV9pZGABGFRyaWVJZAABPGRlcG9zaXRfYWNjb3VudPUCAUREZXBvc2l0QWNjb3VudDxUPgABJGNvZGVfaGFzaDUBASxDb2RlSGFzaDxUPgABNHN0b3JhZ2VfYnl0ZXMgAQx1MzIAATRzdG9yYWdlX2l0ZW1zIAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRsATBCYWxhbmNlT2Y8VD4AAVBzdG9yYWdlX2l0ZW1fZGVwb3NpdGwBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0bAEwQmFsYW5jZU9mPFQ+AAD1AgxAcGFsbGV0X2NvbnRyYWN0cxxzdG9yYWdlOERlcG9zaXRBY2NvdW50BARUAAAEACQBOEFjY291bnRJZE9mPFQ+AAD5AgxAcGFsbGV0X2NvbnRyYWN0cxxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlciABDHUzMgABOGRlbGV0ZV9jb3VudGVyIAEMdTMyAAD9AgxAcGFsbGV0X2NvbnRyYWN0cyBzY2hlZHVsZSBTY2hlZHVsZQQEVAAADAEYbGltaXRzAQMBGExpbWl0cwABTGluc3RydWN0aW9uX3dlaWdodHMFAwFUSW5zdHJ1Y3Rpb25XZWlnaHRzPFQ+AAE8aG9zdF9mbl93ZWlnaHRzCQMBQEhvc3RGbldlaWdodHM8VD4AAAEDDEBwYWxsZXRfY29udHJhY3RzIHNjaGVkdWxlGExpbWl0cwAAKAEwZXZlbnRfdG9waWNzIAEMdTMyAAEcZ2xvYmFscyABDHUzMgABGGxvY2FscyABDHUzMgABKHBhcmFtZXRlcnMgAQx1MzIAATBtZW1vcnlfcGFnZXMgAQx1MzIAASh0YWJsZV9zaXplIAEMdTMyAAE0YnJfdGFibGVfc2l6ZSABDHUzMgABLHN1YmplY3RfbGVuIAEMdTMyAAEscGF5bG9hZF9sZW4gAQx1MzIAAThydW50aW1lX21lbW9yeSABDHUzMgAABQMMQHBhbGxldF9jb250cmFjdHMgc2NoZWR1bGVISW5zdHJ1Y3Rpb25XZWlnaHRzBARUAADUARx2ZXJzaW9uIAEMdTMyAAEgZmFsbGJhY2sgAQx1MzIAASBpNjRjb25zdCABDHUzMgABHGk2NGxvYWQgAQx1MzIAASBpNjRzdG9yZSABDHUzMgABGHNlbGVjdCABDHUzMgABEHIjaWYgAQx1MzIAAQhiciABDHUzMgABFGJyX2lmIAEMdTMyAAEgYnJfdGFibGUgAQx1MzIAAUhicl90YWJsZV9wZXJfZW50cnkgAQx1MzIAARBjYWxsIAEMdTMyAAE0Y2FsbF9pbmRpcmVjdCABDHUzMgABOGNhbGxfcGVyX2xvY2FsIAEMdTMyAAEkbG9jYWxfZ2V0IAEMdTMyAAEkbG9jYWxfc2V0IAEMdTMyAAEkbG9jYWxfdGVlIAEMdTMyAAEoZ2xvYmFsX2dldCABDHUzMgABKGdsb2JhbF9zZXQgAQx1MzIAAThtZW1vcnlfY3VycmVudCABDHUzMgABLG1lbW9yeV9ncm93IAEMdTMyAAEYaTY0Y2x6IAEMdTMyAAEYaTY0Y3R6IAEMdTMyAAEkaTY0cG9wY250IAEMdTMyAAEYaTY0ZXF6IAEMdTMyAAE0aTY0ZXh0ZW5kc2kzMiABDHUzMgABNGk2NGV4dGVuZHVpMzIgAQx1MzIAAShpMzJ3cmFwaTY0IAEMdTMyAAEUaTY0ZXEgAQx1MzIAARRpNjRuZSABDHUzMgABGGk2NGx0cyABDHUzMgABGGk2NGx0dSABDHUzMgABGGk2NGd0cyABDHUzMgABGGk2NGd0dSABDHUzMgABGGk2NGxlcyABDHUzMgABGGk2NGxldSABDHUzMgABGGk2NGdlcyABDHUzMgABGGk2NGdldSABDHUzMgABGGk2NGFkZCABDHUzMgABGGk2NHN1YiABDHUzMgABGGk2NG11bCABDHUzMgABHGk2NGRpdnMgAQx1MzIAARxpNjRkaXZ1IAEMdTMyAAEcaTY0cmVtcyABDHUzMgABHGk2NHJlbXUgAQx1MzIAARhpNjRhbmQgAQx1MzIAARRpNjRvciABDHUzMgABGGk2NHhvciABDHUzMgABGGk2NHNobCABDHUzMgABHGk2NHNocnMgAQx1MzIAARxpNjRzaHJ1IAEMdTMyAAEcaTY0cm90bCABDHUzMgABHGk2NHJvdHIgAQx1MzIAAAkDDEBwYWxsZXRfY29udHJhY3RzIHNjaGVkdWxlNEhvc3RGbldlaWdodHMEBFQAAPQBGGNhbGxlcpUBARhXZWlnaHQAASxpc19jb250cmFjdJUBARhXZWlnaHQAASRjb2RlX2hhc2iVAQEYV2VpZ2h0AAE0b3duX2NvZGVfaGFzaJUBARhXZWlnaHQAAUBjYWxsZXJfaXNfb3JpZ2lulQEBGFdlaWdodAABHGFkZHJlc3OVAQEYV2VpZ2h0AAEgZ2FzX2xlZnSVAQEYV2VpZ2h0AAEcYmFsYW5jZZUBARhXZWlnaHQAAUR2YWx1ZV90cmFuc2ZlcnJlZJUBARhXZWlnaHQAATxtaW5pbXVtX2JhbGFuY2WVAQEYV2VpZ2h0AAEwYmxvY2tfbnVtYmVylQEBGFdlaWdodAABDG5vd5UBARhXZWlnaHQAATR3ZWlnaHRfdG9fZmVllQEBGFdlaWdodAABDGdhc5UBARhXZWlnaHQAARRpbnB1dJUBARhXZWlnaHQAAThpbnB1dF9wZXJfYnl0ZZUBARhXZWlnaHQAASByI3JldHVybpUBARhXZWlnaHQAATxyZXR1cm5fcGVyX2J5dGWVAQEYV2VpZ2h0AAEkdGVybWluYXRllQEBGFdlaWdodAABGHJhbmRvbZUBARhXZWlnaHQAATRkZXBvc2l0X2V2ZW50lQEBGFdlaWdodAABXGRlcG9zaXRfZXZlbnRfcGVyX3RvcGljlQEBGFdlaWdodAABWGRlcG9zaXRfZXZlbnRfcGVyX2J5dGWVAQEYV2VpZ2h0AAE0ZGVidWdfbWVzc2FnZZUBARhXZWlnaHQAAVhkZWJ1Z19tZXNzYWdlX3Blcl9ieXRllQEBGFdlaWdodAABLHNldF9zdG9yYWdllQEBGFdlaWdodAABYHNldF9zdG9yYWdlX3Blcl9uZXdfYnl0ZZUBARhXZWlnaHQAAWBzZXRfc3RvcmFnZV9wZXJfb2xkX2J5dGWVAQEYV2VpZ2h0AAE0c2V0X2NvZGVfaGFzaJUBARhXZWlnaHQAATRjbGVhcl9zdG9yYWdllQEBGFdlaWdodAABWGNsZWFyX3N0b3JhZ2VfcGVyX2J5dGWVAQEYV2VpZ2h0AAFAY29udGFpbnNfc3RvcmFnZZUBARhXZWlnaHQAAWRjb250YWluc19zdG9yYWdlX3Blcl9ieXRllQEBGFdlaWdodAABLGdldF9zdG9yYWdllQEBGFdlaWdodAABUGdldF9zdG9yYWdlX3Blcl9ieXRllQEBGFdlaWdodAABMHRha2Vfc3RvcmFnZZUBARhXZWlnaHQAAVR0YWtlX3N0b3JhZ2VfcGVyX2J5dGWVAQEYV2VpZ2h0AAEgdHJhbnNmZXKVAQEYV2VpZ2h0AAEQY2FsbJUBARhXZWlnaHQAATRkZWxlZ2F0ZV9jYWxslQEBGFdlaWdodAABXGNhbGxfdHJhbnNmZXJfc3VyY2hhcmdllQEBGFdlaWdodAABUGNhbGxfcGVyX2Nsb25lZF9ieXRllQEBGFdlaWdodAABLGluc3RhbnRpYXRllQEBGFdlaWdodAABeGluc3RhbnRpYXRlX3RyYW5zZmVyX3N1cmNoYXJnZZUBARhXZWlnaHQAAWhpbnN0YW50aWF0ZV9wZXJfaW5wdXRfYnl0ZZUBARhXZWlnaHQAAWRpbnN0YW50aWF0ZV9wZXJfc2FsdF9ieXRllQEBGFdlaWdodAABNGhhc2hfc2hhMl8yNTaVAQEYV2VpZ2h0AAFYaGFzaF9zaGEyXzI1Nl9wZXJfYnl0ZZUBARhXZWlnaHQAATxoYXNoX2tlY2Nha18yNTaVAQEYV2VpZ2h0AAFgaGFzaF9rZWNjYWtfMjU2X3Blcl9ieXRllQEBGFdlaWdodAABPGhhc2hfYmxha2UyXzI1NpUBARhXZWlnaHQAAWBoYXNoX2JsYWtlMl8yNTZfcGVyX2J5dGWVAQEYV2VpZ2h0AAE8aGFzaF9ibGFrZTJfMTI4lQEBGFdlaWdodAABYGhhc2hfYmxha2UyXzEyOF9wZXJfYnl0ZZUBARhXZWlnaHQAATRlY2RzYV9yZWNvdmVylQEBGFdlaWdodAABUGVjZHNhX3RvX2V0aF9hZGRyZXNzlQEBGFdlaWdodAABOHNyMjU1MTlfdmVyaWZ5lQEBGFdlaWdodAABXHNyMjU1MTlfdmVyaWZ5X3Blcl9ieXRllQEBGFdlaWdodAABQHJlZW50cmFuY2VfY291bnSVAQEYV2VpZ2h0AAFgYWNjb3VudF9yZWVudHJhbmNlX2NvdW50lQEBGFdlaWdodAABTGluc3RhbnRpYXRpb25fbm9uY2WVAQEYV2VpZ2h0AAANAwxAcGFsbGV0X2NvbnRyYWN0cxhwYWxsZXQURXJyb3IEBFQAAWxYSW52YWxpZFNjaGVkdWxlVmVyc2lvbgAABAEBQSBuZXcgc2NoZWR1bGUgbXVzdCBoYXZlIGEgZ3JlYXRlciB2ZXJzaW9uIHRoYW4gdGhlIGN1cnJlbnQgb25lLkBJbnZhbGlkQ2FsbEZsYWdzAAEENQFJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGZsYWdzIHN1cHBsaWVkIHRvIGBzZWFsX2NhbGxgIG9yIGBzZWFsX2RlbGVnYXRlX2NhbGxgLiBPdXRPZkdhcwACBLhUaGUgZXhlY3V0ZWQgY29udHJhY3QgZXhoYXVzdGVkIGl0cyBnYXMgbGltaXQuUE91dHB1dEJ1ZmZlclRvb1NtYWxsAAMEAQFUaGUgb3V0cHV0IGJ1ZmZlciBzdXBwbGllZCB0byBhIGNvbnRyYWN0IEFQSSBjYWxsIHdhcyB0b28gc21hbGwuOFRyYW5zZmVyRmFpbGVkAAQINQFQZXJmb3JtaW5nIHRoZSByZXF1ZXN0ZWQgdHJhbnNmZXIgZmFpbGVkLiBQcm9iYWJseSBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaJRmcmVlIGJhbGFuY2UgaW4gdGhlIHNlbmRlcidzIGFjY291bnQuTE1heENhbGxEZXB0aFJlYWNoZWQABQghAVBlcmZvcm1pbmcgYSBjYWxsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY2FsbGluZyBkZXB0aCByZWFjaGVkIHRoZSBsaW1pdJRvZiB3aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgc2NoZWR1bGUuQENvbnRyYWN0Tm90Rm91bmQABgS8Tm8gY29udHJhY3Qgd2FzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4wQ29kZVRvb0xhcmdlAAcIPQFUaGUgY29kZSBzdXBwbGllZCB0byBgaW5zdGFudGlhdGVfd2l0aF9jb2RlYCBleGNlZWRzIHRoZSBsaW1pdCBzcGVjaWZpZWQgaW4gdGhlRGN1cnJlbnQgc2NoZWR1bGUuMENvZGVOb3RGb3VuZAAIBMRObyBjb2RlIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guLE91dE9mQm91bmRzAAkEJQFBIGJ1ZmZlciBvdXRzaWRlIG9mIHNhbmRib3ggbWVtb3J5IHdhcyBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24uOERlY29kaW5nRmFpbGVkAAoEKQFJbnB1dCBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24gZmFpbGVkIHRvIGRlY29kZSBhcyBleHBlY3RlZCB0eXBlLjxDb250cmFjdFRyYXBwZWQACwSIQ29udHJhY3QgdHJhcHBlZCBkdXJpbmcgZXhlY3V0aW9uLjRWYWx1ZVRvb0xhcmdlAAwEzFRoZSBzaXplIGRlZmluZWQgaW4gYFQ6Ok1heFZhbHVlU2l6ZWAgd2FzIGV4Y2VlZGVkLmBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQADQgZAVRlcm1pbmF0aW9uIG9mIGEgY29udHJhY3QgaXMgbm90IGFsbG93ZWQgd2hpbGUgdGhlIGNvbnRyYWN0IGlzIGFscmVhZHngb24gdGhlIGNhbGwgc3RhY2suIENhbiBiZSB0cmlnZ2VyZWQgYnkgYHNlYWxfdGVybWluYXRlYC44SW5wdXRGb3J3YXJkZWQADgRBAWBzZWFsX2NhbGxgIGZvcndhcmRlZCB0aGlzIGNvbnRyYWN0cyBpbnB1dC4gSXQgdGhlcmVmb3JlIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuUFJhbmRvbVN1YmplY3RUb29Mb25nAA8E2FRoZSBzdWJqZWN0IHBhc3NlZCB0byBgc2VhbF9yYW5kb21gIGV4Y2VlZHMgdGhlIGxpbWl0LjRUb29NYW55VG9waWNzABAEHQFUaGUgYW1vdW50IG9mIHRvcGljcyBwYXNzZWQgdG8gYHNlYWxfZGVwb3NpdF9ldmVudHNgIGV4Y2VlZHMgdGhlIGxpbWl0LkBOb0NoYWluRXh0ZW5zaW9uABEMRQFUaGUgY2hhaW4gZG9lcyBub3QgcHJvdmlkZSBhIGNoYWluIGV4dGVuc2lvbi4gQ2FsbGluZyB0aGUgY2hhaW4gZXh0ZW5zaW9uIHJlc3VsdHNNAWluIHRoaXMgZXJyb3IuIE5vdGUgdGhhdCB0aGlzIHVzdWFsbHkgIHNob3VsZG4ndCBoYXBwZW4gYXMgZGVwbG95aW5nIHN1Y2ggY29udHJhY3RzMGlzIHJlamVjdGVkLkREdXBsaWNhdGVDb250cmFjdAASBMhBIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgQWNjb3VudElkIGFscmVhZHkgZXhpc3RzLlxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgATDLhBIGNvbnRyYWN0IHNlbGYgZGVzdHJ1Y3RlZCBpbiBpdHMgY29uc3RydWN0b3IuANBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBjYWxsIHRvIGBzZWFsX3Rlcm1pbmF0ZWAuQFJlZW50cmFuY2VEZW5pZWQAFBANAUEgY2FsbCB0cmllZCB0byBpbnZva2UgYSBjb250cmFjdCB0aGF0IGlzIGZsYWdnZWQgYXMgbm9uLXJlZW50cmFudC5dAVRoZSBvbmx5IG90aGVyIGNhdXNlIGlzIHRoYXQgYSBjYWxsIGZyb20gYSBjb250cmFjdCBpbnRvIHRoZSBydW50aW1lIHRyaWVkIHRvIGNhbGwgYmFja0kBaW50byBgcGFsbGV0LWNvbnRyYWN0c2AuIFRoaXMgd291bGQgbWFrZSB0aGUgd2hvbGUgcGFsbGV0IHJlZW50cmFudCB3aXRoIHJlZ2FyZCB0b7xjb250cmFjdCBjb2RlIGV4ZWN1dGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABUEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAWBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAFwRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAYECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABkgRQFUaGUgY29udHJhY3QncyBjb2RlIHdhcyBmb3VuZCB0byBiZSBpbnZhbGlkIGR1cmluZyB2YWxpZGF0aW9uIG9yIGluc3RydW1lbnRhdGlvbi4ATQFUaGUgbW9zdCBsaWtlbHkgY2F1c2Ugb2YgdGhpcyBpcyB0aGF0IGFuIEFQSSB3YXMgdXNlZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZVEBbm9kZS4gVGhpcyBoYXBwZW5zIGlmIGFuIG9sZGVyIG5vZGUgaXMgdXNlZCB3aXRoIGEgbmV3IHZlcnNpb24gb2YgaW5rIS4gVHJ5IHVwZGF0aW5nqHlvdXIgbm9kZSB0byB0aGUgbmV3ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLgBRAUEgbW9yZSBkZXRhaWxlZCBlcnJvciBjYW4gYmUgZm91bmQgb24gdGhlIG5vZGUgY29uc29sZSBpZiBkZWJ1ZyBtZXNzYWdlcyBhcmUgZW5hYmxlZKhieSBzdXBwbHlpbmcgYC1scnVudGltZTo6Y29udHJhY3RzPWRlYnVnYC48SW5kZXRlcm1pbmlzdGljABoEIQFBbiBpbmRldGVybWlzdGljIGNvZGUgd2FzIHVzZWQgaW4gYSBjb250ZXh0IHdoZXJlIHRoaXMgaXMgbm90IHBlcm1pdHRlZC4EtQEKCQkJQ3VzdG9tIFtkaXNwYXRjaCBlcnJvcnNdKGh0dHBzOi8vZG9jcy5zdWJzdHJhdGUuaW8vbWFpbi1kb2NzL2J1aWxkL2V2ZW50cy1lcnJvcnMvKQoJCQlvZiB0aGlzIHBhbGxldC4KCQkJEQMAAAQINQEgABUDDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBzQEEUwAABAAZAwEYVmVjPFQ+AAAZAwAAAs0BAB0DEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxBtaXNjNFdyYXBwZXJPcGFxdWUEBFQBIQMACACNAQAAACEDAQRUAAAhAwhAcGFsbGV0X2ltX29ubGluZWRCb3VuZGVkT3BhcXVlTmV0d29ya1N0YXRlDExQZWVySWRFbmNvZGluZ0xpbWl0AFhNdWx0aUFkZHJFbmNvZGluZ0xpbWl0ADhBZGRyZXNzZXNMaW1pdAAACAEccGVlcl9pZCUDAZxXZWFrQm91bmRlZFZlYzx1OCwgUGVlcklkRW5jb2RpbmdMaW1pdD4AAUhleHRlcm5hbF9hZGRyZXNzZXMpAwEpAVdlYWtCb3VuZGVkVmVjPFdlYWtCb3VuZGVkVmVjPHU4LCBNdWx0aUFkZHJFbmNvZGluZ0xpbWl0PiwKQWRkcmVzc2VzTGltaXQ+AAAlAwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUARAEUwAABABkARhWZWM8VD4AACkDDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBJQMEUwAABAAtAwEYVmVjPFQ+AAAtAwAAAiUDADEDDEBwYWxsZXRfaW1fb25saW5lGHBhbGxldBRFcnJvcgQEVAABCChJbnZhbGlkS2V5AAAEYE5vbiBleGlzdGVudCBwdWJsaWMga2V5LkxEdXBsaWNhdGVkSGVhcnRiZWF0AAEEVER1cGxpY2F0ZWQgaGVhcnRiZWF0LgS1AQoJCQlDdXN0b20gW2Rpc3BhdGNoIGVycm9yc10oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pCgkJCW9mIHRoaXMgcGFsbGV0LgoJCQk1AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATUBBFMAAAQAWQIBGFZlYzxUPgAAOQMAAAI9AwA9AwAABAgkyQEAQQMAAAIgAEUDAAAECEkDZABJAwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAJABHFt1ODsgNF0AAE0DDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuUQMIPHBhbGxldF90cmVhc3VyeSBQcm9wb3NhbAgkQWNjb3VudElkASQcQmFsYW5jZQFsABABIHByb3Bvc2VyJAEkQWNjb3VudElkAAEUdmFsdWVsARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkkASRBY2NvdW50SWQAARBib25kbAEcQmFsYW5jZQAAVQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEgBFMAAAQAQQMBGFZlYzxUPgAAWQMMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEACABDHUzMgAAXQMEGE9wdGlvbgQEVAFsAQgQTm9uZQAAABBTb21lBABsAAABAABhAww8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFcnJvcggEVAAESQABFHBJbnN1ZmZpY2llbnRQcm9wb3NlcnNCYWxhbmNlAAAEeFByb3Bvc2VyJ3MgYmFsYW5jZSBpcyB0b28gbG93LjBJbnZhbGlkSW5kZXgAAQSQTm8gcHJvcG9zYWwgb3IgYm91bnR5IGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAgSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgADCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAAEBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC5lAwxYcGFsbGV0X2Q5X2NvdW5jaWxfbG9jaxR0eXBlcyBQcm9wb3NhbAQEVAFpAwAYAUBwcm9wb3NlZF9hY2NvdW50JAEwVDo6QWNjb3VudElkAAE0c2Vzc2lvbl9pbmRleCABMFNlc3Npb25JbmRleAABJG5vbWluYXRvciQBMFQ6OkFjY291bnRJZAABJGNoYW5nZV90b0kCAUBBY2NvdW50TG9ja1N0YXRlAAE0Y3JlYXRpb25fdGltZRwBLE1vbWVudE9mPFQ+AAFwZXN0aW1hdGVkX3RpbWVfdG9fcmVmZXJlbmR1bW0DAUxPcHRpb248TW9tZW50T2Y8VD4+AABpAwg8ZDlfbm9kZV9ydW50aW1lHFJ1bnRpbWUAAAAAbQMEGE9wdGlvbgQEVAEcAQgQTm9uZQAAABBTb21lBAAcAAABAABxAwxYcGFsbGV0X2Q5X2NvdW5jaWxfbG9jaxR0eXBlczhMb2NrUmVmZXJlbmR1bQQEVAAAIAEkbm9taW5hdG9yJAEwVDo6QWNjb3VudElkAAFAcHJvcG9zZWRfYWNjb3VudCQBMFQ6OkFjY291bnRJZAABRGluZGV4X29mX3Byb3Bvc2FsIAEwU2Vzc2lvbkluZGV4AAEkY2hhbmdlX3RvSQIBQEFjY291bnRMb2NrU3RhdGUAAUBhc3NlbnRpbmdfdm90ZXJzdQMB0EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpBc3NlbnRpbmdWb3Rlc1RocmVzaG9sZD4AAURkaXNzZW50aW5nX3ZvdGVyc3kDAdRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6RGlzc2VudGluZ1ZvdGVzVGhyZXNob2xkPgABKHN0YXJ0X3RpbWUcASxNb21lbnRPZjxUPgABSGVzdGltYXRlZF9lbmRfdGltZRwBLE1vbWVudE9mPFQ+AAB1AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASQEUwAABABUARhWZWM8VD4AAHkDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBJARTAAAEAFQBGFZlYzxUPgAAfQMMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sUdHlwZXMoUmVzb2x1dGlvbgQEVAFpAwAgASRub21pbmF0b3IkATBUOjpBY2NvdW50SWQAAUBwcm9wb3NlZF9hY2NvdW50JAEwVDo6QWNjb3VudElkAAFEaW5kZXhfb2ZfcHJvcG9zYWwgATBTZXNzaW9uSW5kZXgAAShjaGFuZ2VkX3RvSQIBQEFjY291bnRMb2NrU3RhdGUAAUBhc3NlbnRpbmdfdm90ZXJzdQMB0EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpBc3NlbnRpbmdWb3Rlc1RocmVzaG9sZD4AAURkaXNzZW50aW5nX3ZvdGVyc3kDAdRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6RGlzc2VudGluZ1ZvdGVzVGhyZXNob2xkPgABGHJlc3VsdE0CAShWb3RlUmVzdWx0AAEgZW5kX3RpbWUcASxNb21lbnRPZjxUPgAAgQMMWHBhbGxldF9kOV9jb3VuY2lsX2xvY2sUdHlwZXMsQWNjb3VudExvY2sEBFQBaQMADAEcYWNjb3VudCQBMFQ6OkFjY291bnRJZAABJG5vbWluYXRvciQBMFQ6OkFjY291bnRJZAABKGxvY2tfaW5kZXggATBTZXNzaW9uSW5kZXgAAIUDDFhwYWxsZXRfZDlfY291bmNpbF9sb2NrGHBhbGxldBRFcnJvcgQEVAABQEROb3RWYWxpZE5vbWluYXRvcgAAAFxQcm9wb3NhbEZlZUluc3VmZmljaWVudAABAGBNaW5pbmdQb29sQ29udHJhY3ROb3RTZXQAAgBcRXJyb3JHZXR0aW5nUmFua2VkTm9kZXMAAwBQQWNjb3VudEFscmVhZHlMb2NrZWQABABAQWNjb3VudE5vdExvY2tlZAAFAFRQcm9wb3NhbEFscmVhZHlFeGlzdHMABgBoQWNjb3VudEFscmVhZHlJblJlZmVyZW5kdW0ABwBYQWRtaW5DYW5ub3RCZU5vbWluYXRlZAAIAJBMb2NrQ2FuZGlkYXRlc05vdFBlcm1pdHRlZFRvSW50ZXJhY3QACQCQTG9ja2VkQWNjb3VudHNOb3RQZXJtaXR0ZWRUb0ludGVyYWN0AAoAXExvY2tlZEFjY291bnRDYW5ub3RWb3RlAAsAWFJlZmVyZW5kdW1Eb2VzTm90RXhpc3QADABUTm90VmFsaWRDb3VuY2lsTWVtYmVyAA0AVEVycm9yQ2FsY3VsYXRpbmdWb3RlcwAOAERWb3RlckFscmVhZHlWb3RlZAAPAAS1AQoJCQlDdXN0b20gW2Rpc3BhdGNoIGVycm9yc10oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pCgkJCW9mIHRoaXMgcGFsbGV0LgoJCQmJAxBMcGFsbGV0X2Q5X211bHRpX3NpZxR0eXBlc1xtdWx0aV9zaWduYXR1cmVfYWNjb3VudFRNdWx0aVNpZ25hdHVyZUFjY291bnQEBFQAABQBHGFkZHJlc3MkATBUOjpBY2NvdW50SWQAARxhdXRob3JzjQMBzE9wdGlvbjxCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U2lnbmF0b3JpZXM+PgABLHNpZ25hdG9yaWVzkQMBrEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTaWduYXRvcmllcz4AAUxtaW5pbXVtX3NpZ25hdG9yaWVzIAEMdTMyAAE0cGVuZGluZ19jYWxsc5UDAbhCb3VuZGVkVmVjPFBlbmRpbmdDYWxsPFQ+LCBUOjpNYXhQZW5kaW5nQ2FsbHM+AACNAwQYT3B0aW9uBARUAZEDAQgQTm9uZQAAABBTb21lBACRAwAAAQAAkQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEkBFMAAAQAVAEYVmVjPFQ+AACVAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZkDBFMAAAQAqQMBGFZlYzxUPgAAmQMQTHBhbGxldF9kOV9tdWx0aV9zaWcUdHlwZXMwcGVuZGluZ19jYWxsLFBlbmRpbmdDYWxsBARUAAAMAQhpZAwBIFt1ODsgMzJdAAEQY2FsbJ0DAUBCb3VuZGVkQ2FsbE9mPFQ+AAEkYXBwcm92YWxzoQMBwEJvdW5kZWRCVHJlZVNldDxUOjpBY2NvdW50SWQsIFQ6Ok1heFNpZ25hdG9yaWVzPgAAnQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQAZAEYVmVjPFQ+AAChAwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBJARTAAAEAKUDASxCVHJlZVNldDxUPgAApQMEIEJUcmVlU2V0BARUASQABABUAAAAqQMAAAKZAwCtAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASQEUwAABABUARhWZWM8VD4AALEDEExwYWxsZXRfZDlfbXVsdGlfc2lnFHR5cGVzVG1pbl9hcHByb3ZhbF9wcm9wb3NhbFxNaW5pbXVtQXBwcm92YWxQcm9wb3NhbAQEVAAAFAEsbXNhX2FkZHJlc3MkATBUOjpBY2NvdW50SWQAASxuZXdfbWluaW11bSABDHUzMgABIHByb3Bvc2VyJAEwVDo6QWNjb3VudElkAAEkYXBwcm92YWxzkQMBrEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTaWduYXRvcmllcz4AAUBwYXNzX3JlcXVpcmVtZW50IAEMdTMyAAC1AwxMcGFsbGV0X2Q5X211bHRpX3NpZxhwYWxsZXQURXJyb3IEBFQAAWhARHVwbGljYXRlc0luTGlzdAAABIBTaWduZXJzIGxpc3QgY29udGFpbnMgZHVwbGljYXRlc0hDYWxsZXJOb3RTaWduYXRvcnkAAQRkQ2FsbGVyIG5vdCBpbiBzaWduYXRvcmllc0BNU0FBbHJlYWR5RXhpc3RzAAIEgE11bHRpLXNpZyBhY2NvdW50IGFscmVhZHkgZXhpc3RzLE1TQU5vdEZvdW5kAAMEbE11bHRpLXNpZyBhY2NvdW50IG5vdCBmb3VuZExTaWduYXRvcmllc1Rvb1Nob3J0AAQEcE11c3QgaGF2ZSBhdCBsZWFzdCAyIHNpZ25lcnNIU2lnbmF0b3JpZXNUb29Mb25nAAUEQFRvbyBtYW55IHNpZ25lcnM4QXBwcm92YWxFeGlzdHMABgRcYXBwcm92YWwgYWxyZWFkeSBleGlzdHNMQXBwcm92YWxEb2VzbnRFeGlzdAAHBKRhdHRlbXB0aW5nIHRvIHJlbW92ZSBub25leGlzdGVudCBhcHByb3ZhbFRNaW5BcHByb3ZhbE91dE9mUmFuZ2UACASETWluaW11bSBhcHByb3ZhbHMgaXMgb3V0IG9mIHJhbmdleE5ld01pbmltdW1FcXVhbHNDdXJyZW50TWluaW11bQAJBJRQcm9wb3NhbCBhcHByb3ZhbCBlcXVhbHMgZXhpc3Rpbmcgb25lUEFjY291bnRBbHJlYWR5QXV0aG9yAAoEcEFjY291bnQgaXMgYWxyZWFkeSBhbiBhdXRob3JYT25seU1TQUl0c2VsZkNhbkRvVGhpcwALBJhvbmx5IHRoZSBtc2EgYXV0aG9yIGV4ZWN1dGUgdGhpcyBjYWxsc0BBdXRob3JWZWNUb29Mb25nAAwEVEF1dGhvcnMgbGlzdCB0b28gbG9uZ0BBY2NvdW50Tm90QXV0aG9yAA0ENE5vdCBhbiBhdXRob3JMQWNjb3VudE5vdFNpZ25hdG9yeQAOBDxOb3QgYSBzaWduYXRvcnlYQWNjb3VudEVycm9yTWF4QXV0aG9ycwAPBHBSZWFjaGVkIG1heCBwb3NzaWJsZSBhdXRob3JzJENhbGxMaW1pdAAQBGxQZW5kaW5nIGNhbGxzIGxpbWl0IHJlYWNoZWRUQXBwcm92YWxzTGltaXRSZWFjaGVkABEEXEFwcHJvdmFscyBsaW1pdCByZWFjaGVkTENhbGxFbmNvZGluZ0ZhaWx1cmUAEgRURmFpbGVkIHRvIGVuY29kZSBjYWxsWEFjY291bnRBdE11bHRpU2lnTGltaXQAEwSQVGhpcyBhY2NvdW50IGhpdCBpdHMgbXVsdGktc2lnIGxpbWl0ZEZhaWxlZFRvQ3JlYXRlUGVuZGluZ0NhbGwAFAR0RmFpbGVkIHRvIGNyZWF0ZSBwZW5kaW5nIGNhbGwwQ2FsbE5vdEZvdW5kABUEcENhbGwgbm90IGZvdW5kIGZvciBtdWx0aS1zaWdMRmFpbHVyZURlY29kaW5nQ2FsbAAWBFRGYWlsZWQgdG8gZGVjb2RlIGNhbGxcRmFpbGVkVG9CdWlsZEJvdW5kZWRWZWMAFwRsZmFpbHVyZSBidWlsZGluZyBCb3VuZGVkVmVjQFByb3Bvc2FsTm90Rm91bmQAGAR8TWluIGFwcHJvdmFsIHByb3Bvc2FsIG5vdCBmb3VuZFhQcm9wb3NhbEFscmVhZHlQZW5kaW5nABkEYHByb3Bvc2FsIGFscmVhZHkgcGVuZGluZwS1AQoJCQlDdXN0b20gW2Rpc3BhdGNoIGVycm9yc10oaHR0cHM6Ly9kb2NzLnN1YnN0cmF0ZS5pby9tYWluLWRvY3MvYnVpbGQvZXZlbnRzLWVycm9ycy8pCgkJCW9mIHRoaXMgcGFsbGV0LgoJCQm5AxAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAegQQ2FsbAFxASRTaWduYXR1cmUBvQMURXh0cmEByQMABABkAAAAvQMIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAAQwcRWQyNTUxOQQASQEBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BADBAQFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBADBAwFAZWNkc2E6OlNpZ25hdHVyZQACAADBAwwcc3BfY29yZRRlY2RzYSRTaWduYXR1cmUAAAQAxQMBIFt1ODsgNjVdAADFAwAAA0EAAAAQAMkDAAAEIM0D0QPVA9kD3QPlA+kD7QMAzQMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAA0QMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAANUDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAANkDEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAADdAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAOEDAQxFcmEAAOEDEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQAEAAAAQAcTW9ydGFsMgQAEAAAAgAcTW9ydGFsMwQAEAAAAwAcTW9ydGFsNAQAEAAABAAcTW9ydGFsNQQAEAAABQAcTW9ydGFsNgQAEAAABgAcTW9ydGFsNwQAEAAABwAcTW9ydGFsOAQAEAAACAAcTW9ydGFsOQQAEAAACQAgTW9ydGFsMTAEABAAAAoAIE1vcnRhbDExBAAQAAALACBNb3J0YWwxMgQAEAAADAAgTW9ydGFsMTMEABAAAA0AIE1vcnRhbDE0BAAQAAAOACBNb3J0YWwxNQQAEAAADwAgTW9ydGFsMTYEABAAABAAIE1vcnRhbDE3BAAQAAARACBNb3J0YWwxOAQAEAAAEgAgTW9ydGFsMTkEABAAABMAIE1vcnRhbDIwBAAQAAAUACBNb3J0YWwyMQQAEAAAFQAgTW9ydGFsMjIEABAAABYAIE1vcnRhbDIzBAAQAAAXACBNb3J0YWwyNAQAEAAAGAAgTW9ydGFsMjUEABAAABkAIE1vcnRhbDI2BAAQAAAaACBNb3J0YWwyNwQAEAAAGwAgTW9ydGFsMjgEABAAABwAIE1vcnRhbDI5BAAQAAAdACBNb3J0YWwzMAQAEAAAHgAgTW9ydGFsMzEEABAAAB8AIE1vcnRhbDMyBAAQAAAgACBNb3J0YWwzMwQAEAAAIQAgTW9ydGFsMzQEABAAACIAIE1vcnRhbDM1BAAQAAAjACBNb3J0YWwzNgQAEAAAJAAgTW9ydGFsMzcEABAAACUAIE1vcnRhbDM4BAAQAAAmACBNb3J0YWwzOQQAEAAAJwAgTW9ydGFsNDAEABAAACgAIE1vcnRhbDQxBAAQAAApACBNb3J0YWw0MgQAEAAAKgAgTW9ydGFsNDMEABAAACsAIE1vcnRhbDQ0BAAQAAAsACBNb3J0YWw0NQQAEAAALQAgTW9ydGFsNDYEABAAAC4AIE1vcnRhbDQ3BAAQAAAvACBNb3J0YWw0OAQAEAAAMAAgTW9ydGFsNDkEABAAADEAIE1vcnRhbDUwBAAQAAAyACBNb3J0YWw1MQQAEAAAMwAgTW9ydGFsNTIEABAAADQAIE1vcnRhbDUzBAAQAAA1ACBNb3J0YWw1NAQAEAAANgAgTW9ydGFsNTUEABAAADcAIE1vcnRhbDU2BAAQAAA4ACBNb3J0YWw1NwQAEAAAOQAgTW9ydGFsNTgEABAAADoAIE1vcnRhbDU5BAAQAAA7ACBNb3J0YWw2MAQAEAAAPAAgTW9ydGFsNjEEABAAAD0AIE1vcnRhbDYyBAAQAAA+ACBNb3J0YWw2MwQAEAAAPwAgTW9ydGFsNjQEABAAAEAAIE1vcnRhbDY1BAAQAABBACBNb3J0YWw2NgQAEAAAQgAgTW9ydGFsNjcEABAAAEMAIE1vcnRhbDY4BAAQAABEACBNb3J0YWw2OQQAEAAARQAgTW9ydGFsNzAEABAAAEYAIE1vcnRhbDcxBAAQAABHACBNb3J0YWw3MgQAEAAASAAgTW9ydGFsNzMEABAAAEkAIE1vcnRhbDc0BAAQAABKACBNb3J0YWw3NQQAEAAASwAgTW9ydGFsNzYEABAAAEwAIE1vcnRhbDc3BAAQAABNACBNb3J0YWw3OAQAEAAATgAgTW9ydGFsNzkEABAAAE8AIE1vcnRhbDgwBAAQAABQACBNb3J0YWw4MQQAEAAAUQAgTW9ydGFsODIEABAAAFIAIE1vcnRhbDgzBAAQAABTACBNb3J0YWw4NAQAEAAAVAAgTW9ydGFsODUEABAAAFUAIE1vcnRhbDg2BAAQAABWACBNb3J0YWw4NwQAEAAAVwAgTW9ydGFsODgEABAAAFgAIE1vcnRhbDg5BAAQAABZACBNb3J0YWw5MAQAEAAAWgAgTW9ydGFsOTEEABAAAFsAIE1vcnRhbDkyBAAQAABcACBNb3J0YWw5MwQAEAAAXQAgTW9ydGFsOTQEABAAAF4AIE1vcnRhbDk1BAAQAABfACBNb3J0YWw5NgQAEAAAYAAgTW9ydGFsOTcEABAAAGEAIE1vcnRhbDk4BAAQAABiACBNb3J0YWw5OQQAEAAAYwAkTW9ydGFsMTAwBAAQAABkACRNb3J0YWwxMDEEABAAAGUAJE1vcnRhbDEwMgQAEAAAZgAkTW9ydGFsMTAzBAAQAABnACRNb3J0YWwxMDQEABAAAGgAJE1vcnRhbDEwNQQAEAAAaQAkTW9ydGFsMTA2BAAQAABqACRNb3J0YWwxMDcEABAAAGsAJE1vcnRhbDEwOAQAEAAAbAAkTW9ydGFsMTA5BAAQAABtACRNb3J0YWwxMTAEABAAAG4AJE1vcnRhbDExMQQAEAAAbwAkTW9ydGFsMTEyBAAQAABwACRNb3J0YWwxMTMEABAAAHEAJE1vcnRhbDExNAQAEAAAcgAkTW9ydGFsMTE1BAAQAABzACRNb3J0YWwxMTYEABAAAHQAJE1vcnRhbDExNwQAEAAAdQAkTW9ydGFsMTE4BAAQAAB2ACRNb3J0YWwxMTkEABAAAHcAJE1vcnRhbDEyMAQAEAAAeAAkTW9ydGFsMTIxBAAQAAB5ACRNb3J0YWwxMjIEABAAAHoAJE1vcnRhbDEyMwQAEAAAewAkTW9ydGFsMTI0BAAQAAB8ACRNb3J0YWwxMjUEABAAAH0AJE1vcnRhbDEyNgQAEAAAfgAkTW9ydGFsMTI3BAAQAAB/ACRNb3J0YWwxMjgEABAAAIAAJE1vcnRhbDEyOQQAEAAAgQAkTW9ydGFsMTMwBAAQAACCACRNb3J0YWwxMzEEABAAAIMAJE1vcnRhbDEzMgQAEAAAhAAkTW9ydGFsMTMzBAAQAACFACRNb3J0YWwxMzQEABAAAIYAJE1vcnRhbDEzNQQAEAAAhwAkTW9ydGFsMTM2BAAQAACIACRNb3J0YWwxMzcEABAAAIkAJE1vcnRhbDEzOAQAEAAAigAkTW9ydGFsMTM5BAAQAACLACRNb3J0YWwxNDAEABAAAIwAJE1vcnRhbDE0MQQAEAAAjQAkTW9ydGFsMTQyBAAQAACOACRNb3J0YWwxNDMEABAAAI8AJE1vcnRhbDE0NAQAEAAAkAAkTW9ydGFsMTQ1BAAQAACRACRNb3J0YWwxNDYEABAAAJIAJE1vcnRhbDE0NwQAEAAAkwAkTW9ydGFsMTQ4BAAQAACUACRNb3J0YWwxNDkEABAAAJUAJE1vcnRhbDE1MAQAEAAAlgAkTW9ydGFsMTUxBAAQAACXACRNb3J0YWwxNTIEABAAAJgAJE1vcnRhbDE1MwQAEAAAmQAkTW9ydGFsMTU0BAAQAACaACRNb3J0YWwxNTUEABAAAJsAJE1vcnRhbDE1NgQAEAAAnAAkTW9ydGFsMTU3BAAQAACdACRNb3J0YWwxNTgEABAAAJ4AJE1vcnRhbDE1OQQAEAAAnwAkTW9ydGFsMTYwBAAQAACgACRNb3J0YWwxNjEEABAAAKEAJE1vcnRhbDE2MgQAEAAAogAkTW9ydGFsMTYzBAAQAACjACRNb3J0YWwxNjQEABAAAKQAJE1vcnRhbDE2NQQAEAAApQAkTW9ydGFsMTY2BAAQAACmACRNb3J0YWwxNjcEABAAAKcAJE1vcnRhbDE2OAQAEAAAqAAkTW9ydGFsMTY5BAAQAACpACRNb3J0YWwxNzAEABAAAKoAJE1vcnRhbDE3MQQAEAAAqwAkTW9ydGFsMTcyBAAQAACsACRNb3J0YWwxNzMEABAAAK0AJE1vcnRhbDE3NAQAEAAArgAkTW9ydGFsMTc1BAAQAACvACRNb3J0YWwxNzYEABAAALAAJE1vcnRhbDE3NwQAEAAAsQAkTW9ydGFsMTc4BAAQAACyACRNb3J0YWwxNzkEABAAALMAJE1vcnRhbDE4MAQAEAAAtAAkTW9ydGFsMTgxBAAQAAC1ACRNb3J0YWwxODIEABAAALYAJE1vcnRhbDE4MwQAEAAAtwAkTW9ydGFsMTg0BAAQAAC4ACRNb3J0YWwxODUEABAAALkAJE1vcnRhbDE4NgQAEAAAugAkTW9ydGFsMTg3BAAQAAC7ACRNb3J0YWwxODgEABAAALwAJE1vcnRhbDE4OQQAEAAAvQAkTW9ydGFsMTkwBAAQAAC+ACRNb3J0YWwxOTEEABAAAL8AJE1vcnRhbDE5MgQAEAAAwAAkTW9ydGFsMTkzBAAQAADBACRNb3J0YWwxOTQEABAAAMIAJE1vcnRhbDE5NQQAEAAAwwAkTW9ydGFsMTk2BAAQAADEACRNb3J0YWwxOTcEABAAAMUAJE1vcnRhbDE5OAQAEAAAxgAkTW9ydGFsMTk5BAAQAADHACRNb3J0YWwyMDAEABAAAMgAJE1vcnRhbDIwMQQAEAAAyQAkTW9ydGFsMjAyBAAQAADKACRNb3J0YWwyMDMEABAAAMsAJE1vcnRhbDIwNAQAEAAAzAAkTW9ydGFsMjA1BAAQAADNACRNb3J0YWwyMDYEABAAAM4AJE1vcnRhbDIwNwQAEAAAzwAkTW9ydGFsMjA4BAAQAADQACRNb3J0YWwyMDkEABAAANEAJE1vcnRhbDIxMAQAEAAA0gAkTW9ydGFsMjExBAAQAADTACRNb3J0YWwyMTIEABAAANQAJE1vcnRhbDIxMwQAEAAA1QAkTW9ydGFsMjE0BAAQAADWACRNb3J0YWwyMTUEABAAANcAJE1vcnRhbDIxNgQAEAAA2AAkTW9ydGFsMjE3BAAQAADZACRNb3J0YWwyMTgEABAAANoAJE1vcnRhbDIxOQQAEAAA2wAkTW9ydGFsMjIwBAAQAADcACRNb3J0YWwyMjEEABAAAN0AJE1vcnRhbDIyMgQAEAAA3gAkTW9ydGFsMjIzBAAQAADfACRNb3J0YWwyMjQEABAAAOAAJE1vcnRhbDIyNQQAEAAA4QAkTW9ydGFsMjI2BAAQAADiACRNb3J0YWwyMjcEABAAAOMAJE1vcnRhbDIyOAQAEAAA5AAkTW9ydGFsMjI5BAAQAADlACRNb3J0YWwyMzAEABAAAOYAJE1vcnRhbDIzMQQAEAAA5wAkTW9ydGFsMjMyBAAQAADoACRNb3J0YWwyMzMEABAAAOkAJE1vcnRhbDIzNAQAEAAA6gAkTW9ydGFsMjM1BAAQAADrACRNb3J0YWwyMzYEABAAAOwAJE1vcnRhbDIzNwQAEAAA7QAkTW9ydGFsMjM4BAAQAADuACRNb3J0YWwyMzkEABAAAO8AJE1vcnRhbDI0MAQAEAAA8AAkTW9ydGFsMjQxBAAQAADxACRNb3J0YWwyNDIEABAAAPIAJE1vcnRhbDI0MwQAEAAA8wAkTW9ydGFsMjQ0BAAQAAD0ACRNb3J0YWwyNDUEABAAAPUAJE1vcnRhbDI0NgQAEAAA9gAkTW9ydGFsMjQ3BAAQAAD3ACRNb3J0YWwyNDgEABAAAPgAJE1vcnRhbDI0OQQAEAAA+QAkTW9ydGFsMjUwBAAQAAD6ACRNb3J0YWwyNTEEABAAAPsAJE1vcnRhbDI1MgQAEAAA/AAkTW9ydGFsMjUzBAAQAAD9ACRNb3J0YWwyNTQEABAAAP4AJE1vcnRhbDI1NQQAEAAA/wAA5QMQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAjQEBIFQ6OkluZGV4AADpAxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAO0DCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA9AEwQmFsYW5jZU9mPFQ+AABYEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAABAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LixDdXJyZW50U2xvdAEAGCAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAAAChEOVJlZmVycmFsAShEOVJlZmVycmFsDEBNYXhSZWZlcnJhbERlcHRoAQAgEAAAAAAY1CBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBhIG5vZGUgaW4gdGhlIHJlZmVycmFsIHRyZWUs2CB0aGUgTWF4UmVmZXJyYWxEZXB0aCBpcyB0aGUgbGFyZ2VzdCBOdGggYW5jZXN0b3Igbm9kZeAgVGhpcyBhc3NvY2lhdGVkIHR5cGUgaXMgb25seSBuZWNlc3NhcnkgZm9yIGZpcnN0IHJ1biBvZtggdGhlIGNoYWluIGFzIGl0IHdpbGwgZGVmaW5lIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUhASBNYXhSZWZlcnJhbERlcHRoIHN0b3JhZ2UgaXRlbS4gVGhpcyB2YWx1ZSBjYW4gYmUgY2hhbmdlZCBkdXJpbmcgcnVudGltZWwgdGhyb3VnaCBhbiBleHRyaW5zaWMgY2FsbC5UUmVmZXJyYWxSZWxhdGlvbnNoaXBzAAEEAiQkBAAE/CAoY2hpbGQgLT4gcGFyZW50KSByZWZlcnJhbCByZWxhdGlvbnNoaXAgQWNjb3VudElkIC0+IEFjY291bnRJZFBEaXJlY3RSZWZlcnJhbHNDb3VudAEBBAIkIBAAAAAAAAEoASwAATABKEQ5VHJlYXN1cnkBKEQ5VHJlYXN1cnkEJFRyZWFzdXJlcgAANAQABKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgE4ATwAAUACMEQ5Tm9kZVZvdGluZwEwRDlOb2RlVm90aW5nKFBVc2Vyc1ZvdGluZ0ludGVyZXN0cwABBAIkRAQABIwgZGVmaW5lcyB0aGUgdm90aW5nIHBvd2VyIG9mIGEgdXNlclRVc2VyVG9Ob2RlVm90ZXNUb3RhbHMBAQgCAkwcIAAAAAAAAAAAEOggZGVmaW5lcyB0aGUgdm90ZSBkaXN0cmlidXRpb24gb2YgYSB1c2VyIHRvIHNvbWUgY2FuZGlkYXRlAGwgdXNlciAtPiBjYW5kaWRhdGUgLT4gdm90ZXO8IFVzZXJUb05vZGVWb3Rlc1RvdGFscyA9PSBOb2RlVG9Vc2VyVm90ZXNUb3RhbHNUTm9kZVRvVXNlclZvdGVzVG90YWxzAQEIAgJMHCAAAAAAAAAAABCYIGRlZmluZXMgdGhlIHN1cHBvcnRlcnMgb2YgYSBjYW5kaWRhdGUAgCBjYW5kaWRhdGUgLT4gc3VwcG9ydGVyIC0+IHZvdGVzvCBVc2VyVG9Ob2RlVm90ZXNUb3RhbHMgPT0gTm9kZVRvVXNlclZvdGVzVG90YWxzVE5vZGVBY2N1bXVsYXRpdmVWb3RlcwABBAIkHAQADJQgZ3JhbmQgdG90YWwgb2Ygdm90ZXMgZm9yIGEgY2FuZGlkYXRlALQgdGhpcyBNYXAgY2FuIGJlIG5vIGxhcmdlciB0aGFuIE1heENhbmRpZGF0ZXN4Q3VycmVudE51bWJlck9mQ2FuZGlkYXRlc05vZGVzAQAgEAAAAAAAPFNlc3Npb25Ob2RlTGlzdAABBAIgUAQAAExDdXJyZW50U2Vzc2lvbkluZGV4AQAgEAAAAAAAZEN1cnJlbnRWYWxpZGF0b3JWb3RlU3RhdHMAAQQCJFgEAAAwTm9kZU1ldGFkYXRhAAEEAiRcBAAALFBhbGxldEFkbWluAAAkBAAAAWgBeAABfAM0RDlOb2RlUmV3YXJkcwE0RDlOb2RlUmV3YXJkcwhITm9kZVJld2FyZENvbnRyYWN0AAAkBAAALFBhbGxldEFkbWluAAAkBAAAAYABhAQgUGFsbGV0SWSgIG5kZS9yd3JkAAGoBCBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAGxAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS5ASW5hY3RpdmVJc3N1YW5jZQEAbEAAAAAAAAAAAAAAAAAAAAAABAkBIFRoZSB0b3RhbCB1bml0cyBvZiBvdXRzdGFuZGluZyBkZWFjdGl2YXRlZCBiYWxhbmNlIGluIHRoZSBzeXN0ZW0uHEFjY291bnQBAQQCJKwBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4UTG9ja3MBAQQCJLQEAAi4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLiBSZXNlcnZlcwEBBAIkxAQABKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLhRIb2xkcwEBBAIk1AQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4cRnJlZXplcwEBBAIk4AQABIggRnJlZXplIGxvY2tzIG9uIGFjY291bnQgYmFsYW5jZXMuAeQB/BRIRXhpc3RlbnRpYWxEZXBvc2l0bEDoAwAAAAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lISBNYXhMb2NrcyAQMgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uLE1heFJlc2VydmVzIBAyAAAABA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LiBNYXhIb2xkcyAQMgAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaG9sZHMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4oTWF4RnJlZXplcyAQMgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4BBQEFHEdyYW5kcGEBHEdyYW5kcGEYFFN0YXRlAQAJAQQABJAgU3RhdGUgb2YgdGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC40UGVuZGluZ0NoYW5nZQAADQEEAATEIFBlbmRpbmcgY2hhbmdlOiAoc2lnbmFsZWQgYXQsIHNjaGVkdWxlZCBjaGFuZ2UpLihOZXh0Rm9yY2VkAAAgBAAEvCBuZXh0IGJsb2NrIG51bWJlciB3aGVyZSB3ZSBjYW4gZm9yY2UgYSBjaGFuZ2UuHFN0YWxsZWQAACkBBAAEkCBgdHJ1ZWAgaWYgd2UgYXJlIGN1cnJlbnRseSBzdGFsbGVkLjBDdXJyZW50U2V0SWQBABwgAAAAAAAAAAAIXQEgVGhlIG51bWJlciBvZiBjaGFuZ2VzIChib3RoIGluIHRlcm1zIG9mIGtleXMgYW5kIHVuZGVybHlpbmcgZWNvbm9taWMgcmVzcG9uc2liaWxpdGllcynEIGluIHRoZSAic2V0IiBvZiBHcmFuZHBhIHZhbGlkYXRvcnMgZnJvbSBnZW5lc2lzLjBTZXRJZFNlc3Npb24AAQQFHCAEAChZASBBIG1hcHBpbmcgZnJvbSBncmFuZHBhIHNldCBJRCB0byB0aGUgaW5kZXggb2YgdGhlICptb3N0IHJlY2VudCogc2Vzc2lvbiBmb3Igd2hpY2ggaXRzaCBtZW1iZXJzIHdlcmUgcmVzcG9uc2libGUuAEUBIFRoaXMgaXMgb25seSB1c2VkIGZvciB2YWxpZGF0aW5nIGVxdWl2b2NhdGlvbiBwcm9vZnMuIEFuIGVxdWl2b2NhdGlvbiBwcm9vZiBtdXN0TQEgY29udGFpbnMgYSBrZXktb3duZXJzaGlwIHByb29mIGZvciBhIGdpdmVuIHNlc3Npb24sIHRoZXJlZm9yZSB3ZSBuZWVkIGEgd2F5IHRvIHRpZUUBIHRvZ2V0aGVyIHNlc3Npb25zIGFuZCBHUkFORFBBIHNldCBpZHMsIGkuZS4gd2UgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IGEgdmFsaWRhdG9yQQEgd2FzIHRoZSBvd25lciBvZiBhIGdpdmVuIGtleSBvbiBhIGdpdmVuIHNlc3Npb24sIGFuZCB3aGF0IHRoZSBhY3RpdmUgc2V0IElEIHdhc1QgZHVyaW5nIHRoYXQgc2Vzc2lvbi4AuCBUV09YLU5PVEU6IGBTZXRJZGAgaXMgbm90IHVuZGVyIHVzZXIgY29udHJvbC4BLQEBZQEIOE1heEF1dGhvcml0aWVzIBAbAAAABFwgTWF4IEF1dGhvcml0aWVzIGluIHVzZVhNYXhTZXRJZFNlc3Npb25FbnRyaWVzHCAAAAAAAAAAABg5ASBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0byBrZWVwIGluIHRoZSBzZXQgaWQgdG8gc2Vzc2lvbiBpbmRleCBtYXBwaW5nLgAxASBTaW5jZSB0aGUgYFNldElkU2Vzc2lvbmAgbWFwIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb25zIHRoaXMpASB2YWx1ZSBzaG91bGQgcmVsYXRlIHRvIHRoZSBib25kaW5nIGR1cmF0aW9uIG9mIHdoYXRldmVyIHN0YWtpbmcgc3lzdGVtIGlzNQEgYmVpbmcgdXNlZCAoaWYgYW55KS4gSWYgZXF1aXZvY2F0aW9uIGhhbmRsaW5nIGlzIG5vdCBlbmFibGVkIHRoZW4gdGhpcyB2YWx1ZTQgY2FuIGJlIHplcm8uAWkBBhBTdWRvARBTdWRvBAxLZXkAACQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAW0BAeUBAAHtAQcYU3lzdGVtARhTeXN0ZW1AHEFjY291bnQBAQQCJPEBQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELjhFeHRyaW5zaWNDb3VudAAAIAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suLEJsb2NrV2VpZ2h0AQD1ARgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay5AQWxsRXh0cmluc2ljc0xlbgAAIAQABEEBIFRvdGFsIGxlbmd0aCAoaW4gYnl0ZXMpIGZvciBhbGwgZXh0cmluc2ljcyBwdXQgdG9nZXRoZXIsIGZvciB0aGUgY3VycmVudCBibG9jay4kQmxvY2tIYXNoAQEEBSA1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy40RXh0cmluc2ljRGF0YQEBBAUgZAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLhhOdW1iZXIBACAQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLihQYXJlbnRIYXNoAQA1AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLhhEaWdlc3QBAPkBBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLhhFdmVudHMBAAUCBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLihFdmVudENvdW50AQAgEAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4sRXZlbnRUb3BpY3MBAQQCNQFdAgQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAE0BIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChUOjpCbG9ja051bWJlciwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuSExhc3RSdW50aW1lVXBncmFkZQAAYQIEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC5UVXBncmFkZWRUb1UzMlJlZkNvdW50AQD4BAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LmBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAPgEAAhdASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBBY2NvdW50SW5mbyBjb250YWlucyB0aHJlZSB0eXBlcyBvZiBgUmVmQ291bnRgLiBGYWxzZUggKGRlZmF1bHQpIGlmIG5vdC44RXhlY3V0aW9uUGhhc2UAAFUCBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4BdQEBEQIYMEJsb2NrV2VpZ2h0c2kC+QECA4FdAAsAIEqp0QET///////////C6RcbAAELkM1Dpy4BE2ZmZmZmZmamAQsAmPc+XQET/////////78BAADC6RcbAAELkFWWEaMBE2ZmZmZmZmbmAQsAIEqp0QET//////////8BBwCIUmp0EwAAAAAAAABAwukXGwAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4sQmxvY2tMZW5ndGh5AjAAADwAAABQAAAAUAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLjhCbG9ja0hhc2hDb3VudCAQYAkAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4gRGJXZWlnaHSBAkBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuHFZlcnNpb26FAgEDCGQ5CGQ5AQAAANcAAAABAAAAON9qy2iZB2CbBAAAADfjl/x8kfXkAgAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAN1xjVzFMmLUAQAAAKs8BXIpH+uLAQAAAO2ZxayyXu31AwAAALydiZBPW5I/AQAAADfIuxNQqaKoBAAAAPP/FNWrUnBZAwAAAGi2a6EiyT+nAgAAAKIv2ttprus/AQAAAJ3sdxo8CifgAQAAAAEAAAABBIQgR2V0IHRoZSBjaGFpbidzIGN1cnJlbnQgdmVyc2lvbi4oU1M1OFByZWZpeJUCCAkAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgGZAggkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAHCAAAAAAAAAAAASQIEN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suJERpZFVwZGF0ZQEA+AQABLQgRGlkIHRoZSB0aW1lc3RhbXAgZ2V0IHVwZGF0ZWQgaW4gdGhpcyBibG9jaz8BhQEABDRNaW5pbXVtUGVyaW9kHCDcBQAAAAAAABBNASBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuIEJld2FyZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSAqZXhwZWN0ZWQqXQEgcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb24gYXBwYXJhdHVzIHByb3ZpZGVzLiBZb3VyIGNob3NlbiBjb25zZW5zdXMgc3lzdGVtIHdpbGxdASBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG8gZGV0ZXJtaW5lIGEgc2Vuc2libGUgYmxvY2sgdGltZS4gZS5nLiBGb3IgQXVyYSwgaXQgd2lsbCBiZaAgZG91YmxlIHRoaXMgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAlIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQIRE5leHRGZWVNdWx0aXBsaWVyAQCdAkAAAGSns7bgDQAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAoQIEAAAAASECBGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIQBAVUWQEgQSBmZWUgbXVsaXRwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABNASBUaGlzIHZhbHVlIGlzIG11bHRpcGxlZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AChhBc3NldHMBGEFzc2V0cxAUQXNzZXQAAQQCIKUCBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LhxBY2NvdW50AAEIAgKtArECBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LiRBcHByb3ZhbHMAAQwCAgK5Ar0CBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuIE1ldGFkYXRhAQEEAiDBAlAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgGJAQElAhxAUmVtb3ZlSXRlbXNMaW1pdCAQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLjBBc3NldERlcG9zaXRsQAAA6IkEI8eKAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuTEFzc2V0QWNjb3VudERlcG9zaXRsQAAQpdToAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuTE1ldGFkYXRhRGVwb3NpdEJhc2VsQAAAwW/yhiMAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC5YTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZWxAAIDGpH6NAwAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLjxBcHByb3ZhbERlcG9zaXRsQAAQpdToAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4sU3RyaW5nTGltaXQgEBQAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAckCC0hBdXRob3JpdHlEaXNjb3ZlcnkBSEF1dGhvcml0eURpc2NvdmVyeQgQS2V5cwEAzQIEAASMIEtleXMgb2YgdGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4gTmV4dEtleXMBAM0CBAAEgCBLZXlzIG9mIHRoZSBuZXh0IGF1dGhvcml0eSBzZXQuAAAAAAwoQ29sbGVjdGl2ZQEoQ29sbGVjdGl2ZRgkUHJvcG9zYWxzAQDVAgQABJAgVGhlIGhhc2hlcyBvZiB0aGUgYWN0aXZlIHByb3Bvc2Fscy4oUHJvcG9zYWxPZgABBAY1AXEBBAAEzCBBY3R1YWwgcHJvcG9zYWwgZm9yIGEgZ2l2ZW4gaGFzaCwgaWYgaXQncyBjdXJyZW50LhhWb3RpbmcAAQQGNQHZAgQABLQgVm90ZXMgb24gYSBnaXZlbiBwcm9wb3NhbCwgaWYgaXQgaXMgb25nb2luZy40UHJvcG9zYWxDb3VudAEAIBAAAAAABEggUHJvcG9zYWxzIHNvIGZhci4cTWVtYmVycwEAVAQABDkBIFRoZSBjdXJyZW50IG1lbWJlcnMgb2YgdGhlIGNvbGxlY3RpdmUuIFRoaXMgaXMgc3RvcmVkIHNvcnRlZCAoanVzdCBieSB2YWx1ZSkuFFByaW1lAAAkBAAEZQEgVGhlIHByaW1lIG1lbWJlciB0aGF0IGhlbHBzIGRldGVybWluZSB0aGUgZGVmYXVsdCB2b3RlIGJlaGF2aW9yIGluIGNhc2Ugb2YgYWJzZW50YXRpb25zLgGRAQEpAgRETWF4UHJvcG9zYWxXZWlnaHSVAQgAAAQlASBUaGUgbWF4aW11bSB3ZWlnaHQgb2YgYSBkaXNwYXRjaCBjYWxsIHRoYXQgY2FuIGJlIHByb3Bvc2VkIGFuZCBleGVjdXRlZC4B3QINJENvbnRyYWN0cwEkQ29udHJhY3RzHDBQcmlzdGluZUNvZGUAAQQGNQHhAgQABGUBIEEgbWFwcGluZyBmcm9tIGFuIG9yaWdpbmFsIGNvZGUgaGFzaCB0byB0aGUgb3JpZ2luYWwgY29kZSwgdW50b3VjaGVkIGJ5IGluc3RydW1lbnRhdGlvbi4sQ29kZVN0b3JhZ2UAAQQGNQHlAgQABGUBIEEgbWFwcGluZyBiZXR3ZWVuIGFuIG9yaWdpbmFsIGNvZGUgaGFzaCBhbmQgaW5zdHJ1bWVudGVkIHdhc20gY29kZSwgcmVhZHkgZm9yIGV4ZWN1dGlvbi4sT3duZXJJbmZvT2YAAQQGNQHtAgQABA0BIEEgbWFwcGluZyBiZXR3ZWVuIGFuIG9yaWdpbmFsIGNvZGUgaGFzaCBhbmQgaXRzIG93bmVyIGluZm9ybWF0aW9uLhROb25jZQEAHCAAAAAAAAAAAFgdASBUaGlzIGlzIGEgKiptb25vdG9uaWMqKiBjb3VudGVyIGluY3JlbWVudGVkIG9uIGNvbnRyYWN0IGluc3RhbnRpYXRpb24uAAUBIFRoaXMgaXMgdXNlZCBpbiBvcmRlciB0byBnZW5lcmF0ZSB1bmlxdWUgdHJpZSBpZHMgZm9yIGNvbnRyYWN0cy4pASBUaGUgdHJpZSBpZCBvZiBhIG5ldyBjb250cmFjdCBpcyBjYWxjdWxhdGVkIGZyb20gaGFzaChhY2NvdW50X2lkLCBub25jZSkuNQEgVGhlIG5vbmNlIGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugd291bGQgbGVhZCB0b4QgYSBwb3NzaWJsZSBjb2xsaXNpb24gb2Ygc3RvcmFnZToAaCAxLiBDcmVhdGUgYSBuZXcgY29udHJhY3QubCAyLiBUZXJtaW5hdGUgdGhlIGNvbnRyYWN0LvwgMy4gSW1tZWRpYXRlbHkgcmVjcmVhdGUgdGhlIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgYWNjb3VudF9pZC4ARQEgVGhpcyBpcyBiYWQgYmVjYXVzZSB0aGUgY29udGVudHMgb2YgYSB0cmllIGFyZSBkZWxldGVkIGxhemlseSBhbmQgdGhlcmUgbWlnaHQgYmVZASBzdG9yYWdlIG9mIHRoZSBvbGQgaW5zdGFudGlhdGlvbiBzdGlsbCBpbiBpdCB3aGVuIHRoZSBuZXcgY29udHJhY3QgaXMgY3JlYXRlZC4gUGxlYXNlWQEgbm90ZSB0aGF0IHdlIGNhbid0IHJlcGxhY2UgdGhlIGNvdW50ZXIgYnkgdGhlIGJsb2NrIG51bWJlciBiZWNhdXNlIHRoZSBzZXF1ZW5jZSBhYm92ZVEBIGNhbiBoYXBwZW4gaW4gdGhlIHNhbWUgYmxvY2suIFdlIGFsc28gY2FuJ3Qga2VlcCB0aGUgYWNjb3VudCBjb3VudGVyIGluIG1lbW9yeSBvbmx5SQEgYmVjYXVzZSBzdG9yYWdlIGlzIHRoZSBvbmx5IHdheSB0byBjb21tdW5pY2F0ZSBhY3Jvc3MgZGlmZmVyZW50IGV4dHJpbnNpY3MgaW4gdGhlMCBzYW1lIGJsb2NrLgAcICMgTm90ZQA9ASBEbyBub3QgdXNlIGl0IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGNvbnRyYWN0cy4gSXQgd29uJ3QgYmUgZGVjcmVtZW50ZWQgaWZkIGEgY29udHJhY3QgaXMgZGVzdHJveWVkLjhDb250cmFjdEluZm9PZgABBAUk8QIEAAyoIFRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guNERlbGV0aW9uUXVldWUAAQQFIGAEABDIIEV2aWN0ZWQgY29udHJhY3RzIHRoYXQgYXdhaXQgY2hpbGQgdHJpZSBkZWxldGlvbi4ASQEgQ2hpbGQgdHJpZSBkZWxldGlvbiBpcyBhIGhlYXZ5IG9wZXJhdGlvbiBkZXBlbmRpbmcgb24gdGhlIGFtb3VudCBvZiBzdG9yYWdlIGl0ZW1zQQEgc3RvcmVkIGluIHNhaWQgdHJpZS4gVGhlcmVmb3JlIHRoaXMgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBsYXppbHkgaW4gYG9uX2lkbGVgLlBEZWxldGlvblF1ZXVlQ291bnRlcgEA+QIgAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4BmQEBLQIgIFNjaGVkdWxl/QJpCAQAAAAAAQAAAAQAAIAAAAAQAAAAABAAAAABAAAgAAAAAEAAAAAAAAgEAAAAAAAAALwFAABJDQAABQwAAPEHAADhFwAANQYAAH8JAAC+EgAAKgAAAG8+AABZTwAA2wQAANQDAABdCAAAiwMAAPMaAAC/HAAA5wgAALsgyQB2AwAAHgMAAB0DAADUAgAAlgMAAGgDAAD+AgAAEgYAAPwFAAAdBgAAHAYAAKEFAACKBgAAIgYAAHoGAAAGBgAAJgYAAKUFAACfBgAASQUAABEdAABEGAAAyB4AAMAYAADcBAAAQAUAAMAFAACiBQAAqgYAAKgFAAAyBgAApwUAACa/FAAYFjzBBm0qshDyBn0qDgUZABj+HgoADA5IFAAYDhMUABj+eVgAGN4iFAAYVtETABiiBhUAGK4IFAAY1qRRACieJwgAAJpQEAAYLQkA9shpALTFAgBKluf8lXmGHGwAKCrR0wAoLnJRHjEnHQkANg4OABxtCwAO7DsflQRpBgBsBMK/rUZJMMK/Mh+FBCkBBHrGEweFBI0BBNbhIwelBDULBCLPRR+lBG0KBOrGLiZhJ/62iG2xKtbwylQxKJLz4kOJUD0JALb2X+xVUWoTRzkpKeURAI0UACLuIgAg0TwA3sosACDdMAB+OhkAIDEOAAYJGQAgPQ4AwgnCCDUBoqkwAqjy3FQLwQFVSQSuwQkADJbeDwCgOnIIAAwEaCBDb3N0IHNjaGVkdWxlIGFuZCBsaW1pdHMuOERlcG9zaXRQZXJCeXRlbEDoAwAAAAAAAAAAAAAAAAAAFBEBIFRoZSBhbW91bnQgb2YgYmFsYW5jZSBhIGNhbGxlciBoYXMgdG8gcGF5IGZvciBlYWNoIGJ5dGUgb2Ygc3RvcmFnZS4AHCAjIE5vdGUAKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSBmb3IgYW4gZXhpc3RpbmcgY2hhaW4gbWlnaHQgbmVlZCBhIHN0b3JhZ2UgbWlncmF0aW9uLkxEZWZhdWx0RGVwb3NpdExpbWl0bEAAMO99ugIAAAAAAAAAAAAABEUBIEZhbGxiYWNrIHZhbHVlIHRvIGxpbWl0IHRoZSBzdG9yYWdlIGRlcG9zaXQgaWYgaXQncyBub3QgYmVpbmcgc2V0IGJ5IHRoZSBjYWxsZXIuOERlcG9zaXRQZXJJdGVtbEDoAwAAAAAAAAAAAAAAAAAAFAUBIFRoZSBhbW91bnQgb2YgYmFsYW5jZSBhIGNhbGxlciBoYXMgdG8gcGF5IGZvciBlYWNoIHN0b3JhZ2UgaXRlbS4AHCAjIE5vdGUAKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSBmb3IgYW4gZXhpc3RpbmcgY2hhaW4gbWlnaHQgbmVlZCBhIHN0b3JhZ2UgbWlncmF0aW9uLihNYXhDb2RlTGVuIBAA0AcAHF0BIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGNvbnRyYWN0IGNvZGUgaW4gYnl0ZXMuIFRoaXMgbGltaXQgYXBwbGllcyB0byB0aGUgaW5zdHJ1bWVudGVkUQEgdmVyc2lvbiBvZiB0aGUgY29kZS4gVGhlcmVmb3JlIGBpbnN0YW50aWF0ZV93aXRoX2NvZGVgIGNhbiBmYWlsIGV2ZW4gd2hlbiBzdXBwbHlpbmecIGEgd2FzbSBiaW5hcnkgYmVsb3cgdGhpcyBtYXhpbXVtIHNpemUuAFkBIFRoZSB2YWx1ZSBzaG91bGQgYmUgY2hvc2VuIGNhcmVmdWxseSB0YWtpbmcgaW50byB0aGUgYWNjb3VudCB0aGUgb3ZlcmFsbCBtZW1vcnkgbGltaXTwIHlvdXIgcnVudGltZSBoYXMsIGFzIHdlbGwgYXMgdGhlIFttYXhpbXVtIGFsbG93ZWQgY2FsbHN0YWNrXQEgZGVwdGhdKCNhc3NvY2lhdGVkdHlwZS5DYWxsU3RhY2spLiBMb29rIGludG8gdGhlIGBpbnRlZ3JpdHlfdGVzdCgpYCBmb3Igc29tZSBpbnNpZ2h0cy5ATWF4U3RvcmFnZUtleUxlbiAQgAAAAATgIFRoZSBtYXhpbXVtIGFsbG93YWJsZSBsZW5ndGggaW4gYnl0ZXMgZm9yIHN0b3JhZ2Uga2V5cy5cVW5zYWZlVW5zdGFibGVJbnRlcmZhY2X4BAAkEQEgTWFrZSBjb250cmFjdCBjYWxsYWJsZSBmdW5jdGlvbnMgbWFya2VkIGFzIGAjW3Vuc3RhYmxlXWAgYXZhaWxhYmxlLgA9ASBDb250cmFjdHMgdGhhdCB1c2UgYCNbdW5zdGFibGVdYCBmdW5jdGlvbnMgd29uJ3QgYmUgYWJsZSB0byBiZSB1cGxvYWRlZCB1bmxlc3NFASB0aGlzIGlzIHNldCB0byBgdHJ1ZWAuIFRoaXMgaXMgb25seSBtZWFudCBmb3IgdGVzdG5ldHMgYW5kIGRldiBub2RlcyBpbiBvcmRlciB0b3ggZXhwZXJpbWVudCB3aXRoIG5ldyBmZWF0dXJlcy4AKCAjIFdhcm5pbmcAwCBEbyAqKm5vdCoqIHNldCB0byBgdHJ1ZWAgb24gcHJvZHVjdGlvbnMgY2hhaW5zLkRNYXhEZWJ1Z0J1ZmZlckxlbiAQAAAgAATEIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgZGVidWcgYnVmZmVyIGluIGJ5dGVzLgENAw4oSGlzdG9yaWNhbAEoSGlzdG9yaWNhbAhISGlzdG9yaWNhbFNlc3Npb25zAAEEBSARAwQABF0BIE1hcHBpbmcgZnJvbSBoaXN0b3JpY2FsIHNlc3Npb24gaW5kaWNlcyB0byBzZXNzaW9uLWRhdGEgcm9vdCBoYXNoIGFuZCB2YWxpZGF0b3IgY291bnQuLFN0b3JlZFJhbmdlAAApAQQABOQgVGhlIHJhbmdlIG9mIGhpc3RvcmljYWwgc2Vzc2lvbnMgd2Ugc3RvcmUuIFtmaXJzdCwgbGFzdCkAAAAADyBJbU9ubGluZQEgSW1PbmxpbmUQOEhlYXJ0YmVhdEFmdGVyAQAgEAAAAAAsHQEgVGhlIGJsb2NrIG51bWJlciBhZnRlciB3aGljaCBpdCdzIG9rIHRvIHNlbmQgaGVhcnRiZWF0cyBpbiB0aGUgY3VycmVudCQgc2Vzc2lvbi4AJQEgQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNlc3Npb24gd2Ugc2V0IHRoaXMgdG8gYSB2YWx1ZSB0aGF0IHNob3VsZCBmYWxsNQEgcm91Z2hseSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXNzaW9uIGR1cmF0aW9uLiBUaGUgaWRlYSBpcyB0byBmaXJzdCB3YWl0IGZvchkBIHRoZSB2YWxpZGF0b3JzIHRvIHByb2R1Y2UgYSBibG9jayBpbiB0aGUgY3VycmVudCBzZXNzaW9uLCBzbyB0aGF0IHRoZaggaGVhcnRiZWF0IGxhdGVyIG9uIHdpbGwgbm90IGJlIG5lY2Vzc2FyeS4AOQEgVGhpcyB2YWx1ZSB3aWxsIG9ubHkgYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGlmIHdlIGZhaWwgdG8gZ2V0IGEgcHJvcGVyIHNlc3Npb24tASBwcm9ncmVzcyBlc3RpbWF0ZSBmcm9tIGBOZXh0U2Vzc2lvblJvdGF0aW9uYCwgYXMgdGhvc2UgZXN0aW1hdGVzIHNob3VsZCBiZQEBIG1vcmUgYWNjdXJhdGUgdGhlbiB0aGUgdmFsdWUgd2UgY2FsY3VsYXRlIGZvciBgSGVhcnRiZWF0QWZ0ZXJgLhBLZXlzAQAVAwQABNAgVGhlIGN1cnJlbnQgc2V0IG9mIGtleXMgdGhhdCBtYXkgaXNzdWUgYSBoZWFydGJlYXQuSFJlY2VpdmVkSGVhcnRiZWF0cwABCAUFKQEdAwQACD0BIEZvciBlYWNoIHNlc3Npb24gaW5kZXgsIHdlIGtlZXAgYSBtYXBwaW5nIG9mIGBTZXNzaW9uSW5kZXhgIGFuZCBgQXV0aEluZGV4YCB0b7AgYFdyYXBwZXJPcGFxdWU8Qm91bmRlZE9wYXF1ZU5ldHdvcmtTdGF0ZT5gLjhBdXRob3JlZEJsb2NrcwEBCAUFrQIgEAAAAAAIFQEgRm9yIGVhY2ggc2Vzc2lvbiBpbmRleCwgd2Uga2VlcCBhIG1hcHBpbmcgb2YgYFZhbGlkYXRvcklkPFQ+YCB0byB0aGXIIG51bWJlciBvZiBibG9ja3MgYXV0aG9yZWQgYnkgdGhlIGdpdmVuIGF1dGhvcml0eS4BpQEBMQIEQFVuc2lnbmVkUHJpb3JpdHkcIP//////////EPAgQSBjb25maWd1cmF0aW9uIGZvciBiYXNlIHByaW9yaXR5IG9mIHVuc2lnbmVkIHRyYW5zYWN0aW9ucy4AFQEgVGhpcyBpcyBleHBvc2VkIHNvIHRoYXQgaXQgY2FuIGJlIHR1bmVkIGZvciBwYXJ0aWN1bGFyIHJ1bnRpbWUsIHdoZW60IG11bHRpcGxlIHBhbGxldHMgc2VuZCB1bnNpZ25lZCB0cmFuc2FjdGlvbnMuATEDEGBSYW5kb21uZXNzQ29sbGVjdGl2ZUZsaXABYFJhbmRvbW5lc3NDb2xsZWN0aXZlRmxpcAQ4UmFuZG9tTWF0ZXJpYWwBADUDBAAMYQEgU2VyaWVzIG9mIGJsb2NrIGhlYWRlcnMgZnJvbSB0aGUgbGFzdCA4MSBibG9ja3MgdGhhdCBhY3RzIGFzIHJhbmRvbSBzZWVkIG1hdGVyaWFsLiBUaGlzYQEgaXMgYXJyYW5nZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGBibG9ja19udW1iZXIgJSA4MWAgYmVpbmcgdGhlIGluZGV4IGludG8gdGhlIGBWZWNgIG9mRCB0aGUgb2xkZXN0IGhhc2guAAAAABEcU2Vzc2lvbgEcU2Vzc2lvbhwoVmFsaWRhdG9ycwEAVAQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuMEN1cnJlbnRJbmRleAEAIBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi40UXVldWVkQ2hhbmdlZAEA+AQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuKFF1ZXVlZEtleXMBADkDBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuSERpc2FibGVkVmFsaWRhdG9ycwEAQQMEABSAIEluZGljZXMgb2YgZGlzYWJsZWQgdmFsaWRhdG9ycy4APQEgVGhlIHZlYyBpcyBhbHdheXMga2VwdCBzb3J0ZWQgc28gdGhhdCB3ZSBjYW4gZmluZCB3aGV0aGVyIGEgZ2l2ZW4gdmFsaWRhdG9yIGlzPQEgZGlzYWJsZWQgdXNpbmcgYmluYXJ5IHNlYXJjaC4gSXQgZ2V0cyBjbGVhcmVkIHdoZW4gYG9uX3Nlc3Npb25fZW5kaW5nYCByZXR1cm5zZCBhIG5ldyBzZXQgb2YgaWRlbnRpdGllcy4gTmV4dEtleXMAAQQFJMkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlPd25lcgABBAVFAyQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgHFAQE9AgABTQMSIFRyZWFzdXJ5ASBUcmVhc3VyeRA0UHJvcG9zYWxDb3VudAEAIBAAAAAABKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLiRQcm9wb3NhbHMAAQQFIFEDBAAEfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4sRGVhY3RpdmF0ZWQBAGxAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuJEFwcHJvdmFscwEAVQMEAAT4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4B1QEBQQIcMFByb3Bvc2FsQm9uZFkDEKCGAQAIVQEgRnJhY3Rpb24gb2YgYSBwcm9wb3NhbCdzIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGJvbmRlZCBpbiBvcmRlciB0byBwbGFjZSB0aGUgcHJvcG9zYWwuEQEgQW4gYWNjZXB0ZWQgcHJvcG9zYWwgZ2V0cyB0aGVzZSBiYWNrLiBBIHJlamVjdGVkIHByb3Bvc2FsIGRvZXMgbm90LkxQcm9wb3NhbEJvbmRNaW5pbXVtbEAAgMakfo0DAAAAAAAAAAAABEkBIE1pbmltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLkxQcm9wb3NhbEJvbmRNYXhpbXVtXQMEAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4sU3BlbmRQZXJpb2QgEAEAAAAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4QQnVyblkDEAAAAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLiBQYWxsZXRJZKAgdHJlYXN1cnkEGQEgVGhlIHRyZWFzdXJ5J3MgcGFsbGV0IGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuME1heEFwcHJvdmFscyAQAAAAAAwVASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgY2FuIHdhaXQgaW4gdGhlIHNwZW5kaW5nIHF1ZXVlLgBNASBOT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHNvIHVzZWQgd2l0aGluIHRoZSBCb3VudGllcyBQYWxsZXQgZXh0ZW5zaW9uIGlmIGVuYWJsZWQuAWEDEyxDb3VuY2lsTG9jawEsQ291bmNpbExvY2scLFBhbGxldEFkbWluAAAkBAAALFByb3Bvc2FsRmVlAQBsQAAAAAAAAAAAAAAAAAAAAAAE7CBmZWUgdG8gcHJvcG9zYWwgYSBsb2NrIG9uIGFuIGFjY291bnQuIHBhaWQgYnkgdGhlIHByb3Bvc2VySE1pbmluZ1Bvb2xDb250cmFjdAAAJAQAACRQcm9wb3NhbHMAAQQCJGUDBAAALFJlZmVyZW5kdW1zAAEEAiRxAwQAACxSZXNvbHV0aW9ucwABCAICrQJ9AwQAADhMb2NrZWRBY2NvdW50cwABBAIkgQMEAAAB2QEBRQIEPENvdW5jaWxQYWxsZXRJZKAgY291bmNpbC8AAYUDFChEOU11bHRpU2lnAShEOU11bHRpU2lnDFhNdWx0aVNpZ25hdHVyZUFjY291bnRzAAEEAiSJAwQADJggdGhlIGV4aXN0ZW50IG11bHRpIHNpZ25hdHVyZSBhY2NvdW50cwARASBrZXk6IG11bHRpIHNpZ25hdHVyZSBhY2NvdW50IGFkZHJlc3MgdmFsdWU6IG11bHRpIHNpZ25hdHVyZSBhY2NvdW50UFVzZXJNdWx0aVNpZ0FjY291bnRzAAEEAiStAwQABGEBIGtleTogbm9ybWFsIGFjY291bnRzIHZhbHVlOiB2ZWMgb2YgbXVsdGkgc2lnbmF0dXJlIGFjY291bnQgaWRzIHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZlBNaW5BcHByb3ZhbFByb3Bvc2FscwABBAIksQMEAARwIChtc2FfYWRkcmVzcywgcHJvcG9zYWwpICAgIAHdAQFRAgABtQMVuQMEIEhDaGVja05vblplcm9TZW5kZXLNA8xAQ2hlY2tTcGVjVmVyc2lvbtEDIDhDaGVja1R4VmVyc2lvbtUDIDBDaGVja0dlbmVzaXPZAzUBOENoZWNrTW9ydGFsaXR53QM1AShDaGVja05vbmNl5QPMLENoZWNrV2VpZ2h06QPMYENoYXJnZVRyYW5zYWN0aW9uUGF5bWVudO0DzGkD";
|
|
82
|
+
d9_metadata_default = binMeta;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// .papi/descriptors/src/index.ts
|
|
87
|
+
var index_exports = {};
|
|
88
|
+
__export(index_exports, {
|
|
89
|
+
ArithmeticError: () => ArithmeticError,
|
|
90
|
+
BalanceStatus: () => BalanceStatus,
|
|
91
|
+
BalancesTypesReasons: () => BalancesTypesReasons,
|
|
92
|
+
DigestItem: () => DigestItem,
|
|
93
|
+
DispatchClass: () => DispatchClass,
|
|
94
|
+
GrandpaEquivocation: () => GrandpaEquivocation,
|
|
95
|
+
GrandpaEvent: () => GrandpaEvent,
|
|
96
|
+
GrandpaStoredState: () => GrandpaStoredState,
|
|
97
|
+
MultiAddress: () => MultiAddress,
|
|
98
|
+
Phase: () => Phase,
|
|
99
|
+
SessionEvent: () => SessionEvent,
|
|
100
|
+
TransactionPaymentEvent: () => TransactionPaymentEvent,
|
|
101
|
+
TransactionPaymentReleases: () => TransactionPaymentReleases,
|
|
102
|
+
TransactionalError: () => TransactionalError,
|
|
103
|
+
contracts: () => contracts_exports,
|
|
104
|
+
d9: () => d9_default,
|
|
105
|
+
getMetadata: () => getMetadata2
|
|
106
|
+
});
|
|
107
|
+
module.exports = __toCommonJS(index_exports);
|
|
108
|
+
|
|
109
|
+
// .papi/descriptors/src/common.ts
|
|
110
|
+
var table = new Uint8Array(128);
|
|
111
|
+
for (let i = 0; i < 64; i++) table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;
|
|
112
|
+
var toBinary = (base64) => {
|
|
113
|
+
const n = base64.length, bytes = new Uint8Array((n - Number(base64[n - 1] === "=") - Number(base64[n - 2] === "=")) * 3 / 4 | 0);
|
|
114
|
+
for (let i2 = 0, j = 0; i2 < n; ) {
|
|
115
|
+
const c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];
|
|
116
|
+
const c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];
|
|
117
|
+
bytes[j++] = c0 << 2 | c1 >> 4;
|
|
118
|
+
bytes[j++] = c1 << 4 | c2 >> 2;
|
|
119
|
+
bytes[j++] = c2 << 6 | c3;
|
|
120
|
+
}
|
|
121
|
+
return bytes;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// .papi/descriptors/src/d9.ts
|
|
125
|
+
var descriptorValues = Promise.resolve().then(() => (init_descriptors(), descriptors_exports)).then((module2) => module2["D9"]);
|
|
126
|
+
var metadataTypes = Promise.resolve().then(() => (init_metadataTypes(), metadataTypes_exports)).then(
|
|
127
|
+
(module2) => toBinary("default" in module2 ? module2.default : module2)
|
|
128
|
+
);
|
|
129
|
+
var asset = {};
|
|
130
|
+
var extensions = {};
|
|
131
|
+
var getMetadata = () => Promise.resolve().then(() => (init_d9_metadata(), d9_metadata_exports)).then(
|
|
132
|
+
(module2) => toBinary("default" in module2 ? module2.default : module2)
|
|
133
|
+
);
|
|
134
|
+
var genesis = "0x74e86bce7566064d40f390f75e6d066b6006b198c995dcde5c04f851144effb8";
|
|
135
|
+
var _allDescriptors = { descriptors: descriptorValues, metadataTypes, asset, extensions, getMetadata, genesis };
|
|
136
|
+
var d9_default = _allDescriptors;
|
|
137
|
+
|
|
138
|
+
// .papi/descriptors/src/common-types.ts
|
|
139
|
+
var import_polkadot_api = require("polkadot-api");
|
|
140
|
+
var BalancesTypesReasons = import_polkadot_api._Enum;
|
|
141
|
+
var GrandpaStoredState = import_polkadot_api._Enum;
|
|
142
|
+
var DigestItem = import_polkadot_api._Enum;
|
|
143
|
+
var Phase = import_polkadot_api._Enum;
|
|
144
|
+
var ArithmeticError = import_polkadot_api._Enum;
|
|
145
|
+
var TransactionalError = import_polkadot_api._Enum;
|
|
146
|
+
var BalanceStatus = import_polkadot_api._Enum;
|
|
147
|
+
var GrandpaEvent = import_polkadot_api._Enum;
|
|
148
|
+
var DispatchClass = import_polkadot_api._Enum;
|
|
149
|
+
var TransactionPaymentEvent = import_polkadot_api._Enum;
|
|
150
|
+
var SessionEvent = import_polkadot_api._Enum;
|
|
151
|
+
var TransactionPaymentReleases = import_polkadot_api._Enum;
|
|
152
|
+
var MultiAddress = import_polkadot_api._Enum;
|
|
153
|
+
var GrandpaEquivocation = import_polkadot_api._Enum;
|
|
154
|
+
|
|
155
|
+
// .papi/descriptors/src/contracts/index.ts
|
|
156
|
+
var contracts_exports = {};
|
|
157
|
+
__export(contracts_exports, {
|
|
158
|
+
burnManager: () => descriptor4,
|
|
159
|
+
burnMining: () => descriptor7,
|
|
160
|
+
crossChainTransfer: () => descriptor5,
|
|
161
|
+
marketMaker: () => descriptor6,
|
|
162
|
+
merchantMining: () => descriptor2,
|
|
163
|
+
miningPool: () => descriptor8,
|
|
164
|
+
nodeReward: () => descriptor,
|
|
165
|
+
usdt: () => descriptor3
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// .papi/descriptors/src/contracts/nodeReward.ts
|
|
169
|
+
var descriptor = { metadata: { "source": { "hash": "0x0cf5fbf9a9dd4057bfc9f674a402a956f97b7fa536545a43c79362842fda587e", "language": "ink! 4.3.0", "compiler": "rustc 1.72.1", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-x86_64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "node_reward", "version": "0.1.0", "authors": ["[your_name] <[your_email]>"] }, "spec": { "constructors": [{ "args": [{ "label": "mining_pool", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "rewards_pallet", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": ["Constructor that initializes the `bool` value to the given `init_value`."], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 5 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 0 }, "balance": { "displayName": ["Balance"], "type": 3 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 12 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 22 }, "hash": { "displayName": ["Hash"], "type": 21 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 4 } }, "events": [{ "args": [{ "docs": [], "indexed": true, "label": "node", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "receiver", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 3 } }], "docs": [], "label": "NodeRewardPaid" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 7 }, "messages": [{ "args": [{ "label": "mining_pool", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "set_mining_pool", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xbad17c27" }, { "args": [{ "label": "rewards_pallet", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "set_rewards_pallet", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xe54af172" }, { "args": [{ "label": "new_admin", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "relinquish_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xda7dbaee" }, { "args": [], "default": false, "docs": [], "label": "accept_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x3830821d" }, { "args": [], "default": false, "docs": [], "label": "cancel_admin_relinquish", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xf9cc42d0" }, { "args": [], "default": false, "docs": [], "label": "get_vote_limit", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 11 }, "selector": "0x345bb4a1" }, { "args": [{ "label": "new_limit", "type": { "displayName": ["u64"], "type": 4 } }], "default": false, "docs": [], "label": "change_vote_limit", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x3b7e719a" }, { "args": [{ "label": "node_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "withdraw_reward", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x07fe6b9e" }, { "args": [{ "label": "session_index", "type": { "displayName": ["u32"], "type": 12 } }], "default": false, "docs": [], "label": "get_session_rewards_data", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 13 }, "selector": "0x5b4a8bb7" }, { "args": [{ "label": "node_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "get_node_reward_data", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0x72c500b8" }, { "args": [{ "label": "node_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "get_authorized_receiver", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 18 }, "selector": "0x7a99af59" }, { "args": [{ "label": "node_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "receiver", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "set_authorized_receiver", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x0aa2247a" }, { "args": [{ "label": "node_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "remove_authorized_receiver", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x58920ed0" }, { "args": [{ "label": "last_session", "type": { "displayName": ["u32"], "type": 12 } }, { "label": "sorted_nodes_and_votes", "type": { "displayName": ["Vec"], "type": 19 } }], "default": false, "docs": [], "label": "update_rewards", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x93440f8d" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 1 } }], "default": false, "docs": [], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x694fb50f" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "new_admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "mining_pool" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "rewards_pallet" }, { "layout": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x57cf89ff", "ty": 3 } }, "name": "0" }, { "layout": { "leaf": { "key": "0x57cf89ff", "ty": 3 } }, "name": "1" }], "name": "(A, B)" } }, "root_key": "0x57cf89ff" } }, "name": "session_rewards" }, { "layout": { "root": { "layout": { "leaf": { "key": "0xce7978af", "ty": 3 } }, "root_key": "0xce7978af" } }, "name": "node_reward" }, { "layout": { "root": { "layout": { "leaf": { "key": "0x2802a071", "ty": 0 } }, "root_key": "0x2802a071" } }, "name": "authorized_reward_receiver" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "vote_limit" }], "name": "NodeReward" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 1, "type": { "def": { "array": { "len": 32, "type": 2 } } } }, { "id": 2, "type": { "def": { "primitive": "u8" } } }, { "id": 3, "type": { "def": { "primitive": "u128" } } }, { "id": 4, "type": { "def": { "primitive": "u64" } } }, { "id": 5, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 6, "type": { "def": { "tuple": [] } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0, "typeName": "AccountId" }], "index": 0, "name": "OnlyCallableBy" }, { "index": 1, "name": "BeyondQualificationForNodeStatus" }, { "index": 2, "name": "ErrorIssuingPayment" }, { "index": 3, "name": "ErrorGettingSessionPoolFromMiningPoolContract" }, { "index": 4, "name": "NotAuthorizedToWithdraw" }, { "index": 5, "name": "NothingToWithdraw" }, { "index": 6, "name": "ErrorGettingCurrentValidators" }] } }, "path": ["node_reward", "node_reward", "Error"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 12, "type": { "def": { "primitive": "u32" } } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 14 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 14 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 15 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 15 }], "path": ["Option"] } }, { "id": 15, "type": { "def": { "tuple": [3, 3] } } }, { "id": 16, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 17 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 17 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 3 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 3 }], "path": ["Option"] } }, { "id": 18, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 19, "type": { "def": { "sequence": { "type": 20 } } } }, { "id": 20, "type": { "def": { "tuple": [0, 4] } } }, { "id": 21, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 22, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
170
|
+
|
|
171
|
+
// .papi/descriptors/src/contracts/merchantMining.ts
|
|
172
|
+
var descriptor2 = { metadata: { "source": { "hash": "0x1605acf16a5d67473a30bde3624e103393a3ffaf9310f3abfcdb6ef1d1370ee4", "language": "ink! 4.3.0", "compiler": "rustc 1.76.0", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "d9-merchant-mining", "version": "0.1.0", "authors": ["D9Dev"] }, "spec": { "constructors": [{ "args": [{ "label": "amm_contract", "type": { "displayName": ["AccountId"], "type": 2 } }, { "label": "mining_pool", "type": { "displayName": ["AccountId"], "type": 2 } }, { "label": "usdt_contract", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": ["Constructor that initializes the `bool` value to the given `init_value`."], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 5 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 2 }, "balance": { "displayName": ["Balance"], "type": 1 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 25 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 26 }, "hash": { "displayName": ["Hash"], "type": 24 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 0 } }, "events": [{ "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "usdt", "type": { "displayName": ["Balance"], "type": 1 } }, { "docs": [], "indexed": true, "label": "expiry", "type": { "displayName": ["Timestamp"], "type": 0 } }], "docs": [], "label": "SubscriptionExtended" }, { "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "redeemed_d9", "type": { "displayName": ["Balance"], "type": 1 } }], "docs": [], "label": "D9Redeemed" }, { "args": [{ "docs": [], "indexed": true, "label": "merchant", "type": { "displayName": ["GreenPointsCreated"], "type": 23 } }, { "docs": [], "indexed": true, "label": "consumer", "type": { "displayName": ["GreenPointsCreated"], "type": 23 } }], "docs": [], "label": "GreenPointsTransaction" }, { "args": [{ "docs": [], "indexed": true, "label": "merchant", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "consumer", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 1 } }], "docs": [], "label": "D9MerchantPaymentSent" }, { "args": [{ "docs": [], "indexed": true, "label": "merchant", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "consumer", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 1 } }], "docs": [], "label": "USDTMerchantPaymentSent" }, { "args": [{ "docs": [], "indexed": true, "label": "consumer", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "merchant", "type": { "displayName": ["AccountId"], "type": 2 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 1 } }], "docs": [], "label": "GivePointsUSDT" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 7 }, "messages": [{ "args": [{ "label": "usdt_amount", "type": { "displayName": ["Balance"], "type": 1 } }], "default": false, "docs": [" create merchant account subscription"], "label": "subscribe", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xfb968a8f" }, { "args": [], "default": false, "docs": ["withdraw a certain amount of d9 that has been converted into red points"], "label": "redeem_d9", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 11 }, "selector": "0x47082626" }, { "args": [{ "label": "consumer_id", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [], "label": "give_green_points_d9", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 13 }, "selector": "0x88b8f067" }, { "args": [{ "label": "consumer_id", "type": { "displayName": ["AccountId"], "type": 2 } }, { "label": "usdt_payment", "type": { "displayName": ["Balance"], "type": 1 } }], "default": false, "docs": [], "label": "give_green_points_usdt", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 13 }, "selector": "0xf52b0ab9" }, { "args": [{ "label": "merchant_id", "type": { "displayName": ["AccountId"], "type": 2 } }, { "label": "usdt_amount", "type": { "displayName": ["Balance"], "type": 1 } }], "default": false, "docs": [], "label": "send_usdt_payment_to_merchant", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 13 }, "selector": "0xa69d4305" }, { "args": [{ "label": "merchant_id", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [" a customer pays a merchant using d9"], "label": "send_d9_payment_to_merchant", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 13 }, "selector": "0xb0e55803" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [], "label": "get_expiry", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xfe38aab5" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [" get account details"], "label": "get_account", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0xd0f48683" }, { "args": [{ "label": "new_amm_contract", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [], "label": "change_amm_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 21 }, "selector": "0x0db11b82" }, { "args": [{ "label": "new_mining_pool", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [], "label": "change_mining_pool", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 21 }, "selector": "0xafda72a6" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 3 } }], "default": false, "docs": [" Modifies the code which is used to execute calls to this contract address (`AccountId`).", "", " We use this to upgrade the contract logic. We don't do any authorization here, any caller", " can execute this method. In a production contract you would do some authorization here."], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x694fb50f" }, { "args": [{ "label": "new_admin", "type": { "displayName": ["AccountId"], "type": 2 } }], "default": false, "docs": [], "label": "change_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 21 }, "selector": "0x61ae97d7" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "root": { "layout": { "leaf": { "key": "0x368a973a", "ty": 0 } }, "root_key": "0x368a973a" } }, "name": "merchant_expiry" }, { "layout": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0xfe031739", "ty": 1 } }, "name": "green_points" }, { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0xfe031739", "ty": 1 } }, "name": "0" }, { "layout": { "leaf": { "key": "0xfe031739", "ty": 1 } }, "name": "1" }], "name": "(A, B)" } }, "name": "relationship_factors" }, { "layout": { "enum": { "dispatchKey": "0xfe031739", "name": "Option", "variants": { "0": { "fields": [], "name": "None" }, "1": { "fields": [{ "layout": { "leaf": { "key": "0xfe031739", "ty": 0 } }, "name": "0" }], "name": "Some" } } } }, "name": "last_conversion" }, { "layout": { "leaf": { "key": "0xfe031739", "ty": 1 } }, "name": "redeemed_usdt" }, { "layout": { "leaf": { "key": "0xfe031739", "ty": 1 } }, "name": "redeemed_d9" }, { "layout": { "leaf": { "key": "0xfe031739", "ty": 0 } }, "name": "created_at" }], "name": "Account" } }, "root_key": "0xfe031739" } }, "name": "accounts" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "subscription_fee" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 2 } }, "name": "usdt_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 2 } }, "name": "amm_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 2 } }, "name": "mining_pool" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "milliseconds_day" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 2 } }, "name": "admin" }], "name": "D9MerchantMining" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "primitive": "u64" } } }, { "id": 1, "type": { "def": { "primitive": "u128" } } }, { "id": 2, "type": { "def": { "composite": { "fields": [{ "type": 3, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 3, "type": { "def": { "array": { "len": 32, "type": 4 } } } }, { "id": 4, "type": { "def": { "primitive": "u8" } } }, { "id": 5, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 6, "type": { "def": { "tuple": [] } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "InsufficientPayment" }, { "index": 1, "name": "InsufficientAllowance" }, { "index": 2, "name": "NoMerchantAccountFound" }, { "index": 3, "name": "MerchantAccountExpired" }, { "index": 4, "name": "NoAccountFound" }, { "index": 5, "name": "NothingToRedeem" }, { "index": 6, "name": "TransferringToMainContract" }, { "index": 7, "name": "TransferringToUSDTToMerchant" }, { "index": 8, "name": "UserUSDTBalanceInsufficient" }, { "index": 9, "name": "D9TransferFailed" }, { "index": 10, "name": "USDTTransferFailed" }, { "index": 11, "name": "OnlyAdmin" }, { "index": 12, "name": "GrantingAllowanceFailed" }, { "index": 13, "name": "AMMConversionFailed" }, { "index": 14, "name": "ReceivingUSDTFromUser" }, { "index": 15, "name": "ConvertingToD9" }, { "index": 16, "name": "SendUSDTToMerchant" }, { "index": 17, "name": "SendingD9ToMiningPool" }, { "index": 18, "name": "SendingUSDTToAMM" }, { "index": 19, "name": "GettingUSDTFromAMM" }, { "index": 20, "name": "RedeemD9TransferFailed" }, { "index": 21, "name": "SomeEnvironmentError" }, { "index": 22, "name": "CalledContractTrapped" }, { "index": 23, "name": "CalledContractReverted" }, { "index": 24, "name": "NotCallable" }, { "index": 25, "name": "SomeDecodeError" }, { "index": 26, "name": "SomeOffChainError" }, { "index": 27, "name": "CalleeTrapped" }, { "index": 28, "name": "CalleeReverted" }, { "index": 29, "name": "KeyNotFound" }, { "index": 30, "name": "_BelowSubsistenceThreshold" }, { "index": 31, "name": "TransferFailed" }, { "index": 32, "name": "_EndowmentTooLow" }, { "index": 33, "name": "CodeNotFound" }, { "index": 34, "name": "Unknown" }, { "index": 35, "name": "LoggingDisabled" }, { "index": 36, "name": "CallRuntimeFailed" }, { "index": 37, "name": "EcdsaRecoveryFailed" }, { "index": 38, "name": "ErrorGettingEstimate" }, { "index": 39, "name": "CrossContractCallErrorGettingEstimate" }] } }, "path": ["d9_merchant_mining", "d9_merchant_mining", "Error"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 12 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 12 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 1 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 1 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 14 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 14 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 15 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 15 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 15, "type": { "def": { "composite": { "fields": [{ "name": "merchant", "type": 1, "typeName": "Balance" }, { "name": "consumer", "type": 1, "typeName": "Balance" }] } }, "path": ["d9_merchant_mining", "d9_merchant_mining", "GreenPointsResult"] } }, { "id": 16, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 17 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 17 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 18 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 18 }], "path": ["Option"] } }, { "id": 18, "type": { "def": { "composite": { "fields": [{ "name": "green_points", "type": 1, "typeName": "Balance" }, { "name": "relationship_factors", "type": 19, "typeName": "(Balance, Balance)" }, { "name": "last_conversion", "type": 20, "typeName": "Option<Timestamp>" }, { "name": "redeemed_usdt", "type": 1, "typeName": "Balance" }, { "name": "redeemed_d9", "type": 1, "typeName": "Balance" }, { "name": "created_at", "type": 0, "typeName": "Timestamp" }] } }, "path": ["d9_merchant_mining", "d9_merchant_mining", "Account"] } }, { "id": 19, "type": { "def": { "tuple": [1, 1] } } }, { "id": 20, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 0 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 0 }], "path": ["Option"] } }, { "id": 21, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 22 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 22 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 22, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 23, "type": { "def": { "composite": { "fields": [{ "name": "account_id", "type": 2, "typeName": "AccountId" }, { "name": "green_points", "type": 1, "typeName": "Balance" }] } }, "path": ["d9_merchant_mining", "d9_merchant_mining", "GreenPointsCreated"] } }, { "id": 24, "type": { "def": { "composite": { "fields": [{ "type": 3, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 25, "type": { "def": { "primitive": "u32" } } }, { "id": 26, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
173
|
+
|
|
174
|
+
// .papi/descriptors/src/contracts/usdt.ts
|
|
175
|
+
var descriptor3 = { metadata: { "source": { "hash": "0x7a88ca43f88f1468755756c58c8fcac582c83a176b183301e672712efe955d03", "language": "ink! 4.3.0", "compiler": "rustc 1.72.1", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-x86_64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "d9_usdt", "version": "0.1.0", "authors": ["D9Devs"] }, "spec": { "constructors": [{ "args": [{ "label": "initial_supply", "type": { "displayName": ["Balance"], "type": 0 } }], "default": false, "docs": [], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 1 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 4 }, "balance": { "displayName": ["Balance"], "type": 0 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 16 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 17 }, "hash": { "displayName": ["Hash"], "type": 14 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 15 } }, "events": [{ "args": [{ "docs": [], "indexed": true, "label": "owner", "type": { "displayName": ["AccountId"], "type": 4 } }, { "docs": [], "indexed": true, "label": "spender", "type": { "displayName": ["AccountId"], "type": 4 } }, { "docs": [], "indexed": false, "label": "amount", "type": { "displayName": ["u128"], "type": 0 } }], "docs": [], "label": "Approval" }, { "args": [{ "docs": [], "indexed": true, "label": "from", "type": { "displayName": ["Option"], "type": 13 } }, { "docs": [], "indexed": true, "label": "to", "type": { "displayName": ["Option"], "type": 13 } }, { "docs": [], "indexed": false, "label": "value", "type": { "displayName": ["u128"], "type": 0 } }], "docs": [], "label": "Transfer" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 3 }, "messages": [{ "args": [{ "label": "to", "type": { "displayName": ["AccountId"], "type": 4 } }, { "label": "value", "type": { "displayName": ["u128"], "type": 0 } }, { "label": "_data", "type": { "displayName": ["Vec"], "type": 7 } }], "default": false, "docs": [], "label": "transfer", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x84a15da1" }, { "args": [{ "label": "from", "type": { "displayName": ["AccountId"], "type": 4 } }, { "label": "to", "type": { "displayName": ["AccountId"], "type": 4 } }, { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } }, { "label": "_data", "type": { "displayName": ["Vec"], "type": 7 } }], "default": false, "docs": [], "label": "transfer_from", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x0b396f18" }, { "args": [], "default": false, "docs": [], "label": "PSP22::total_supply", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x162df8c2" }, { "args": [{ "label": "to", "type": { "displayName": ["psp22_external", "TransferInput1"], "type": 4 } }, { "label": "value", "type": { "displayName": ["psp22_external", "TransferInput2"], "type": 0 } }, { "label": "data", "type": { "displayName": ["psp22_external", "TransferInput3"], "type": 7 } }], "default": false, "docs": [], "label": "PSP22::transfer", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xdb20f9f5" }, { "args": [{ "label": "spender", "type": { "displayName": ["psp22_external", "DecreaseAllowanceInput1"], "type": 4 } }, { "label": "delta_value", "type": { "displayName": ["psp22_external", "DecreaseAllowanceInput2"], "type": 0 } }], "default": false, "docs": [], "label": "PSP22::decrease_allowance", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xfecb57d5" }, { "args": [{ "label": "owner", "type": { "displayName": ["psp22_external", "BalanceOfInput1"], "type": 4 } }], "default": false, "docs": [], "label": "PSP22::balance_of", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x6568382f" }, { "args": [{ "label": "from", "type": { "displayName": ["psp22_external", "TransferFromInput1"], "type": 4 } }, { "label": "to", "type": { "displayName": ["psp22_external", "TransferFromInput2"], "type": 4 } }, { "label": "value", "type": { "displayName": ["psp22_external", "TransferFromInput3"], "type": 0 } }, { "label": "data", "type": { "displayName": ["psp22_external", "TransferFromInput4"], "type": 7 } }], "default": false, "docs": [], "label": "PSP22::transfer_from", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x54b3c76e" }, { "args": [{ "label": "spender", "type": { "displayName": ["psp22_external", "IncreaseAllowanceInput1"], "type": 4 } }, { "label": "delta_value", "type": { "displayName": ["psp22_external", "IncreaseAllowanceInput2"], "type": 0 } }], "default": false, "docs": [], "label": "PSP22::increase_allowance", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x96d6b57a" }, { "args": [{ "label": "spender", "type": { "displayName": ["psp22_external", "ApproveInput1"], "type": 4 } }, { "label": "value", "type": { "displayName": ["psp22_external", "ApproveInput2"], "type": 0 } }], "default": false, "docs": [], "label": "PSP22::approve", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xb20f1bbd" }, { "args": [{ "label": "owner", "type": { "displayName": ["psp22_external", "AllowanceInput1"], "type": 4 } }, { "label": "spender", "type": { "displayName": ["psp22_external", "AllowanceInput2"], "type": 4 } }], "default": false, "docs": [], "label": "PSP22::allowance", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x4d47d921" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "struct": { "fields": [{ "layout": { "root": { "layout": { "leaf": { "key": "0x270a8fc3", "ty": 0 } }, "root_key": "0x270a8fc3" } }, "name": "supply" }, { "layout": { "root": { "layout": { "leaf": { "key": "0xc2664826", "ty": 0 } }, "root_key": "0xc2664826" } }, "name": "balances" }, { "layout": { "root": { "layout": { "leaf": { "key": "0xf8d71e22", "ty": 0 } }, "root_key": "0xf8d71e22" } }, "name": "allowances" }], "name": "Data" } }, "name": "psp22" }], "name": "D9USDT" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "primitive": "u128" } } }, { "id": 1, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 2 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 3 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 2 }, { "name": "E", "type": 3 }], "path": ["Result"] } }, { "id": 2, "type": { "def": { "tuple": [] } } }, { "id": 3, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 4, "type": { "def": { "composite": { "fields": [{ "type": 5, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 5, "type": { "def": { "array": { "len": 32, "type": 6 } } } }, { "id": 6, "type": { "def": { "primitive": "u8" } } }, { "id": 7, "type": { "def": { "sequence": { "type": 6 } } } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 3 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 3 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 2 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 2 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 11, "typeName": "String" }], "index": 0, "name": "Custom" }, { "index": 1, "name": "InsufficientBalance" }, { "index": 2, "name": "InsufficientAllowance" }, { "index": 3, "name": "ZeroRecipientAddress" }, { "index": 4, "name": "ZeroSenderAddress" }, { "fields": [{ "type": 11, "typeName": "String" }], "index": 5, "name": "SafeTransferCheckFailed" }] } }, "path": ["openbrush_contracts", "traits", "errors", "psp22", "PSP22Error"] } }, { "id": 11, "type": { "def": { "primitive": "str" } } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 3 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 3 }], "path": ["Result"] } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 4 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 4 }], "path": ["Option"] } }, { "id": 14, "type": { "def": { "composite": { "fields": [{ "type": 5, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 15, "type": { "def": { "primitive": "u64" } } }, { "id": 16, "type": { "def": { "primitive": "u32" } } }, { "id": 17, "type": { "def": { "variant": {} }, "path": ["ink_env", "types", "NoChainExtension"] } }], "version": "4" } };
|
|
176
|
+
|
|
177
|
+
// .papi/descriptors/src/contracts/burnManager.ts
|
|
178
|
+
var descriptor4 = { metadata: { "source": { "hash": "0x2da1b7ebb4065bd2ec52012d674d4b203fab69681292bc4e594fc26fc9c2445f", "language": "ink! 4.3.0", "compiler": "rustc 1.72.0", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "d9-burn-manager", "version": "1.0.0", "authors": ["D9Dev"] }, "spec": { "constructors": [{ "args": [{ "label": "admin", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "burn_contracts", "type": { "displayName": ["Vec"], "type": 3 } }], "default": false, "docs": ["Constructor that initializes the `bool` value to the given `init_value`."], "label": "new", "payable": true, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 6 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 0 }, "balance": { "displayName": ["Balance"], "type": 4 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 24 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 25 }, "hash": { "displayName": ["Hash"], "type": 23 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 5 } }, "events": [{ "args": [{ "docs": [" initiator of of the burn"], "indexed": true, "label": "from", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": ["amount of tokens burned"], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "WithdrawalExecuted" }, { "args": [{ "docs": [" initiator of of the burn"], "indexed": true, "label": "from", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": ["amount of tokens burned"], "indexed": true, "label": "amount", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "BurnExecuted" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 8 }, "messages": [{ "args": [{ "label": "burn_beneficiary", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "burn_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [" Executes a burn by making a cross-contract call, updates the total burned amount,", " updates the user's portfolio, and emits a `BurnExecuted` event.", "", " # Arguments", "", " * `burn_contract` - Account ID of the contract to call for the burn.", "", " # Errors", "", " Returns `Err` if the burn amount is zero, the burn contract is not valid,", " or the cross-contract call fails.", "", " # Returns", "", " Returns `Ok` with the updated portfolio on success."], "label": "burn", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0xb1efc17b" }, { "args": [{ "label": "burn_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "withdraw", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x410fcc9d" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "get_ancestors", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 15 }, "selector": "0xe2ee2364" }, { "args": [{ "label": "burn_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "add_burn_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 17 }, "selector": "0x50cb7e6b" }, { "args": [{ "label": "burn_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "remove_burn_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 6 }, "selector": "0x2610355d" }, { "args": [], "default": false, "docs": [], "label": "get_admin", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 19 }, "selector": "0x57b8a8a7" }, { "args": [], "default": false, "docs": [], "label": "get_total_burned", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 20 }, "selector": "0x717d96e0" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "get_portfolio", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 21 }, "selector": "0xf3246265" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 3 } }, "name": "burn_contracts" }, { "layout": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x249fe4b2", "ty": 4 } }, "name": "amount_burned" }, { "layout": { "leaf": { "key": "0x249fe4b2", "ty": 4 } }, "name": "balance_due" }, { "layout": { "leaf": { "key": "0x249fe4b2", "ty": 4 } }, "name": "balance_paid" }, { "layout": { "enum": { "dispatchKey": "0x249fe4b2", "name": "Option", "variants": { "0": { "fields": [], "name": "None" }, "1": { "fields": [{ "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x249fe4b2", "ty": 5 } }, "name": "time" }, { "layout": { "leaf": { "key": "0x249fe4b2", "ty": 0 } }, "name": "contract" }], "name": "ActionRecord" } }, "name": "0" }], "name": "Some" } } } }, "name": "last_withdrawal" }, { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x249fe4b2", "ty": 5 } }, "name": "time" }, { "layout": { "leaf": { "key": "0x249fe4b2", "ty": 0 } }, "name": "contract" }], "name": "ActionRecord" } }, "name": "last_burn" }], "name": "BurnPortfolio" } }, "root_key": "0x249fe4b2" } }, "name": "portfolios" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "total_amount_burned" }], "name": "D9BurnManager" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 1, "type": { "def": { "array": { "len": 32, "type": 2 } } } }, { "id": 2, "type": { "def": { "primitive": "u8" } } }, { "id": 3, "type": { "def": { "sequence": { "type": 0 } } } }, { "id": 4, "type": { "def": { "primitive": "u128" } } }, { "id": 5, "type": { "def": { "primitive": "u64" } } }, { "id": 6, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 7 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 7 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 7, "type": { "def": { "tuple": [] } } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 10 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 10 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 11 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 14 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 11 }, { "name": "E", "type": 14 }], "path": ["Result"] } }, { "id": 11, "type": { "def": { "composite": { "fields": [{ "name": "amount_burned", "type": 4, "typeName": "Balance" }, { "name": "balance_due", "type": 4, "typeName": "Balance" }, { "name": "balance_paid", "type": 4, "typeName": "Balance" }, { "name": "last_withdrawal", "type": 12, "typeName": "Option<ActionRecord>" }, { "name": "last_burn", "type": 13, "typeName": "ActionRecord" }] } }, "path": ["d9_burn_common", "BurnPortfolio"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 13 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 13 }], "path": ["Option"] } }, { "id": 13, "type": { "def": { "composite": { "fields": [{ "name": "time", "type": 5, "typeName": "Timestamp" }, { "name": "contract", "type": 0, "typeName": "AccountId" }] } }, "path": ["d9_burn_common", "ActionRecord"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "BurnAmountInsufficient" }, { "index": 1, "name": "NoAccountFound" }, { "index": 2, "name": "EarlyWithdrawalAttempt" }, { "index": 3, "name": "ContractBalanceTooLow" }, { "index": 4, "name": "RestrictedFunction" }, { "index": 5, "name": "UsePortfolioExecuteFunction" }, { "index": 6, "name": "WithdrawalExceedsBalance" }, { "index": 7, "name": "TransferFailed" }, { "index": 8, "name": "InvalidCaller" }, { "index": 9, "name": "InvalidBurnContract" }, { "index": 10, "name": "BurnContractAlreadyAdded" }, { "index": 11, "name": "CrossContractCallFailed" }, { "index": 12, "name": "WithdrawalNotAllowed" }, { "index": 13, "name": "RuntimeErrorGettingAncestors" }, { "index": 14, "name": "NoAncestorsFound" }] } }, "path": ["d9_burn_common", "Error"] } }, { "id": 15, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 16 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 16 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 16, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 3 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 3 }], "path": ["Option"] } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 18 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 18 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 18, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 7 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 14 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 7 }, { "name": "E", "type": 14 }], "path": ["Result"] } }, { "id": 19, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 20, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 21, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 22 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 8 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 22 }, { "name": "E", "type": 8 }], "path": ["Result"] } }, { "id": 22, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 11 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 11 }], "path": ["Option"] } }, { "id": 23, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 24, "type": { "def": { "primitive": "u32" } } }, { "id": 25, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
179
|
+
|
|
180
|
+
// .papi/descriptors/src/contracts/crossChainTransfer.ts
|
|
181
|
+
var descriptor5 = { metadata: { "source": { "hash": "0x4beac590e0c2e670b87997c893281c9eac45c8515e51bd96d7e31a660bc75db2", "language": "ink! 4.3.0", "compiler": "rustc 1.76.0", "build_info": { "build_mode": "Release", "cargo_contract_version": "4.0.2", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "cross_chain_transfer", "version": "0.1.0", "authors": ["D9 team tech@d9network.com"] }, "image": null, "spec": { "constructors": [{ "args": [{ "label": "usdt_contract", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": ["Constructor that initializes the `bool` value to the given `init_value`."], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 7 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 1 }, "balance": { "displayName": ["Balance"], "type": 5 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 28 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 29 }, "hash": { "displayName": ["Hash"], "type": 27 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 0 } }, "events": [{ "args": [{ "docs": [], "indexed": true, "label": "transaction_id", "type": { "displayName": ["String"], "type": 4 } }, { "docs": [], "indexed": true, "label": "from_address", "type": { "displayName": ["AccountId"], "type": 1 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["u128"], "type": 5 } }], "docs": [], "label": "CommitCreated" }, { "args": [{ "docs": [], "indexed": true, "label": "tx_id", "type": { "displayName": ["String"], "type": 4 } }, { "docs": [], "indexed": true, "label": "to_address", "type": { "displayName": ["AccountId"], "type": 1 } }, { "docs": [], "indexed": true, "label": "amount", "type": { "displayName": ["u128"], "type": 5 } }], "docs": [], "label": "DispatchCompleted" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 9 }, "messages": [{ "args": [{ "label": "admin", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "add_transaction_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 10 }, "selector": "0xec409e8a" }, { "args": [{ "label": "admin", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "remove_transaction_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 10 }, "selector": "0xb3e15c07" }, { "args": [], "default": false, "docs": [], "label": "get_transaction_admins", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 14 }, "selector": "0xa81d32bb" }, { "args": [{ "label": "admin", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "is_transaction_admin", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 15 }, "selector": "0x7a996b18" }, { "args": [{ "label": "user_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "record_cancelled_tron_transfer", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 10 }, "selector": "0x1617c8b4" }, { "args": [{ "label": "user_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "generate_tx_id", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 17 }, "selector": "0xfc9bd990" }, { "args": [{ "label": "user_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [" get last transaction. function is called on both chains."], "label": "get_last_transaction", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 18 }, "selector": "0x7081dd38" }, { "args": [{ "label": "user_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [" Helper function to get the current transaction nonce for a user"], "label": "get_current_nonce", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 24 }, "selector": "0xe5219595" }, { "args": [{ "label": "tx_id", "type": { "displayName": ["String"], "type": 4 } }], "default": false, "docs": [], "label": "get_transaction", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 18 }, "selector": "0xfeeb858e" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 2 } }], "default": false, "docs": [" Modifies the code which is used to execute calls to this contract address (`AccountId`).", "", " We use this to upgrade the contract logic. We don't do any authorization here, any caller", " can execute this method. In a production contract you would do some authorization here."], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 7 }, "selector": "0x694fb50f" }, { "args": [{ "label": "transaction_id", "type": { "displayName": ["String"], "type": 4 } }, { "label": "from_address", "type": { "displayName": ["AccountId"], "type": 1 } }, { "label": "to_address", "type": { "displayName": [], "type": 23 } }, { "label": "amount", "type": { "displayName": ["Balance"], "type": 5 } }], "default": false, "docs": [], "label": "asset_commit", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 25 }, "selector": "0xc2ad66bb" }, { "args": [{ "label": "from_address", "type": { "displayName": [], "type": 23 } }, { "label": "to_address", "type": { "displayName": ["AccountId"], "type": 1 } }, { "label": "amount", "type": { "displayName": ["Balance"], "type": 5 } }], "default": false, "docs": [], "label": "asset_dispatch", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 25 }, "selector": "0x535b25a5" }, { "args": [{ "label": "new_controller", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "change_controller", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 7 }, "selector": "0xc92e346d" }, { "args": [{ "label": "new_admin", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "relinquish_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 7 }, "selector": "0xda7dbaee" }, { "args": [], "default": false, "docs": [], "label": "claim_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 7 }, "selector": "0xa8656c6c" }, { "args": [], "default": false, "docs": [], "label": "cancel_admin_transfer", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 7 }, "selector": "0xd45e3d78" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "root": { "layout": { "leaf": { "key": "0x8eb615e1", "ty": 0 } }, "root_key": "0x8eb615e1" } }, "name": "user_transaction_nonce" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "super_admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "new_admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "controller" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "usdt_contract" }, { "layout": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x82645412", "ty": 4 } }, "name": "transaction_id" }, { "layout": { "enum": { "dispatchKey": "0x82645412", "name": "TransactionType", "variants": { "0": { "fields": [], "name": "Commit" }, "1": { "fields": [], "name": "Dispatch" } } } }, "name": "transaction_type" }, { "layout": { "enum": { "dispatchKey": "0x82645412", "name": "Chain", "variants": { "0": { "fields": [], "name": "D9" }, "1": { "fields": [], "name": "TRON" } } } }, "name": "from_chain" }, { "layout": { "enum": { "dispatchKey": "0x82645412", "name": "AddressType", "variants": { "0": { "fields": [{ "layout": { "array": { "layout": { "leaf": { "key": "0x82645412", "ty": 3 } }, "len": 21, "offset": "0x82645412" } }, "name": "0" }], "name": "Tron" }, "1": { "fields": [{ "layout": { "leaf": { "key": "0x82645412", "ty": 1 } }, "name": "0" }], "name": "D9" } } } }, "name": "from_address" }, { "layout": { "enum": { "dispatchKey": "0x82645412", "name": "AddressType", "variants": { "0": { "fields": [{ "layout": { "array": { "layout": { "leaf": { "key": "0x82645412", "ty": 3 } }, "len": 21, "offset": "0x82645412" } }, "name": "0" }], "name": "Tron" }, "1": { "fields": [{ "layout": { "leaf": { "key": "0x82645412", "ty": 1 } }, "name": "0" }], "name": "D9" } } } }, "name": "to_address" }, { "layout": { "leaf": { "key": "0x82645412", "ty": 5 } }, "name": "amount" }, { "layout": { "leaf": { "key": "0x82645412", "ty": 0 } }, "name": "timestamp" }], "name": "Transaction" } }, "root_key": "0x82645412" } }, "name": "transactions" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 6 } }, "name": "transaction_admins" }], "name": "CrossChainTransfer" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "primitive": "u64" } } }, { "id": 1, "type": { "def": { "composite": { "fields": [{ "type": 2, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 2, "type": { "def": { "array": { "len": 32, "type": 3 } } } }, { "id": 3, "type": { "def": { "primitive": "u8" } } }, { "id": 4, "type": { "def": { "primitive": "str" } } }, { "id": 5, "type": { "def": { "primitive": "u128" } } }, { "id": 6, "type": { "def": { "sequence": { "type": 1 } } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 8 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 8 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 8, "type": { "def": { "tuple": [] } } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 11 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 11 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 8 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 12 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 8 }, { "name": "E", "type": 12 }], "path": ["Result"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 1, "typeName": "AccountId" }], "index": 0, "name": "Restrictedto" }, { "index": 1, "name": "AmountMustBeGreaterThanZero" }, { "index": 2, "name": "TransactionAlreadyExists" }, { "fields": [{ "type": 13, "typeName": "Chain" }], "index": 3, "name": "InvalidAddressLength" }, { "index": 4, "name": "InvalidHexString" }, { "index": 5, "name": "DecodedHexLengthInvalid" }, { "index": 6, "name": "TronAddressInvalidByteLength" }, { "index": 7, "name": "InvalidTronAddress" }, { "index": 8, "name": "TronDecodeError" }, { "index": 9, "name": "UnableToSendUSDT" }, { "index": 10, "name": "InsufficientAllowance" }, { "index": 11, "name": "UserUSDTBalanceInsufficient" }, { "index": 12, "name": "D9orUSDTProvidedLiquidityAtZero" }, { "index": 13, "name": "AlreadyTransactionAdmin" }] } }, "path": ["cross_chain_transfer", "cross_chain_transfer", "Error"] } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "D9" }, { "index": 1, "name": "TRON" }] } }, "path": ["cross_chain_transfer", "cross_chain_transfer", "Chain"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 15, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 16 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 16 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 16, "type": { "def": { "primitive": "bool" } } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 18, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 19 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 19 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 19, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 20 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 20 }], "path": ["Option"] } }, { "id": 20, "type": { "def": { "composite": { "fields": [{ "name": "transaction_id", "type": 4, "typeName": "String" }, { "name": "transaction_type", "type": 21, "typeName": "TransactionType" }, { "name": "from_chain", "type": 13, "typeName": "Chain" }, { "name": "from_address", "type": 22, "typeName": "AddressType" }, { "name": "to_address", "type": 22, "typeName": "AddressType" }, { "name": "amount", "type": 5, "typeName": "u128" }, { "name": "timestamp", "type": 0, "typeName": "Timestamp" }] } }, "path": ["cross_chain_transfer", "cross_chain_transfer", "Transaction"] } }, { "id": 21, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "Commit" }, { "index": 1, "name": "Dispatch" }] } }, "path": ["cross_chain_transfer", "cross_chain_transfer", "TransactionType"] } }, { "id": 22, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 23, "typeName": "[u8; 21]" }], "index": 0, "name": "Tron" }, { "fields": [{ "type": 1, "typeName": "AccountId" }], "index": 1, "name": "D9" }] } }, "path": ["cross_chain_transfer", "cross_chain_transfer", "AddressType"] } }, { "id": 23, "type": { "def": { "array": { "len": 21, "type": 3 } } } }, { "id": 24, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 25, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 26 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 9 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 26 }, { "name": "E", "type": 9 }], "path": ["Result"] } }, { "id": 26, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 12 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 12 }], "path": ["Result"] } }, { "id": 27, "type": { "def": { "composite": { "fields": [{ "type": 2, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 28, "type": { "def": { "primitive": "u32" } } }, { "id": 29, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
182
|
+
|
|
183
|
+
// .papi/descriptors/src/contracts/marketMaker.ts
|
|
184
|
+
var descriptor6 = { metadata: { "source": { "hash": "0x6e0eaec1512315978981967d4f9d6072c6a3f50381289c69205961fa9509fff9", "language": "ink! 4.3.0", "compiler": "rustc 1.72.1", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-x86_64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "market-maker", "version": "0.1.0", "authors": ["D9Dev"] }, "spec": { "constructors": [{ "args": [{ "label": "usdt_contract", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "fee_percent", "type": { "displayName": ["u32"], "type": 3 } }, { "label": "liquidity_tolerance_percent", "type": { "displayName": ["u32"], "type": 3 } }], "default": false, "docs": [], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 5 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 0 }, "balance": { "displayName": ["Balance"], "type": 4 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 3 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 24 }, "hash": { "displayName": ["Hash"], "type": 22 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 23 } }, "events": [{ "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "usdt", "type": { "displayName": ["Balance"], "type": 4 } }, { "docs": [], "indexed": true, "label": "d9", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "LiquidityAdded" }, { "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "usdt", "type": { "displayName": ["Balance"], "type": 4 } }, { "docs": [], "indexed": true, "label": "d9", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "LiquidityRemoved" }, { "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "usdt", "type": { "displayName": ["Balance"], "type": 4 } }, { "docs": [], "indexed": true, "label": "d9", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "D9ToUSDTConversion" }, { "args": [{ "docs": [], "indexed": true, "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "docs": [], "indexed": true, "label": "usdt", "type": { "displayName": ["Balance"], "type": 4 } }, { "docs": [], "indexed": true, "label": "d9", "type": { "displayName": ["Balance"], "type": 4 } }], "docs": [], "label": "USDTToD9Conversion" }], "lang_error": { "displayName": ["ink", "LangError"], "type": 7 }, "messages": [{ "args": [{ "label": "new_admin", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "change_admin", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x61ae97d7" }, { "args": [], "default": false, "docs": [" get pool balances (d9, usdt)"], "label": "get_currency_reserves", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x43b2d0e6" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "get_liquidity_provider", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 10 }, "selector": "0x32e702ad" }, { "args": [{ "label": "usdt_liquidity", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [" add liquidity by adding tokens to the reserves"], "label": "add_liquidity", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x264cd04b" }, { "args": [], "default": false, "docs": [], "label": "remove_liquidity", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0xbdd16bfa" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 1 } }], "default": false, "docs": [" Modifies the code which is used to execute calls to this contract address (`AccountId`).", "", " We use this to upgrade the contract logic. We don't do any authorization here, any caller", " can execute this method. In a production contract you would do some authorization here."], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x694fb50f" }, { "args": [{ "label": "usdt_liquidity", "type": { "displayName": ["Balance"], "type": 4 } }, { "label": "d9_liquidity", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [], "label": "check_new_liquidity", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x5a150c03" }, { "args": [{ "label": "usdt", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [" sell usdt"], "label": "get_d9", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0x0edab8e1" }, { "args": [], "default": false, "docs": [" sell d9"], "label": "get_usdt", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0x5b41ab8a" }, { "args": [{ "label": "d9_liquidity", "type": { "displayName": ["Balance"], "type": 4 } }, { "label": "usdt_liquidity", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [" calculate lp tokens based on usdt liquidity"], "label": "calc_new_lp_tokens", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 18 }, "selector": "0xbdcee4ed" }, { "args": [{ "label": "direction", "type": { "displayName": ["Direction"], "type": 19 } }, { "label": "amount_0", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [" amount of currency B from A, if A => B"], "label": "calculate_exchange", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0x2413eb9a" }, { "args": [{ "label": "direction", "type": { "displayName": ["Direction"], "type": 19 } }, { "label": "amount_0", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [], "label": "estimate_exchange", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 20 }, "selector": "0x06f49352" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "amount", "type": { "displayName": ["Balance"], "type": 4 } }], "default": false, "docs": [" check if usdt balance is sufficient for swap"], "label": "check_usdt_balance", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x4a74f8d9" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "usdt_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 3 } }, "name": "fee_percent" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "fee_total" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 3 } }, "name": "liquidity_tolerance_percent" }, { "layout": { "root": { "layout": { "leaf": { "key": "0x838a4d0c", "ty": 4 } }, "root_key": "0x838a4d0c" } }, "name": "liquidity_providers" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "total_lp_tokens" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "admin" }], "name": "MarketMaker" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 1, "type": { "def": { "array": { "len": 32, "type": 2 } } } }, { "id": 2, "type": { "def": { "primitive": "u8" } } }, { "id": 3, "type": { "def": { "primitive": "u32" } } }, { "id": 4, "type": { "def": { "primitive": "u128" } } }, { "id": 5, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 6, "type": { "def": { "tuple": [] } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "tuple": [4, 4] } } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 11 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 11 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 4 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 4 }], "path": ["Option"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 13 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 13 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 14 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 14 }], "path": ["Result"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "D9orUSDTProvidedLiquidityAtZero" }, { "index": 1, "name": "ConversionAmountTooLow" }, { "index": 2, "name": "CouldntTransferUSDTFromUser" }, { "fields": [{ "type": 15, "typeName": "Currency" }], "index": 3, "name": "InsufficientLiquidity" }, { "index": 4, "name": "InsufficientAllowance" }, { "fields": [{ "type": 15, "typeName": "Currency" }], "index": 5, "name": "MarketMakerHasInsufficientFunds" }, { "index": 6, "name": "InsufficientLiquidityProvided" }, { "index": 7, "name": "USDTBalanceInsufficient" }, { "index": 8, "name": "LiquidityProviderNotFound" }, { "fields": [{ "type": 4, "typeName": "Balance" }, { "type": 4, "typeName": "Balance" }], "index": 9, "name": "LiquidityAddedBeyondTolerance" }, { "index": 10, "name": "InsufficientLPTokens" }, { "index": 11, "name": "InsufficientContractLPTokens" }, { "index": 12, "name": "DivisionByZero" }, { "index": 13, "name": "MultiplicationError" }, { "index": 14, "name": "USDTTooSmall" }, { "index": 15, "name": "USDTTooMuch" }, { "index": 16, "name": "LiquidityTooLow" }] } }, "path": ["market_maker", "market_maker", "Error"] } }, { "id": 15, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "D9" }, { "index": 1, "name": "USDT" }] } }, "path": ["market_maker", "market_maker", "Currency"] } }, { "id": 16, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 17 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 17 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 14 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 14 }], "path": ["Result"] } }, { "id": 18, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 4 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 4 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 19, "type": { "def": { "composite": { "fields": [{ "type": 15, "typeName": "Currency" }, { "type": 15, "typeName": "Currency" }] } }, "path": ["market_maker", "market_maker", "Direction"] } }, { "id": 20, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 21 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 21 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 21, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 14 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 14 }], "path": ["Result"] } }, { "id": 22, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 23, "type": { "def": { "primitive": "u64" } } }, { "id": 24, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
185
|
+
|
|
186
|
+
// .papi/descriptors/src/contracts/burnMining.ts
|
|
187
|
+
var descriptor7 = { metadata: { "source": { "hash": "0xa1245e9aaa904fd32b47665ecb84bff4d2357eea3d82257d092e3e05b66b3904", "language": "ink! 4.3.0", "compiler": "rustc 1.72.0", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "d9-burn-mining", "version": "0.1.0", "authors": ["D9Dev"] }, "spec": { "constructors": [{ "args": [{ "label": "main_pool", "type": { "displayName": ["AccountId"], "type": 1 } }, { "label": "burn_minimum", "type": { "displayName": ["Balance"], "type": 0 } }], "default": false, "docs": [], "label": "new", "payable": true, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 5 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 1 }, "balance": { "displayName": ["Balance"], "type": 0 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 25 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 26 }, "hash": { "displayName": ["Hash"], "type": 24 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 4 } }, "events": [], "lang_error": { "displayName": ["ink", "LangError"], "type": 7 }, "messages": [{ "args": [{ "label": "new_main", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "change_main", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x6cfbbb35" }, { "args": [{ "label": "new_day_milliseconds", "type": { "displayName": ["Timestamp"], "type": 4 } }], "default": false, "docs": [], "label": "set_day_milliseconds", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x57d2bc7f" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "get_account", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 11 }, "selector": "0xd0f48683" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 1 } }, { "label": "burn_amount", "type": { "displayName": ["Balance"], "type": 0 } }], "default": false, "docs": [" burn funcion callable by ownly master contract", "", " does the necessary checks then calls the internal burn function `_burn`"], "label": "initiate_burn", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, "selector": "0x34aff0a0" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [" calculate values to be used by the burn manager"], "label": "prepare_withdrawal", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 18 }, "selector": "0x9c2e384b" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 1 } }], "default": false, "docs": [], "label": "get_ancestors", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 21 }, "selector": "0xe2ee2364" }, { "args": [{ "label": "user", "type": { "displayName": ["AccountId"], "type": 1 } }, { "label": "amount_burned", "type": { "displayName": ["Balance"], "type": 0 } }], "default": false, "docs": [], "label": "update_data", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x0590a9a1" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 2 } }], "default": false, "docs": [" Modifies the code which is used to execute calls to this contract address (`AccountId`).", "", " We use this to upgrade the contract logic. We don't do any authorization here, any caller", " can execute this method. In a production contract you would do some authorization here."], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x694fb50f" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "total_amount_burned" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "main_pool" }, { "layout": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x125717b1", "ty": 4 } }, "name": "creation_timestamp" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 0 } }, "name": "amount_burned" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 0 } }, "name": "balance_due" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 0 } }, "name": "balance_paid" }, { "layout": { "enum": { "dispatchKey": "0x125717b1", "name": "Option", "variants": { "0": { "fields": [], "name": "None" }, "1": { "fields": [{ "layout": { "leaf": { "key": "0x125717b1", "ty": 4 } }, "name": "0" }], "name": "Some" } } } }, "name": "last_withdrawal" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 4 } }, "name": "last_burn" }, { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x125717b1", "ty": 0 } }, "name": "0" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 0 } }, "name": "1" }], "name": "(A, B)" } }, "name": "referral_boost_coefficients" }, { "layout": { "leaf": { "key": "0x125717b1", "ty": 4 } }, "name": "last_interaction" }], "name": "Account" } }, "root_key": "0x125717b1" } }, "name": "accounts" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "burn_minimum" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "day_milliseconds" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 1 } }, "name": "admin" }], "name": "D9burnMining" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "primitive": "u128" } } }, { "id": 1, "type": { "def": { "composite": { "fields": [{ "type": 2, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 2, "type": { "def": { "array": { "len": 32, "type": 3 } } } }, { "id": 3, "type": { "def": { "primitive": "u8" } } }, { "id": 4, "type": { "def": { "primitive": "u64" } } }, { "id": 5, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 6, "type": { "def": { "tuple": [] } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 9 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "BurnAmountInsufficient" }, { "index": 1, "name": "NoAccountFound" }, { "index": 2, "name": "EarlyWithdrawalAttempt" }, { "index": 3, "name": "ContractBalanceTooLow" }, { "index": 4, "name": "RestrictedFunction" }, { "index": 5, "name": "UsePortfolioExecuteFunction" }, { "index": 6, "name": "WithdrawalExceedsBalance" }, { "index": 7, "name": "TransferFailed" }, { "index": 8, "name": "InvalidCaller" }, { "index": 9, "name": "InvalidBurnContract" }, { "index": 10, "name": "BurnContractAlreadyAdded" }, { "index": 11, "name": "BurnAmountNotMultipleOf100" }, { "index": 12, "name": "CrossContractCallFailed" }, { "index": 13, "name": "WithdrawalNotAllowed" }, { "index": 14, "name": "WithdrawalAmountZero" }, { "index": 15, "name": "RuntimeErrorGettingAncestors" }, { "index": 16, "name": "NoAncestorsFound" }, { "index": 17, "name": "MustBeMultipleOf100" }, { "index": 18, "name": "RemoteCallToBurnContractFailed" }, { "index": 19, "name": "RemoteCallToMiningPoolFailed" }, { "index": 20, "name": "SomeEnvironmentError" }, { "index": 21, "name": "CalledContractTrapped" }, { "index": 22, "name": "CalledContractReverted" }, { "index": 23, "name": "NotCallable" }, { "index": 24, "name": "SomeDecodeError" }, { "index": 25, "name": "SomeOffChainError" }, { "index": 26, "name": "CalleeTrapped" }, { "index": 27, "name": "CalleeReverted" }, { "index": 28, "name": "KeyNotFound" }, { "index": 29, "name": "_BelowSubsistenceThreshold" }, { "index": 30, "name": "EnvironmentalTransferFailed" }, { "index": 31, "name": "_EndowmentTooLow" }, { "index": 32, "name": "CodeNotFound" }, { "index": 33, "name": "Unknown" }, { "index": 34, "name": "LoggingDisabled" }, { "index": 35, "name": "CallRuntimeFailed" }, { "index": 36, "name": "EcdsaRecoveryFailed" }, { "index": 37, "name": "WithdrawalAmountExceedsBalance" }] } }, "path": ["d9_burn_common", "Error"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 12 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 12 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 13 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 13 }], "path": ["Option"] } }, { "id": 13, "type": { "def": { "composite": { "fields": [{ "name": "creation_timestamp", "type": 4, "typeName": "Timestamp" }, { "name": "amount_burned", "type": 0, "typeName": "Balance" }, { "name": "balance_due", "type": 0, "typeName": "Balance" }, { "name": "balance_paid", "type": 0, "typeName": "Balance" }, { "name": "last_withdrawal", "type": 14, "typeName": "Option<Timestamp>" }, { "name": "last_burn", "type": 4, "typeName": "Timestamp" }, { "name": "referral_boost_coefficients", "type": 15, "typeName": "(Balance, Balance)" }, { "name": "last_interaction", "type": 4, "typeName": "Timestamp" }] } }, "path": ["d9_burn_common", "Account"] } }, { "id": 14, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 4 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 4 }], "path": ["Option"] } }, { "id": 15, "type": { "def": { "tuple": [0, 0] } } }, { "id": 16, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 17 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 17 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 17, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 0 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 18, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 19 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 19 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 19, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 20 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 10 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 20 }, { "name": "E", "type": 10 }], "path": ["Result"] } }, { "id": 20, "type": { "def": { "tuple": [0, 4] } } }, { "id": 21, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 22 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 22 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 22, "type": { "def": { "variant": { "variants": [{ "index": 0, "name": "None" }, { "fields": [{ "type": 23 }], "index": 1, "name": "Some" }] } }, "params": [{ "name": "T", "type": 23 }], "path": ["Option"] } }, { "id": 23, "type": { "def": { "sequence": { "type": 1 } } } }, { "id": 24, "type": { "def": { "composite": { "fields": [{ "type": 2, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 25, "type": { "def": { "primitive": "u32" } } }, { "id": 26, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
188
|
+
|
|
189
|
+
// .papi/descriptors/src/contracts/miningPool.ts
|
|
190
|
+
var descriptor8 = { metadata: { "source": { "hash": "0x7786436103072d79da5e85e15869fc4b3b835913425a705a809e8677626f1c7c", "language": "ink! 4.3.0", "compiler": "rustc 1.72.1", "build_info": { "build_mode": "Release", "cargo_contract_version": "3.2.0", "rust_toolchain": "stable-x86_64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } } }, "contract": { "name": "mining_pool", "version": "0.1.0", "authors": ["D9"] }, "spec": { "constructors": [{ "args": [{ "label": "main_contract", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "merchant_contract", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "node_reward_contract", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "amm_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": ["Constructor that initializes the `bool` value to the given `init_value`."], "label": "new", "payable": false, "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 5 }, "selector": "0x9bae9d5e" }], "docs": [], "environment": { "accountId": { "displayName": ["AccountId"], "type": 0 }, "balance": { "displayName": ["Balance"], "type": 3 }, "blockNumber": { "displayName": ["BlockNumber"], "type": 4 }, "chainExtension": { "displayName": ["ChainExtension"], "type": 16 }, "hash": { "displayName": ["Hash"], "type": 14 }, "maxEventTopics": 4, "timestamp": { "displayName": ["Timestamp"], "type": 15 } }, "events": [], "lang_error": { "displayName": ["ink", "LangError"], "type": 7 }, "messages": [{ "args": [], "default": false, "docs": [], "label": "get_accumulative_reward_pool", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x71ebcde6" }, { "args": [{ "label": "account_id", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "amount", "type": { "displayName": ["Balance"], "type": 3 } }], "default": false, "docs": [], "label": "pay_node_reward", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x2f0dd006" }, { "args": [], "default": false, "docs": [], "label": "get_merchant_volume", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x3e3207be" }, { "args": [{ "label": "session_index", "type": { "displayName": ["u32"], "type": 4 } }], "default": false, "docs": [], "label": "get_session_volume", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0x91894472" }, { "args": [{ "label": "session_index", "type": { "displayName": ["u32"], "type": 4 } }], "default": false, "docs": [], "label": "update_pool_and_retrieve", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x8a1783cd" }, { "args": [{ "label": "amount", "type": { "displayName": ["Balance"], "type": 3 } }], "default": false, "docs": [], "label": "deduct_from_reward_pool", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x7df305eb" }, { "args": [], "default": false, "docs": [], "label": "get_total_volume", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, "selector": "0xe88330b2" }, { "args": [], "default": false, "docs": [], "label": "process_merchant_payment", "mutates": true, "payable": true, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0xcbdfeaf9" }, { "args": [{ "label": "user_account", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "redeemable_usdt", "type": { "displayName": ["Balance"], "type": 3 } }], "default": false, "docs": [], "label": "merchant_user_redeem_d9", "mutates": false, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 12 }, "selector": "0x152062a1" }, { "args": [{ "label": "merchant_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "change_merchant_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x1221b207" }, { "args": [{ "label": "to", "type": { "displayName": ["AccountId"], "type": 0 } }, { "label": "amount", "type": { "displayName": ["Balance"], "type": 3 } }], "default": false, "docs": [], "label": "send_to", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x651d5be0" }, { "args": [{ "label": "node_reward_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "change_node_reward_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x5cfb2c63" }, { "args": [{ "label": "amm_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "change_amm_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0x0db11b82" }, { "args": [{ "label": "main_contract", "type": { "displayName": ["AccountId"], "type": 0 } }], "default": false, "docs": [], "label": "change_main_contract", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 9 }, "selector": "0xbb530edc" }, { "args": [{ "label": "code_hash", "type": { "displayName": [], "type": 1 } }], "default": false, "docs": [], "label": "set_code", "mutates": true, "payable": false, "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, "selector": "0x694fb50f" }] }, "storage": { "root": { "layout": { "struct": { "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "admin" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "main_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "merchant_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "node_reward_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "amm_contract" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 3 } }, "name": "merchant_volume" }, { "layout": { "root": { "layout": { "leaf": { "key": "0xd9887759", "ty": 3 } }, "root_key": "0xd9887759" } }, "name": "volume_at_index" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 4 } }, "name": "last_session" }, { "layout": { "leaf": { "key": "0x00000000", "ty": 3 } }, "name": "accumulative_reward_pool" }], "name": "MiningPool" } }, "root_key": "0x00000000" } }, "types": [{ "id": 0, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "AccountId"] } }, { "id": 1, "type": { "def": { "array": { "len": 32, "type": 2 } } } }, { "id": 2, "type": { "def": { "primitive": "u8" } } }, { "id": 3, "type": { "def": { "primitive": "u128" } } }, { "id": 4, "type": { "def": { "primitive": "u32" } } }, { "id": 5, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 6, "type": { "def": { "tuple": [] } } }, { "id": 7, "type": { "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, "path": ["ink_primitives", "LangError"] } }, { "id": 8, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 3 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 3 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 9, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 10 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 10 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 10, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 6 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 11 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 6 }, { "name": "E", "type": 11 }], "path": ["Result"] } }, { "id": 11, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 0, "typeName": "AccountId" }], "index": 0, "name": "OnlyCallableBy" }, { "index": 1, "name": "FailedToGetExchangeAmount" }, { "index": 2, "name": "FailedToTransferD9ToUser" }, { "index": 3, "name": "SessionPoolNotReady" }] } }, "path": ["mining_pool", "mining_pool", "Error"] } }, { "id": 12, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 13 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 7 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 13 }, { "name": "E", "type": 7 }], "path": ["Result"] } }, { "id": 13, "type": { "def": { "variant": { "variants": [{ "fields": [{ "type": 3 }], "index": 0, "name": "Ok" }, { "fields": [{ "type": 11 }], "index": 1, "name": "Err" }] } }, "params": [{ "name": "T", "type": 3 }, { "name": "E", "type": 11 }], "path": ["Result"] } }, { "id": 14, "type": { "def": { "composite": { "fields": [{ "type": 1, "typeName": "[u8; 32]" }] } }, "path": ["ink_primitives", "types", "Hash"] } }, { "id": 15, "type": { "def": { "primitive": "u64" } } }, { "id": 16, "type": { "def": { "variant": {} }, "path": ["d9_chain_extension", "D9ChainExtension"] } }], "version": "4" } };
|
|
191
|
+
|
|
192
|
+
// .papi/descriptors/src/index.ts
|
|
193
|
+
var metadatas = { ["0x05b81d038cfe33e4d5c55559161bbda14e8cca5b1beb2d4ed7d5da1544f22e90"]: d9_default };
|
|
194
|
+
var getMetadata2 = async (codeHash) => {
|
|
195
|
+
try {
|
|
196
|
+
return await metadatas[codeHash].getMetadata();
|
|
197
|
+
} catch {
|
|
198
|
+
}
|
|
199
|
+
return null;
|
|
200
|
+
};
|