@reality.eth/contracts 3.0.48 → 4.0.0-rc.1

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.
Files changed (33) hide show
  1. package/abi/solc-0.8.20/RealityETH-4.0.abi.json +1 -1
  2. package/abi/solc-0.8.20/RealityETHFreezableExample_ERC20-4.0.abi.json +1 -0
  3. package/abi/solc-0.8.20/RealityETHReopenable-4.0.abi.json +1 -0
  4. package/abi/solc-0.8.20/RealityETHReopenable_ERC20-4.0.abi.json +1 -0
  5. package/abi/solc-0.8.20/RealityETH_ERC20-4.0.abi.json +1 -1
  6. package/bytecode/RealityETH-4.0.bin +1 -1
  7. package/bytecode/RealityETHFreezableExample_ERC20-4.0.bin +1 -0
  8. package/bytecode/RealityETHReopenable-4.0.bin +1 -0
  9. package/bytecode/RealityETHReopenable_ERC20-4.0.bin +1 -0
  10. package/bytecode/RealityETH_ERC20-4.0.bin +1 -1
  11. package/chains/supported.json +1 -1
  12. package/development/contracts/IBalanceHolder.sol +1 -0
  13. package/development/contracts/IRealityETH.sol +6 -2
  14. package/development/contracts/{IRealityETHCore.sol → IRealityETHCore_Common.sol} +4 -23
  15. package/development/contracts/IRealityETHCore_ERC20.sol +3 -124
  16. package/development/contracts/IRealityETHCore_Native.sol +12 -0
  17. package/development/contracts/IRealityETHCreateTemplateAndAskQuestion.sol +8 -0
  18. package/development/contracts/IRealityETHHistoryVerification.sol +8 -0
  19. package/development/contracts/IRealityETHReopenable.sol +22 -0
  20. package/development/contracts/IRealityETHReopenable_ERC20.sol +23 -0
  21. package/development/contracts/IRealityETH_ERC20.sol +5 -1
  22. package/development/contracts/RealityETH-4.0.sol +12 -614
  23. package/development/contracts/RealityETHCore_Common.sol +535 -0
  24. package/development/contracts/RealityETHFreezableExample_ERC20-4.0.sol +17 -0
  25. package/development/contracts/RealityETHFreezable_ERC20.sol +39 -0
  26. package/development/contracts/RealityETHReopenable-4.0.sol +119 -0
  27. package/development/contracts/RealityETHReopenable_ERC20-4.0.sol +122 -0
  28. package/development/contracts/RealityETH_ERC20-4.0.sol +13 -614
  29. package/generated/chains.json +1 -1
  30. package/package.json +2 -2
  31. package/tests/python/test.py +186 -5
  32. package/development/contracts/BalanceHolder_ERC20.sol +0 -21
  33. package/development/contracts/IBalanceHolder_ERC20.sol +0 -11
@@ -1 +1 @@
1
- 60806040525f60015534801562000014575f80fd5b50620000396040518060600160405280603f815260200162003297603f9139620000d4565b506200005e6040518060800160405280604f815260200162003373604f9139620000d4565b50620000836040518060800160405280605a815260200162003319605a9139620000d4565b50620000a86040518060800160405280605c81526020016200323b605c9139620000d4565b50620000cd604051806080016040528060438152602001620032d660439139620000d4565b506200020d565b6001545f81815260026020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60015592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b613020806200021b5f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063a462fb7b116100b3578063d09cc57e11610078578063d09cc57e146107d2578063d44e293c146108a1578063e83bfb58146108c0578063ebbdd2b0146108ee578063f6a94ecb1461090d578063fe92049d1461092c575f80fd5b8063a462fb7b146107d2578063ab5a4e35146107f1578063acae8f4e14610810578063bc5256521461084b578063c081d8a314610876575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107345780639f1025c614610784578063a1130d04146107bf575f80fd5b806377f325df146105635780637f8d429e1461057657806382ffa9f71461059557806383bf4609146105c35780638d552d46146105e2575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047e57806359245ff3146104e75780636fa42742146104fa57806370a0823114610525578063762c38fd14610550575f80fd5b8063484b93c4146103c8578063484c0714146103db5780634df6ca2a146104095780634e60f8831461042857806351577ea914610453575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031857806326d6c97b1461036757806328828b1e146103955780633ccfd60b146103b4575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c36600461268d565b61094b565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b506102956102903660046127e7565b61095f565b005b6102956102a5366004612895565b610be9565b6102bd6102b836600461294f565b610e28565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e53660046129dc565b6110d3565b3480156102f5575f80fd5b506102bd61030436600461268d565b5f9081526004602052604090206003015490565b348015610323575f80fd5b5061034f61033236600461268d565b5f908152600460205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610372575f80fd5b506102bd61038136600461268d565b5f9081526004602052604090206006015490565b3480156103a0575f80fd5b506102956103af366004612a26565b6111f5565b3480156103bf575f80fd5b506102956114a5565b6102bd6103d6366004612b10565b61151c565b3480156103e6575f80fd5b506102bd6103f536600461268d565b5f9081526004602052604090206007015490565b348015610414575f80fd5b5061029561042336600461268d565b611618565b348015610433575f80fd5b506102bd61044236600461268d565b60036020525f908152604090205481565b34801561045e575f80fd5b506102bd61046d36600461268d565b5f9081526004602052604090205490565b348015610489575f80fd5b506104c261049836600461268d565b60056020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f536600461268d565b611665565b348015610505575f80fd5b506102bd610514366004612b95565b60066020525f908152604090205481565b348015610530575f80fd5b506102bd61053f366004612b95565b5f6020819052908152604090205481565b6102bd61055e366004612bae565b6117ff565b610295610571366004612c29565b6118fa565b348015610581575f80fd5b5061026161059036600461268d565b611b11565b3480156105a0575f80fd5b506102bd6105af36600461268d565b5f9081526004602052604090206005015490565b3480156105ce575f80fd5b506102bd6105dd366004612c52565b611b6c565b3480156105ed575f80fd5b506102bd6105fc36600461268d565b5f908152600460208190526040909120015490565b34801561061c575f80fd5b5061026161062b36600461268d565b5f9081526004602052604090206002015460ff1690565b34801561064d575f80fd5b506106cd61065c36600461268d565b600460208190525f91825260409091208054600182015460028301546003840154948401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff1694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b34801561073f575f80fd5b5061076f61074e36600461268d565b5f90815260046020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b34801561078f575f80fd5b5061076f61079e36600461268d565b5f90815260046020526040902060010154600160c01b900463ffffffff1690565b6102bd6107cd366004612c8b565b611c06565b3480156107dd575f80fd5b506102bd6107ec36600461268d565b611c21565b3480156107fc575f80fd5b506102bd61080b36600461268d565b611c60565b34801561081b575f80fd5b5061076f61082a36600461268d565b5f90815260046020526040902060010154600160e01b900463ffffffff1690565b348015610856575f80fd5b506102bd61086536600461268d565b60026020525f908152604090205481565b348015610881575f80fd5b506102bd61089036600461268d565b60076020525f908152604090205481565b3480156108ac575f80fd5b506102956108bb366004612ce4565b611cd4565b3480156108cb575f80fd5b506102616108da36600461268d565b60086020525f908152604090205460ff1681565b3480156108f9575f80fd5b5061029561090836600461268d565b611d30565b348015610918575f80fd5b50610295610927366004612d38565b611e32565b348015610937575f80fd5b50610295610946366004612d6a565b612059565b5f60011961095883611c21565b1492915050565b8461096981611b11565b61098657604051636030e5f560e11b815260040160405180910390fd5b84515f036109a7576040516312fdb46960e31b815260040160405180910390fd5b5f86815260056020818152604080842080546001909101546004938490529185209384015493909201546001600160a01b039092169390929091825b8a51811015610b4957610a5d838c8381518110610a0257610a02612d9c565b60200260200101518a8481518110610a1c57610a1c612d9c565b60200260200101518c8581518110610a3657610a36612d9c565b60200260200101518e8681518110610a5057610a50612d9c565b602002602001015161217d565b610a678585612dc4565b9350610ac38c8386898e8681518110610a8257610a82612d9c565b60200260200101518e8781518110610a9c57610a9c612d9c565b60200260200101518e8881518110610ab657610ab6612d9c565b60200260200101516121cb565b8097508195505050888181518110610add57610add612d9c565b6020026020010151945060045f8d81526020019081526020015f20600601548514610b1a57610b0d602886612dd7565b610b179086612df6565b94505b8a8181518110610b2c57610b2c612d9c565b602002602001015192508080610b4190612e09565b9150506109e3565b8215610b8d57610b5a8c8786612294565b5f8c815260056020526040812080546001600160a01b0319166001600160a01b0389161781556001018690559350610bc8565b610ba18c87610b9c8888612dc4565b612294565b5f8c815260056020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260046020526040909920600501989098555050505050505050565b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003610c295760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615610c5b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590610c9457504263ffffffff168163ffffffff1611155b15610cb25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590610cea57504263ffffffff168163ffffffff16115b15610d085760405163079994c560e31b815260040160405180910390fd5b8634805f03610d2a57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003610d79575f83815260046020526040902060070154821015610d745760405163291784d560e01b815260040160405180910390fd5b610da4565b610d84816002612e21565b821015610da4576040516328eecafb60e21b815260040160405180910390fd5b89888015610ddd575f82815260046020526040902060060154811015610ddd5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e0457604051630ca6549f60e11b815260040160405180910390fd5b610e108c8c8b3461230c565b610e1a8c8c6123dd565b505050505050505050505050565b5f610e328261094b565b610e4f57604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e6593929190612e5a565b60408051601f1981840301815291815281516020928301205f86815260049093529120549091508114610eab576040516349923ed160e11b815260040160405180910390fd5b5f838152600460205260409020600101546001600160a01b03898116911614610ee75760405163611876b160e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff888116600160c01b9092041614610f2757604051635f4c19f760e01b815260040160405180910390fd5b5f8381526004602052604090206001015463ffffffff878116600160a01b9092041614610f6757604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600460205260409020600701548414610f9757604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fc65760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561101957610fe48261094b565b61100157604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f6110298d8d8d8d8d8d8d61151c565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556004909152808220600390810154868452919092209091015491925061107691612dc4565b5f828152600460205260408082206003908101939093558482528082209092018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110de81611b11565b6110fb57604051636030e5f560e11b815260040160405180910390fd5b5f87815260046020526040902054861461112857604051630763e45d60e41b815260040160405180910390fd5b5f878152600460205260409020600101546001600160a01b038681169116146111645760405163f089a18560e01b815260040160405180910390fd5b5f8781526004602052604090206001015463ffffffff600160c01b909104811690851611156111a657604051633f61762b60e01b815260040160405180910390fd5b5f878152600460205260409020600601548311156111d757604051634d497e9360e11b815260040160405180910390fd5b5f878152600460208190526040909120015491505095945050505050565b5f805b8751821015611493575f88838151811061121457611214612d9c565b602002602001015190505f88848151811061123157611231612d9c565b602002602001015190505f816001600160401b03811115611254576112546126a4565b60405190808252806020026020018201604052801561127d578160200160208202803683370190505b5090505f826001600160401b03811115611299576112996126a4565b6040519080825280602002602001820160405280156112c2578160200160208202803683370190505b5090505f836001600160401b038111156112de576112de6126a4565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b5090505f846001600160401b03811115611323576113236126a4565b60405190808252806020026020018201604052801561134c578160200160208202803683370190505b5090505f5b8581101561146c578c888151811061136b5761136b612d9c565b602002602001015185828151811061138557611385612d9c565b6020026020010181815250508b88815181106113a3576113a3612d9c565b60200260200101518482815181106113bd576113bd612d9c565b60200260200101906001600160a01b031690816001600160a01b0316815250508a88815181106113ef576113ef612d9c565b602002602001015183828151811061140957611409612d9c565b60200260200101818152505089888151811061142757611427612d9c565b602002602001015182828151811061144157611441612d9c565b60209081029190910101528761145681612e09565b985050808061146490612e09565b915050611351565b611479878686868661095f565b50505050505050818061148b90612e09565b9250506111f8565b61149b6114a5565b5050505050505050565b335f81815260208190526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114e3573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526002602052604081205481036115495760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161155f93929190612e5a565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115959796959493929190612e92565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516115f49796959493929190612f16565b60405180910390a461160b81838a8a8a8934612445565b9998505050505050505050565b335f81815260066020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600460205260408120600101548291600160c01b90910463ffffffff1690036116a55760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff16156116d7576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff16801580159061171057504263ffffffff168163ffffffff1611155b1561172e5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff16801580159061176657504263ffffffff168163ffffffff16115b156117845760405163079994c560e31b815260040160405180910390fd5b5f848152600460205260409020600301546117a0903490612dc4565b5f858152600460205260409081902060030182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66916117f191349190918252602082015260400190565b60405180910390a350505050565b5f86815260026020526040812054810361182c5760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161184293929190612e5a565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118789796959493929190612e92565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118d79796959493929190612f16565b60405180910390a46118ee81838989895f34612445565b98975050505050505050565b5f838152600460205260408120600101548491600160c01b90910463ffffffff16900361193a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff161561196c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff1680158015906119a557504263ffffffff168163ffffffff1611155b156119c35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff1680158015906119fb57504263ffffffff168163ffffffff16115b15611a195760405163079994c560e31b815260040160405180910390fd5b8534805f03611a3b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526004602052604081206006015490819003611a8a575f83815260046020526040902060070154821015611a855760405163291784d560e01b815260040160405180910390fd5b611ab5565b611a95816002612e21565b821015611ab5576040516328eecafb60e21b815260040160405180910390fd5b88878015611aee575f82815260046020526040902060060154811015611aee5760405163f6631e6760e01b815260040160405180910390fd5b611afa8b8b333461230c565b611b048b8b6123dd565b5050505050505050505050565b5f8181526004602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b4d575063ffffffff811615155b8015611b6557504263ffffffff168163ffffffff1611155b9392505050565b6001545f81815260026020908152604080832043905551919291611b9291859101612f65565b60408051601f1981840301815282825280516020918201205f858152600390925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611be8908790612f80565b60405180910390a3611bfb816001612dc4565b60015590505b919050565b5f80611c1188611b6c565b90506118ee8188888888886117ff565b5f81611c2c81611b11565b611c4957604051636030e5f560e11b815260040160405180910390fd5b50505f908152600460208190526040909120015490565b5f80611c6b83611c21565b905060028101611cce575f8381526007602052604090205480611ca15760405163079442c960e01b815260040160405180910390fd5b611caa81611c21565b915060028201611ccc5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526004602052604090206005810154600690910154611cfb9190859085908561217d565b5f868152600460208190526040822001548614611d185784611d1a565b815b9050611d27878783612059565b50505050505050565b5f8181526004602052604090206001015481906001600160a01b03163314611d6b57604051634361661f60e11b815260040160405180910390fd5b5f82815260046020526040902060020154829060ff16611d9e5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260046020526040902060028101805460ff1916905560010154611dd290600160c01b900463ffffffff1642612f92565b5f84815260046020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526004602052604090206001015483906001600160a01b03163314611e6d57604051634361661f60e11b815260040160405180910390fd5b5f848152600460205260408120600101548591600160c01b90910463ffffffff169003611ead5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526004602052604090206002015460ff1615611edf576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260046020526040902060010154600160e01b900463ffffffff168015801590611f1857504263ffffffff168163ffffffff1611155b15611f365760405163be17c46b60e01b815260040160405180910390fd5b5f82815260046020526040902060010154600160a01b900463ffffffff168015801590611f6e57504263ffffffff168163ffffffff16115b15611f8c5760405163079994c560e31b815260040160405180910390fd5b86858015611fc5575f82815260046020526040902060060154811015611fc55760405163f6631e6760e01b815260040160405180910390fd5b5f89815260046020526040902060010154600160e01b900463ffffffff16612000576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260046020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526004602052604090206001015483906001600160a01b0316331461209457604051634361661f60e11b815260040160405180910390fd5b5f84815260046020526040902060020154849060ff166120c75760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166120ee576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600460205260408120600201805460ff191690556121419086908690869061230c565b5f85815260046020819052604090912090810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555b5050505050565b838383835f604051602001612196959493929190612faf565b604051602081830303815290604052805190602001208514612176576040516303a479f160e11b815260040160405180910390fd5b5f80878303612285576001600160a01b038616612242578495506001195f1b881415801561220857505f8981526004602052604090206003015415155b1561223d575f8981526004602052604090206003015461222b908a908890612294565b5f898152600460205260408120600301555b612285565b856001600160a01b0316856001600160a01b031614612285575f8488101561226a578761226c565b845b905061227d8a88610b9c848c612df6565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152602081905260409020546122b7908290612dc4565b6001600160a01b0383165f81815260208181526040918290209390935551838152909185917f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6910160405180910390a3505050565b5f84815260046020908152604080832060050154905161233492879186918891879101612faf565b6040516020818303038152906040528051906020012090505f821115612368575f8581526004602052604090206006018290555b5f8581526004602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f8281526004602081905260409091209081018290556001015461240e90600160c01b900463ffffffff1642612f92565b5f92835260046020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600460205260409020600101548790600160c01b900463ffffffff1615612486576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036124ac5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106124d657604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906124f85750336001600160a01b03881614155b15612580576001600160a01b0387165f90815260066020526040902054808210156125365760405163d72564c760e01b815260040160405180910390fd5b6125408183612df6565b6001600160a01b0389165f90815260208190526040902054909250612566908290612dc4565b6001600160a01b0389165f90815260208190526040902055505b5f898152600460205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561262c575f89815260046020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612682575f89815260046020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906126799087815260200190565b60405180910390a25b505050505050505050565b5f6020828403121561269d575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156126e0576126e06126a4565b604052919050565b5f6001600160401b03821115612700576127006126a4565b5060051b60200190565b5f82601f830112612719575f80fd5b8135602061272e612729836126e8565b6126b8565b82815260059290921b8401810191818101908684111561274c575f80fd5b8286015b848110156127675780358352918301918301612750565b509695505050505050565b80356001600160a01b0381168114611c01575f80fd5b5f82601f830112612797575f80fd5b813560206127a7612729836126e8565b82815260059290921b840181019181810190868411156127c5575f80fd5b8286015b84811015612767576127da81612772565b83529183019183016127c9565b5f805f805f60a086880312156127fb575f80fd5b8535945060208601356001600160401b0380821115612818575f80fd5b61282489838a0161270a565b95506040880135915080821115612839575f80fd5b61284589838a01612788565b9450606088013591508082111561285a575f80fd5b61286689838a0161270a565b9350608088013591508082111561287b575f80fd5b506128888882890161270a565b9150509295509295909350565b5f805f80608085870312156128a8575f80fd5b8435935060208501359250604085013591506128c660608601612772565b905092959194509250565b5f82601f8301126128e0575f80fd5b81356001600160401b038111156128f9576128f96126a4565b61290c601f8201601f19166020016126b8565b818152846020838601011115612920575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c01575f80fd5b5f805f805f805f80610100898b031215612967575f80fd5b8835975060208901356001600160401b03811115612983575f80fd5b61298f8b828c016128d1565b97505061299e60408a01612772565b95506129ac60608a0161293c565b94506129ba60808a0161293c565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a086880312156129f0575f80fd5b8535945060208601359350612a0760408701612772565b9250612a156060870161293c565b949793965091946080013592915050565b5f805f805f8060c08789031215612a3b575f80fd5b86356001600160401b0380821115612a51575f80fd5b612a5d8a838b0161270a565b97506020890135915080821115612a72575f80fd5b612a7e8a838b0161270a565b96506040890135915080821115612a93575f80fd5b612a9f8a838b0161270a565b95506060890135915080821115612ab4575f80fd5b612ac08a838b01612788565b94506080890135915080821115612ad5575f80fd5b612ae18a838b0161270a565b935060a0890135915080821115612af6575f80fd5b50612b0389828a0161270a565b9150509295509295509295565b5f805f805f805f60e0888a031215612b26575f80fd5b8735965060208801356001600160401b03811115612b42575f80fd5b612b4e8a828b016128d1565b965050612b5d60408901612772565b9450612b6b6060890161293c565b9350612b796080890161293c565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612ba5575f80fd5b611b6582612772565b5f805f805f8060c08789031215612bc3575f80fd5b8635955060208701356001600160401b03811115612bdf575f80fd5b612beb89828a016128d1565b955050612bfa60408801612772565b9350612c086060880161293c565b9250612c166080880161293c565b915060a087013590509295509295509295565b5f805f60608486031215612c3b575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612c62575f80fd5b81356001600160401b03811115612c77575f80fd5b612c83848285016128d1565b949350505050565b5f805f805f8060c08789031215612ca0575f80fd5b86356001600160401b0380821115612cb6575f80fd5b612cc28a838b016128d1565b97506020890135915080821115612cd7575f80fd5b50612beb89828a016128d1565b5f805f805f8060c08789031215612cf9575f80fd5b8635955060208701359450612d1060408801612772565b93506060870135925060808701359150612d2c60a08801612772565b90509295509295509295565b5f805f60608486031215612d4a575f80fd5b83359250612d5a60208501612772565b9150604084013590509250925092565b5f805f60608486031215612d7c575f80fd5b8335925060208401359150612d9360408501612772565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cce57611cce612db0565b5f82612df157634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cce57611cce612db0565b5f60018201612e1a57612e1a612db0565b5060010190565b8082028115828204841417611cce57611cce612db0565b5f5b83811015612e52578181015183820152602001612e3a565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612e83816024850160208701612e38565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612f02816020860160208601612e38565b601f01601f19169290920160200192915050565b87815260e060208201525f612f2e60e0830189612eeb565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612f76818460208701612e38565b9190910192915050565b602081525f611b656020830184612eeb565b63ffffffff818116838216019080821115611ccc57611ccc612db0565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220370696ab38400820918b0c40a7d5dd18e71a451ee03396b12e432df985ab5f4164736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f815260200162002f5d603f9139620000d3565b506200005d6040518060800160405280604f815260200162003039604f9139620000d3565b50620000826040518060800160405280605a815260200162002fdf605a9139620000d3565b50620000a76040518060800160405280605c815260200162002f01605c9139620000d3565b50620000cc60405180608001604052806043815260200162002f9c60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612cec80620002155f395ff3fe608060405260043610610207575f3560e01c806377f325df11610113578063a462fb7b1161009d578063d44e293c1161006d578063d44e293c146107dd578063e12891d4146107fc578063ebbdd2b01461081b578063f6a94ecb1461083a578063fe92049d14610859575f80fd5b8063a462fb7b14610758578063acae8f4e14610777578063bc525652146107b2578063d09cc57e14610758575f80fd5b80638d552d46116100e35780638d552d461461057a578063924532fb146105a857806395addb90146105d95780639e63fa6a146106cd5780639f1025c61461071d575f80fd5b806377f325df146104eb5780637f8d429e146104fe57806382ffa9f71461052d57806383bf46091461055b575f80fd5b8063484c071411610194578063590158a711610164578063590158a71461040657806359245ff31461046f5780636fa427421461048257806370a08231146104ad578063762c38fd146104d8575f80fd5b8063484c0714146103635780634df6ca2a146103915780634e60f883146103b057806351577ea9146103db575f80fd5b80632518904c116101da5780632518904c146102a057806326d6c97b146102ef57806328828b1e1461031d5780633ccfd60b1461033c578063484b93c414610350575f80fd5b80631101a0fd1461020b578063111ec1381461022c57806312a203c31461023f5780632417395c14610271575b5f80fd5b348015610216575f80fd5b5061022a61022536600461256f565b610878565b005b61022a61023a36600461261e565b610b1a565b34801561024a575f80fd5b5061025e61025936600461266d565b610d59565b6040519081526020015b60405180910390f35b34801561027c575f80fd5b5061025e61028b3660046126b7565b5f908152600360208190526040909120015490565b3480156102ab575f80fd5b506102d76102ba3660046126b7565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610268565b3480156102fa575f80fd5b5061025e6103093660046126b7565b5f9081526003602052604090206006015490565b348015610328575f80fd5b5061022a6103373660046126ce565b610e77565b348015610347575f80fd5b5061022a61112b565b61025e61035e366004612825565b6111a2565b34801561036e575f80fd5b5061025e61037d3660046126b7565b5f9081526003602052604090206007015490565b34801561039c575f80fd5b5061022a6103ab3660046126b7565b61129e565b3480156103bb575f80fd5b5061025e6103ca3660046126b7565b60026020525f908152604090205481565b3480156103e6575f80fd5b5061025e6103f53660046126b7565b5f9081526003602052604090205490565b348015610411575f80fd5b5061044a6104203660046126b7565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610268565b61022a61047d3660046126b7565b6112eb565b34801561048d575f80fd5b5061025e61049c3660046128ab565b60056020525f908152604090205481565b3480156104b8575f80fd5b5061025e6104c73660046128ab565b60066020525f908152604090205481565b61025e6104e63660046128c4565b611486565b61022a6104f9366004612940565b611581565b348015610509575f80fd5b5061051d6105183660046126b7565b611798565b6040519015158152602001610268565b348015610538575f80fd5b5061025e6105473660046126b7565b5f9081526003602052604090206005015490565b348015610566575f80fd5b5061025e610575366004612969565b6117f3565b348015610585575f80fd5b5061025e6105943660046126b7565b5f9081526003602052604090206004015490565b3480156105b3575f80fd5b5061051d6105c23660046126b7565b5f9081526003602052604090206002015460ff1690565b3480156105e4575f80fd5b506106666105f33660046126b7565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610268565b3480156106d8575f80fd5b506107086106e73660046126b7565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610268565b348015610728575f80fd5b506107086107373660046126b7565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b348015610763575f80fd5b5061025e6107723660046126b7565b611888565b348015610782575f80fd5b506107086107913660046126b7565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b3480156107bd575f80fd5b5061025e6107cc3660046126b7565b60016020525f908152604090205481565b3480156107e8575f80fd5b5061022a6107f73660046129a3565b6118c6565b348015610807575f80fd5b5061051d61081636600461256f565b61193f565b348015610826575f80fd5b5061022a6108353660046126b7565b611adc565b348015610845575f80fd5b5061022a6108543660046129f7565b611bde565b348015610864575f80fd5b5061022a610873366004612a29565b611e05565b8461088281611798565b61089f57604051636030e5f560e11b815260040160405180910390fd5b84515f036108c0576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a7c57610973838c838151811061091857610918612a5b565b60200260200101518a848151811061093257610932612a5b565b60200260200101518c858151811061094c5761094c612a5b565b60200260200101518e868151811061096657610966612a5b565b6020026020010151611f26565b610990576040516303a479f160e11b815260040160405180910390fd5b61099a8585612a83565b93506109f68c8386898e86815181106109b5576109b5612a5b565b60200260200101518e87815181106109cf576109cf612a5b565b60200260200101518e88815181106109e9576109e9612a5b565b6020026020010151611f63565b8097508195505050888181518110610a1057610a10612a5b565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a4d57610a40602886612a9c565b610a4a9086612abb565b94505b8a8181518110610a5f57610a5f612a5b565b602002602001015192508080610a7490612ace565b9150506108f9565b8215610abe57610a8d8c878661202b565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610af9565b610ad28c87610acd8888612a83565b61202b565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610b5a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b8c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610bc557504263ffffffff168163ffffffff1611155b15610be35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610c1b57504263ffffffff168163ffffffff16115b15610c395760405163079994c560e31b815260040160405180910390fd5b8634805f03610c5b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610caa575f83815260036020526040902060070154821015610ca55760405163291784d560e01b815260040160405180910390fd5b610cd5565b610cb5816002612ae6565b821015610cd5576040516328eecafb60e21b815260040160405180910390fd5b89888015610d0e575f82815260036020526040902060060154811015610d0e5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d3557604051630ca6549f60e11b815260040160405180910390fd5b610d418c8c8b346120ab565b610d4b8c8c61217c565b505050505050505050505050565b5f85610d6481611798565b610d8157604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610dae57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610dea5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610e2c57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610e5d57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b8751821015611119575f888381518110610e9657610e96612a5b565b602002602001015190505f888481518110610eb357610eb3612a5b565b602002602001015190505f8167ffffffffffffffff811115610ed757610ed761242a565b604051908082528060200260200182016040528015610f00578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610f1d57610f1d61242a565b604051908082528060200260200182016040528015610f46578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610f6357610f6361242a565b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b5090505f8467ffffffffffffffff811115610fa957610fa961242a565b604051908082528060200260200182016040528015610fd2578160200160208202803683370190505b5090505f5b858110156110f2578c8881518110610ff157610ff1612a5b565b602002602001015185828151811061100b5761100b612a5b565b6020026020010181815250508b888151811061102957611029612a5b565b602002602001015184828151811061104357611043612a5b565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061107557611075612a5b565b602002602001015183828151811061108f5761108f612a5b565b6020026020010181815250508988815181106110ad576110ad612a5b565b60200260200101518282815181106110c7576110c7612a5b565b6020908102919091010152876110dc81612ace565b98505080806110ea90612ace565b915050610fd7565b6110ff8786868686610878565b50505050505050818061111190612ace565b925050610e7a565b61112161112b565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611169573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036111cf5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016111e593929190612b1f565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161121b9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161127a9796959493929190612bdb565b60405180910390a461129181838a8a8a89346121e2565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff16900361132b5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561135d576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061139657504263ffffffff168163ffffffff1611155b156113b45760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906113ec57504263ffffffff168163ffffffff16115b1561140a5760405163079994c560e31b815260040160405180910390fd5b5f8481526003602081905260409091200154611427903490612a83565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161147891349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036114b35760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114c993929190612b1f565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114ff9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161155e9796959493929190612bdb565b60405180910390a461157581838989895f346121e2565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036115c15760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156115f3576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061162c57504263ffffffff168163ffffffff1611155b1561164a5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061168257504263ffffffff168163ffffffff16115b156116a05760405163079994c560e31b815260040160405180910390fd5b8534805f036116c257604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611711575f8381526003602052604090206007015482101561170c5760405163291784d560e01b815260040160405180910390fd5b61173c565b61171c816002612ae6565b82101561173c576040516328eecafb60e21b815260040160405180910390fd5b88878015611775575f828152600360205260409020600601548110156117755760405163f6631e6760e01b815260040160405180910390fd5b6117818b8b33346120ab565b61178b8b8b61217c565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117d457505f8163ffffffff16115b80156117ec57504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161181591859101612c2a565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061186b908790612c45565b60405180910390a361187e816001612a83565b5f5590505b919050565b5f8161189381611798565b6118b057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f86815260036020526040902060058101546006909101546118ed91908590859085611f26565b61190a576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146119275784611929565b815b9050611936878783611e05565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff16820361197e5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119b757504263ffffffff168163ffffffff1611155b156119d55760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a0d57504263ffffffff168163ffffffff16115b15611a2b5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611a4f575080885114155b80611a5b575080875114155b15611a6a575f95505050611ad0565b5f5b81811015611ac857611a8a838c838151811061091857610918612a5b565b611a99575f9650505050611ad0565b8a8181518110611aab57611aab612a5b565b602002602001015192508080611ac090612ace565b915050611a6c565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611b1757604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611b4a5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611b7e90600160c01b900463ffffffff1642612c57565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611c1957604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611c595760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611c8b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611cc457504263ffffffff168163ffffffff1611155b15611ce25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611d1a57504263ffffffff168163ffffffff16115b15611d385760405163079994c560e31b815260040160405180910390fd5b86858015611d71575f82815260036020526040902060060154811015611d715760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611dac576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611e4057604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611e735760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611e9a576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611eed908690869086906120ab565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001611f40959493929190612c7b565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361201c576001600160a01b038616611fd9578495505f60035f8b81526020019081526020015f2060030154118015611f9e575060015b15611fd457611fc2898760035f8d81526020019081526020015f206003015461202b565b5f898152600360208190526040822001555b61201c565b856001600160a01b0316856001600160a01b03161461201c575f848810156120015787612003565b845b90506120148a88610acd848c612abb565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526006602052604090205461204e908290612a83565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061209e9085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516120d392879186918891879101612c7b565b6040516020818303038152906040528051906020012090505f821115612107575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546121ab90600160c01b900463ffffffff1642612c57565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612223576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036122495760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061227357604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122955750336001600160a01b03881614155b1561231d576001600160a01b0387165f90815260056020526040902054808210156122d35760405163d72564c760e01b815260040160405180910390fd5b6122dd8183612abb565b6001600160a01b0389165f90815260066020526040902054909250612303908290612a83565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123c9575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561241f575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906124169087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124675761246761242a565b604052919050565b5f67ffffffffffffffff8211156124885761248861242a565b5060051b60200190565b5f82601f8301126124a1575f80fd5b813560206124b66124b18361246f565b61243e565b82815260059290921b840181019181810190868411156124d4575f80fd5b8286015b848110156124ef57803583529183019183016124d8565b509695505050505050565b80356001600160a01b0381168114611883575f80fd5b5f82601f83011261251f575f80fd5b8135602061252f6124b18361246f565b82815260059290921b8401810191818101908684111561254d575f80fd5b8286015b848110156124ef57612562816124fa565b8352918301918301612551565b5f805f805f60a08688031215612583575f80fd5b85359450602086013567ffffffffffffffff808211156125a1575f80fd5b6125ad89838a01612492565b955060408801359150808211156125c2575f80fd5b6125ce89838a01612510565b945060608801359150808211156125e3575f80fd5b6125ef89838a01612492565b93506080880135915080821115612604575f80fd5b5061261188828901612492565b9150509295509295909350565b5f805f8060808587031215612631575f80fd5b84359350602085013592506040850135915061264f606086016124fa565b905092959194509250565b803563ffffffff81168114611883575f80fd5b5f805f805f60a08688031215612681575f80fd5b8535945060208601359350612698604087016124fa565b92506126a66060870161265a565b949793965091946080013592915050565b5f602082840312156126c7575f80fd5b5035919050565b5f805f805f8060c087890312156126e3575f80fd5b863567ffffffffffffffff808211156126fa575f80fd5b6127068a838b01612492565b9750602089013591508082111561271b575f80fd5b6127278a838b01612492565b9650604089013591508082111561273c575f80fd5b6127488a838b01612492565b9550606089013591508082111561275d575f80fd5b6127698a838b01612510565b9450608089013591508082111561277e575f80fd5b61278a8a838b01612492565b935060a089013591508082111561279f575f80fd5b506127ac89828a01612492565b9150509295509295509295565b5f82601f8301126127c8575f80fd5b813567ffffffffffffffff8111156127e2576127e261242a565b6127f5601f8201601f191660200161243e565b818152846020838601011115612809575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561283b575f80fd5b87359650602088013567ffffffffffffffff811115612858575f80fd5b6128648a828b016127b9565b965050612873604089016124fa565b94506128816060890161265a565b935061288f6080890161265a565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128bb575f80fd5b6117ec826124fa565b5f805f805f8060c087890312156128d9575f80fd5b86359550602087013567ffffffffffffffff8111156128f6575f80fd5b61290289828a016127b9565b955050612911604088016124fa565b935061291f6060880161265a565b925061292d6080880161265a565b915060a087013590509295509295509295565b5f805f60608486031215612952575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612979575f80fd5b813567ffffffffffffffff81111561298f575f80fd5b61299b848285016127b9565b949350505050565b5f805f805f8060c087890312156129b8575f80fd5b86359550602087013594506129cf604088016124fa565b935060608701359250608087013591506129eb60a088016124fa565b90509295509295509295565b5f805f60608486031215612a09575f80fd5b83359250612a19602085016124fa565b9150604084013590509250925092565b5f805f60608486031215612a3b575f80fd5b8335925060208401359150612a52604085016124fa565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612a9657612a96612a6f565b92915050565b5f82612ab657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612a9657612a96612a6f565b5f60018201612adf57612adf612a6f565b5060010190565b8082028115828204841417612a9657612a96612a6f565b5f5b83811015612b17578181015183820152602001612aff565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612b48816024850160208701612afd565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612bc7816020860160208601612afd565b601f01601f19169290920160200192915050565b87815260e060208201525f612bf360e0830189612bb0565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612c3b818460208701612afd565b9190910192915050565b602081525f6117ec6020830184612bb0565b63ffffffff818116838216019080821115612c7457612c74612a6f565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220552271d1a2a5768b24fc174d4cab37dbbec32119faabe09b6f6e360e34f9f23464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -0,0 +1 @@
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620034fd603f9139620000d3565b506200005d6040518060800160405280604f8152602001620035d9604f9139620000d3565b50620000826040518060800160405280605a81526020016200357f605a9139620000d3565b50620000a76040518060800160405280605c8152602001620034a1605c9139620000d3565b50620000cc6040518060800160405280604381526020016200353c60439139620000d3565b506200023c565b6007545f90600160a01b900463ffffffff1615620001045760405163379dfc6360e01b815260040160405180910390fd5b5f805480825260016020908152604092839020439055915190916200012c91859101620001c5565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000184908790620001e2565b60405180910390a36200019981600162000216565b5f5592915050565b5f5b83811015620001bd578181015183820152602001620001a3565b50505f910152565b5f8251620001d8818460208701620001a1565b9190910192915050565b602081525f825180602084015262000202816040850160208701620001a1565b601f01601f19169190910160400192915050565b808201808211156200023657634e487b7160e01b5f52601160045260245ffd5b92915050565b613257806200024a5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637f8d429e11610140578063b8eaa980116100bf578063dbc7214411610084578063dbc7214414610744578063e12891d414610778578063ebbdd2b01461078b578063f6a94ecb1461079e578063fc0c546a146107b1578063fe92049d146107c4575f80fd5b8063b8eaa980146106ec578063bc525652146106ff578063d09cc57e146106aa578063d44e293c1461071e578063d4876b9f14610731575f80fd5b806395addb901161010557806395addb90146105645780639e63fa6a1461064c5780639f1025c61461067b578063a462fb7b146106aa578063acae8f4e146106bd575f80fd5b80637f8d429e146104c557806382ffa9f7146104e857806383bf46091461050a5780638d552d461461051d578063924532fb1461053f575f80fd5b8063420dfdd9116101cc57806352debac31161019157806352debac314610404578063590158a7146104175780636fa427421461047457806370a0823114610493578063762c38fd146104b2575f80fd5b8063420dfdd914610365578063484c0714146103915780634df6ca2a146103b35780634e60f883146103c657806351577ea9146103e5575f80fd5b80632518904c116102125780632518904c146102d257806326d6c97b1461031557806328828b1e146103375780632f998a6f1461034a5780633ccfd60b1461035d575f80fd5b80631101a0fd1461024e578063128b7a471461026357806312a203c314610276578063144fa6d71461029c5780632417395c146102af575b5f80fd5b61026161025c3660046129ec565b6107d7565b005b610261610271366004612a9a565b610a79565b610289610284366004612acd565b610c4c565b6040519081526020015b60405180910390f35b6102616102aa366004612b19565b610d6a565b6102896102bd366004612b34565b5f908152600360208190526040909120015490565b6102fd6102e0366004612b34565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610293565b610289610323366004612b34565b5f9081526003602052604090206006015490565b610261610345366004612b4b565b610db6565b610261610358366004612c35565b611094565b6102616112e3565b60075461037c90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610293565b61028961039f366004612b34565b5f9081526003602052604090206007015490565b6102616103c1366004612b34565b6113da565b6102896103d4366004612b34565b60026020525f908152604090205481565b6102896103f3366004612b34565b5f9081526003602052604090205490565b610289610412366004612ccf565b611455565b61044f610425366004612b34565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610293565b610289610482366004612b19565b60056020525f908152604090205481565b6102896104a1366004612b19565b60066020525f908152604090205481565b6102896104c0366004612d5e565b61155c565b6104d86104d3366004612b34565b611657565b6040519015158152602001610293565b6102896104f6366004612b34565b5f9081526003602052604090206005015490565b610289610518366004612ddb565b6116bd565b61028961052b366004612b34565b5f9081526003602052604090206004015490565b6104d861054d366004612b34565b5f9081526003602052604090206002015460ff1690565b6105e5610572366004612b34565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610293565b61037c61065a366004612b34565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b61037c610689366004612b34565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102896106b8366004612b34565b611786565b61037c6106cb366004612b34565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102616106fa366004612e14565b6117c4565b61028961070d366004612b34565b60016020525f908152604090205481565b61026161072c366004612e48565b611a3b565b61028961073f366004612ea2565b611ab4565b610261610752366004612f29565b6007805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6104d86107863660046129ec565b611bba565b610261610799366004612b34565b611d57565b6102616107ac366004612f42565b611e87565b6007546102fd906001600160a01b031681565b6102616107d2366004612f77565b6120dc565b846107e181611657565b6107fe57604051636030e5f560e11b815260040160405180910390fd5b84515f0361081f576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a518110156109db576108d2838c838151811061087757610877612fad565b60200260200101518a848151811061089157610891612fad565b60200260200101518c85815181106108ab576108ab612fad565b60200260200101518e86815181106108c5576108c5612fad565b602002602001015161222b565b6108ef576040516303a479f160e11b815260040160405180910390fd5b6108f98585612fd5565b93506109558c8386898e868151811061091457610914612fad565b60200260200101518e878151811061092e5761092e612fad565b60200260200101518e888151811061094857610948612fad565b6020026020010151612268565b809750819550505088818151811061096f5761096f612fad565b6020026020010151945060035f8d81526020019081526020015f206006015485146109ac5761099f602886612fe8565b6109a99086613007565b94505b8a81815181106109be576109be612fad565b6020026020010151925080806109d39061301a565b915050610858565b8215610a1d576109ec8c8786612330565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a58565b610a318c87610a2c8888612fd5565b612330565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610ab95760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610aeb576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b2457504263ffffffff168163ffffffff1611155b15610b425760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b7a57504263ffffffff168163ffffffff16115b15610b985760405163079994c560e31b815260040160405180910390fd5b600754600160a01b900463ffffffff1615610bc65760405163379dfc6360e01b815260040160405180910390fd5b610bcf846123b0565b5f8581526003602081905260409091200154610bec908590612fd5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c3d91899190918252602082015260400190565b60405180910390a35050505050565b5f85610c5781611657565b610c7457604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610ca157604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610cdd5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d1f57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d5057604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d9457604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900463ffffffff1615610de45760405163379dfc6360e01b815260040160405180910390fd5b5f805b8751821015611082575f888381518110610e0357610e03612fad565b602002602001015190505f888481518110610e2057610e20612fad565b602002602001015190505f816001600160401b03811115610e4357610e436128a6565b604051908082528060200260200182016040528015610e6c578160200160208202803683370190505b5090505f826001600160401b03811115610e8857610e886128a6565b604051908082528060200260200182016040528015610eb1578160200160208202803683370190505b5090505f836001600160401b03811115610ecd57610ecd6128a6565b604051908082528060200260200182016040528015610ef6578160200160208202803683370190505b5090505f846001600160401b03811115610f1257610f126128a6565b604051908082528060200260200182016040528015610f3b578160200160208202803683370190505b5090505f5b8581101561105b578c8881518110610f5a57610f5a612fad565b6020026020010151858281518110610f7457610f74612fad565b6020026020010181815250508b8881518110610f9257610f92612fad565b6020026020010151848281518110610fac57610fac612fad565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fde57610fde612fad565b6020026020010151838281518110610ff857610ff8612fad565b60200260200101818152505089888151811061101657611016612fad565b602002602001015182828151811061103057611030612fad565b6020908102919091010152876110458161301a565b98505080806110539061301a565b915050610f40565b61106887868686866107d7565b50505050505050818061107a9061301a565b925050610de7565b61108a6112e3565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110d45760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611106576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061113f57504263ffffffff168163ffffffff1611155b1561115d5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119557504263ffffffff168163ffffffff16115b156111b35760405163079994c560e31b815260040160405180910390fd5b8684805f036111d557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611224575f8381526003602052604090206007015482101561121f5760405163291784d560e01b815260040160405180910390fd5b61124f565b61122f816002613032565b82101561124f576040516328eecafb60e21b815260040160405180910390fd5b89888015611288575f828152600360205260409020600601548110156112885760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156112b65760405163379dfc6360e01b815260040160405180910390fd5b6112bf896123b0565b6112cb8c8c338c6124a8565b6112d58c8c61256f565b505050505050505050505050565b600754600160a01b900463ffffffff16156113115760405163379dfc6360e01b815260040160405180910390fd5b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a9190613049565b6113a2575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b600754600160a01b900463ffffffff16156114085760405163379dfc6360e01b815260040160405180910390fd5b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61145f826123b0565b5f89815260016020526040812054900361148c5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a6040516020016114a29392919061308a565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016114d897969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516115379796959493929190613146565b60405180910390a461154e81838b8b8b8a8a6125d5565b9a9950505050505050505050565b5f8681526001602052604081205481036115895760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161159f9392919061308a565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016115d597969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516116349796959493929190613146565b60405180910390a461164b81838989895f806125d5565b98975050505050505050565b6007545f90600160a01b900463ffffffff16158015906116a257506007545f83815260036020526040902060010154600160a01b90910463ffffffff908116600160e01b9092041610155b156116ae57505f919050565b6116b78261284b565b92915050565b6007545f90600160a01b900463ffffffff16156116ed5760405163379dfc6360e01b815260040160405180910390fd5b5f8054808252600160209081526040928390204390559151909161171391859101613195565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906117699087906131b0565b60405180910390a361177c816001612fd5565b5f5590505b919050565b5f8161179181611657565b6117ae57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036118045760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611836576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061186f57504263ffffffff168163ffffffff1611155b1561188d5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906118c557504263ffffffff168163ffffffff16115b156118e35760405163079994c560e31b815260040160405180910390fd5b8784805f0361190557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611954575f8381526003602052604090206007015482101561194f5760405163291784d560e01b815260040160405180910390fd5b61197f565b61195f816002613032565b82101561197f576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119b8575f828152600360205260409020600601548110156119b85760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156119e65760405163379dfc6360e01b815260040160405180910390fd5b6119ef896123b0565b6001600160a01b038a16611a1657604051630ca6549f60e11b815260040160405180910390fd5b611a228d8d8c8c6124a8565b611a2c8d8d61256f565b50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611a629190859085908561222b565b611a7f576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611a9c5784611a9e565b815b9050611aab8787836120dc565b50505050505050565b5f611abe826123b0565b5f888152600160205260408120549003611aeb5760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611b019392919061308a565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611b3797969594939291906130c2565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611b969796959493929190613146565b60405180910390a4611bad81838a8a8a5f8a6125d5565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611bf95760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611c3257504263ffffffff168163ffffffff1611155b15611c505760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611c8857504263ffffffff168163ffffffff16115b15611ca65760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611cca575080885114155b80611cd6575080875114155b15611ce5575f95505050611d4b565b5f5b81811015611d4357611d05838c838151811061087757610877612fad565b611d14575f9650505050611d4b565b8a8181518110611d2657611d26612fad565b602002602001015192508080611d3b9061301a565b915050611ce7565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611d9257604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611dc55760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611df35760405163379dfc6360e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611e2790600160c01b900463ffffffff16426131c2565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ec257604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611f025760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611f34576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611f6d57504263ffffffff168163ffffffff1611155b15611f8b5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611fc357504263ffffffff168163ffffffff16115b15611fe15760405163079994c560e31b815260040160405180910390fd5b8685801561201a575f8281526003602052604090206006015481101561201a5760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156120485760405163379dfc6360e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612083576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461211757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661214a5760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156121785760405163379dfc6360e01b815260040160405180910390fd5b6001600160a01b03831661219f576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556121f2908690869086906124a8565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016122459594939291906131e6565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612321576001600160a01b0386166122de578495505f60035f8b81526020019081526020015f20600301541180156122a3575060015b156122d9576122c7898760035f8d81526020019081526020015f2060030154612330565b5f898152600360208190526040822001555b612321565b856001600160a01b0316856001600160a01b031614612321575f848810156123065787612308565b845b90506123198a88610a2c848c613007565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612353908290612fd5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123a39085815260200190565b60405180910390a3505050565b805f036123ba5750565b335f90815260066020526040902054801561240f578181106123f3576123e08282613007565b335f908152600660205260409020555050565b6123fd8183613007565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612463573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124879190613049565b6124a457604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526003602090815260408083206005015490516124d0928791869188918791016131e6565b6040516020818303038152906040528051906020012090505f821115612504575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c3d565b5f828152600360205260409020600481018290556001015461259e90600160c01b900463ffffffff16426131c2565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612616576040516001627a443360e01b0319815260040160405180910390fd5b600754600160a01b900463ffffffff16156126445760405163379dfc6360e01b815260040160405180910390fd5b8463ffffffff165f0361266a5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061269457604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126b65750336001600160a01b03881614155b1561273e576001600160a01b0387165f90815260056020526040902054808210156126f45760405163d72564c760e01b815260040160405180910390fd5b6126fe8183613007565b6001600160a01b0389165f90815260066020526040902054909250612724908290612fd5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127ea575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612840575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128379087815260200190565b60405180910390a25b505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561288757505f8163ffffffff16115b801561289f57504263ffffffff168163ffffffff1611155b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128e2576128e26128a6565b604052919050565b5f6001600160401b03821115612902576129026128a6565b5060051b60200190565b5f82601f83011261291b575f80fd5b8135602061293061292b836128ea565b6128ba565b82815260059290921b8401810191818101908684111561294e575f80fd5b8286015b848110156129695780358352918301918301612952565b509695505050505050565b6001600160a01b0381168114612988575f80fd5b50565b5f82601f83011261299a575f80fd5b813560206129aa61292b836128ea565b82815260059290921b840181019181810190868411156129c8575f80fd5b8286015b848110156129695780356129df81612974565b83529183019183016129cc565b5f805f805f60a08688031215612a00575f80fd5b8535945060208601356001600160401b0380821115612a1d575f80fd5b612a2989838a0161290c565b95506040880135915080821115612a3e575f80fd5b612a4a89838a0161298b565b94506060880135915080821115612a5f575f80fd5b612a6b89838a0161290c565b93506080880135915080821115612a80575f80fd5b50612a8d8882890161290c565b9150509295509295909350565b5f8060408385031215612aab575f80fd5b50508035926020909101359150565b803563ffffffff81168114611781575f80fd5b5f805f805f60a08688031215612ae1575f80fd5b85359450602086013593506040860135612afa81612974565b9250612b0860608701612aba565b949793965091946080013592915050565b5f60208284031215612b29575f80fd5b813561289f81612974565b5f60208284031215612b44575f80fd5b5035919050565b5f805f805f8060c08789031215612b60575f80fd5b86356001600160401b0380821115612b76575f80fd5b612b828a838b0161290c565b97506020890135915080821115612b97575f80fd5b612ba38a838b0161290c565b96506040890135915080821115612bb8575f80fd5b612bc48a838b0161290c565b95506060890135915080821115612bd9575f80fd5b612be58a838b0161298b565b94506080890135915080821115612bfa575f80fd5b612c068a838b0161290c565b935060a0890135915080821115612c1b575f80fd5b50612c2889828a0161290c565b9150509295509295509295565b5f805f8060808587031215612c48575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612c73575f80fd5b81356001600160401b03811115612c8c57612c8c6128a6565b612c9f601f8201601f19166020016128ba565b818152846020838601011115612cb3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612ce7575f80fd5b8835975060208901356001600160401b03811115612d03575f80fd5b612d0f8b828c01612c64565b9750506040890135612d2081612974565b9550612d2e60608a01612aba565b9450612d3c60808a01612aba565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612d73575f80fd5b8635955060208701356001600160401b03811115612d8f575f80fd5b612d9b89828a01612c64565b9550506040870135612dac81612974565b9350612dba60608801612aba565b9250612dc860808801612aba565b915060a087013590509295509295509295565b5f60208284031215612deb575f80fd5b81356001600160401b03811115612e00575f80fd5b612e0c84828501612c64565b949350505050565b5f805f805f60a08688031215612e28575f80fd5b8535945060208601359350604086013592506060860135612b0881612974565b5f805f805f8060c08789031215612e5d575f80fd5b86359550602087013594506040870135612e7681612974565b9350606087013592506080870135915060a0870135612e9481612974565b809150509295509295509295565b5f805f805f805f60e0888a031215612eb8575f80fd5b8735965060208801356001600160401b03811115612ed4575f80fd5b612ee08a828b01612c64565b9650506040880135612ef181612974565b9450612eff60608901612aba565b9350612f0d60808901612aba565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612f39575f80fd5b61289f82612aba565b5f805f60608486031215612f54575f80fd5b833592506020840135612f6681612974565b929592945050506040919091013590565b5f805f60608486031215612f89575f80fd5b83359250602084013591506040840135612fa281612974565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156116b7576116b7612fc1565b5f8261300257634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156116b7576116b7612fc1565b5f6001820161302b5761302b612fc1565b5060010190565b80820281158282048414176116b7576116b7612fc1565b5f60208284031215613059575f80fd5b8151801515811461289f575f80fd5b5f5b8381101561308257818101518382015260200161306a565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516130b3816024850160208701613068565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613132816020860160208601613068565b601f01601f19169290920160200192915050565b87815260e060208201525f61315e60e083018961311b565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131a6818460208701613068565b9190910192915050565b602081525f61289f602083018461311b565b63ffffffff8181168382160190808211156131df576131df612fc1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122013e66cb09f5714d62a4b22b0e9577236e6bc72b0ad1202b9cb1040d54d8c61f364736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -0,0 +1 @@
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620033e0603f9139620000d3565b506200005d6040518060800160405280604f8152602001620034bc604f9139620000d3565b50620000826040518060800160405280605a815260200162003462605a9139620000d3565b50620000a76040518060800160405280605c815260200162003384605c9139620000d3565b50620000cc6040518060800160405280604381526020016200341f60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002155f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220f95c8652d07779fc0de6ffc3e93f0d15630c13a205b8f9e65f2f68a0efbd12e464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -0,0 +1 @@
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200365a603f9139620000d3565b506200005d6040518060800160405280604f815260200162003736604f9139620000d3565b50620000826040518060800160405280605a8152602001620036dc605a9139620000d3565b50620000a76040518060800160405280605c8152602001620035fe605c9139620000d3565b50620000cc6040518060800160405280604381526020016200369960439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002155f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212207b0dc3e071d46d450a5a3a6a52cb96cdc5429f171ec0b34ceb8250d4643f696d64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f60025534801562000014575f80fd5b50620000396040518060600160405280603f81526020016200351d603f9139620000d4565b506200005e6040518060800160405280604f8152602001620035f9604f9139620000d4565b50620000836040518060800160405280605a81526020016200359f605a9139620000d4565b50620000a86040518060800160405280605c8152602001620034c1605c9139620000d4565b50620000cd6040518060800160405280604381526020016200355c60439139620000d4565b506200020d565b6002545f81815260036020908152604080832043905551919291620000fc9185910162000196565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000154908790620001b3565b60405180910390a362000169816001620001e7565b60025592915050565b5f5b838110156200018e57818101518382015260200162000174565b50505f910152565b5f8251620001a981846020870162000172565b9190910192915050565b602081525f8251806020840152620001d381604085016020870162000172565b601f01601f19169190910160400192915050565b808201808211156200020757634e487b7160e01b5f52601160045260245ffd5b92915050565b6132a6806200021b5f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bc525652116100bf578063d4876b9f11610084578063d4876b9f146107a3578063e83bfb58146107b6578063ebbdd2b0146107d8578063f6a94ecb146107eb578063fc0c546a146107fe578063fe92049d14610810575f80fd5b8063bc5256521461073f578063bf53b1881461075e578063c081d8a314610771578063d09cc57e146106d7578063d44e293c14610790575f80fd5b80639f1025c6116101105780639f1025c614610695578063a1130d04146106c4578063a462fb7b146106d7578063ab5a4e35146106ea578063acae8f4e146106fd578063b8eaa9801461072c575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610651575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042e5780636fa427421461048b57806370a08231146104aa578063762c38fd146104c95780637f8d429e146104dc57806382ffa9f7146104ef575f80fd5b8063484c0714146103a85780634df6ca2a146103ca5780634e60f883146103dd57806351577ea9146103fc57806352debac31461041b575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031557806326d6c97b1461035857806328828b1e1461037a5780632f998a6f1461038d5780633ccfd60b146103a0575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d366004612824565b610823565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612981565b610837565b005b6102aa6102ba366004612a2f565b610ac3565b6102d26102cd366004612a62565b610c67565b60405190815260200161028e565b6102aa6102ee366004612aae565b610d85565b6102d2610301366004612824565b5f9081526005602052604090206003015490565b610340610323366004612824565b5f908152600560205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d2610366366004612824565b5f9081526005602052604090206006015490565b6102aa610388366004612ac9565b610dcf565b6102aa61039b366004612bb3565b61107f565b6102aa6112a0565b6102d26103b6366004612824565b5f9081526005602052604090206007015490565b6102aa6103d8366004612824565b611369565b6102d26103eb366004612824565b60046020525f908152604090205481565b6102d261040a366004612824565b5f9081526005602052604090205490565b6102d2610429366004612c4d565b6113b6565b61046661043c366004612824565b60066020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d2610499366004612aae565b60076020525f908152604090205481565b6102d26104b8366004612aae565b60016020525f908152604090205481565b6102d26104d7366004612cdc565b6114bd565b6102826104ea366004612824565b6115b8565b6102d26104fd366004612824565b5f908152600560208190526040909120015490565b6102d2610520366004612d59565b611613565b6102d2610533366004612824565b5f9081526005602052604090206004015490565b610282610555366004612824565b5f9081526005602052604090206002015460ff1690565b6105ea61057a366004612824565b600560208190525f91825260409091208054600182015460028301546003840154600485015495850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff16949391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b61068061065f366004612824565b5f90815260056020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106806106a3366004612824565b5f90815260056020526040902060010154600160c01b900463ffffffff1690565b6102d26106d2366004612d92565b6116ad565b6102d26106e5366004612824565b6116c8565b6102d26106f8366004612824565b611706565b61068061070b366004612824565b5f90815260056020526040902060010154600160e01b900463ffffffff1690565b6102aa61073a366004612deb565b61177a565b6102d261074d366004612824565b60036020525f908152604090205481565b6102d261076c366004612e1f565b6119c3565b6102d261077f366004612824565b60086020525f908152604090205481565b6102aa61079e366004612eb7565b611c70565b6102d26107b1366004612f11565b611cce565b6102826107c4366004612824565b60096020525f908152604090205460ff1681565b6102aa6107e6366004612824565b611dd4565b6102aa6107f9366004612f98565b611ed6565b5f54610340906001600160a01b031681565b6102aa61081e366004612fcd565b6120fd565b5f600119610830836116c8565b1492915050565b84610841816115b8565b61085e57604051636030e5f560e11b815260040160405180910390fd5b84515f0361087f576040516312fdb46960e31b815260040160405180910390fd5b5f8681526006602090815260408083208054600190910154600593849052918420928301546004909301546001600160a01b0390911693919290825b8a51811015610a2157610935838c83815181106108da576108da613003565b60200260200101518a84815181106108f4576108f4613003565b60200260200101518c858151811061090e5761090e613003565b60200260200101518e868151811061092857610928613003565b602002602001015161221f565b61093f858561302b565b935061099b8c8386898e868151811061095a5761095a613003565b60200260200101518e878151811061097457610974613003565b60200260200101518e888151811061098e5761098e613003565b602002602001015161226d565b80975081955050508881815181106109b5576109b5613003565b6020026020010151945060055f8d81526020019081526020015f206006015485146109f2576109e560288661303e565b6109ef908661305d565b94505b8a8181518110610a0457610a04613003565b602002602001015192508080610a1990613070565b9150506108bb565b8215610a6557610a328c8786612336565b5f8c815260066020526040812080546001600160a01b0319166001600160a01b0389161781556001018690559350610aa0565b610a798c87610a74888861302b565b612336565b5f8c815260066020526040812080546001600160a01b031916815560018101829055600201555b50505f998a52600560208190526040909a20909901989098555050505050505050565b5f828152600560205260408120600101548391600160c01b90910463ffffffff169003610b035760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615610b35576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590610b6e57504263ffffffff168163ffffffff1611155b15610b8c5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff168015801590610bc457504263ffffffff168163ffffffff16115b15610be25760405163079994c560e31b815260040160405180910390fd5b610beb846123b6565b5f85815260056020526040902060030154610c0790859061302b565b5f868152600560205260409081902060030182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c5891899190918252602082015260400190565b60405180910390a35050505050565b5f85610c72816115b8565b610c8f57604051636030e5f560e11b815260040160405180910390fd5b5f878152600560205260409020548614610cbc57604051630763e45d60e41b815260040160405180910390fd5b5f878152600560205260409020600101546001600160a01b03868116911614610cf85760405163f089a18560e01b815260040160405180910390fd5b5f8781526005602052604090206001015463ffffffff600160c01b90910481169085161115610d3a57604051633f61762b60e01b815260040160405180910390fd5b5f87815260056020526040902060060154831115610d6b57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600560205250604090206004015490565b5f546001600160a01b031615610dae57604051635c4e8df160e11b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561106d575f888381518110610dee57610dee613003565b602002602001015190505f888481518110610e0b57610e0b613003565b602002602001015190505f816001600160401b03811115610e2e57610e2e61283b565b604051908082528060200260200182016040528015610e57578160200160208202803683370190505b5090505f826001600160401b03811115610e7357610e7361283b565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5090505f836001600160401b03811115610eb857610eb861283b565b604051908082528060200260200182016040528015610ee1578160200160208202803683370190505b5090505f846001600160401b03811115610efd57610efd61283b565b604051908082528060200260200182016040528015610f26578160200160208202803683370190505b5090505f5b85811015611046578c8881518110610f4557610f45613003565b6020026020010151858281518110610f5f57610f5f613003565b6020026020010181815250508b8881518110610f7d57610f7d613003565b6020026020010151848281518110610f9757610f97613003565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fc957610fc9613003565b6020026020010151838281518110610fe357610fe3613003565b60200260200101818152505089888151811061100157611001613003565b602002602001015182828151811061101b5761101b613003565b60209081029190910101528761103081613070565b985050808061103e90613070565b915050610f2b565b6110538786868686610837565b50505050505050818061106590613070565b925050610dd2565b6110756112a0565b5050505050505050565b5f848152600560205260408120600101548591600160c01b90910463ffffffff1690036110bf5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156110f1576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061112a57504263ffffffff168163ffffffff1611155b156111485760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061118057504263ffffffff168163ffffffff16115b1561119e5760405163079994c560e31b815260040160405180910390fd5b8684805f036111c057604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361120f575f8381526005602052604090206007015482101561120a5760405163291784d560e01b815260040160405180910390fd5b61123a565b61121a816002613088565b82101561123a576040516328eecafb60e21b815260040160405180910390fd5b89888015611273575f828152600560205260409020600601548110156112735760405163f6631e6760e01b815260040160405180910390fd5b61127c896123b6565b6112888c8c338c6124ad565b6112928c8c612576565b505050505050505050505050565b335f818152600160205260408082208054908390559154905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611305573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611329919061309f565b611331575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260076020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113c0826123b6565b5f8981526003602052604081205490036113ed5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a604051602001611403939291906130e0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016114399796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e42604051611498979695949392919061319c565b60405180910390a46114af81838b8b8b8a8a6125dc565b9a9950505050505050505050565b5f8681526003602052604081205481036114ea5760405163bbbf712b60e01b815260040160405180910390fd5b5f878488604051602001611500939291906130e0565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016115369796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c42604051611595979695949392919061319c565b60405180910390a46115ac81838989895f806125dc565b98975050505050505050565b5f8181526005602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156115f4575063ffffffff811615155b801561160c57504263ffffffff168163ffffffff1611155b9392505050565b6002545f81815260036020908152604080832043905551919291611639918591016131eb565b60408051601f1981840301815282825280516020918201205f858152600490925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061168f908790613206565b60405180910390a36116a281600161302b565b60025590505b919050565b5f806116b888611613565b90506115ac8188888888886114bd565b5f816116d3816115b8565b6116f057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526005602052604090206004015490565b5f80611711836116c8565b905060028101611774575f83815260086020526040902054806117475760405163079442c960e01b815260040160405180910390fd5b611750816116c8565b9150600282016117725760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600560205260408120600101548691600160c01b90910463ffffffff1690036117ba5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff16156117ec576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff16801580159061182557504263ffffffff168163ffffffff1611155b156118435760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061187b57504263ffffffff168163ffffffff16115b156118995760405163079994c560e31b815260040160405180910390fd5b8784805f036118bb57604051635de374cf60e11b815260040160405180910390fd5b5f828152600560205260408120600601549081900361190a575f838152600560205260409020600701548210156119055760405163291784d560e01b815260040160405180910390fd5b611935565b611915816002613088565b821015611935576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196e575f8281526005602052604090206006015481101561196e5760405163f6631e6760e01b815260040160405180910390fd5b611977896123b6565b6001600160a01b038a1661199e57604051630ca6549f60e11b815260040160405180910390fd5b6119aa8d8d8c8c6124ad565b6119b48d8d612576565b50505050505050505050505050565b5f6119cd83610823565b6119ea57604051631f45e42760e11b815260040160405180910390fd5b5f8a878b604051602001611a00939291906130e0565b60408051601f1981840301815291815281516020928301205f87815260059093529120549091508114611a46576040516349923ed160e11b815260040160405180910390fd5b5f848152600560205260409020600101546001600160a01b038a8116911614611a825760405163611876b160e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff898116600160c01b9092041614611ac257604051635f4c19f760e01b815260040160405180910390fd5b5f8481526005602052604090206001015463ffffffff888116600160a01b9092041614611b0257604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600560205260409020600701548514611b3257604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b615760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb457611b7f82610823565b611b9c57604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc58e8e8e8e8e8e8e8d6113b6565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560059091528082206003908101548684529190922090910154919250611c129161302b565b5f828152600560205260408082206003908101939093558482528082209092018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f86815260056020819052604090912090810154600690910154611c999190859085908561221f565b5f868152600560205260408120600401548614611cb65784611cb8565b815b9050611cc58787836120fd565b50505050505050565b5f611cd8826123b6565b5f888152600360205260408120549003611d055760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d1b939291906130e0565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d519796959493929190613118565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611db0979695949392919061319c565b60405180910390a4611dc781838a8a8a5f8a6125dc565b9998505050505050505050565b5f8181526005602052604090206001015481906001600160a01b03163314611e0f57604051634361661f60e11b815260040160405180910390fd5b5f82815260056020526040902060020154829060ff16611e425760405163f476ed1160e01b815260040160405180910390fd5b5f83815260056020526040902060028101805460ff1916905560010154611e7690600160c01b900463ffffffff1642613218565b5f84815260056020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526005602052604090206001015483906001600160a01b03163314611f1157604051634361661f60e11b815260040160405180910390fd5b5f848152600560205260408120600101548591600160c01b90910463ffffffff169003611f515760405163a42db76b60e01b815260040160405180910390fd5b5f8181526005602052604090206002015460ff1615611f83576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260056020526040902060010154600160e01b900463ffffffff168015801590611fbc57504263ffffffff168163ffffffff1611155b15611fda5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260056020526040902060010154600160a01b900463ffffffff16801580159061201257504263ffffffff168163ffffffff16115b156120305760405163079994c560e31b815260040160405180910390fd5b86858015612069575f828152600560205260409020600601548110156120695760405163f6631e6760e01b815260040160405180910390fd5b5f89815260056020526040902060010154600160e01b900463ffffffff166120a4576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260056020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526005602052604090206001015483906001600160a01b0316331461213857604051634361661f60e11b815260040160405180910390fd5b5f84815260056020526040902060020154849060ff1661216b5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316612192576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600560205260408120600201805460ff191690556121e5908690869086906124ad565b5f8581526005602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555b5050505050565b838383835f604051602001612238959493929190613235565b604051602081830303815290604052805190602001208514612218576040516303a479f160e11b815260040160405180910390fd5b5f80878303612327576001600160a01b0386166122e4578495506001195f1b88141580156122aa57505f8981526005602052604090206003015415155b156122df575f898152600560205260409020600301546122cd908a908890612336565b5f898152600560205260408120600301555b612327565b856001600160a01b0316856001600160a01b031614612327575f8488101561230c578761230e565b845b905061231f8a88610a74848c61305d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526001602052604090205461235990829061302b565b6001600160a01b0383165f818152600160205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123a99085815260200190565b60405180910390a3505050565b805f036123c05750565b335f908152600160205260409020548015612415578181106123f9576123e6828261305d565b335f908152600160205260409020555050565b612403818361305d565b335f9081526001602052604081205591505b5f546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612468573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248c919061309f565b6124a957604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526005602081815260408084209092015491516124d69291879186918891879101613235565b6040516020818303038152906040528051906020012090505f82111561250a575f8581526005602052604090206006018290555b5f858152600560208181526040808420909201849055815187815290810184905290810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c58565b5f82815260056020526040902060048101829055600101546125a590600160c01b900463ffffffff1642613218565b5f92835260056020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600560205260409020600101548790600160c01b900463ffffffff161561261d576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126435760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061266d57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061268f5750336001600160a01b03881614155b15612717576001600160a01b0387165f90815260076020526040902054808210156126cd5760405163d72564c760e01b815260040160405180910390fd5b6126d7818361305d565b6001600160a01b0389165f908152600160205260409020549092506126fd90829061302b565b6001600160a01b0389165f90815260016020526040902055505b5f898152600560205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127c3575f89815260056020908152604091829020600301839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b8315612819575f89815260056020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128109087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612834575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128775761287761283b565b604052919050565b5f6001600160401b038211156128975761289761283b565b5060051b60200190565b5f82601f8301126128b0575f80fd5b813560206128c56128c08361287f565b61284f565b82815260059290921b840181019181810190868411156128e3575f80fd5b8286015b848110156128fe57803583529183019183016128e7565b509695505050505050565b6001600160a01b038116811461291d575f80fd5b50565b5f82601f83011261292f575f80fd5b8135602061293f6128c08361287f565b82815260059290921b8401810191818101908684111561295d575f80fd5b8286015b848110156128fe57803561297481612909565b8352918301918301612961565b5f805f805f60a08688031215612995575f80fd5b8535945060208601356001600160401b03808211156129b2575f80fd5b6129be89838a016128a1565b955060408801359150808211156129d3575f80fd5b6129df89838a01612920565b945060608801359150808211156129f4575f80fd5b612a0089838a016128a1565b93506080880135915080821115612a15575f80fd5b50612a22888289016128a1565b9150509295509295909350565b5f8060408385031215612a40575f80fd5b50508035926020909101359150565b803563ffffffff811681146116a8575f80fd5b5f805f805f60a08688031215612a76575f80fd5b85359450602086013593506040860135612a8f81612909565b9250612a9d60608701612a4f565b949793965091946080013592915050565b5f60208284031215612abe575f80fd5b813561160c81612909565b5f805f805f8060c08789031215612ade575f80fd5b86356001600160401b0380821115612af4575f80fd5b612b008a838b016128a1565b97506020890135915080821115612b15575f80fd5b612b218a838b016128a1565b96506040890135915080821115612b36575f80fd5b612b428a838b016128a1565b95506060890135915080821115612b57575f80fd5b612b638a838b01612920565b94506080890135915080821115612b78575f80fd5b612b848a838b016128a1565b935060a0890135915080821115612b99575f80fd5b50612ba689828a016128a1565b9150509295509295509295565b5f805f8060808587031215612bc6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612bf1575f80fd5b81356001600160401b03811115612c0a57612c0a61283b565b612c1d601f8201601f191660200161284f565b818152846020838601011115612c31575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612c65575f80fd5b8835975060208901356001600160401b03811115612c81575f80fd5b612c8d8b828c01612be2565b9750506040890135612c9e81612909565b9550612cac60608a01612a4f565b9450612cba60808a01612a4f565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612cf1575f80fd5b8635955060208701356001600160401b03811115612d0d575f80fd5b612d1989828a01612be2565b9550506040870135612d2a81612909565b9350612d3860608801612a4f565b9250612d4660808801612a4f565b915060a087013590509295509295509295565b5f60208284031215612d69575f80fd5b81356001600160401b03811115612d7e575f80fd5b612d8a84828501612be2565b949350505050565b5f805f805f8060c08789031215612da7575f80fd5b86356001600160401b0380821115612dbd575f80fd5b612dc98a838b01612be2565b97506020890135915080821115612dde575f80fd5b50612d1989828a01612be2565b5f805f805f60a08688031215612dff575f80fd5b8535945060208601359350604086013592506060860135612a9d81612909565b5f805f805f805f805f6101208a8c031215612e38575f80fd5b8935985060208a01356001600160401b03811115612e54575f80fd5b612e608c828d01612be2565b98505060408a0135612e7181612909565b9650612e7f60608b01612a4f565b9550612e8d60808b01612a4f565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c08789031215612ecc575f80fd5b86359550602087013594506040870135612ee581612909565b9350606087013592506080870135915060a0870135612f0381612909565b809150509295509295509295565b5f805f805f805f60e0888a031215612f27575f80fd5b8735965060208801356001600160401b03811115612f43575f80fd5b612f4f8a828b01612be2565b9650506040880135612f6081612909565b9450612f6e60608901612a4f565b9350612f7c60808901612a4f565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612faa575f80fd5b833592506020840135612fbc81612909565b929592945050506040919091013590565b5f805f60608486031215612fdf575f80fd5b83359250602084013591506040840135612ff881612909565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561177457611774613017565b5f8261305857634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561177457611774613017565b5f6001820161308157613081613017565b5060010190565b808202811582820484141761177457611774613017565b5f602082840312156130af575f80fd5b8151801515811461160c575f80fd5b5f5b838110156130d85781810151838201526020016130c0565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516131098160248501602087016130be565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526131888160208601602086016130be565b601f01601f19169290920160200192915050565b87815260e060208201525f6131b460e0830189613171565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131fc8184602087016130be565b9190910192915050565b602081525f61160c6020830184613171565b63ffffffff81811683821601908082111561177257611772613017565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220859772f01ab854470f66ccb87c390a84bc2b4d0464ee26ebd1a6c489567e9b6a64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620031ee603f9139620000d3565b506200005d6040518060800160405280604f8152602001620032ca604f9139620000d3565b50620000826040518060800160405280605a815260200162003270605a9139620000d3565b50620000a76040518060800160405280605c815260200162003192605c9139620000d3565b50620000cc6040518060800160405280604381526020016200322d60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002155f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220c1a48aaeee7589ab5c35fe65c25c16903d96f6676492c8f21b8754fd252f293764736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -73,7 +73,7 @@
73
73
  "network_name": "zkSync2-testnet"
74
74
  },
75
75
  "300": {
76
- "network_name": "zksync-era-sepolia"
76
+ "network_name": "zksync-sepolia"
77
77
  },
78
78
  "324": {
79
79
  "explorerURL": "https://explorer.zksync.io/",
@@ -3,6 +3,7 @@
3
3
  pragma solidity 0.8.20;
4
4
 
5
5
  interface IBalanceHolder {
6
+ event LogWithdraw(address indexed user, uint256 amount);
6
7
  function withdraw() external;
7
8
  function balanceOf(address) external view returns (uint256);
8
9
  }
@@ -2,9 +2,13 @@
2
2
 
3
3
  pragma solidity 0.8.20;
4
4
 
5
- import {IRealityETHCore} from "./IRealityETHCore.sol";
5
+ import {IRealityETHCore_Common} from "./IRealityETHCore_Common.sol";
6
+ import {IRealityETHCore_Native} from "./IRealityETHCore_Native.sol";
7
+
8
+ // Features removed in v4
6
9
  import {IRealityETHCommitReveal} from "./IRealityETHCommitReveal.sol";
10
+ import {IRealityETHCreateTemplateAndAskQuestion} from "./IRealityETHCreateTemplateAndAskQuestion.sol";
7
11
 
8
12
  /* solhint-disable func-name-mixedcase */
9
13
 
10
- interface IRealityETH is IRealityETHCore, IRealityETHCommitReveal {}
14
+ interface IRealityETH is IRealityETHCore_Common, IRealityETHCore_Native, IRealityETHCommitReveal, IRealityETHCreateTemplateAndAskQuestion {}
@@ -2,12 +2,11 @@
2
2
 
3
3
  pragma solidity 0.8.20;
4
4
 
5
- import {IBalanceHolder} from "./IBalanceHolder.sol";
6
5
  import {IRealityETHErrors} from "./IRealityETHErrors.sol";
7
6
 
8
7
  /* solhint-disable func-name-mixedcase */
9
8
 
10
- interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
9
+ interface IRealityETHCore_Common is IRealityETHErrors {
11
10
  event LogCancelArbitration(bytes32 indexed question_id);
12
11
  event LogClaim(bytes32 indexed question_id, address indexed user, uint256 amount);
13
12
  event LogFinalize(bytes32 indexed question_id, bytes32 indexed answer);
@@ -28,8 +27,8 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
28
27
  );
29
28
  event LogNewTemplate(uint256 indexed template_id, address indexed user, string question_text);
30
29
  event LogNotifyOfArbitrationRequest(bytes32 indexed question_id, address indexed user);
31
- event LogReopenQuestion(bytes32 indexed question_id, bytes32 indexed reopened_question_id);
32
30
  event LogSetQuestionFee(address arbitrator, uint256 amount);
31
+ event LogWithdraw(address indexed user, uint256 amount);
33
32
 
34
33
  struct Question {
35
34
  bytes32 content_hash;
@@ -61,6 +60,7 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
61
60
  bytes32 last_answer_or_commitment_id,
62
61
  address last_answerer
63
62
  ) external;
63
+ function balanceOf(address) external view returns (uint256);
64
64
  function cancelArbitration(bytes32 question_id) external;
65
65
  function claimMultipleAndWithdrawBalance(
66
66
  bytes32[] calldata question_ids,
@@ -75,22 +75,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
75
75
  function notifyOfArbitrationRequest(bytes32 question_id, address requester, uint256 max_previous) external;
76
76
  function setQuestionFee(uint256 fee) external;
77
77
  function submitAnswerByArbitrator(bytes32 question_id, bytes32 answer, address answerer) external;
78
- function askQuestion(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
79
- function askQuestionWithMinBond(uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce, uint256 min_bond) external payable returns (bytes32);
80
- function createTemplateAndAskQuestion(string calldata content, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce) external payable returns (bytes32);
81
- function fundAnswerBounty(bytes32 question_id) external payable;
82
- function reopenQuestion(
83
- uint256 template_id,
84
- string calldata question,
85
- address arbitrator,
86
- uint32 timeout,
87
- uint32 opening_ts,
88
- uint256 nonce,
89
- uint256 min_bond,
90
- bytes32 reopens_question_id
91
- ) external payable returns (bytes32);
92
- function submitAnswer(bytes32 question_id, bytes32 answer, uint256 max_previous) external payable;
93
- function submitAnswerFor(bytes32 question_id, bytes32 answer, uint256 max_previous, address answerer) external payable;
94
78
  function arbitrator_question_fees(address) external view returns (uint256);
95
79
  function getArbitrator(bytes32 question_id) external view returns (address);
96
80
  function getBestAnswer(bytes32 question_id) external view returns (bytes32);
@@ -106,7 +90,6 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
106
90
  function getTimeout(bytes32 question_id) external view returns (uint32);
107
91
  function isFinalized(bytes32 question_id) external view returns (bool);
108
92
  function isPendingArbitration(bytes32 question_id) external view returns (bool);
109
- function isSettledTooSoon(bytes32 question_id) external view returns (bool);
110
93
  function question_claims(bytes32) external view returns (address payee, uint256 last_bond, uint256 queued_funds);
111
94
  function questions(
112
95
  bytes32
@@ -126,10 +109,8 @@ interface IRealityETHCore is IBalanceHolder, IRealityETHErrors {
126
109
  uint256 bond,
127
110
  uint256 min_bond
128
111
  );
129
- function reopened_questions(bytes32) external view returns (bytes32);
130
- function reopener_questions(bytes32) external view returns (bool);
131
112
  function resultFor(bytes32 question_id) external view returns (bytes32);
132
- function resultForOnceSettled(bytes32 question_id) external view returns (bytes32);
133
113
  function template_hashes(uint256) external view returns (bytes32);
134
114
  function templates(uint256) external view returns (uint256);
115
+ function withdraw() external;
135
116
  }