@layerzerolabs/lz-evm-oapp-v1 1.5.43 → 1.5.45
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/artifacts/contracts/libraries/LzLib.sol/LzLib.dbg.json +1 -1
- package/artifacts/contracts/lzApp/LzApp.sol/LzApp.dbg.json +1 -1
- package/artifacts/contracts/lzApp/NonblockingLzApp.sol/NonblockingLzApp.dbg.json +1 -1
- package/artifacts/contracts/mocks/LZEndpointMock.sol/LZEndpointMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LZEndpointMock.sol/LZEndpointMock.json +51 -2
- package/artifacts/contracts/util/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
- package/contracts/mocks/LZEndpointMock.sol +71 -5
- package/dist/index.cjs +50 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +80 -2
- package/dist/index.d.ts +80 -2
- package/dist/index.mjs +50 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
"stateMutability": "nonpayable",
|
|
15
15
|
"type": "constructor"
|
|
16
16
|
},
|
|
17
|
+
{
|
|
18
|
+
"inputs": [],
|
|
19
|
+
"name": "Empty",
|
|
20
|
+
"type": "error"
|
|
21
|
+
},
|
|
17
22
|
{
|
|
18
23
|
"anonymous": false,
|
|
19
24
|
"inputs": [
|
|
@@ -146,6 +151,24 @@
|
|
|
146
151
|
"stateMutability": "view",
|
|
147
152
|
"type": "function"
|
|
148
153
|
},
|
|
154
|
+
{
|
|
155
|
+
"inputs": [
|
|
156
|
+
{
|
|
157
|
+
"internalType": "uint16",
|
|
158
|
+
"name": "_dstEid",
|
|
159
|
+
"type": "uint16"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"internalType": "address",
|
|
163
|
+
"name": "_dstAddress",
|
|
164
|
+
"type": "address"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
"name": "deliverPackets",
|
|
168
|
+
"outputs": [],
|
|
169
|
+
"stateMutability": "nonpayable",
|
|
170
|
+
"type": "function"
|
|
171
|
+
},
|
|
149
172
|
{
|
|
150
173
|
"inputs": [
|
|
151
174
|
{
|
|
@@ -477,6 +500,19 @@
|
|
|
477
500
|
"stateMutability": "view",
|
|
478
501
|
"type": "function"
|
|
479
502
|
},
|
|
503
|
+
{
|
|
504
|
+
"inputs": [],
|
|
505
|
+
"name": "isSyncDeliver",
|
|
506
|
+
"outputs": [
|
|
507
|
+
{
|
|
508
|
+
"internalType": "bool",
|
|
509
|
+
"name": "",
|
|
510
|
+
"type": "bool"
|
|
511
|
+
}
|
|
512
|
+
],
|
|
513
|
+
"stateMutability": "view",
|
|
514
|
+
"type": "function"
|
|
515
|
+
},
|
|
480
516
|
{
|
|
481
517
|
"inputs": [
|
|
482
518
|
{
|
|
@@ -897,6 +933,19 @@
|
|
|
897
933
|
"stateMutability": "nonpayable",
|
|
898
934
|
"type": "function"
|
|
899
935
|
},
|
|
936
|
+
{
|
|
937
|
+
"inputs": [
|
|
938
|
+
{
|
|
939
|
+
"internalType": "bool",
|
|
940
|
+
"name": "_isSync",
|
|
941
|
+
"type": "bool"
|
|
942
|
+
}
|
|
943
|
+
],
|
|
944
|
+
"name": "setSyncDeliver",
|
|
945
|
+
"outputs": [],
|
|
946
|
+
"stateMutability": "nonpayable",
|
|
947
|
+
"type": "function"
|
|
948
|
+
},
|
|
900
949
|
{
|
|
901
950
|
"inputs": [
|
|
902
951
|
{
|
|
@@ -932,8 +981,8 @@
|
|
|
932
981
|
"type": "function"
|
|
933
982
|
}
|
|
934
983
|
],
|
|
935
|
-
"bytecode": "0x6080604052600c805461ffff19166101011790553480156200002057600080fd5b5060405162003b7f38038062003b7f83398101604081905262000043916200013d565b6001805461ffff191661ffff83161781556040805160a0810182526402540be400808252602080830191909152678ac7230489e8000082840152606460608301526080909101929092527402540be400000000000000000000000002540be4006002557801000000000000006400000000000000008ac7230489e800006003558051808201909152670de0b6b3a76400008082526103e891909201819052600491909155600555662386f26fc100006006556200012662030d4060408051600160f01b602082015260228082019390935281518082039093018352604201905290565b6007906200013590826200020f565b5050620002db565b6000602082840312156200015057600080fd5b815161ffff811681146200016357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200019557607f821691505b602082108103620001b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020a57600081815260208120601f850160051c81016020861015620001e55750805b601f850160051c820191505b818110156200020657828155600101620001f1565b5050505b505050565b81516001600160401b038111156200022b576200022b6200016a565b62000243816200023c845462000180565b84620001bc565b602080601f8311600181146200027b5760008415620002625750858301515b600019600386901b1c1916600185901b17855562000206565b600085815260208120601f198616915b82811015620002ac578886015182559484019460019091019084016200028b565b5085821015620002cb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61389480620002eb6000396000f3fe60806040526004361061026a5760003560e01c80639924d33b11610153578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb146109b2578063fbba623b146109c8578063fdc07c70146109e857600080fd5b8063e97a448a14610964578063f5ecbdbc1461098057600080fd5b8063d23104f1116100b0578063d23104f11461090a578063da1a7c9a146102c4578063db14f3051461094957600080fd5b8063ca066b35146108c8578063cbed8b9c146108e957600080fd5b8063b6d9ef6011610122578063c2fa481311610107578063c2fa481314610852578063c580310014610872578063c81b383a1461088557600080fd5b8063b6d9ef60146107c4578063c08f15a1146107e457600080fd5b80639924d33b1461070f5780639c729da1146104e3578063aaff5f1614610762578063b20864991461078257600080fd5b80633408e470116101e657806371ba2fd6116101b55780637a1457481161019a5780637a145748146105e25780637f6df8e61461061b578063907c5e7e1461064957600080fd5b806371ba2fd6146104e357806376a386dc1461052857600080fd5b80633408e4701461046a5780633e0dd83e1461048357806340a7bb10146104a357806342d65a8d146104c357600080fd5b806310ddb1371161023d578063240de27711610222578063240de27714610357578063272bd3841461037d5780632c365e251461039f57600080fd5b806310ddb137146102a457806312a9ee6b1461032857600080fd5b806307d3277f1461026f57806307e0db17146102a4578063096568f6146102c45780630eaf6ea6146102f8575b600080fd5b34801561027b57600080fd5b5060045460055461028a919082565b604080519283526020830191909152015b60405180910390f35b3480156102b057600080fd5b506102c26102bf366004612969565b50565b005b3480156102d057600080fd5b506102e56102df3660046129a6565b50600190565b60405161ffff909116815260200161029b565b34801561030457600080fd5b50610318610313366004612a0c565b610a08565b604051901515815260200161029b565b34801561033457600080fd5b50610348610343366004612b39565b610a4e565b60405161029b93929190612bf4565b34801561036357600080fd5b506102c2610372366004612c3c565b600491909155600555565b34801561038957600080fd5b50610392610b6a565b60405161029b9190612c5e565b3480156103ab57600080fd5b506102c26103ba366004612ca9565b6fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000094861685021760025560038054939095167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921767ffffffffffffffff9182169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b34801561047657600080fd5b5060015461ffff166102e5565b34801561048f57600080fd5b506001546103189062010000900460ff1681565b3480156104af57600080fd5b5061028a6104be366004612d0e565b610bf8565b3480156104cf57600080fd5b506102c26104de366004612a0c565b610cf7565b3480156104ef57600080fd5b506105036104fe3660046129a6565b503090565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b34801561053457600080fd5b506105a7610543366004612daf565b600a60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff90921660208401529082015260600161029b565b3480156105ee57600080fd5b506106026105fd366004612dfd565b610e9c565b60405167ffffffffffffffff909116815260200161029b565b34801561062757600080fd5b5061063b610636366004612a0c565b610ee2565b60405190815260200161029b565b34801561065557600080fd5b506002546003546106c1916fffffffffffffffffffffffffffffffff80821692700100000000000000000000000000000000928390048216929181169167ffffffffffffffff908204811691780100000000000000000000000000000000000000000000000090041685565b604080516fffffffffffffffffffffffffffffffff96871681529486166020860152929094169183019190915267ffffffffffffffff9081166060830152909116608082015260a00161029b565b34801561071b57600080fd5b5061060261072a366004612daf565b6008602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b34801561076e57600080fd5b506102c261077d366004612e34565b610f1e565b34801561078e57600080fd5b5061060261079d366004612dfd565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b3480156107d057600080fd5b506102c26107df366004612eb5565b600655565b3480156107f057600080fd5b506102c26107ff366004612ece565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561085e57600080fd5b506102c261086d366004612eec565b6111ba565b6102c2610880366004612f9c565b611b53565b34801561089157600080fd5b506105036108a03660046129a6565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156108d457600080fd5b50610318600c54610100900460ff1660021490565b3480156108f557600080fd5b506102c2610904366004613064565b50505050565b34801561091657600080fd5b506102c2600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b34801561095557600080fd5b506001546102e59061ffff1681565b34801561097057600080fd5b50610318600c5460ff1660021490565b34801561098c57600080fd5b5061039261099b3660046130cc565b604080516020810190915260008152949350505050565b3480156109be57600080fd5b5061063b60065481565b3480156109d457600080fd5b506102c26109e3366004613119565b612251565b3480156109f457600080fd5b50610602610a03366004612a0c565b612261565b61ffff83166000908152600a60205260408082209051829190610a2e9086908690613156565b9081526040519081900360200190206001015415159150505b9392505050565b600b6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610a8557600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610ae790613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1390613166565b8015610b605780601f10610b3557610100808354040283529160200191610b60565b820191906000526020600020905b815481529060010190602001808311610b4357829003601f168201915b5050505050905083565b60078054610b7790613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba390613166565b8015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b505050505081565b600080600080845111610c955760078054610c1290613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3e90613166565b8015610c8b5780601f10610c6057610100808354040283529160200191610c8b565b820191906000526020600020905b815481529060010190602001808311610c6e57829003601f168201915b5050505050610c97565b835b90506000610caa8960018a8a51866122a7565b90506000610cbb87836006546124dc565b905086610ccb5780945084610cd0565b809350835b50600654610cde83876131e8565b610ce891906131e8565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610d1a9085908590613156565b9081526040519081900360200190206001810154909150610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f616460448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c65720000006044820152606401610d93565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610e8990869086908690613244565b60405180910390a1610904848484612519565b61ffff8216600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff165b92915050565b61ffff83166000908152600b60205260408082209051610f059085908590613156565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a60205260408082209051610f419087908790613156565b9081526040519081900360200190206001810154909150610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f61646044820152606401610d93565b805467ffffffffffffffff1682148015610ff2575080600101548383604051610fe8929190613156565b6040518091039020145b611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f616400006044820152606401610d93565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526008602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16926110cc9089908990613156565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d35679061113f908b908b908b9087908c908c90600401613262565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d88888884866040516111a89594939291906132b0565b60405180910390a15050505050505050565b600c54610100900460ff16600114611253576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e747260448201527f616e6379000000000000000000000000000000000000000000000000000000006064820152608401610d93565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff88166000908152600a602052604080822090516112a2908a908a90613156565b90815260200160405180910390209050600860008a61ffff1661ffff16815260200190815260200160002088886040516112dd929190613156565b90815260405190819003602001902080546000906113049067ffffffffffffffff16613306565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e63650000000000006044820152606401610d93565b6001810154156117795761ffff89166000908152600b602052604080822090516113d2908b908b90613156565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152508254909150156116d3578154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff9094169390931717825560408301518392918201906114f8908261337c565b50505060005b825461150c90600190613496565b81101561162157828181548110611525576115256134a9565b90600052602060002090600202018382600161154191906131e8565b81548110611551576115516134a9565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff1690920291909117815560018082019061160a908401826134d8565b5090505080806116199061360d565b9150506114fe565b508082600081548110611636576116366134a9565b6000918252602091829020835160029092020180549284015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90921691909117919091178155604082015160018201906116ca908261337c565b50905050611772565b8154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff90941693909317178255604083015183929182019061176e908261337c565b5050505b5050611b1c565b60015462010000900460ff16156118fc5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184846040516117d4929190613156565b604080519182900390912090915261ffff8b166000908152600a6020528190209051611803908b908b90613156565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db916118c7918c918c918c918c918c918b918b9190613645565b60405180910390a1600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055611b1c565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567908690611958908d908d908d908c908b908b90600401613262565b600060405180830381600088803b15801561197257600080fd5b5087f193505050508015611984575060015b611b1c573d8080156119b2576040519150601f19603f3d011682016040523d82523d6000602084013e6119b7565b606091505b5060405180606001604052808585905067ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018585604051611a02929190613156565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611a31908c908c90613156565b908152604080519182900360209081018320845181549286015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931667ffffffffffffffff909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db90611aea908c908c908c908c908c908b908b908a90613645565b60405180910390a150600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690555b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905550505050505050565b600c5460ff16600114611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e6360448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610d93565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558551602814611ca4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652060448201527f616464726573732073697a6500000000000000000000000000000000000000006064820152608401610d93565b601486015173ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260409020541680611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610d93565b600080845111611df85760078054611d7590613166565b80601f0160208091040260200160405190810160405280929190818152602001828054611da190613166565b8015611dee5780601f10611dc357610100808354040283529160200191611dee565b820191906000526020600020905b815481529060010190602001808311611dd157829003601f168201915b5050505050611dfa565b835b90506000611e588b338b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505073ffffffffffffffffffffffffffffffffffffffff8a16151586610bf8565b50905080341015611eeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610d93565b61ffff8b166000908152600960209081526040808320338452909152812080548290611f209067ffffffffffffffff16613306565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055905060008234611f559190613496565b905080156120295760008973ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fb7576040519150601f19603f3d011682016040523d82523d6000602084013e611fbc565b606091505b5050905080612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e64006044820152606401610d93565b505b600080600061203787612772565b919550935091505081156120f35760008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d806000811461209f576040519150601f19603f3d011682016040523d82523d6000602084013e6120a4565b606091505b50509050806120f157604051839073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b821660208401528b901b166034820152600090604801604051602081830303815290604052905060008f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090508973ffffffffffffffffffffffffffffffffffffffff1663c2fa4813600160009054906101000a900461ffff16848e8b8a876040518763ffffffff1660e01b81526004016121e0969594939291906136c5565b600060405180830381600087803b1580156121fa57600080fd5b505af115801561220e573d6000803e3d6000fd5b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050505050505050505050505050565b600761225d828261337c565b5050565b61ffff831660009081526008602052604080822090516122849085908590613156565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b6000806000806122b685612772565b5092509250925060008361ffff1660020361237c576003546fffffffffffffffffffffffffffffffff1682111561236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2060448201527f6c617267652000000000000000000000000000000000000000000000000000006064820152608401610d93565b61237982826131e8565b90505b6003546000906123ab908590700100000000000000000000000000000000900467ffffffffffffffff166131e8565b6002546123de919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16613726565b90506123ea81836131e8565b6002549092506000906402540be40090612416906fffffffffffffffffffffffffffffffff1685613726565b612420919061376c565b6002546003549192506000916402540be400916fffffffffffffffffffffffffffffffff8082169261248f92780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169170010000000000000000000000000000000090910416613780565b6124999190613780565b6124a391906137b4565b6fffffffffffffffffffffffffffffffff1690506124c1818b613726565b6124cb90836131e8565b9d9c50505050505050505050505050565b600083156124ed5750600454610a47565b600554612710906124fe84866131e8565b6125089190613726565b612512919061376c565b9050610a47565b61ffff83166000908152600b6020526040808220905161253c9085908590613156565b908152602001604051809103902090505b805415610904578054600090829061256790600190613496565b81548110612577576125776134a9565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff740100000000000000000000000000000000000000009091041693830193909352600183018054929392918401916125ef90613166565b80601f016020809104026020016040519081016040528092919081815260200182805461261b90613166565b80156126685780601f1061263d57610100808354040283529160200191612668565b820191906000526020600020905b81548152906001019060200180831161264b57829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b81526004016126bf9594939291906137e3565b600060405180830381600087803b1580156126d957600080fd5b505af11580156126ed573d6000803e3d6000fd5b50505050818054806127015761270161382f565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff00000000000000000000000000000000000000000000000000000000168155906127686001830182612904565b505090555061254d565b600080600080845160221480612789575060428551115b6127ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646170746572506172616d7300000000000000000000006044820152606401610d93565b60028501519350602285015192508361ffff166001148061281457508361ffff166002145b61287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e737570706f727465642074785479706500000000000000000000000000006044820152606401610d93565b600083116128e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f47617320746f6f206c6f770000000000000000000000000000000000000000006044820152606401610d93565b8361ffff166002036128fd575050604283015160568401515b9193509193565b50805461291090613166565b6000825580601f10612920575050565b601f0160209004906000526020600020908101906102bf91905b8082111561294e576000815560010161293a565b5090565b803561ffff8116811461296457600080fd5b919050565b60006020828403121561297b57600080fd5b610a4782612952565b73ffffffffffffffffffffffffffffffffffffffff811681146102bf57600080fd5b6000602082840312156129b857600080fd5b8135610a4781612984565b60008083601f8401126129d557600080fd5b50813567ffffffffffffffff8111156129ed57600080fd5b602083019150836020828501011115612a0557600080fd5b9250929050565b600080600060408486031215612a2157600080fd5b612a2a84612952565b9250602084013567ffffffffffffffff811115612a4657600080fd5b612a52868287016129c3565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612a9f57600080fd5b813567ffffffffffffffff80821115612aba57612aba612a5f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b0057612b00612a5f565b81604052838152866020858801011115612b1957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612b4e57600080fd5b612b5784612952565b9250602084013567ffffffffffffffff811115612b7357600080fd5b612b7f86828701612a8e565b925050604084013590509250925092565b6000815180845260005b81811015612bb657602081850181015186830182015201612b9a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000612c336060830184612b90565b95945050505050565b60008060408385031215612c4f57600080fd5b50508035926020909101359150565b602081526000610a476020830184612b90565b80356fffffffffffffffffffffffffffffffff8116811461296457600080fd5b803567ffffffffffffffff8116811461296457600080fd5b600080600080600060a08688031215612cc157600080fd5b612cca86612c71565b9450612cd860208701612c71565b9350612ce660408701612c71565b9250612cf460608701612c91565b9150612d0260808701612c91565b90509295509295909350565b600080600080600060a08688031215612d2657600080fd5b612d2f86612952565b94506020860135612d3f81612984565b9350604086013567ffffffffffffffff80821115612d5c57600080fd5b612d6889838a01612a8e565b9450606088013591508115158214612d7f57600080fd5b90925060808701359080821115612d9557600080fd5b50612da288828901612a8e565b9150509295509295909350565b60008060408385031215612dc257600080fd5b612dcb83612952565b9150602083013567ffffffffffffffff811115612de757600080fd5b612df385828601612a8e565b9150509250929050565b60008060408385031215612e1057600080fd5b612e1983612952565b91506020830135612e2981612984565b809150509250929050565b600080600080600060608688031215612e4c57600080fd5b612e5586612952565b9450602086013567ffffffffffffffff80821115612e7257600080fd5b612e7e89838a016129c3565b90965094506040880135915080821115612e9757600080fd5b50612ea4888289016129c3565b969995985093965092949392505050565b600060208284031215612ec757600080fd5b5035919050565b60008060408385031215612ee157600080fd5b8235612e1981612984565b60008060008060008060008060c0898b031215612f0857600080fd5b612f1189612952565b9750602089013567ffffffffffffffff80821115612f2e57600080fd5b612f3a8c838d016129c3565b909950975060408b01359150612f4f82612984565b819650612f5e60608c01612c91565b955060808b0135945060a08b0135915080821115612f7b57600080fd5b50612f888b828c016129c3565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a031215612fb757600080fd5b612fc088612952565b9650602088013567ffffffffffffffff80821115612fdd57600080fd5b612fe98b838c01612a8e565b975060408a0135915080821115612fff57600080fd5b61300b8b838c016129c3565b909750955060608a0135915061302082612984565b90935060808901359061303282612984565b90925060a0890135908082111561304857600080fd5b506130558a828b01612a8e565b91505092959891949750929550565b6000806000806080858703121561307a57600080fd5b61308385612952565b935061309160208601612952565b925060408501359150606085013567ffffffffffffffff8111156130b457600080fd5b6130c087828801612a8e565b91505092959194509250565b600080600080608085870312156130e257600080fd5b6130eb85612952565b93506130f960208601612952565b9250604085013561310981612984565b9396929550929360600135925050565b60006020828403121561312b57600080fd5b813567ffffffffffffffff81111561314257600080fd5b61314e84828501612a8e565b949350505050565b8183823760009101908152919050565b600181811c9082168061317a57607f821691505b6020821081036131b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610edc57610edc6131b9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff84168152604060208201526000612c336040830184866131fb565b61ffff871681526080602082015260006132806080830187896131fb565b67ffffffffffffffff8616604084015282810360608401526132a38185876131fb565b9998505050505050505050565b61ffff861681526080602082015260006132ce6080830186886131fb565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600067ffffffffffffffff808316818103613323576133236131b9565b6001019392505050565b601f82111561337757600081815260208120601f850160051c810160208610156133545750805b601f850160051c820191505b8181101561337357828155600101613360565b5050505b505050565b815167ffffffffffffffff81111561339657613396612a5f565b6133aa816133a48454613166565b8461332d565b602080601f8311600181146133fd57600084156133c75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613373565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561344a5788860151825594840194600190910190840161342b565b508582101561348657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610edc57610edc6131b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181036134e3575050565b6134ed8254613166565b67ffffffffffffffff81111561350557613505612a5f565b613513816133a48454613166565b6000601f821160018114613565576000831561352f5750848201545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613606565b6000858152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841690600086815260209020845b838110156135bd578286015482556001958601959091019060200161359d565b50858310156135f957818501547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363e5761363e6131b9565b5060010190565b61ffff8916815260c06020820152600061366360c08301898b6131fb565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015282810360808401526136a28186886131fb565b905082810360a08401526136b68185612b90565b9b9a5050505050505050505050565b61ffff8716815260c0602082015260006136e260c0830188612b90565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526132a38185612b90565b8082028115828204841417610edc57610edc6131b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261377b5761377b61373d565b500490565b6fffffffffffffffffffffffffffffffff8181168382160280821691908281146137ac576137ac6131b9565b505092915050565b60006fffffffffffffffffffffffffffffffff808416806137d7576137d761373d565b92169190910492915050565b61ffff861681526080602082015260006138016080830186886131fb565b67ffffffffffffffff8516604084015282810360608401526138238185612b90565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122040b56336c32751d13680f02df73e17ee6bf2ebdf5348c09ceb71c0fc0300044164736f6c63430008130033",
|
|
936
|
-
"deployedBytecode": "0x60806040526004361061026a5760003560e01c80639924d33b11610153578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb146109b2578063fbba623b146109c8578063fdc07c70146109e857600080fd5b8063e97a448a14610964578063f5ecbdbc1461098057600080fd5b8063d23104f1116100b0578063d23104f11461090a578063da1a7c9a146102c4578063db14f3051461094957600080fd5b8063ca066b35146108c8578063cbed8b9c146108e957600080fd5b8063b6d9ef6011610122578063c2fa481311610107578063c2fa481314610852578063c580310014610872578063c81b383a1461088557600080fd5b8063b6d9ef60146107c4578063c08f15a1146107e457600080fd5b80639924d33b1461070f5780639c729da1146104e3578063aaff5f1614610762578063b20864991461078257600080fd5b80633408e470116101e657806371ba2fd6116101b55780637a1457481161019a5780637a145748146105e25780637f6df8e61461061b578063907c5e7e1461064957600080fd5b806371ba2fd6146104e357806376a386dc1461052857600080fd5b80633408e4701461046a5780633e0dd83e1461048357806340a7bb10146104a357806342d65a8d146104c357600080fd5b806310ddb1371161023d578063240de27711610222578063240de27714610357578063272bd3841461037d5780632c365e251461039f57600080fd5b806310ddb137146102a457806312a9ee6b1461032857600080fd5b806307d3277f1461026f57806307e0db17146102a4578063096568f6146102c45780630eaf6ea6146102f8575b600080fd5b34801561027b57600080fd5b5060045460055461028a919082565b604080519283526020830191909152015b60405180910390f35b3480156102b057600080fd5b506102c26102bf366004612969565b50565b005b3480156102d057600080fd5b506102e56102df3660046129a6565b50600190565b60405161ffff909116815260200161029b565b34801561030457600080fd5b50610318610313366004612a0c565b610a08565b604051901515815260200161029b565b34801561033457600080fd5b50610348610343366004612b39565b610a4e565b60405161029b93929190612bf4565b34801561036357600080fd5b506102c2610372366004612c3c565b600491909155600555565b34801561038957600080fd5b50610392610b6a565b60405161029b9190612c5e565b3480156103ab57600080fd5b506102c26103ba366004612ca9565b6fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000094861685021760025560038054939095167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921767ffffffffffffffff9182169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b34801561047657600080fd5b5060015461ffff166102e5565b34801561048f57600080fd5b506001546103189062010000900460ff1681565b3480156104af57600080fd5b5061028a6104be366004612d0e565b610bf8565b3480156104cf57600080fd5b506102c26104de366004612a0c565b610cf7565b3480156104ef57600080fd5b506105036104fe3660046129a6565b503090565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b34801561053457600080fd5b506105a7610543366004612daf565b600a60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff90921660208401529082015260600161029b565b3480156105ee57600080fd5b506106026105fd366004612dfd565b610e9c565b60405167ffffffffffffffff909116815260200161029b565b34801561062757600080fd5b5061063b610636366004612a0c565b610ee2565b60405190815260200161029b565b34801561065557600080fd5b506002546003546106c1916fffffffffffffffffffffffffffffffff80821692700100000000000000000000000000000000928390048216929181169167ffffffffffffffff908204811691780100000000000000000000000000000000000000000000000090041685565b604080516fffffffffffffffffffffffffffffffff96871681529486166020860152929094169183019190915267ffffffffffffffff9081166060830152909116608082015260a00161029b565b34801561071b57600080fd5b5061060261072a366004612daf565b6008602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b34801561076e57600080fd5b506102c261077d366004612e34565b610f1e565b34801561078e57600080fd5b5061060261079d366004612dfd565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b3480156107d057600080fd5b506102c26107df366004612eb5565b600655565b3480156107f057600080fd5b506102c26107ff366004612ece565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561085e57600080fd5b506102c261086d366004612eec565b6111ba565b6102c2610880366004612f9c565b611b53565b34801561089157600080fd5b506105036108a03660046129a6565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156108d457600080fd5b50610318600c54610100900460ff1660021490565b3480156108f557600080fd5b506102c2610904366004613064565b50505050565b34801561091657600080fd5b506102c2600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b34801561095557600080fd5b506001546102e59061ffff1681565b34801561097057600080fd5b50610318600c5460ff1660021490565b34801561098c57600080fd5b5061039261099b3660046130cc565b604080516020810190915260008152949350505050565b3480156109be57600080fd5b5061063b60065481565b3480156109d457600080fd5b506102c26109e3366004613119565b612251565b3480156109f457600080fd5b50610602610a03366004612a0c565b612261565b61ffff83166000908152600a60205260408082209051829190610a2e9086908690613156565b9081526040519081900360200190206001015415159150505b9392505050565b600b6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610a8557600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610ae790613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1390613166565b8015610b605780601f10610b3557610100808354040283529160200191610b60565b820191906000526020600020905b815481529060010190602001808311610b4357829003601f168201915b5050505050905083565b60078054610b7790613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba390613166565b8015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b505050505081565b600080600080845111610c955760078054610c1290613166565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3e90613166565b8015610c8b5780601f10610c6057610100808354040283529160200191610c8b565b820191906000526020600020905b815481529060010190602001808311610c6e57829003601f168201915b5050505050610c97565b835b90506000610caa8960018a8a51866122a7565b90506000610cbb87836006546124dc565b905086610ccb5780945084610cd0565b809350835b50600654610cde83876131e8565b610ce891906131e8565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610d1a9085908590613156565b9081526040519081900360200190206001810154909150610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f616460448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c65720000006044820152606401610d93565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610e8990869086908690613244565b60405180910390a1610904848484612519565b61ffff8216600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff165b92915050565b61ffff83166000908152600b60205260408082209051610f059085908590613156565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a60205260408082209051610f419087908790613156565b9081526040519081900360200190206001810154909150610fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f61646044820152606401610d93565b805467ffffffffffffffff1682148015610ff2575080600101548383604051610fe8929190613156565b6040518091039020145b611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f616400006044820152606401610d93565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526008602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16926110cc9089908990613156565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d35679061113f908b908b908b9087908c908c90600401613262565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d88888884866040516111a89594939291906132b0565b60405180910390a15050505050505050565b600c54610100900460ff16600114611253576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e747260448201527f616e6379000000000000000000000000000000000000000000000000000000006064820152608401610d93565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff88166000908152600a602052604080822090516112a2908a908a90613156565b90815260200160405180910390209050600860008a61ffff1661ffff16815260200190815260200160002088886040516112dd929190613156565b90815260405190819003602001902080546000906113049067ffffffffffffffff16613306565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e63650000000000006044820152606401610d93565b6001810154156117795761ffff89166000908152600b602052604080822090516113d2908b908b90613156565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152508254909150156116d3578154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff9094169390931717825560408301518392918201906114f8908261337c565b50505060005b825461150c90600190613496565b81101561162157828181548110611525576115256134a9565b90600052602060002090600202018382600161154191906131e8565b81548110611551576115516134a9565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff1690920291909117815560018082019061160a908401826134d8565b5090505080806116199061360d565b9150506114fe565b508082600081548110611636576116366134a9565b6000918252602091829020835160029092020180549284015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90921691909117919091178155604082015160018201906116ca908261337c565b50905050611772565b8154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff90941693909317178255604083015183929182019061176e908261337c565b5050505b5050611b1c565b60015462010000900460ff16156118fc5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184846040516117d4929190613156565b604080519182900390912090915261ffff8b166000908152600a6020528190209051611803908b908b90613156565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db916118c7918c918c918c918c918c918b918b9190613645565b60405180910390a1600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055611b1c565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567908690611958908d908d908d908c908b908b90600401613262565b600060405180830381600088803b15801561197257600080fd5b5087f193505050508015611984575060015b611b1c573d8080156119b2576040519150601f19603f3d011682016040523d82523d6000602084013e6119b7565b606091505b5060405180606001604052808585905067ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018585604051611a02929190613156565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611a31908c908c90613156565b908152604080519182900360209081018320845181549286015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931667ffffffffffffffff909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db90611aea908c908c908c908c908c908b908b908a90613645565b60405180910390a150600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690555b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905550505050505050565b600c5460ff16600114611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e6360448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610d93565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558551602814611ca4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652060448201527f616464726573732073697a6500000000000000000000000000000000000000006064820152608401610d93565b601486015173ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260409020541680611d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610d93565b600080845111611df85760078054611d7590613166565b80601f0160208091040260200160405190810160405280929190818152602001828054611da190613166565b8015611dee5780601f10611dc357610100808354040283529160200191611dee565b820191906000526020600020905b815481529060010190602001808311611dd157829003601f168201915b5050505050611dfa565b835b90506000611e588b338b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505073ffffffffffffffffffffffffffffffffffffffff8a16151586610bf8565b50905080341015611eeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610d93565b61ffff8b166000908152600960209081526040808320338452909152812080548290611f209067ffffffffffffffff16613306565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055905060008234611f559190613496565b905080156120295760008973ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fb7576040519150601f19603f3d011682016040523d82523d6000602084013e611fbc565b606091505b5050905080612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e64006044820152606401610d93565b505b600080600061203787612772565b919550935091505081156120f35760008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d806000811461209f576040519150601f19603f3d011682016040523d82523d6000602084013e6120a4565b606091505b50509050806120f157604051839073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b821660208401528b901b166034820152600090604801604051602081830303815290604052905060008f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090508973ffffffffffffffffffffffffffffffffffffffff1663c2fa4813600160009054906101000a900461ffff16848e8b8a876040518763ffffffff1660e01b81526004016121e0969594939291906136c5565b600060405180830381600087803b1580156121fa57600080fd5b505af115801561220e573d6000803e3d6000fd5b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050505050505050505050505050565b600761225d828261337c565b5050565b61ffff831660009081526008602052604080822090516122849085908590613156565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b6000806000806122b685612772565b5092509250925060008361ffff1660020361237c576003546fffffffffffffffffffffffffffffffff1682111561236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2060448201527f6c617267652000000000000000000000000000000000000000000000000000006064820152608401610d93565b61237982826131e8565b90505b6003546000906123ab908590700100000000000000000000000000000000900467ffffffffffffffff166131e8565b6002546123de919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16613726565b90506123ea81836131e8565b6002549092506000906402540be40090612416906fffffffffffffffffffffffffffffffff1685613726565b612420919061376c565b6002546003549192506000916402540be400916fffffffffffffffffffffffffffffffff8082169261248f92780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169170010000000000000000000000000000000090910416613780565b6124999190613780565b6124a391906137b4565b6fffffffffffffffffffffffffffffffff1690506124c1818b613726565b6124cb90836131e8565b9d9c50505050505050505050505050565b600083156124ed5750600454610a47565b600554612710906124fe84866131e8565b6125089190613726565b612512919061376c565b9050610a47565b61ffff83166000908152600b6020526040808220905161253c9085908590613156565b908152602001604051809103902090505b805415610904578054600090829061256790600190613496565b81548110612577576125776134a9565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff740100000000000000000000000000000000000000009091041693830193909352600183018054929392918401916125ef90613166565b80601f016020809104026020016040519081016040528092919081815260200182805461261b90613166565b80156126685780601f1061263d57610100808354040283529160200191612668565b820191906000526020600020905b81548152906001019060200180831161264b57829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b81526004016126bf9594939291906137e3565b600060405180830381600087803b1580156126d957600080fd5b505af11580156126ed573d6000803e3d6000fd5b50505050818054806127015761270161382f565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff00000000000000000000000000000000000000000000000000000000168155906127686001830182612904565b505090555061254d565b600080600080845160221480612789575060428551115b6127ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646170746572506172616d7300000000000000000000006044820152606401610d93565b60028501519350602285015192508361ffff166001148061281457508361ffff166002145b61287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e737570706f727465642074785479706500000000000000000000000000006044820152606401610d93565b600083116128e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f47617320746f6f206c6f770000000000000000000000000000000000000000006044820152606401610d93565b8361ffff166002036128fd575050604283015160568401515b9193509193565b50805461291090613166565b6000825580601f10612920575050565b601f0160209004906000526020600020908101906102bf91905b8082111561294e576000815560010161293a565b5090565b803561ffff8116811461296457600080fd5b919050565b60006020828403121561297b57600080fd5b610a4782612952565b73ffffffffffffffffffffffffffffffffffffffff811681146102bf57600080fd5b6000602082840312156129b857600080fd5b8135610a4781612984565b60008083601f8401126129d557600080fd5b50813567ffffffffffffffff8111156129ed57600080fd5b602083019150836020828501011115612a0557600080fd5b9250929050565b600080600060408486031215612a2157600080fd5b612a2a84612952565b9250602084013567ffffffffffffffff811115612a4657600080fd5b612a52868287016129c3565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612a9f57600080fd5b813567ffffffffffffffff80821115612aba57612aba612a5f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b0057612b00612a5f565b81604052838152866020858801011115612b1957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612b4e57600080fd5b612b5784612952565b9250602084013567ffffffffffffffff811115612b7357600080fd5b612b7f86828701612a8e565b925050604084013590509250925092565b6000815180845260005b81811015612bb657602081850181015186830182015201612b9a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000612c336060830184612b90565b95945050505050565b60008060408385031215612c4f57600080fd5b50508035926020909101359150565b602081526000610a476020830184612b90565b80356fffffffffffffffffffffffffffffffff8116811461296457600080fd5b803567ffffffffffffffff8116811461296457600080fd5b600080600080600060a08688031215612cc157600080fd5b612cca86612c71565b9450612cd860208701612c71565b9350612ce660408701612c71565b9250612cf460608701612c91565b9150612d0260808701612c91565b90509295509295909350565b600080600080600060a08688031215612d2657600080fd5b612d2f86612952565b94506020860135612d3f81612984565b9350604086013567ffffffffffffffff80821115612d5c57600080fd5b612d6889838a01612a8e565b9450606088013591508115158214612d7f57600080fd5b90925060808701359080821115612d9557600080fd5b50612da288828901612a8e565b9150509295509295909350565b60008060408385031215612dc257600080fd5b612dcb83612952565b9150602083013567ffffffffffffffff811115612de757600080fd5b612df385828601612a8e565b9150509250929050565b60008060408385031215612e1057600080fd5b612e1983612952565b91506020830135612e2981612984565b809150509250929050565b600080600080600060608688031215612e4c57600080fd5b612e5586612952565b9450602086013567ffffffffffffffff80821115612e7257600080fd5b612e7e89838a016129c3565b90965094506040880135915080821115612e9757600080fd5b50612ea4888289016129c3565b969995985093965092949392505050565b600060208284031215612ec757600080fd5b5035919050565b60008060408385031215612ee157600080fd5b8235612e1981612984565b60008060008060008060008060c0898b031215612f0857600080fd5b612f1189612952565b9750602089013567ffffffffffffffff80821115612f2e57600080fd5b612f3a8c838d016129c3565b909950975060408b01359150612f4f82612984565b819650612f5e60608c01612c91565b955060808b0135945060a08b0135915080821115612f7b57600080fd5b50612f888b828c016129c3565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a031215612fb757600080fd5b612fc088612952565b9650602088013567ffffffffffffffff80821115612fdd57600080fd5b612fe98b838c01612a8e565b975060408a0135915080821115612fff57600080fd5b61300b8b838c016129c3565b909750955060608a0135915061302082612984565b90935060808901359061303282612984565b90925060a0890135908082111561304857600080fd5b506130558a828b01612a8e565b91505092959891949750929550565b6000806000806080858703121561307a57600080fd5b61308385612952565b935061309160208601612952565b925060408501359150606085013567ffffffffffffffff8111156130b457600080fd5b6130c087828801612a8e565b91505092959194509250565b600080600080608085870312156130e257600080fd5b6130eb85612952565b93506130f960208601612952565b9250604085013561310981612984565b9396929550929360600135925050565b60006020828403121561312b57600080fd5b813567ffffffffffffffff81111561314257600080fd5b61314e84828501612a8e565b949350505050565b8183823760009101908152919050565b600181811c9082168061317a57607f821691505b6020821081036131b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610edc57610edc6131b9565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff84168152604060208201526000612c336040830184866131fb565b61ffff871681526080602082015260006132806080830187896131fb565b67ffffffffffffffff8616604084015282810360608401526132a38185876131fb565b9998505050505050505050565b61ffff861681526080602082015260006132ce6080830186886131fb565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600067ffffffffffffffff808316818103613323576133236131b9565b6001019392505050565b601f82111561337757600081815260208120601f850160051c810160208610156133545750805b601f850160051c820191505b8181101561337357828155600101613360565b5050505b505050565b815167ffffffffffffffff81111561339657613396612a5f565b6133aa816133a48454613166565b8461332d565b602080601f8311600181146133fd57600084156133c75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613373565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561344a5788860151825594840194600190910190840161342b565b508582101561348657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610edc57610edc6131b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181036134e3575050565b6134ed8254613166565b67ffffffffffffffff81111561350557613505612a5f565b613513816133a48454613166565b6000601f821160018114613565576000831561352f5750848201545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613606565b6000858152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841690600086815260209020845b838110156135bd578286015482556001958601959091019060200161359d565b50858310156135f957818501547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363e5761363e6131b9565b5060010190565b61ffff8916815260c06020820152600061366360c08301898b6131fb565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015282810360808401526136a28186886131fb565b905082810360a08401526136b68185612b90565b9b9a5050505050505050505050565b61ffff8716815260c0602082015260006136e260c0830188612b90565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526132a38185612b90565b8082028115828204841417610edc57610edc6131b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261377b5761377b61373d565b500490565b6fffffffffffffffffffffffffffffffff8181168382160280821691908281146137ac576137ac6131b9565b505092915050565b60006fffffffffffffffffffffffffffffffff808416806137d7576137d761373d565b92169190910492915050565b61ffff861681526080602082015260006138016080830186886131fb565b67ffffffffffffffff8516604084015282810360608401526138238185612b90565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122040b56336c32751d13680f02df73e17ee6bf2ebdf5348c09ceb71c0fc0300044164736f6c63430008130033",
|
|
984
|
+
"bytecode": "0x6080604052600c805461ffff1916610101179055600f805460ff191660011790553480156200002d57600080fd5b50604051620043963803806200439683398101604081905262000050916200014a565b6001805461ffff191661ffff83161781556040805160a0810182526402540be400808252602080830191909152678ac7230489e8000082840152606460608301526080909101929092527402540be400000000000000000000000002540be4006002557801000000000000006400000000000000008ac7230489e800006003558051808201909152670de0b6b3a76400008082526103e891909201819052600491909155600555662386f26fc100006006556200013362030d4060408051600160f01b602082015260228082019390935281518082039093018352604201905290565b6007906200014290826200021c565b5050620002e8565b6000602082840312156200015d57600080fd5b815161ffff811681146200017057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b0381111562000238576200023862000177565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61409e80620002f86000396000f3fe6080604052600436106102bb5760003560e01c80639c729da11161016e578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb14610a89578063fbba623b14610a9f578063fdc07c7014610abf57600080fd5b8063e97a448a14610a3b578063f5ecbdbc14610a5757600080fd5b8063d23104f1116100b0578063d23104f1146109e1578063da1a7c9a14610315578063db14f30514610a2057600080fd5b8063ca066b351461099f578063cbed8b9c146109c057600080fd5b8063ba27989f11610122578063c2fa481311610107578063c2fa481314610929578063c580310014610949578063c81b383a1461095c57600080fd5b8063ba27989f1461089b578063c08f15a1146108bb57600080fd5b8063b208649911610153578063b20864991461081f578063b48c8c6114610861578063b6d9ef601461087b57600080fd5b80639c729da114610580578063aaff5f16146107ff57600080fd5b80633e0dd83e1161021c57806376a386dc116101d05780637f6df8e6116101b55780637f6df8e6146106b8578063907c5e7e146106e65780639924d33b146107ac57600080fd5b806376a386dc146105c55780637a1457481461067f57600080fd5b806342d65a8d1161020157806342d65a8d146105145780634fd801531461053457806371ba2fd61461058057600080fd5b80633e0dd83e146104d457806340a7bb10146104f457600080fd5b806312a9ee6b11610273578063272bd38411610258578063272bd384146103ce5780632c365e25146103f05780633408e470146104bb57600080fd5b806312a9ee6b14610379578063240de277146103a857600080fd5b8063096568f6116102a4578063096568f6146103155780630eaf6ea61461034957806310ddb137146102f557600080fd5b806307d3277f146102c057806307e0db17146102f5575b600080fd5b3480156102cc57600080fd5b506004546005546102db919082565b604080519283526020830191909152015b60405180910390f35b34801561030157600080fd5b50610313610310366004613096565b50565b005b34801561032157600080fd5b506103366103303660046130d3565b50600190565b60405161ffff90911681526020016102ec565b34801561035557600080fd5b50610369610364366004613139565b610adf565b60405190151581526020016102ec565b34801561038557600080fd5b50610399610394366004613266565b610b25565b6040516102ec9392919061332b565b3480156103b457600080fd5b506103136103c3366004613373565b600491909155600555565b3480156103da57600080fd5b506103e3610c41565b6040516102ec9190613395565b3480156103fc57600080fd5b5061031361040b3660046133e0565b6fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000094861685021760025560038054939095167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921767ffffffffffffffff9182169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b3480156104c757600080fd5b5060015461ffff16610336565b3480156104e057600080fd5b506001546103699062010000900460ff1681565b34801561050057600080fd5b506102db61050f366004613455565b610ccf565b34801561052057600080fd5b5061031361052f366004613139565b610dce565b34801561054057600080fd5b5061031361054f3660046134ed565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b34801561058c57600080fd5b506105a061059b3660046130d3565b503090565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b3480156105d157600080fd5b506106446105e0366004613508565b600a60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff9092166020840152908201526060016102ec565b34801561068b57600080fd5b5061069f61069a366004613556565b610f73565b60405167ffffffffffffffff90911681526020016102ec565b3480156106c457600080fd5b506106d86106d3366004613139565b610fb9565b6040519081526020016102ec565b3480156106f257600080fd5b5060025460035461075e916fffffffffffffffffffffffffffffffff80821692700100000000000000000000000000000000928390048216929181169167ffffffffffffffff908204811691780100000000000000000000000000000000000000000000000090041685565b604080516fffffffffffffffffffffffffffffffff96871681529486166020860152929094169183019190915267ffffffffffffffff9081166060830152909116608082015260a0016102ec565b3480156107b857600080fd5b5061069f6107c7366004613508565b6008602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b34801561080b57600080fd5b5061031361081a36600461358d565b610ff5565b34801561082b57600080fd5b5061069f61083a366004613556565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b34801561086d57600080fd5b50600f546103699060ff1681565b34801561088757600080fd5b5061031361089636600461360e565b600655565b3480156108a757600080fd5b506103136108b6366004613556565b611291565b3480156108c757600080fd5b506103136108d6366004613627565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561093557600080fd5b50610313610944366004613645565b61157b565b6103136109573660046136f5565b611f14565b34801561096857600080fd5b506105a06109773660046130d3565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156109ab57600080fd5b50610369600c54610100900460ff1660021490565b3480156109cc57600080fd5b506103136109db3660046137bd565b50505050565b3480156109ed57600080fd5b50610313600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b348015610a2c57600080fd5b506001546103369061ffff1681565b348015610a4757600080fd5b50610369600c5460ff1660021490565b348015610a6357600080fd5b506103e3610a72366004613825565b604080516020810190915260008152949350505050565b348015610a9557600080fd5b506106d860065481565b348015610aab57600080fd5b50610313610aba366004613872565b61253e565b348015610acb57600080fd5b5061069f610ada366004613139565b61254e565b61ffff83166000908152600a60205260408082209051829190610b0590869086906138af565b9081526040519081900360200190206001015415159150505b9392505050565b600b6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610b5c57600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610bbe906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906138bf565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905083565b60078054610c4e906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a906138bf565b8015610cc75780601f10610c9c57610100808354040283529160200191610cc7565b820191906000526020600020905b815481529060010190602001808311610caa57829003601f168201915b505050505081565b600080600080845111610d6c5760078054610ce9906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d15906138bf565b8015610d625780601f10610d3757610100808354040283529160200191610d62565b820191906000526020600020905b815481529060010190602001808311610d4557829003601f168201915b5050505050610d6e565b835b90506000610d818960018a8a5186612594565b90506000610d9287836006546127c9565b905086610da25780945084610da7565b809350835b50600654610db58387613941565b610dbf9190613941565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610df190859085906138af565b9081526040519081900360200190206001810154909150610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f616460448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c65720000006044820152606401610e6a565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610f609086908690869061399d565b60405180910390a16109db848484612806565b61ffff8216600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff165b92915050565b61ffff83166000908152600b60205260408082209051610fdc90859085906138af565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a6020526040808220905161101890879087906138af565b9081526040519081900360200190206001810154909150611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f61646044820152606401610e6a565b805467ffffffffffffffff16821480156110c95750806001015483836040516110bf9291906138af565b6040518091039020145b61112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f616400006044820152606401610e6a565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526008602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16926111a390899089906138af565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d356790611216908b908b908b9087908c908c906004016139bb565b600060405180830381600087803b15801561123057600080fd5b505af1158015611244573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d888888848660405161127f959493929190613a09565b60405180910390a15050505050505050565b61ffff82166000908152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff851684529091528120906112eb8254600f81810b700100000000000000000000000000000000909204900b0390565b90505b80156109db57806112fe81613a5f565b915050600061130c83612a5f565b6000818152600e60209081526040808320815160c08101909252805461ffff168252600181018054959650939491939092840191611349906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054611375906138bf565b80156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b5050509183525050600282015473ffffffffffffffffffffffffffffffffffffffff8116602083015274010000000000000000000000000000000000000000900467ffffffffffffffff16604082015260038201546060820152600482018054608090920191611431906138bf565b80601f016020809104026020016040519081016040528092919081815260200182805461145d906138bf565b80156114aa5780601f1061147f576101008083540402835291602001916114aa565b820191906000526020600020905b81548152906001019060200180831161148d57829003601f168201915b505050919092525050506040808201805173ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152908490205485519186015193516060870151608088015160a089015197517fc2fa48130000000000000000000000000000000000000000000000000000000081529899509290941696879663c2fa4813966115419690949092909190600401613a94565b600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050505050506112ee565b600c54610100900460ff16600114611614576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e747260448201527f616e6379000000000000000000000000000000000000000000000000000000006064820152608401610e6a565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff88166000908152600a60205260408082209051611663908a908a906138af565b90815260200160405180910390209050600860008a61ffff1661ffff168152602001908152602001600020888860405161169e9291906138af565b90815260405190819003602001902080546000906116c59067ffffffffffffffff16613af5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e63650000000000006044820152606401610e6a565b600181015415611b3a5761ffff89166000908152600b60205260408082209051611793908b908b906138af565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250825490915015611a94578154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff9094169390931717825560408301518392918201906118b99082613b6b565b50505060005b82546118cd90600190613c85565b8110156119e2578281815481106118e6576118e6613c98565b9060005260206000209060020201838260016119029190613941565b8154811061191257611912613c98565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff169092029190911781556001808201906119cb90840182613cc7565b5090505080806119da90613dfc565b9150506118bf565b5080826000815481106119f7576119f7613c98565b6000918252602091829020835160029092020180549284015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff9092169190911791909117815560408201516001820190611a8b9082613b6b565b50905050611b33565b8154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff909416939093171782556040830151839291820190611b2f9082613b6b565b5050505b5050611edd565b60015462010000900460ff1615611cbd5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018484604051611b959291906138af565b604080519182900390912090915261ffff8b166000908152600a6020528190209051611bc4908b908b906138af565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db91611c88918c918c918c918c918c918b918b9190613e34565b60405180910390a1600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055611edd565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567908690611d19908d908d908d908c908b908b906004016139bb565b600060405180830381600088803b158015611d3357600080fd5b5087f193505050508015611d45575060015b611edd573d808015611d73576040519150601f19603f3d011682016040523d82523d6000602084013e611d78565b606091505b5060405180606001604052808585905067ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018585604051611dc39291906138af565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611df2908c908c906138af565b908152604080519182900360209081018320845181549286015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931667ffffffffffffffff909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db90611eab908c908c908c908c908c908b908b908a90613e34565b60405180910390a150600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690555b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905550505050505050565b600c5460ff16600114611fa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e6360448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610e6a565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558551602814612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652060448201527f616464726573732073697a6500000000000000000000000000000000000000006064820152608401610e6a565b601486015173ffffffffffffffffffffffffffffffffffffffff808216600090815260208190526040902054168061211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610e6a565b6000808451116121b95760078054612136906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054612162906138bf565b80156121af5780601f10612184576101008083540402835291602001916121af565b820191906000526020600020905b81548152906001019060200180831161219257829003601f168201915b50505050506121bb565b835b905060006122198b338b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505073ffffffffffffffffffffffffffffffffffffffff8a16151586610ccf565b509050803410156122ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610e6a565b61ffff8b1660009081526009602090815260408083203384529091528120805482906122e19067ffffffffffffffff16613af5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055905060008c905060008b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506123549250879150349050613c85565b905080156124285760008b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146123b6576040519150601f19603f3d011682016040523d82523d6000602084013e6123bb565b606091505b5050905080612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e64006044820152606401610e6a565b505b600080600061243689612b39565b919550935091505081156124f25760008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d806000811461249e576040519150601f19603f3d011682016040523d82523d6000602084013e6124a3565b606091505b50509050806124f057604051839073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6124ff868c898887612ccb565b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050505050505050505050505050565b600761254a8282613b6b565b5050565b61ffff8316600090815260086020526040808220905161257190859085906138af565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b6000806000806125a385612b39565b5092509250925060008361ffff16600203612669576003546fffffffffffffffffffffffffffffffff1682111561265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2060448201527f6c617267652000000000000000000000000000000000000000000000000000006064820152608401610e6a565b6126668282613941565b90505b600354600090612698908590700100000000000000000000000000000000900467ffffffffffffffff16613941565b6002546126cb919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16613eb4565b90506126d78183613941565b6002549092506000906402540be40090612703906fffffffffffffffffffffffffffffffff1685613eb4565b61270d9190613efa565b6002546003549192506000916402540be400916fffffffffffffffffffffffffffffffff8082169261277c92780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169170010000000000000000000000000000000090910416613f0e565b6127869190613f0e565b6127909190613f42565b6fffffffffffffffffffffffffffffffff1690506127ae818b613eb4565b6127b89083613941565b9d9c50505050505050505050505050565b600083156127da5750600454610b1e565b600554612710906127eb8486613941565b6127f59190613eb4565b6127ff9190613efa565b9050610b1e565b61ffff83166000908152600b6020526040808220905161282990859085906138af565b908152602001604051809103902090505b8054156109db578054600090829061285490600190613c85565b8154811061286457612864613c98565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff740100000000000000000000000000000000000000009091041693830193909352600183018054929392918401916128dc906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054612908906138bf565b80156129555780601f1061292a57610100808354040283529160200191612955565b820191906000526020600020905b81548152906001019060200180831161293857829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b81526004016129ac959493929190613f71565b600060405180830381600087803b1580156129c657600080fd5b505af11580156129da573d6000803e3d6000fd5b50505050818054806129ee576129ee613fbd565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff0000000000000000000000000000000000000000000000000000000016815590612a556001830182613031565b505090555061283a565b6000612a878254600f81810b700100000000000000000000000000000000909204900b131590565b15612abe576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50805470010000000000000000000000000000000090819004600f90810b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081900b60009081526001840160205260408120805491905583546fffffffffffffffffffffffffffffffff90811692169092021790915590565b600080600080845160221480612b50575060428551115b612bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646170746572506172616d7300000000000000000000006044820152606401610e6a565b60028501519350602285015192508361ffff1660011480612bdb57508361ffff166002145b612c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e737570706f727465642074785479706500000000000000000000000000006044820152606401610e6a565b60008311612cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f47617320746f6f206c6f770000000000000000000000000000000000000000006044820152606401610e6a565b8361ffff16600203612cc4575050604283015160568401515b9193509193565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b8216602084015286901b166034820152600090604801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052600154600f5491925061ffff169060ff1615612df85773ffffffffffffffffffffffffffffffffffffffff808716600090815260208190526040908190205490517fc2fa4813000000000000000000000000000000000000000000000000000000008152911690819063c2fa481390612dc090859087908c908c908b908d90600401613a94565b600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b5050505050613028565b6000818387604051602001612e0f93929190613fec565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012060c08401835261ffff868116855282850188815273ffffffffffffffffffffffffffffffffffffffff8d168686015267ffffffffffffffff8c166060870152608086018a905260a086018b90526000838152600e90945293909220845181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001693169290921782559151919350906001820190612ee39082613b6b565b506040820151600282018054606085015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff909316929092179190911790556080820151600382015560a08201516004820190612f799082613b6b565b50505061ffff88166000908152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845282528083208054600f90810b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081900b855260018201909352922083905581547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff909116179055505b50505050505050565b50805461303d906138bf565b6000825580601f1061304d575050565b601f01602090049060005260206000209081019061031091905b8082111561307b5760008155600101613067565b5090565b803561ffff8116811461309157600080fd5b919050565b6000602082840312156130a857600080fd5b610b1e8261307f565b73ffffffffffffffffffffffffffffffffffffffff8116811461031057600080fd5b6000602082840312156130e557600080fd5b8135610b1e816130b1565b60008083601f84011261310257600080fd5b50813567ffffffffffffffff81111561311a57600080fd5b60208301915083602082850101111561313257600080fd5b9250929050565b60008060006040848603121561314e57600080fd5b6131578461307f565b9250602084013567ffffffffffffffff81111561317357600080fd5b61317f868287016130f0565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126131cc57600080fd5b813567ffffffffffffffff808211156131e7576131e761318c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561322d5761322d61318c565b8160405283815286602085880101111561324657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561327b57600080fd5b6132848461307f565b9250602084013567ffffffffffffffff8111156132a057600080fd5b6132ac868287016131bb565b925050604084013590509250925092565b60005b838110156132d85781810151838201526020016132c0565b50506000910152565b600081518084526132f98160208601602086016132bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff8316602082015260606040820152600061336a60608301846132e1565b95945050505050565b6000806040838503121561338657600080fd5b50508035926020909101359150565b602081526000610b1e60208301846132e1565b80356fffffffffffffffffffffffffffffffff8116811461309157600080fd5b803567ffffffffffffffff8116811461309157600080fd5b600080600080600060a086880312156133f857600080fd5b613401866133a8565b945061340f602087016133a8565b935061341d604087016133a8565b925061342b606087016133c8565b9150613439608087016133c8565b90509295509295909350565b8035801515811461309157600080fd5b600080600080600060a0868803121561346d57600080fd5b6134768661307f565b94506020860135613486816130b1565b9350604086013567ffffffffffffffff808211156134a357600080fd5b6134af89838a016131bb565b94506134bd60608901613445565b935060808801359150808211156134d357600080fd5b506134e0888289016131bb565b9150509295509295909350565b6000602082840312156134ff57600080fd5b610b1e82613445565b6000806040838503121561351b57600080fd5b6135248361307f565b9150602083013567ffffffffffffffff81111561354057600080fd5b61354c858286016131bb565b9150509250929050565b6000806040838503121561356957600080fd5b6135728361307f565b91506020830135613582816130b1565b809150509250929050565b6000806000806000606086880312156135a557600080fd5b6135ae8661307f565b9450602086013567ffffffffffffffff808211156135cb57600080fd5b6135d789838a016130f0565b909650945060408801359150808211156135f057600080fd5b506135fd888289016130f0565b969995985093965092949392505050565b60006020828403121561362057600080fd5b5035919050565b6000806040838503121561363a57600080fd5b8235613572816130b1565b60008060008060008060008060c0898b03121561366157600080fd5b61366a8961307f565b9750602089013567ffffffffffffffff8082111561368757600080fd5b6136938c838d016130f0565b909950975060408b013591506136a8826130b1565b8196506136b760608c016133c8565b955060808b0135945060a08b01359150808211156136d457600080fd5b506136e18b828c016130f0565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a03121561371057600080fd5b6137198861307f565b9650602088013567ffffffffffffffff8082111561373657600080fd5b6137428b838c016131bb565b975060408a013591508082111561375857600080fd5b6137648b838c016130f0565b909750955060608a01359150613779826130b1565b90935060808901359061378b826130b1565b90925060a089013590808211156137a157600080fd5b506137ae8a828b016131bb565b91505092959891949750929550565b600080600080608085870312156137d357600080fd5b6137dc8561307f565b93506137ea6020860161307f565b925060408501359150606085013567ffffffffffffffff81111561380d57600080fd5b613819878288016131bb565b91505092959194509250565b6000806000806080858703121561383b57600080fd5b6138448561307f565b93506138526020860161307f565b92506040850135613862816130b1565b9396929550929360600135925050565b60006020828403121561388457600080fd5b813567ffffffffffffffff81111561389b57600080fd5b6138a7848285016131bb565b949350505050565b8183823760009101908152919050565b600181811c908216806138d357607f821691505b60208210810361390c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610fb357610fb3613912565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff8416815260406020820152600061336a604083018486613954565b61ffff871681526080602082015260006139d9608083018789613954565b67ffffffffffffffff8616604084015282810360608401526139fc818587613954565b9998505050505050505050565b61ffff86168152608060208201526000613a27608083018688613954565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600081613a6e57613a6e613912565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61ffff8716815260c060208201526000613ab160c08301886132e1565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526139fc81856132e1565b600067ffffffffffffffff808316818103613b1257613b12613912565b6001019392505050565b601f821115613b6657600081815260208120601f850160051c81016020861015613b435750805b601f850160051c820191505b81811015613b6257828155600101613b4f565b5050505b505050565b815167ffffffffffffffff811115613b8557613b8561318c565b613b9981613b9384546138bf565b84613b1c565b602080601f831160018114613bec5760008415613bb65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613b62565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613c3957888601518255948401946001909101908401613c1a565b5085821015613c7557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610fb357610fb3613912565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103613cd2575050565b613cdc82546138bf565b67ffffffffffffffff811115613cf457613cf461318c565b613d0281613b9384546138bf565b6000601f821160018114613d545760008315613d1e5750848201545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613df5565b6000858152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841690600086815260209020845b83811015613dac5782860154825560019586019590910190602001613d8c565b5085831015613de857818501547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2d57613e2d613912565b5060010190565b61ffff8916815260c060208201526000613e5260c08301898b613954565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff871660608401528281036080840152613e91818688613954565b905082810360a0840152613ea581856132e1565b9b9a5050505050505050505050565b8082028115828204841417610fb357610fb3613912565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613f0957613f09613ecb565b500490565b6fffffffffffffffffffffffffffffffff818116838216028082169190828114613f3a57613f3a613912565b505092915050565b60006fffffffffffffffffffffffffffffffff80841680613f6557613f65613ecb565b92169190910492915050565b61ffff86168152608060208201526000613f8f608083018688613954565b67ffffffffffffffff851660408401528281036060840152613fb181856132e1565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008460f01b168152600083516140298160028501602088016132bd565b80830190507fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166002820152600a810191505094935050505056fea2646970667358221220c84145a783b5eb770cfa472431ab915a79d896fc3b999a14fef6bc35b1f34bf964736f6c63430008130033",
|
|
985
|
+
"deployedBytecode": "0x6080604052600436106102bb5760003560e01c80639c729da11161016e578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb14610a89578063fbba623b14610a9f578063fdc07c7014610abf57600080fd5b8063e97a448a14610a3b578063f5ecbdbc14610a5757600080fd5b8063d23104f1116100b0578063d23104f1146109e1578063da1a7c9a14610315578063db14f30514610a2057600080fd5b8063ca066b351461099f578063cbed8b9c146109c057600080fd5b8063ba27989f11610122578063c2fa481311610107578063c2fa481314610929578063c580310014610949578063c81b383a1461095c57600080fd5b8063ba27989f1461089b578063c08f15a1146108bb57600080fd5b8063b208649911610153578063b20864991461081f578063b48c8c6114610861578063b6d9ef601461087b57600080fd5b80639c729da114610580578063aaff5f16146107ff57600080fd5b80633e0dd83e1161021c57806376a386dc116101d05780637f6df8e6116101b55780637f6df8e6146106b8578063907c5e7e146106e65780639924d33b146107ac57600080fd5b806376a386dc146105c55780637a1457481461067f57600080fd5b806342d65a8d1161020157806342d65a8d146105145780634fd801531461053457806371ba2fd61461058057600080fd5b80633e0dd83e146104d457806340a7bb10146104f457600080fd5b806312a9ee6b11610273578063272bd38411610258578063272bd384146103ce5780632c365e25146103f05780633408e470146104bb57600080fd5b806312a9ee6b14610379578063240de277146103a857600080fd5b8063096568f6116102a4578063096568f6146103155780630eaf6ea61461034957806310ddb137146102f557600080fd5b806307d3277f146102c057806307e0db17146102f5575b600080fd5b3480156102cc57600080fd5b506004546005546102db919082565b604080519283526020830191909152015b60405180910390f35b34801561030157600080fd5b50610313610310366004613096565b50565b005b34801561032157600080fd5b506103366103303660046130d3565b50600190565b60405161ffff90911681526020016102ec565b34801561035557600080fd5b50610369610364366004613139565b610adf565b60405190151581526020016102ec565b34801561038557600080fd5b50610399610394366004613266565b610b25565b6040516102ec9392919061332b565b3480156103b457600080fd5b506103136103c3366004613373565b600491909155600555565b3480156103da57600080fd5b506103e3610c41565b6040516102ec9190613395565b3480156103fc57600080fd5b5061031361040b3660046133e0565b6fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000094861685021760025560038054939095167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921767ffffffffffffffff9182169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b3480156104c757600080fd5b5060015461ffff16610336565b3480156104e057600080fd5b506001546103699062010000900460ff1681565b34801561050057600080fd5b506102db61050f366004613455565b610ccf565b34801561052057600080fd5b5061031361052f366004613139565b610dce565b34801561054057600080fd5b5061031361054f3660046134ed565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b34801561058c57600080fd5b506105a061059b3660046130d3565b503090565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b3480156105d157600080fd5b506106446105e0366004613508565b600a60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff9092166020840152908201526060016102ec565b34801561068b57600080fd5b5061069f61069a366004613556565b610f73565b60405167ffffffffffffffff90911681526020016102ec565b3480156106c457600080fd5b506106d86106d3366004613139565b610fb9565b6040519081526020016102ec565b3480156106f257600080fd5b5060025460035461075e916fffffffffffffffffffffffffffffffff80821692700100000000000000000000000000000000928390048216929181169167ffffffffffffffff908204811691780100000000000000000000000000000000000000000000000090041685565b604080516fffffffffffffffffffffffffffffffff96871681529486166020860152929094169183019190915267ffffffffffffffff9081166060830152909116608082015260a0016102ec565b3480156107b857600080fd5b5061069f6107c7366004613508565b6008602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b34801561080b57600080fd5b5061031361081a36600461358d565b610ff5565b34801561082b57600080fd5b5061069f61083a366004613556565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b34801561086d57600080fd5b50600f546103699060ff1681565b34801561088757600080fd5b5061031361089636600461360e565b600655565b3480156108a757600080fd5b506103136108b6366004613556565b611291565b3480156108c757600080fd5b506103136108d6366004613627565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561093557600080fd5b50610313610944366004613645565b61157b565b6103136109573660046136f5565b611f14565b34801561096857600080fd5b506105a06109773660046130d3565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156109ab57600080fd5b50610369600c54610100900460ff1660021490565b3480156109cc57600080fd5b506103136109db3660046137bd565b50505050565b3480156109ed57600080fd5b50610313600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b348015610a2c57600080fd5b506001546103369061ffff1681565b348015610a4757600080fd5b50610369600c5460ff1660021490565b348015610a6357600080fd5b506103e3610a72366004613825565b604080516020810190915260008152949350505050565b348015610a9557600080fd5b506106d860065481565b348015610aab57600080fd5b50610313610aba366004613872565b61253e565b348015610acb57600080fd5b5061069f610ada366004613139565b61254e565b61ffff83166000908152600a60205260408082209051829190610b0590869086906138af565b9081526040519081900360200190206001015415159150505b9392505050565b600b6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610b5c57600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610bbe906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906138bf565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905083565b60078054610c4e906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a906138bf565b8015610cc75780601f10610c9c57610100808354040283529160200191610cc7565b820191906000526020600020905b815481529060010190602001808311610caa57829003601f168201915b505050505081565b600080600080845111610d6c5760078054610ce9906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d15906138bf565b8015610d625780601f10610d3757610100808354040283529160200191610d62565b820191906000526020600020905b815481529060010190602001808311610d4557829003601f168201915b5050505050610d6e565b835b90506000610d818960018a8a5186612594565b90506000610d9287836006546127c9565b905086610da25780945084610da7565b809350835b50600654610db58387613941565b610dbf9190613941565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610df190859085906138af565b9081526040519081900360200190206001810154909150610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f616460448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c65720000006044820152606401610e6a565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610f609086908690869061399d565b60405180910390a16109db848484612806565b61ffff8216600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff165b92915050565b61ffff83166000908152600b60205260408082209051610fdc90859085906138af565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a6020526040808220905161101890879087906138af565b9081526040519081900360200190206001810154909150611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f61646044820152606401610e6a565b805467ffffffffffffffff16821480156110c95750806001015483836040516110bf9291906138af565b6040518091039020145b61112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f616400006044820152606401610e6a565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526008602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16926111a390899089906138af565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d356790611216908b908b908b9087908c908c906004016139bb565b600060405180830381600087803b15801561123057600080fd5b505af1158015611244573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d888888848660405161127f959493929190613a09565b60405180910390a15050505050505050565b61ffff82166000908152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff851684529091528120906112eb8254600f81810b700100000000000000000000000000000000909204900b0390565b90505b80156109db57806112fe81613a5f565b915050600061130c83612a5f565b6000818152600e60209081526040808320815160c08101909252805461ffff168252600181018054959650939491939092840191611349906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054611375906138bf565b80156113c25780601f10611397576101008083540402835291602001916113c2565b820191906000526020600020905b8154815290600101906020018083116113a557829003601f168201915b5050509183525050600282015473ffffffffffffffffffffffffffffffffffffffff8116602083015274010000000000000000000000000000000000000000900467ffffffffffffffff16604082015260038201546060820152600482018054608090920191611431906138bf565b80601f016020809104026020016040519081016040528092919081815260200182805461145d906138bf565b80156114aa5780601f1061147f576101008083540402835291602001916114aa565b820191906000526020600020905b81548152906001019060200180831161148d57829003601f168201915b505050919092525050506040808201805173ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152908490205485519186015193516060870151608088015160a089015197517fc2fa48130000000000000000000000000000000000000000000000000000000081529899509290941696879663c2fa4813966115419690949092909190600401613a94565b600060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050505050506112ee565b600c54610100900460ff16600114611614576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e747260448201527f616e6379000000000000000000000000000000000000000000000000000000006064820152608401610e6a565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff88166000908152600a60205260408082209051611663908a908a906138af565b90815260200160405180910390209050600860008a61ffff1661ffff168152602001908152602001600020888860405161169e9291906138af565b90815260405190819003602001902080546000906116c59067ffffffffffffffff16613af5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e63650000000000006044820152606401610e6a565b600181015415611b3a5761ffff89166000908152600b60205260408082209051611793908b908b906138af565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250825490915015611a94578154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff9094169390931717825560408301518392918201906118b99082613b6b565b50505060005b82546118cd90600190613c85565b8110156119e2578281815481106118e6576118e6613c98565b9060005260206000209060020201838260016119029190613941565b8154811061191257611912613c98565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff169092029190911781556001808201906119cb90840182613cc7565b5090505080806119da90613dfc565b9150506118bf565b5080826000815481106119f7576119f7613c98565b6000918252602091829020835160029092020180549284015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff9092169190911791909117815560408201516001820190611a8b9082613b6b565b50905050611b33565b8154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff909416939093171782556040830151839291820190611b2f9082613b6b565b5050505b5050611edd565b60015462010000900460ff1615611cbd5760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018484604051611b959291906138af565b604080519182900390912090915261ffff8b166000908152600a6020528190209051611bc4908b908b906138af565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db91611c88918c918c918c918c918c918b918b9190613e34565b60405180910390a1600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055611edd565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d3567908690611d19908d908d908d908c908b908b906004016139bb565b600060405180830381600088803b158015611d3357600080fd5b5087f193505050508015611d45575060015b611edd573d808015611d73576040519150601f19603f3d011682016040523d82523d6000602084013e611d78565b606091505b5060405180606001604052808585905067ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018585604051611dc39291906138af565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611df2908c908c906138af565b908152604080519182900360209081018320845181549286015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931667ffffffffffffffff909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db90611eab908c908c908c908c908c908b908b908a90613e34565b60405180910390a150600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690555b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905550505050505050565b600c5460ff16600114611fa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e6360448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610e6a565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558551602814612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652060448201527f616464726573732073697a6500000000000000000000000000000000000000006064820152608401610e6a565b601486015173ffffffffffffffffffffffffffffffffffffffff808216600090815260208190526040902054168061211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610e6a565b6000808451116121b95760078054612136906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054612162906138bf565b80156121af5780601f10612184576101008083540402835291602001916121af565b820191906000526020600020905b81548152906001019060200180831161219257829003601f168201915b50505050506121bb565b835b905060006122198b338b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505073ffffffffffffffffffffffffffffffffffffffff8a16151586610ccf565b509050803410156122ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610e6a565b61ffff8b1660009081526009602090815260408083203384529091528120805482906122e19067ffffffffffffffff16613af5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055905060008c905060008b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506123549250879150349050613c85565b905080156124285760008b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146123b6576040519150601f19603f3d011682016040523d82523d6000602084013e6123bb565b606091505b5050905080612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e64006044820152606401610e6a565b505b600080600061243689612b39565b919550935091505081156124f25760008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d806000811461249e576040519150601f19603f3d011682016040523d82523d6000602084013e6124a3565b606091505b50509050806124f057604051839073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6124ff868c898887612ccb565b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050505050505050505050505050565b600761254a8282613b6b565b5050565b61ffff8316600090815260086020526040808220905161257190859085906138af565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b6000806000806125a385612b39565b5092509250925060008361ffff16600203612669576003546fffffffffffffffffffffffffffffffff1682111561265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2060448201527f6c617267652000000000000000000000000000000000000000000000000000006064820152608401610e6a565b6126668282613941565b90505b600354600090612698908590700100000000000000000000000000000000900467ffffffffffffffff16613941565b6002546126cb919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16613eb4565b90506126d78183613941565b6002549092506000906402540be40090612703906fffffffffffffffffffffffffffffffff1685613eb4565b61270d9190613efa565b6002546003549192506000916402540be400916fffffffffffffffffffffffffffffffff8082169261277c92780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169170010000000000000000000000000000000090910416613f0e565b6127869190613f0e565b6127909190613f42565b6fffffffffffffffffffffffffffffffff1690506127ae818b613eb4565b6127b89083613941565b9d9c50505050505050505050505050565b600083156127da5750600454610b1e565b600554612710906127eb8486613941565b6127f59190613eb4565b6127ff9190613efa565b9050610b1e565b61ffff83166000908152600b6020526040808220905161282990859085906138af565b908152602001604051809103902090505b8054156109db578054600090829061285490600190613c85565b8154811061286457612864613c98565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff740100000000000000000000000000000000000000009091041693830193909352600183018054929392918401916128dc906138bf565b80601f0160208091040260200160405190810160405280929190818152602001828054612908906138bf565b80156129555780601f1061292a57610100808354040283529160200191612955565b820191906000526020600020905b81548152906001019060200180831161293857829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b81526004016129ac959493929190613f71565b600060405180830381600087803b1580156129c657600080fd5b505af11580156129da573d6000803e3d6000fd5b50505050818054806129ee576129ee613fbd565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff0000000000000000000000000000000000000000000000000000000016815590612a556001830182613031565b505090555061283a565b6000612a878254600f81810b700100000000000000000000000000000000909204900b131590565b15612abe576040517f3db2a12a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50805470010000000000000000000000000000000090819004600f90810b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081900b60009081526001840160205260408120805491905583546fffffffffffffffffffffffffffffffff90811692169092021790915590565b600080600080845160221480612b50575060428551115b612bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642061646170746572506172616d7300000000000000000000006044820152606401610e6a565b60028501519350602285015192508361ffff1660011480612bdb57508361ffff166002145b612c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e737570706f727465642074785479706500000000000000000000000000006044820152606401610e6a565b60008311612cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f47617320746f6f206c6f770000000000000000000000000000000000000000006044820152606401610e6a565b8361ffff16600203612cc4575050604283015160568401515b9193509193565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b8216602084015286901b166034820152600090604801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052600154600f5491925061ffff169060ff1615612df85773ffffffffffffffffffffffffffffffffffffffff808716600090815260208190526040908190205490517fc2fa4813000000000000000000000000000000000000000000000000000000008152911690819063c2fa481390612dc090859087908c908c908b908d90600401613a94565b600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b5050505050613028565b6000818387604051602001612e0f93929190613fec565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012060c08401835261ffff868116855282850188815273ffffffffffffffffffffffffffffffffffffffff8d168686015267ffffffffffffffff8c166060870152608086018a905260a086018b90526000838152600e90945293909220845181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001693169290921782559151919350906001820190612ee39082613b6b565b506040820151600282018054606085015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff909316929092179190911790556080820151600382015560a08201516004820190612f799082613b6b565b50505061ffff88166000908152600d6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845282528083208054600f90810b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081900b855260018201909352922083905581547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff909116179055505b50505050505050565b50805461303d906138bf565b6000825580601f1061304d575050565b601f01602090049060005260206000209081019061031091905b8082111561307b5760008155600101613067565b5090565b803561ffff8116811461309157600080fd5b919050565b6000602082840312156130a857600080fd5b610b1e8261307f565b73ffffffffffffffffffffffffffffffffffffffff8116811461031057600080fd5b6000602082840312156130e557600080fd5b8135610b1e816130b1565b60008083601f84011261310257600080fd5b50813567ffffffffffffffff81111561311a57600080fd5b60208301915083602082850101111561313257600080fd5b9250929050565b60008060006040848603121561314e57600080fd5b6131578461307f565b9250602084013567ffffffffffffffff81111561317357600080fd5b61317f868287016130f0565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126131cc57600080fd5b813567ffffffffffffffff808211156131e7576131e761318c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561322d5761322d61318c565b8160405283815286602085880101111561324657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561327b57600080fd5b6132848461307f565b9250602084013567ffffffffffffffff8111156132a057600080fd5b6132ac868287016131bb565b925050604084013590509250925092565b60005b838110156132d85781810151838201526020016132c0565b50506000910152565b600081518084526132f98160208601602086016132bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff8316602082015260606040820152600061336a60608301846132e1565b95945050505050565b6000806040838503121561338657600080fd5b50508035926020909101359150565b602081526000610b1e60208301846132e1565b80356fffffffffffffffffffffffffffffffff8116811461309157600080fd5b803567ffffffffffffffff8116811461309157600080fd5b600080600080600060a086880312156133f857600080fd5b613401866133a8565b945061340f602087016133a8565b935061341d604087016133a8565b925061342b606087016133c8565b9150613439608087016133c8565b90509295509295909350565b8035801515811461309157600080fd5b600080600080600060a0868803121561346d57600080fd5b6134768661307f565b94506020860135613486816130b1565b9350604086013567ffffffffffffffff808211156134a357600080fd5b6134af89838a016131bb565b94506134bd60608901613445565b935060808801359150808211156134d357600080fd5b506134e0888289016131bb565b9150509295509295909350565b6000602082840312156134ff57600080fd5b610b1e82613445565b6000806040838503121561351b57600080fd5b6135248361307f565b9150602083013567ffffffffffffffff81111561354057600080fd5b61354c858286016131bb565b9150509250929050565b6000806040838503121561356957600080fd5b6135728361307f565b91506020830135613582816130b1565b809150509250929050565b6000806000806000606086880312156135a557600080fd5b6135ae8661307f565b9450602086013567ffffffffffffffff808211156135cb57600080fd5b6135d789838a016130f0565b909650945060408801359150808211156135f057600080fd5b506135fd888289016130f0565b969995985093965092949392505050565b60006020828403121561362057600080fd5b5035919050565b6000806040838503121561363a57600080fd5b8235613572816130b1565b60008060008060008060008060c0898b03121561366157600080fd5b61366a8961307f565b9750602089013567ffffffffffffffff8082111561368757600080fd5b6136938c838d016130f0565b909950975060408b013591506136a8826130b1565b8196506136b760608c016133c8565b955060808b0135945060a08b01359150808211156136d457600080fd5b506136e18b828c016130f0565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a03121561371057600080fd5b6137198861307f565b9650602088013567ffffffffffffffff8082111561373657600080fd5b6137428b838c016131bb565b975060408a013591508082111561375857600080fd5b6137648b838c016130f0565b909750955060608a01359150613779826130b1565b90935060808901359061378b826130b1565b90925060a089013590808211156137a157600080fd5b506137ae8a828b016131bb565b91505092959891949750929550565b600080600080608085870312156137d357600080fd5b6137dc8561307f565b93506137ea6020860161307f565b925060408501359150606085013567ffffffffffffffff81111561380d57600080fd5b613819878288016131bb565b91505092959194509250565b6000806000806080858703121561383b57600080fd5b6138448561307f565b93506138526020860161307f565b92506040850135613862816130b1565b9396929550929360600135925050565b60006020828403121561388457600080fd5b813567ffffffffffffffff81111561389b57600080fd5b6138a7848285016131bb565b949350505050565b8183823760009101908152919050565b600181811c908216806138d357607f821691505b60208210810361390c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610fb357610fb3613912565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff8416815260406020820152600061336a604083018486613954565b61ffff871681526080602082015260006139d9608083018789613954565b67ffffffffffffffff8616604084015282810360608401526139fc818587613954565b9998505050505050505050565b61ffff86168152608060208201526000613a27608083018688613954565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600081613a6e57613a6e613912565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61ffff8716815260c060208201526000613ab160c08301886132e1565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526139fc81856132e1565b600067ffffffffffffffff808316818103613b1257613b12613912565b6001019392505050565b601f821115613b6657600081815260208120601f850160051c81016020861015613b435750805b601f850160051c820191505b81811015613b6257828155600101613b4f565b5050505b505050565b815167ffffffffffffffff811115613b8557613b8561318c565b613b9981613b9384546138bf565b84613b1c565b602080601f831160018114613bec5760008415613bb65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613b62565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613c3957888601518255948401946001909101908401613c1a565b5085821015613c7557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610fb357610fb3613912565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103613cd2575050565b613cdc82546138bf565b67ffffffffffffffff811115613cf457613cf461318c565b613d0281613b9384546138bf565b6000601f821160018114613d545760008315613d1e5750848201545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613df5565b6000858152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841690600086815260209020845b83811015613dac5782860154825560019586019590910190602001613d8c565b5085831015613de857818501547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2d57613e2d613912565b5060010190565b61ffff8916815260c060208201526000613e5260c08301898b613954565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff871660608401528281036080840152613e91818688613954565b905082810360a0840152613ea581856132e1565b9b9a5050505050505050505050565b8082028115828204841417610fb357610fb3613912565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613f0957613f09613ecb565b500490565b6fffffffffffffffffffffffffffffffff818116838216028082169190828114613f3a57613f3a613912565b505092915050565b60006fffffffffffffffffffffffffffffffff80841680613f6557613f65613ecb565b92169190910492915050565b61ffff86168152608060208201526000613f8f608083018688613954565b67ffffffffffffffff851660408401528281036060840152613fb181856132e1565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008460f01b168152600083516140298160028501602088016132bd565b80830190507fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166002820152600a810191505094935050505056fea2646970667358221220c84145a783b5eb770cfa472431ab915a79d896fc3b999a14fef6bc35b1f34bf964736f6c63430008130033",
|
|
937
986
|
"linkReferences": {},
|
|
938
987
|
"deployedLinkReferences": {}
|
|
939
988
|
}
|
|
@@ -5,6 +5,7 @@ pragma abicoder v2;
|
|
|
5
5
|
|
|
6
6
|
import "@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroEndpoint.sol";
|
|
7
7
|
import "@layerzerolabs/lz-evm-v1-0.7/contracts/interfaces/ILayerZeroReceiver.sol";
|
|
8
|
+
import "@openzeppelin/contracts/utils/structs/DoubleEndedQueue.sol";
|
|
8
9
|
|
|
9
10
|
import "../libraries/LzLib.sol";
|
|
10
11
|
|
|
@@ -19,6 +20,8 @@ unlike a real LayerZero endpoint, it is
|
|
|
19
20
|
- no user application configuration
|
|
20
21
|
*/
|
|
21
22
|
contract LZEndpointMock is ILayerZeroEndpoint {
|
|
23
|
+
using DoubleEndedQueue for DoubleEndedQueue.Bytes32Deque;
|
|
24
|
+
|
|
22
25
|
uint8 internal constant _NOT_ENTERED = 1;
|
|
23
26
|
uint8 internal constant _ENTERED = 2;
|
|
24
27
|
|
|
@@ -50,6 +53,19 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
50
53
|
uint8 internal _send_entered_state = 1;
|
|
51
54
|
uint8 internal _receive_entered_state = 1;
|
|
52
55
|
|
|
56
|
+
mapping(uint16 => mapping(address => DoubleEndedQueue.Bytes32Deque)) internal packetsQueue; // dstEid => dstUA => guids queue
|
|
57
|
+
mapping(bytes32 => StashPacket) internal stashPackets; // guid => StashPacket
|
|
58
|
+
bool public isSyncDeliver = true;
|
|
59
|
+
|
|
60
|
+
struct StashPacket {
|
|
61
|
+
uint16 srcChainId;
|
|
62
|
+
bytes path;
|
|
63
|
+
address dstAddress;
|
|
64
|
+
uint64 nonce;
|
|
65
|
+
uint gasLimit;
|
|
66
|
+
bytes payload;
|
|
67
|
+
}
|
|
68
|
+
|
|
53
69
|
struct ProtocolFeeConfig {
|
|
54
70
|
uint zroFee;
|
|
55
71
|
uint nativeBP;
|
|
@@ -148,6 +164,8 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
148
164
|
require(msg.value >= nativeFee, "LayerZeroMock: not enough native for fees");
|
|
149
165
|
|
|
150
166
|
uint64 nonce = ++outboundNonce[_chainId][msg.sender];
|
|
167
|
+
uint16 dstChainId = _chainId;
|
|
168
|
+
bytes memory payload = _payload;
|
|
151
169
|
|
|
152
170
|
// refund if they send too much
|
|
153
171
|
uint amount = msg.value - nativeFee;
|
|
@@ -166,9 +184,53 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
166
184
|
}
|
|
167
185
|
}
|
|
168
186
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
187
|
+
_relayMessage(dstChainId, dstAddr, nonce, payload, extraGas);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function _relayMessage(
|
|
191
|
+
uint16 _dstChainId,
|
|
192
|
+
address _dstAddr,
|
|
193
|
+
uint64 _nonce,
|
|
194
|
+
bytes memory _payload,
|
|
195
|
+
uint _extraGas
|
|
196
|
+
) internal {
|
|
197
|
+
bytes memory srcUaAddress = abi.encodePacked(msg.sender, _dstAddr); // cast this address to bytes
|
|
198
|
+
uint16 srcChainId = mockChainId;
|
|
199
|
+
if (isSyncDeliver) {
|
|
200
|
+
address lzEndpoint = lzEndpointLookup[_dstAddr];
|
|
201
|
+
LZEndpointMock(lzEndpoint).receivePayload(srcChainId, srcUaAddress, _dstAddr, _nonce, _extraGas, _payload);
|
|
202
|
+
} else {
|
|
203
|
+
// stash the payload
|
|
204
|
+
bytes32 guid = keccak256(abi.encodePacked(srcChainId, srcUaAddress, _nonce));
|
|
205
|
+
stashPackets[guid] = StashPacket({
|
|
206
|
+
srcChainId: srcChainId,
|
|
207
|
+
path: srcUaAddress,
|
|
208
|
+
dstAddress: _dstAddr,
|
|
209
|
+
nonce: _nonce,
|
|
210
|
+
gasLimit: _extraGas,
|
|
211
|
+
payload: _payload
|
|
212
|
+
});
|
|
213
|
+
packetsQueue[_dstChainId][_dstAddr].pushFront(guid);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function deliverPackets(uint16 _dstEid, address _dstAddress) public {
|
|
218
|
+
DoubleEndedQueue.Bytes32Deque storage queue = packetsQueue[_dstEid][_dstAddress];
|
|
219
|
+
uint pendingPacketsSize = queue.length();
|
|
220
|
+
while (pendingPacketsSize > 0) {
|
|
221
|
+
pendingPacketsSize--;
|
|
222
|
+
bytes32 guid = queue.popBack();
|
|
223
|
+
StashPacket memory packet = stashPackets[guid];
|
|
224
|
+
address lzEndpoint = lzEndpointLookup[packet.dstAddress];
|
|
225
|
+
LZEndpointMock(lzEndpoint).receivePayload(
|
|
226
|
+
packet.srcChainId,
|
|
227
|
+
packet.path,
|
|
228
|
+
packet.dstAddress,
|
|
229
|
+
packet.nonce,
|
|
230
|
+
packet.gasLimit,
|
|
231
|
+
packet.payload
|
|
232
|
+
);
|
|
233
|
+
}
|
|
172
234
|
}
|
|
173
235
|
|
|
174
236
|
function receivePayload(
|
|
@@ -305,7 +367,7 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
305
367
|
|
|
306
368
|
function getConfig(
|
|
307
369
|
uint16 /*_version*/,
|
|
308
|
-
uint16 /*
|
|
370
|
+
uint16 /*_dstChainId*/,
|
|
309
371
|
address /*_ua*/,
|
|
310
372
|
uint /*_configType*/
|
|
311
373
|
) external pure override returns (bytes memory) {
|
|
@@ -322,7 +384,7 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
322
384
|
|
|
323
385
|
function setConfig(
|
|
324
386
|
uint16 /*_version*/,
|
|
325
|
-
uint16 /*
|
|
387
|
+
uint16 /*_dstChainId*/,
|
|
326
388
|
uint /*_configType*/,
|
|
327
389
|
bytes memory /*_config*/
|
|
328
390
|
) external override {}
|
|
@@ -363,6 +425,10 @@ contract LZEndpointMock is ILayerZeroEndpoint {
|
|
|
363
425
|
lzEndpointLookup[destAddr] = lzEndpointAddr;
|
|
364
426
|
}
|
|
365
427
|
|
|
428
|
+
function setSyncDeliver(bool _isSync) external {
|
|
429
|
+
isSyncDeliver = _isSync;
|
|
430
|
+
}
|
|
431
|
+
|
|
366
432
|
function setRelayerPrice(
|
|
367
433
|
uint128 _dstPriceRatio,
|
|
368
434
|
uint128 _dstGasPriceInWei,
|