@venusprotocol/venus-protocol 6.0.0-dev.3 → 6.0.0-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
  2. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
  3. package/artifacts/@venusprotocol/isolated-pools/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  4. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +1 -1
  5. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +1 -1
  6. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +1 -1
  7. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +1 -1
  8. package/artifacts/build-info/{be526bde3c9f762e8b7ab739bfe67388.json → 78edc7ac6eda44c0b19ccd746ae3d40c.json} +1 -1
  9. package/artifacts/contracts/Admin/VBNBAdmin.sol/VBNBAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IProtocolShareReserve.dbg.json +1 -1
  11. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IWBNB.dbg.json +1 -1
  12. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VBNBAdminStorage.dbg.json +1 -1
  13. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VTokenInterface.dbg.json +1 -1
  14. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IComptroller.dbg.json +1 -1
  15. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IPriceOracle.dbg.json +1 -1
  16. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IVToken.dbg.json +1 -1
  17. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/SwapDebtDelegate.dbg.json +1 -1
  18. package/artifacts/contracts/Liquidator/BUSDLiquidator.sol/BUSDLiquidator.dbg.json +1 -1
  19. package/artifacts/contracts/Liquidator/Interfaces.sol/IComptroller.dbg.json +1 -1
  20. package/artifacts/contracts/Liquidator/Interfaces.sol/ILiquidator.dbg.json +1 -1
  21. package/artifacts/contracts/Liquidator/Interfaces.sol/IVAIController.dbg.json +1 -1
  22. package/artifacts/contracts/Liquidator/Interfaces.sol/IVBNB.dbg.json +1 -1
  23. package/artifacts/contracts/Liquidator/Interfaces.sol/IVBep20.dbg.json +1 -1
  24. package/artifacts/contracts/Liquidator/Interfaces.sol/IVToken.dbg.json +1 -1
  25. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.dbg.json +1 -1
  26. package/artifacts/contracts/PegStability/IVAI.sol/IVAI.dbg.json +1 -1
  27. package/artifacts/contracts/PegStability/PegStability.sol/PegStability.dbg.json +1 -1
  28. package/artifacts/contracts/Swap/IRouterHelper.sol/IRouterHelper.dbg.json +1 -1
  29. package/artifacts/contracts/Swap/RouterHelper.sol/RouterHelper.dbg.json +1 -1
  30. package/artifacts/contracts/Swap/SwapRouter.sol/SwapRouter.dbg.json +1 -1
  31. package/artifacts/contracts/Swap/interfaces/IPancakePair.sol/IPancakePair.dbg.json +1 -1
  32. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Factory.sol/IPancakeSwapV2Factory.dbg.json +1 -1
  33. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Router.sol/IPancakeSwapV2Router.dbg.json +1 -1
  34. package/artifacts/contracts/Swap/interfaces/IVBNB.sol/IVBNB.dbg.json +1 -1
  35. package/artifacts/contracts/Swap/interfaces/IVtoken.sol/IVToken.dbg.json +1 -1
  36. package/artifacts/contracts/Swap/interfaces/IWBNB.sol/IWBNB.dbg.json +1 -1
  37. package/artifacts/contracts/Swap/interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  38. package/artifacts/contracts/Swap/lib/PancakeLibrary.sol/PancakeLibrary.dbg.json +1 -1
  39. package/artifacts/contracts/Swap/lib/TransferHelper.sol/TransferHelper.dbg.json +1 -1
  40. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrime.sol/IPrime.dbg.json +1 -1
  41. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrimeLiquidityProvider.sol/IPrimeLiquidityProvider.dbg.json +1 -1
  42. package/artifacts/contracts/Tokens/Prime/Interfaces/IVToken.sol/IVToken.dbg.json +1 -1
  43. package/artifacts/contracts/Tokens/Prime/Interfaces/IXVSVault.sol/IXVSVault.dbg.json +1 -1
  44. package/artifacts/contracts/Tokens/Prime/Interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  45. package/artifacts/contracts/Tokens/Prime/Prime.sol/Prime.dbg.json +1 -1
  46. package/artifacts/contracts/Tokens/Prime/Prime.sol/Prime.json +2 -2
  47. package/artifacts/contracts/Tokens/Prime/PrimeLiquidityProvider.sol/PrimeLiquidityProvider.dbg.json +1 -1
  48. package/artifacts/contracts/Tokens/Prime/PrimeStorage.sol/PrimeStorageV1.dbg.json +1 -1
  49. package/artifacts/contracts/Tokens/Prime/libs/FixedMath.sol/FixedMath.dbg.json +1 -1
  50. package/artifacts/contracts/Tokens/Prime/libs/FixedMath0x.sol/FixedMath0x.dbg.json +1 -1
  51. package/artifacts/contracts/Tokens/Prime/libs/Scores.sol/Scores.dbg.json +1 -1
  52. package/artifacts/contracts/test/AccessControlManagerMock.sol/AccessControlManagerMock.dbg.json +1 -1
  53. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.dbg.json +1 -1
  54. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IComptroller.dbg.json +1 -1
  55. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IIncomeDestination.dbg.json +1 -1
  56. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IMockProtocolShareReserve.dbg.json +1 -1
  57. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPoolRegistry.dbg.json +1 -1
  58. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPrime.dbg.json +1 -1
  59. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IVToken.dbg.json +1 -1
  60. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  61. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MockProtocolShareReserve.dbg.json +1 -1
  62. package/artifacts/contracts/test/PrimeScenario.sol/PrimeScenario.dbg.json +1 -1
  63. package/artifacts/contracts/test/PrimeScenario.sol/PrimeScenario.json +2 -2
  64. package/contracts/Tokens/Prime/Prime.sol +4 -0
  65. package/deployments/bscmainnet/Prime_Implementation.json +1 -1
  66. package/deployments/bscmainnet/solcInputs/001fa85dbfdb864dac723a9fb4abdbf2.json +111 -0
  67. package/deployments/bscmainnet.json +1 -1
  68. package/deployments/bsctestnet/Prime_Implementation.json +1 -1
  69. package/deployments/bsctestnet/solcInputs/001fa85dbfdb864dac723a9fb4abdbf2.json +111 -0
  70. package/deployments/bsctestnet.json +1 -3428
  71. package/dist/typechain/factories/contracts/Tokens/Prime/Prime__factory.d.ts +1 -1
  72. package/dist/typechain/factories/contracts/Tokens/Prime/Prime__factory.js +1 -1
  73. package/dist/typechain/factories/contracts/test/PrimeScenario__factory.d.ts +1 -1
  74. package/dist/typechain/factories/contracts/test/PrimeScenario__factory.js +1 -1
  75. package/package.json +1 -1
  76. package/deploy/009-deploy-prime-test.ts +0 -158
  77. package/deployments/bsctestnet/PrimeTest.json +0 -1847
  78. package/deployments/bsctestnet/PrimeTest_Implementation.json +0 -2685
  79. package/deployments/bsctestnet/PrimeTest_Proxy.json +0 -287
  80. package/dist/deploy/009-deploy-prime-test.d.ts +0 -3
  81. package/dist/deploy/009-deploy-prime-test.js +0 -129
@@ -1616,8 +1616,8 @@
1616
1616
  "type": "function"
1617
1617
  }
1618
1618
  ],
1619
- "bytecode": "0x6101406040523480156200001257600080fd5b5060405162005945380380620059458339810160408190526200003591620001d0565b8585858585856001600160a01b038616620000635760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166200008b5760405163e6c4247b60e01b815260040160405180910390fd5b83600003620000ad576040516302723dfb60e21b815260040160405180910390fd5b6001600160a01b0380871660a052851660c052608084905261012083905260e0829052610100819052620000e0620000f2565b5050505050505050505050506200022d565b600054610100900460ff16156200015f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001b1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b0381168114620001cb57600080fd5b919050565b60008060008060008060c08789031215620001ea57600080fd5b620001f587620001b3565b95506200020560208801620001b3565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a05160c05160e0516101005161012051615682620002c3600039600081816103c401528181610e8a01528181611dc601528181611df10152611e190152600081816109df015281816130aa01526130d301526000818161053601526126ac0152600081816104990152612edf0152600081816106280152612f190152600081816108540152613cff01526156826000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bd212c0e146107d5578063be26317e146107df578063c0ffb809146107e857600080fd5b8063b1a250f2116101ce578063b1a250f214610720578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639f6506ce146106f7578063a15753dc14610701578063b0772d0b1461070b57600080fd5b80636426b4a7116102e457806388bead73116102775780638dd95002116102465780638dd95002146106235780638e8f294b1461064a5780639198e515146106b55780639565d3d2146106c857600080fd5b806388bead73146105d857806388d742c2146105ec57806389afcb44146105ff5780638da5cb5b1461061257600080fd5b80637dc0d1d0116102b35780637dc0d1d01461057b5780637ef820701461058f57806380d45a2d146105bb578063856c3aa4146105ce57600080fd5b80636426b4a714610531578063715018a61461055857806379ba5097146105605780637dafcd891461056857600080fd5b80633421fc521161035c57806355d36c981161032b57806355d36c98146104e0578063594a67ee146104f35780635c975abb146105065780635fe3b5671461051d57600080fd5b80633421fc521461049457806337f23cd3146104bb578063487b0dfb146104ce5780634e71d92d146104d857600080fd5b80631bffac89116103985780631bffac891461043a5780631cb9a02a1461045b578063207add911461046e57806324e6baf21461048157600080fd5b80630104db1b146103bf5780630e32cb86146103f95780631b9ce5751461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614cae565b610a01565b005b61013754610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e6610448366004614cae565b6101406020526000908152604090205481565b6103e6610469366004614ccb565b610a15565b61040c61047c366004614ccb565b610a46565b61040c61048f366004614d39565b610b01565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104c9366004614cae565b610ccd565b6103e66101395481565b61040c610e57565b61040c6104ee366004614d7b565b610ee6565b61040c610501366004614db0565b610fb1565b60c95460ff165b60405190151581526020016103f0565b61013f54610422906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c61113b565b61040c61114f565b61040c610576366004614e2a565b6111cb565b61014254610422906001600160a01b031681565b610136546105a3906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105c9366004614e7f565b611355565b6103e66101315481565b61013854610422906001600160a01b031681565b6103e66105fa366004614cae565b61139c565b61040c61060d366004614cae565b6113b8565b6033546001600160a01b0316610422565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61068b610658366004614cae565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106c3366004614cae565b6113ef565b61050d6106d6366004614e98565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b6107136115b3565b6040516103f09190614ec8565b61040c61072e366004614f2c565b611616565b6097546001600160a01b0316610422565b610757610752366004614fe6565b611899565b604080519283526020830191909152016103f0565b6107a761077a366004615037565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d0366004615037565b6119f6565b6103e661013c5481565b6103e660fb5481565b61040c6107f6366004614d7b565b611a0a565b6103e661013d5481565b61040c611c28565b61014154610422906001600160a01b031681565b610136546105a390600160801b90046001600160801b031681565b61040c61084a366004615037565b611c71565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e6610884366004615037565b611c89565b6103e661012e5481565b6103e66101305481565b61040c6108ab366004615065565b611c9e565b6065546001600160a01b0316610422565b61040c6108cf366004614cae565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614cae565b611da2565b610932610913366004614cae565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610422610957366004614cae565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614cae565b6101326020526000908152604090205481565b61040c6109a2366004614cae565b611e4a565b6109ba6109b5366004614cae565b611ebb565b6040516103f09190615098565b6107576109d5366004615037565b611ffd565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b610a096121dd565b610a1281612237565b50565b61013654600090610a3d90849084906001600160801b0380821691600160801b9004166122fd565b90505b92915050565b610a846040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506123b7565b61012e54821080610a97575061012f5481105b15610ab55760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610aef91815260200190565b60405180910390a46101305561013155565b61013d54600003610b255760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610b495760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610cc8576000838383818110610b6857610b686150fd565b9050602002016020810190610b7d9190614cae565b6001600160a01b038116600090815261012d602052604090205490915060ff16610bba57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610bf35750600101610b4c565b610135805460005b81811015610c4b576000838281548110610c1757610c176150fd565b6000918252602090912001546001600160a01b03169050610c388582612451565b610c42858261252d565b50600101610bfb565b5061013d60008154610c5c90615129565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610b4c565b505050565b6000610cd88261260a565b90506000610ce5826126a8565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610d3f575082155b15610d82576001600160a01b03851660009081526101326020908152604082209190915581015115610d7957610d74856126e1565b610e50565b610d7485612739565b82158015610d8f57508051155b8015610d9a57508115155b15610dbe576001600160a01b03851660009081526101326020526040812055610e50565b81158015610dc95750825b8015610dd457508051155b15610dfa576001600160a01b038516600090815261013260205260409020429055610e50565b80518015610e055750825b15610e5057610e13856126e1565b6001600160a01b038516600090815261013260205260408120549003610e50576001600160a01b0385166000908152610132602052604090204290555b5050505050565b336000908152610132602052604081205490819003610e885760405162c4e3d160e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610eb38242615140565b1015610ed25760405163beb98cab60e01b815260040160405180910390fd5b610edd60003361290d565b610a1233612a1e565b610f076040518060600160405280602a8152602001615601602a91396123b7565b6001600160a01b038316600090815261013360205260409020600481015460ff16610f4557604051630ff2e4a960e31b815260040160405180910390fd5b610f4e846113ef565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a482815560018101829055610fab612b1b565b50505050565b610fef6040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506123b7565b82811461100f5760405163251f56a160e21b815260040160405180910390fd5b60005b83811015610e50574283838381811061102d5761102d6150fd565b9050602002013511156110535760405163b7d0949760e01b815260040160405180910390fd5b828282818110611065576110656150fd565b905060200201356101326000878785818110611083576110836150fd565b90506020020160208101906110989190614cae565b6001600160a01b031681526020810191909152604001600020558484828181106110c4576110c46150fd565b90506020020160208101906110d99190614cae565b6001600160a01b03167f09d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc848484818110611115576111156150fd565b9050602002013560405161112b91815260200190565b60405180910390a2600101611012565b6111436121dd565b61114d6000612b4f565b565b60655433906001600160a01b031681146111c25760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b610a1281612b4f565b61120160405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506123b7565b82156113165760005b81811015610fab57600061012d600085858581811061122b5761122b6150fd565b90506020020160208101906112409190614cae565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561127457508054610100900460ff16155b156112ad576112a884848481811061128e5761128e6150fd565b90506020020160208101906112a39190614cae565b612b68565b61130d565b6112de60018585858181106112c4576112c46150fd565b90506020020160208101906112d99190614cae565b61290d565b61130d8484848181106112f3576112f36150fd565b90506020020160208101906113089190614cae565b612a1e565b5060010161120a565b60005b81811015610fab5761133860008484848181106112c4576112c46150fd565b61134d8383838181106112f3576112f36150fd565b600101611319565b6113936040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506123b7565b610a1281612c18565b60006113a6612cb2565b6113b08233612cf8565b90505b919050565b6113e66040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506123b7565b610a1281612739565b6001600160a01b038116600090815261013360205260409020600481015460ff1661142d57604051630ff2e4a960e31b815260040160405180910390fd5b600061143883612edb565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561148457600080fd5b505af1158015611498573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115099190615157565b6001600160a01b03841660009081526101406020526040812054919250906115319083615140565b90508060008190036115465750505050505050565b6001600160a01b038516600090815261014060205260408120849055600387015415611590576003870154611583670de0b6b3a764000084615170565b61158d91906151a5565b90505b808760020160008282546115a491906151b9565b90915550505050505050505050565b606061013580548060200260200160405190810160405280929190818152602001828054801561160c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ee575b5050505050905090565b600054610100900460ff16158080156116365750600054600160ff909116105b806116505750303b158015611650575060005460ff166001145b6116b35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016111b9565b6000805460ff1916600117905580156116d6576000805461ff0019166101001790555b6001600160a01b038b166116fd5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038a166117245760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03841661174b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166117725760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166117995760405163e6c4247b60e01b815260040160405180910390fd5b6117a38888612f9f565b6001600160801b03878116600160801b02908916176101365561013880546001600160a01b03808d166001600160a01b0319928316179092556101398b905561013780548e8416908316179055600061013b55610141805488841690831617905561013f805487841690831617905561014280549286169290911691909117905561182d86612fe5565b61183561301d565b61183e82612c18565b61184661304c565b801561188c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6001600160a01b03808616600081815261013460209081526040808320948916835293815283822060010154928252610133905291822060030154829182916118e29190615140565b905060006118ef856130a6565b90506000806000611902848b8b8f6130fb565b92509250925060006119138d612edb565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197491906151d1565b60ff169050611984816012615140565b61198f90600a6152d8565b6119999085615170565b610136549094506000906119c490879087906001600160801b0380821691600160801b9004166122fd565b90506119d081886151b9565b96506119e18e8c8e8787868d6133c5565b909f909e509c50505050505050505050505050565b6000611a00612cb2565b610a3d8383612cf8565b611a2b60405180606001604052806022815260200161562b602291396123b7565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611a6a57604051630313b28560e01b815260040160405180910390fd5b61013f54604051638e8f294b60e01b81526001600160a01b0386811660048301526000921690638e8f294b90602401602060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada91906152e4565b905080611afa57604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b2d86612edb565b6001600160a01b03808216600090815261013e60205260409020549192501615611b6a5760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611bdb612b1b565b61013554611be8906134b1565b8385876001600160a01b03167faeb29651ee58d1f8216621256cf5fe5cdf5c1a7650175c620342e0eb03de0f8e60405160405180910390a4505050505050565b611c566040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506123b7565b60c95460ff1615611c695761114d6134e2565b61114d61304c565b611c7b8282612451565b611c85828261252d565b5050565b6000611c94836113ef565b610a3d838361351b565b611cdc6040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506123b7565b611ce68282612f9f565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611d9957611d916101358281548110611d7757611d776150fd565b6000918252602090912001546001600160a01b03166113ef565b600101611d58565b50610cc8612b1b565b6001600160a01b03811660009081526101326020526040812054808203611deb57507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e40577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611e526121dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611e836033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611edd57611edd615301565b604051908082528060200260200182016040528015611f2857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611efb5790505b50925060005b81811015611ff5576000838281548110611f4a57611f4a6150fd565b60009182526020822001546001600160a01b03169150611f6a8288611c89565b6001600160a01b03808416600081815261013460209081526040808320948d1683529381529083902054835160608101909452918352929350918101611faf85612edb565b6001600160a01b03168152602001611fc783856151b9565b815250878581518110611fdc57611fdc6150fd565b6020026020010181905250836001019350505050611f2e565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190615157565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d69190615157565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121469190615157565b90506000670de0b6b3a764000061215d8385615170565b61216791906151a5565b6001600160a01b03808b16600081815261013460209081526040808320948e1683529381528382206001015492825261013390529182206003015492935091906121b86121b38c61260a565b6130a6565b90506000806121c9838a888d6130fb565b92509250506119e18e878b85858a8a6133c5565b6033546001600160a01b0316331461114d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111b9565b6001600160a01b03811661229b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016111b9565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091015b60405180910390a15050565b600084158061230a575083155b15612317575060006123af565b8385036123255750836123af565b83851060008161233e5761233986886135b2565b612348565b61234887876135b2565b905060006123836123588661361a565b6123618861361a565b61236a85613684565b6123749190615317565b61237e919061539c565b61368f565b9050821561239f57612395878261369a565b93505050506123af565b6123a987826136cc565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906123ea9033908690600401615422565b602060405180830381865afa158015612407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242b91906152e4565b905080611c8557333083604051634a3fa29360e01b81526004016111b993929190615446565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061249757506001600160a01b038216600090815261012d602052604090205460ff16155b156124a0575050565b6124a9816113ef565b6124b3818361351b565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906124eb9084906151b9565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061257457506001600160a01b038316600090815261012d602052604090205460ff16155b1561257e57505050565b600061258a83856136fe565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916125c89190615140565b6125d291906151b9565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126979190615472565b925050915080826123af9190615140565b60007f000000000000000000000000000000000000000000000000000000000000000082106126d957506001919050565b506000919050565b610135805460005b81811015610fab576000838281548110612705576127056150fd565b6000918252602090912001546001600160a01b031690506127268582612451565b612730858261252d565b506001016126e9565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261279657604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b8181101561286f5760008382815481106127ba576127ba6150fd565b6000918252602090912001546001600160a01b031690506127db8682612451565b6001600160a01b03808216600081815261013460209081526040808320948b16835293815283822060010154928252610133905291909120600301546128219190615140565b6001600160a01b03918216600090815261013360209081526040808320600301939093556101348152828220938916825292909252812060018082018390556002909101919091550161279e565b508260200151156128935761012e6000815461288a90615129565b909155506128a8565b61012f600081546128a390615129565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff191690556128d384613a90565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff16156129485760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff1990921691909117600117825561297f5761012e60008154612976906154a0565b90915550612994565b61012f6000815461298f906154a0565b909155505b6101315461012e5411806129ad57506101305461012f54115b156129cb5760405163e55fb50960e01b815260040160405180910390fd5b6129d482613b04565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612a11911515815260200190565b60405180910390a2505050565b610135805460005b81811015610fab576000838281548110612a4257612a426150fd565b6000918252602090912001546001600160a01b03169050612a62816113ef565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612aa782876136fe565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612af19082906151b9565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612a26565b61013b8054906000612b2c836154a0565b919050555061012f5461012e54612b4391906151b9565b61013c81905561013d55565b606580546001600160a01b0319169055610a1281613b42565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612ba0906154a0565b9091555061012f8054600090612bb590615129565b909155506101315461012e541115612be05760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60fb548111612c745760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b60648201526084016111b9565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91016122f1565b60c95460ff161561114d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016111b9565b600080612d058484611c89565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612d3990826151b9565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612d8685612edb565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df39190615157565b831115612e70576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612e5757600080fd5b505af1158015612e6b573d6000803e3d6000fd5b505050505b612e846001600160a01b0382168685613b94565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba85604051612ec991815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612f3d57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b091906154b9565b806001600160801b0316826001600160801b0316101580612fc757506001600160801b038216155b15611c8557604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff1661300c5760405162461bcd60e51b81526004016111b9906154d6565b613014613be6565b610a1281613c15565b600054610100900460ff166130445760405162461bcd60e51b81526004016111b9906154d6565b61114d613c3c565b613054612cb2565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130893390565b6040516001600160a01b03909116815260200160405180910390a1565b60007f00000000000000000000000000000000000000000000000000000000000000008211156130f757507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa158015613155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317991906154b9565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa1580156131ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ee9190615157565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a7640000908190613225908d615170565b61322f91906151a5565b6132399084615170565b61324391906151a5565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a7640000908190613277908e615170565b61328191906151a5565b61328b9085615170565b61329591906151a5565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190615157565b90506000670de0b6b3a76400006133218c84615170565b61332b91906151a5565b90506000670de0b6b3a76400006133428e85615170565b61334c91906151a5565b905083821061337c5781600003613364576000613379565b8161336f858e615170565b61337991906151a5565b9b505b8481106133aa57806000036133925760006133a7565b8061339d868f615170565b6133a791906151a5565b9c505b6133b48d8d6151b9565b9e9b9d505050505050505050505050565b600080826000036133db575060009050806134a5565b6000836133e78b613c6f565b6133f19087615170565b6133fb91906151a5565b9050600061340987896151b9565b905080600003613421576000809350935050506134a5565b612710600080836134328c87615170565b61343c91906151a5565b9150836134498b87615170565b61345391906151a5565b90508c15613475578c6134668484615170565b61347091906151a5565b613478565b60005b96508b1561349a578b61348b8483615170565b61349591906151a5565b61349d565b60005b955050505050505b97509795505050505050565b60fb54811115610a125760fb5460405163792bfb1b60e11b81526004810191909152602481018290526044016111b9565b6134ea613d2a565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613089565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135839190615140565b6020830151909150670de0b6b3a764000061359e8284615170565b6135a891906151a5565b9695505050505050565b60006135bd8361361a565b6135c68361361a565b12156135ef576040516360c1ae3960e01b815260048101849052602481018390526044016111b9565b6135f88261361a565b6001607f1b6136068561361a565b6136109190615317565b610a3d919061539c565b60006001600160ff1b038211156130f75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016111b9565b60006113b082613d73565b60006113b082614360565b6000808212156136bd57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136068561361a565b6000808212156136ef57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136068561361a565b60008061370d6121b38461260a565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561375c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137809190615157565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e69190615157565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138569190615157565b90506000670de0b6b3a764000061386d8385615170565b61387791906151a5565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f391906154b9565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b15801561393d57600080fd5b505af1158015613951573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b15801561399d57600080fd5b505af11580156139b1573d6000803e3d6000fd5b5050505060006139c38887858e6130fb565b5050905060006139d28c612edb565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3391906151d1565b60ff169050613a43816012615140565b613a4e90600a6152d8565b613a589083615170565b61013654909250613a80908a9084906001600160801b0380821691600160801b9004166122fd565b9c9b505050505050505050505050565b61013c5415613aae5761013c60008154613aa990615129565b909155505b61013d5415801590613ae8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610a125761013d60008154613afd90615129565b9091555050565b61013c5415610a125761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610cc8908490614a71565b600054610100900460ff16613c0d5760405162461bcd60e51b81526004016111b9906154d6565b61114d614b46565b600054610100900460ff16610a095760405162461bcd60e51b81526004016111b9906154d6565b600054610100900460ff16613c635760405162461bcd60e51b81526004016111b9906154d6565b60c9805460ff19169055565b6101415460009081906001600160a01b031663a666642b613c8f85612edb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190615157565b9050613d23817f0000000000000000000000000000000000000000000000000000000000000000615170565b9392505050565b60c95460ff1661114d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016111b9565b60006001607f1b821315613d9d57604051633ce23a3d60e11b8152600481018390526024016111b9565b60008213613dc1576040516330ecaa3d60e21b8152600481018390526024016111b9565b6001607f1b8203613dd457506000919050565b640733048c5a8213613dee576113b06101ff607c1b615521565b60008060006a01c8464f761647600000008513613e3c57613e13600160841b8561553d565b93506a01c8464f76164760000000613e2f6001607f1b87615317565b613e39919061539c565b94505b6cf1aaddd7742e900000000000008513613e8957613e5e600160831b8561553d565b93506cf1aaddd7742e90000000000000613e7c6001607f1b87615317565b613e86919061539c565b94505b6615fc21041027af603f1b8513613ed057613ea8600160821b8561553d565b93506615fc21041027af603f1b613ec36001607f1b87615317565b613ecd919061539c565b94505b660960aadc109e7b60461b8513613f1757613eef600160811b8561553d565b9350660960aadc109e7b60461b613f0a6001607f1b87615317565b613f14919061539c565b94505b660454aaa8efe073604a1b8513613f5e57613f36600160801b8561553d565b9350660454aaa8efe073604a1b613f516001607f1b87615317565b613f5b919061539c565b94505b6602f16ac6c59de7604c1b8513613fa557613f7d6001607f1b8561553d565b93506602f16ac6c59de7604c1b613f986001607f1b87615317565b613fa2919061539c565b94505b6609b4597e37cb05604b1b8513613fec57613fc46001607e1b8561553d565b93506609b4597e37cb05604b1b613fdf6001607f1b87615317565b613fe9919061539c565b94505b6618ebef9eac820b604a1b85136140335761400b6001607d1b8561553d565b93506618ebef9eac820b604a1b6140266001607f1b87615317565b614030919061539c565b94505b6f70f5a893b608861e1f58934f97aea57d8513614086576140586001607c1b8561553d565b93506f70f5a893b608861e1f58934f97aea57d6140796001607f1b87615317565b614083919061539c565b94505b6140946001607f1b8661553d565b92508291506001607f1b6140a88380615317565b6140b2919061539c565b9050600160801b6140c3848261553d565b6140cd9084615317565b6140d7919061539c565b6140e1908561557c565b93506001607f1b6140f28284615317565b6140fc919061539c565b9150600160811b61411d846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa61553d565b6141279084615317565b614131919061539c565b61413b908561557c565b93506001607f1b61414c8284615317565b614156919061539c565b9150600360801b614177846f9999999999999999999999999999999961553d565b6141819084615317565b61418b919061539c565b614195908561557c565b93506001607f1b6141a68284615317565b6141b0919061539c565b9150600160821b6141d1846f9249249249249249249249249249249261553d565b6141db9084615317565b6141e5919061539c565b6141ef908561557c565b93506001607f1b6142008284615317565b61420a919061539c565b9150600560801b61422b846f8e38e38e38e38e38e38e38e38e38e38e61553d565b6142359084615317565b61423f919061539c565b614249908561557c565b93506001607f1b61425a8284615317565b614264919061539c565b9150600360811b614285846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b61553d565b61428f9084615317565b614299919061539c565b6142a3908561557c565b93506001607f1b6142b48284615317565b6142be919061539c565b9150600760801b6142df846f89d89d89d89d89d89d89d89d89d89d8961553d565b6142e99084615317565b6142f3919061539c565b6142fd908561557c565b93506001607f1b61430e8284615317565b614318919061539c565b9150600160831b614339846f8888888888888888888888888888888861553d565b6143439084615317565b61434d919061539c565b614357908561557c565b95945050505050565b60006143706101ff607c1b615521565b82121561437f57506000919050565b8160000361439257506001607f1b919050565b60008213156143b757604051631086170d60e01b8152600481018390526024016111b9565b6000806143c86001607c1b856155bd565b91508190506001607f1b6143dc8280615317565b6143e6919061539c565b90506143fa816710e1b3be415a0000615317565b614404908461557c565b92506001607f1b6144158383615317565b61441f919061539c565b9050614433816705a0913f6b1e0000615317565b61443d908461557c565b92506001607f1b61444e8383615317565b614458919061539c565b905061446c81670168244fdac78000615317565b614476908461557c565b92506001607f1b6144878383615317565b614491919061539c565b90506144a481664807432bc18000615317565b6144ae908461557c565b92506001607f1b6144bf8383615317565b6144c9919061539c565b90506144dc81660c0135dca04000615317565b6144e6908461557c565b92506001607f1b6144f78383615317565b614501919061539c565b9050614514816601b707b1cdc000615317565b61451e908461557c565b92506001607f1b61452f8383615317565b614539919061539c565b905061454b816536e0f639b800615317565b614555908461557c565b92506001607f1b6145668383615317565b614570919061539c565b905061458281650618fee9f800615317565b61458c908461557c565b92506001607f1b61459d8383615317565b6145a7919061539c565b90506145b881649c197dcc00615317565b6145c2908461557c565b92506001607f1b6145d38383615317565b6145dd919061539c565b90506145ee81640e30dce400615317565b6145f8908461557c565b92506001607f1b6146098383615317565b614613919061539c565b90506146248164012ebd1300615317565b61462e908461557c565b92506001607f1b61463f8383615317565b614649919061539c565b9050614659816317499f00615317565b614663908461557c565b92506001607f1b6146748383615317565b61467e919061539c565b905061468e816301a9d480615317565b614698908461557c565b92506001607f1b6146a98383615317565b6146b3919061539c565b90506146c281621c6380615317565b6146cc908461557c565b92506001607f1b6146dd8383615317565b6146e7919061539c565b90506146f6816201c638615317565b614700908461557c565b92506001607f1b6147118383615317565b61471b919061539c565b905061472981611ab8615317565b614733908461557c565b92506001607f1b6147448383615317565b61474e919061539c565b905061475c8161017c615317565b614766908461557c565b92506001607f1b6147778383615317565b614781919061539c565b905061478e816014615317565b614798908461557c565b92506001607f1b6147a98383615317565b6147b3919061539c565b90506147c0816001615317565b6147ca908461557c565b92506001607f1b826147e46721c3677c82b400008661539c565b6147ee919061557c565b6147f8919061557c565b925061480384615521565b9350600160841b841615614849577243cbaf42a000812488fc5c220ad7b97bf6e99e61483c6cf1aaddd7742e56d32fb9f9974485615317565b614846919061539c565b92505b600160831b84161561488e577105d27a9f51c31b7c2f8038212a05747799916148816e0afe10820813d65dfe6a33c07f738f85615317565b61488b919061539c565b92505b600160821b8416156148d357701b4c902e273a58678d6d3bfdb93db96d026148c66f02582ab704279e8efd15e0265855c47a85615317565b6148d0919061539c565b92505b600160811b841615614918577003b1cc971a9bb5b9867477440d6d15775061490b6f1152aaa3bf81cb9fdb76eae12d02957185615317565b614915919061539c565b92505b600160801b84161561495d5770015bf0a8b1457695355fb8ac404e7a79e36149506f2f16ac6c59de6f8d5d6f63c1482a7c8685615317565b61495a919061539c565b92505b6001607f1b8416156149a1576fd3094c70f034de4b96ff7d5b6f99fcd86149946f4da2cbf1be5827f9eb3ad1aa9866ebb385615317565b61499e919061539c565b92505b6001607e1b8416156149e5576fa45af1e1f40c333b3de1db4dd55f29a76149d86f63afbe7ab2082ba1a0ae5e4eb1b479dc85615317565b6149e2919061539c565b92505b6001607d1b841615614a29576f910b022db7ae67ce76b441c27035c6a1614a1c6f70f5a893b608861e1f58934f97aea57d85615317565b614a26919061539c565b92505b6001607c1b841615614a6a576f88415abbe9a76bead8d00cf112e4d4a8614a606f783eafef1c0a8f3978c7f81824d62ebf85615317565b6123af919061539c565b5050919050565b6000614ac6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b769092919063ffffffff16565b9050805160001480614ae7575080806020019051810190614ae791906152e4565b610cc85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016111b9565b600054610100900460ff16614b6d5760405162461bcd60e51b81526004016111b9906154d6565b61114d33612b4f565b60606123af848460008585600080866001600160a01b03168587604051614b9d91906155d1565b60006040518083038185875af1925050503d8060008114614bda576040519150601f19603f3d011682016040523d82523d6000602084013e614bdf565b606091505b5091509150614bf087838387614bfb565b979650505050505050565b60608315614c6a578251600003614c63576001600160a01b0385163b614c635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016111b9565b50816123af565b6123af8383815115614c7f5781518083602001fd5b8060405162461bcd60e51b81526004016111b991906155ed565b6001600160a01b0381168114610a1257600080fd5b600060208284031215614cc057600080fd5b8135613d2381614c99565b60008060408385031215614cde57600080fd5b50508035926020909101359150565b60008083601f840112614cff57600080fd5b50813567ffffffffffffffff811115614d1757600080fd5b6020830191508360208260051b8501011115614d3257600080fd5b9250929050565b60008060208385031215614d4c57600080fd5b823567ffffffffffffffff811115614d6357600080fd5b614d6f85828601614ced565b90969095509350505050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c99565b95602085013595506040909401359392505050565b60008060008060408587031215614dc657600080fd5b843567ffffffffffffffff80821115614dde57600080fd5b614dea88838901614ced565b90965094506020870135915080821115614e0357600080fd5b50614e1087828801614ced565b95989497509550505050565b8015158114610a1257600080fd5b600080600060408486031215614e3f57600080fd5b8335614e4a81614e1c565b9250602084013567ffffffffffffffff811115614e6657600080fd5b614e7286828701614ced565b9497909650939450505050565b600060208284031215614e9157600080fd5b5035919050565b60008060408385031215614eab57600080fd5b823591506020830135614ebd81614c99565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614f095783516001600160a01b031683529284019291840191600101614ee4565b50909695505050505050565b80356001600160801b03811681146113b357600080fd5b6000806000806000806000806000806101408b8d031215614f4c57600080fd5b8a35614f5781614c99565b995060208b0135614f6781614c99565b985060408b01359750614f7c60608c01614f15565b9650614f8a60808c01614f15565b955060a08b0135614f9a81614c99565b945060c08b0135614faa81614c99565b935060e08b0135614fba81614c99565b92506101008b0135614fcb81614c99565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a08688031215614ffe57600080fd5b853561500981614c99565b9450602086013561501981614c99565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561504a57600080fd5b823561505581614c99565b91506020830135614ebd81614c99565b6000806040838503121561507857600080fd5b61508183614f15565b915061508f60208401614f15565b90509250929050565b602080825282518282018190526000919060409081850190868401855b828110156150f057815180516001600160a01b03908116865287820151168786015285015185850152606090930192908501906001016150b5565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008161513857615138615113565b506000190190565b60008282101561515257615152615113565b500390565b60006020828403121561516957600080fd5b5051919050565b600081600019048311821515161561518a5761518a615113565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826151b4576151b461518f565b500490565b600082198211156151cc576151cc615113565b500190565b6000602082840312156151e357600080fd5b815160ff81168114613d2357600080fd5b600181815b8085111561522f57816000190482111561521557615215615113565b8085161561522257918102915b93841c93908002906151f9565b509250929050565b60008261524657506001610a40565b8161525357506000610a40565b816001811461526957600281146152735761528f565b6001915050610a40565b60ff84111561528457615284615113565b50506001821b610a40565b5060208310610133831016604e8410600b84101617156152b2575081810a610a40565b6152bc83836151f4565b80600019048211156152d0576152d0615113565b029392505050565b6000610a3d8383615237565b6000602082840312156152f657600080fd5b8151613d2381614e1c565b634e487b7160e01b600052604160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561533d5761533d615113565b600160ff1b600087128281168783058912161561535c5761535c615113565b6000871292508782058712848416161561537857615378615113565b8785058712818416161561538e5761538e615113565b505050929093029392505050565b6000826153ab576153ab61518f565b600160ff1b8214600019841416156153c5576153c5615113565b500590565b60005b838110156153e55781810151838201526020016153cd565b83811115610fab5750506000910152565b6000815180845261540e8160208601602086016153ca565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906123af908301846153f6565b6001600160a01b03848116825283166020820152606060408201819052600090614357908301846153f6565b60008060006060848603121561548757600080fd5b8351925060208401519150604084015190509250925092565b6000600182016154b2576154b2615113565b5060010190565b6000602082840312156154cb57600080fd5b8151613d2381614c99565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600160ff1b820161553657615536615113565b5060000390565b60008083128015600160ff1b85018412161561555b5761555b615113565b6001600160ff1b038401831381161561557657615576615113565b50500390565b600080821280156001600160ff1b038490038513161561559e5761559e615113565b600160ff1b83900384128116156155b7576155b7615113565b50500190565b6000826155cc576155cc61518f565b500790565b600082516155e38184602087016153ca565b9190910192915050565b602081526000610a3d60208301846153f656fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e74323536296164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220f6b89f52e3a14c400fe342e0c119a64c93d6aa5599ee885e5574e51ccf5084bc64736f6c634300080d0033",
1620
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bd212c0e146107d5578063be26317e146107df578063c0ffb809146107e857600080fd5b8063b1a250f2116101ce578063b1a250f214610720578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639f6506ce146106f7578063a15753dc14610701578063b0772d0b1461070b57600080fd5b80636426b4a7116102e457806388bead73116102775780638dd95002116102465780638dd95002146106235780638e8f294b1461064a5780639198e515146106b55780639565d3d2146106c857600080fd5b806388bead73146105d857806388d742c2146105ec57806389afcb44146105ff5780638da5cb5b1461061257600080fd5b80637dc0d1d0116102b35780637dc0d1d01461057b5780637ef820701461058f57806380d45a2d146105bb578063856c3aa4146105ce57600080fd5b80636426b4a714610531578063715018a61461055857806379ba5097146105605780637dafcd891461056857600080fd5b80633421fc521161035c57806355d36c981161032b57806355d36c98146104e0578063594a67ee146104f35780635c975abb146105065780635fe3b5671461051d57600080fd5b80633421fc521461049457806337f23cd3146104bb578063487b0dfb146104ce5780634e71d92d146104d857600080fd5b80631bffac89116103985780631bffac891461043a5780631cb9a02a1461045b578063207add911461046e57806324e6baf21461048157600080fd5b80630104db1b146103bf5780630e32cb86146103f95780631b9ce5751461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614cae565b610a01565b005b61013754610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e6610448366004614cae565b6101406020526000908152604090205481565b6103e6610469366004614ccb565b610a15565b61040c61047c366004614ccb565b610a46565b61040c61048f366004614d39565b610b01565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104c9366004614cae565b610ccd565b6103e66101395481565b61040c610e57565b61040c6104ee366004614d7b565b610ee6565b61040c610501366004614db0565b610fb1565b60c95460ff165b60405190151581526020016103f0565b61013f54610422906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c61113b565b61040c61114f565b61040c610576366004614e2a565b6111cb565b61014254610422906001600160a01b031681565b610136546105a3906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105c9366004614e7f565b611355565b6103e66101315481565b61013854610422906001600160a01b031681565b6103e66105fa366004614cae565b61139c565b61040c61060d366004614cae565b6113b8565b6033546001600160a01b0316610422565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61068b610658366004614cae565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106c3366004614cae565b6113ef565b61050d6106d6366004614e98565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b6107136115b3565b6040516103f09190614ec8565b61040c61072e366004614f2c565b611616565b6097546001600160a01b0316610422565b610757610752366004614fe6565b611899565b604080519283526020830191909152016103f0565b6107a761077a366004615037565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d0366004615037565b6119f6565b6103e661013c5481565b6103e660fb5481565b61040c6107f6366004614d7b565b611a0a565b6103e661013d5481565b61040c611c28565b61014154610422906001600160a01b031681565b610136546105a390600160801b90046001600160801b031681565b61040c61084a366004615037565b611c71565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e6610884366004615037565b611c89565b6103e661012e5481565b6103e66101305481565b61040c6108ab366004615065565b611c9e565b6065546001600160a01b0316610422565b61040c6108cf366004614cae565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614cae565b611da2565b610932610913366004614cae565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610422610957366004614cae565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614cae565b6101326020526000908152604090205481565b61040c6109a2366004614cae565b611e4a565b6109ba6109b5366004614cae565b611ebb565b6040516103f09190615098565b6107576109d5366004615037565b611ffd565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b610a096121dd565b610a1281612237565b50565b61013654600090610a3d90849084906001600160801b0380821691600160801b9004166122fd565b90505b92915050565b610a846040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506123b7565b61012e54821080610a97575061012f5481105b15610ab55760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610aef91815260200190565b60405180910390a46101305561013155565b61013d54600003610b255760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610b495760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610cc8576000838383818110610b6857610b686150fd565b9050602002016020810190610b7d9190614cae565b6001600160a01b038116600090815261012d602052604090205490915060ff16610bba57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610bf35750600101610b4c565b610135805460005b81811015610c4b576000838281548110610c1757610c176150fd565b6000918252602090912001546001600160a01b03169050610c388582612451565b610c42858261252d565b50600101610bfb565b5061013d60008154610c5c90615129565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610b4c565b505050565b6000610cd88261260a565b90506000610ce5826126a8565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610d3f575082155b15610d82576001600160a01b03851660009081526101326020908152604082209190915581015115610d7957610d74856126e1565b610e50565b610d7485612739565b82158015610d8f57508051155b8015610d9a57508115155b15610dbe576001600160a01b03851660009081526101326020526040812055610e50565b81158015610dc95750825b8015610dd457508051155b15610dfa576001600160a01b038516600090815261013260205260409020429055610e50565b80518015610e055750825b15610e5057610e13856126e1565b6001600160a01b038516600090815261013260205260408120549003610e50576001600160a01b0385166000908152610132602052604090204290555b5050505050565b336000908152610132602052604081205490819003610e885760405162c4e3d160e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610eb38242615140565b1015610ed25760405163beb98cab60e01b815260040160405180910390fd5b610edd60003361290d565b610a1233612a1e565b610f076040518060600160405280602a8152602001615601602a91396123b7565b6001600160a01b038316600090815261013360205260409020600481015460ff16610f4557604051630ff2e4a960e31b815260040160405180910390fd5b610f4e846113ef565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a482815560018101829055610fab612b1b565b50505050565b610fef6040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506123b7565b82811461100f5760405163251f56a160e21b815260040160405180910390fd5b60005b83811015610e50574283838381811061102d5761102d6150fd565b9050602002013511156110535760405163b7d0949760e01b815260040160405180910390fd5b828282818110611065576110656150fd565b905060200201356101326000878785818110611083576110836150fd565b90506020020160208101906110989190614cae565b6001600160a01b031681526020810191909152604001600020558484828181106110c4576110c46150fd565b90506020020160208101906110d99190614cae565b6001600160a01b03167f09d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc848484818110611115576111156150fd565b9050602002013560405161112b91815260200190565b60405180910390a2600101611012565b6111436121dd565b61114d6000612b4f565b565b60655433906001600160a01b031681146111c25760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b610a1281612b4f565b61120160405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506123b7565b82156113165760005b81811015610fab57600061012d600085858581811061122b5761122b6150fd565b90506020020160208101906112409190614cae565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561127457508054610100900460ff16155b156112ad576112a884848481811061128e5761128e6150fd565b90506020020160208101906112a39190614cae565b612b68565b61130d565b6112de60018585858181106112c4576112c46150fd565b90506020020160208101906112d99190614cae565b61290d565b61130d8484848181106112f3576112f36150fd565b90506020020160208101906113089190614cae565b612a1e565b5060010161120a565b60005b81811015610fab5761133860008484848181106112c4576112c46150fd565b61134d8383838181106112f3576112f36150fd565b600101611319565b6113936040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506123b7565b610a1281612c18565b60006113a6612cb2565b6113b08233612cf8565b90505b919050565b6113e66040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506123b7565b610a1281612739565b6001600160a01b038116600090815261013360205260409020600481015460ff1661142d57604051630ff2e4a960e31b815260040160405180910390fd5b600061143883612edb565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561148457600080fd5b505af1158015611498573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115099190615157565b6001600160a01b03841660009081526101406020526040812054919250906115319083615140565b90508060008190036115465750505050505050565b6001600160a01b038516600090815261014060205260408120849055600387015415611590576003870154611583670de0b6b3a764000084615170565b61158d91906151a5565b90505b808760020160008282546115a491906151b9565b90915550505050505050505050565b606061013580548060200260200160405190810160405280929190818152602001828054801561160c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ee575b5050505050905090565b600054610100900460ff16158080156116365750600054600160ff909116105b806116505750303b158015611650575060005460ff166001145b6116b35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016111b9565b6000805460ff1916600117905580156116d6576000805461ff0019166101001790555b6001600160a01b038b166116fd5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038a166117245760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03841661174b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166117725760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166117995760405163e6c4247b60e01b815260040160405180910390fd5b6117a38888612f9f565b6001600160801b03878116600160801b02908916176101365561013880546001600160a01b03808d166001600160a01b0319928316179092556101398b905561013780548e8416908316179055600061013b55610141805488841690831617905561013f805487841690831617905561014280549286169290911691909117905561182d86612fe5565b61183561301d565b61183e82612c18565b61184661304c565b801561188c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6001600160a01b03808616600081815261013460209081526040808320948916835293815283822060010154928252610133905291822060030154829182916118e29190615140565b905060006118ef856130a6565b90506000806000611902848b8b8f6130fb565b92509250925060006119138d612edb565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197491906151d1565b60ff169050611984816012615140565b61198f90600a6152d8565b6119999085615170565b610136549094506000906119c490879087906001600160801b0380821691600160801b9004166122fd565b90506119d081886151b9565b96506119e18e8c8e8787868d6133c5565b909f909e509c50505050505050505050505050565b6000611a00612cb2565b610a3d8383612cf8565b611a2b60405180606001604052806022815260200161562b602291396123b7565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611a6a57604051630313b28560e01b815260040160405180910390fd5b61013f54604051638e8f294b60e01b81526001600160a01b0386811660048301526000921690638e8f294b90602401602060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada91906152e4565b905080611afa57604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b2d86612edb565b6001600160a01b03808216600090815261013e60205260409020549192501615611b6a5760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611bdb612b1b565b61013554611be8906134b1565b8385876001600160a01b03167faeb29651ee58d1f8216621256cf5fe5cdf5c1a7650175c620342e0eb03de0f8e60405160405180910390a4505050505050565b611c566040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506123b7565b60c95460ff1615611c695761114d6134e2565b61114d61304c565b611c7b8282612451565b611c85828261252d565b5050565b6000611c94836113ef565b610a3d838361351b565b611cdc6040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506123b7565b611ce68282612f9f565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611d9957611d916101358281548110611d7757611d776150fd565b6000918252602090912001546001600160a01b03166113ef565b600101611d58565b50610cc8612b1b565b6001600160a01b03811660009081526101326020526040812054808203611deb57507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e40577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611e526121dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611e836033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611edd57611edd615301565b604051908082528060200260200182016040528015611f2857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611efb5790505b50925060005b81811015611ff5576000838281548110611f4a57611f4a6150fd565b60009182526020822001546001600160a01b03169150611f6a8288611c89565b6001600160a01b03808416600081815261013460209081526040808320948d1683529381529083902054835160608101909452918352929350918101611faf85612edb565b6001600160a01b03168152602001611fc783856151b9565b815250878581518110611fdc57611fdc6150fd565b6020026020010181905250836001019350505050611f2e565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190615157565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d69190615157565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121469190615157565b90506000670de0b6b3a764000061215d8385615170565b61216791906151a5565b6001600160a01b03808b16600081815261013460209081526040808320948e1683529381528382206001015492825261013390529182206003015492935091906121b86121b38c61260a565b6130a6565b90506000806121c9838a888d6130fb565b92509250506119e18e878b85858a8a6133c5565b6033546001600160a01b0316331461114d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111b9565b6001600160a01b03811661229b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016111b9565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091015b60405180910390a15050565b600084158061230a575083155b15612317575060006123af565b8385036123255750836123af565b83851060008161233e5761233986886135b2565b612348565b61234887876135b2565b905060006123836123588661361a565b6123618861361a565b61236a85613684565b6123749190615317565b61237e919061539c565b61368f565b9050821561239f57612395878261369a565b93505050506123af565b6123a987826136cc565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906123ea9033908690600401615422565b602060405180830381865afa158015612407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242b91906152e4565b905080611c8557333083604051634a3fa29360e01b81526004016111b993929190615446565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061249757506001600160a01b038216600090815261012d602052604090205460ff16155b156124a0575050565b6124a9816113ef565b6124b3818361351b565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906124eb9084906151b9565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061257457506001600160a01b038316600090815261012d602052604090205460ff16155b1561257e57505050565b600061258a83856136fe565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916125c89190615140565b6125d291906151b9565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126979190615472565b925050915080826123af9190615140565b60007f000000000000000000000000000000000000000000000000000000000000000082106126d957506001919050565b506000919050565b610135805460005b81811015610fab576000838281548110612705576127056150fd565b6000918252602090912001546001600160a01b031690506127268582612451565b612730858261252d565b506001016126e9565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261279657604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b8181101561286f5760008382815481106127ba576127ba6150fd565b6000918252602090912001546001600160a01b031690506127db8682612451565b6001600160a01b03808216600081815261013460209081526040808320948b16835293815283822060010154928252610133905291909120600301546128219190615140565b6001600160a01b03918216600090815261013360209081526040808320600301939093556101348152828220938916825292909252812060018082018390556002909101919091550161279e565b508260200151156128935761012e6000815461288a90615129565b909155506128a8565b61012f600081546128a390615129565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff191690556128d384613a90565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff16156129485760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff1990921691909117600117825561297f5761012e60008154612976906154a0565b90915550612994565b61012f6000815461298f906154a0565b909155505b6101315461012e5411806129ad57506101305461012f54115b156129cb5760405163e55fb50960e01b815260040160405180910390fd5b6129d482613b04565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612a11911515815260200190565b60405180910390a2505050565b610135805460005b81811015610fab576000838281548110612a4257612a426150fd565b6000918252602090912001546001600160a01b03169050612a62816113ef565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612aa782876136fe565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612af19082906151b9565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612a26565b61013b8054906000612b2c836154a0565b919050555061012f5461012e54612b4391906151b9565b61013c81905561013d55565b606580546001600160a01b0319169055610a1281613b42565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612ba0906154a0565b9091555061012f8054600090612bb590615129565b909155506101315461012e541115612be05760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60fb548111612c745760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b60648201526084016111b9565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91016122f1565b60c95460ff161561114d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016111b9565b600080612d058484611c89565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612d3990826151b9565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612d8685612edb565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df39190615157565b831115612e70576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612e5757600080fd5b505af1158015612e6b573d6000803e3d6000fd5b505050505b612e846001600160a01b0382168685613b94565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba85604051612ec991815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612f3d57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b091906154b9565b806001600160801b0316826001600160801b0316101580612fc757506001600160801b038216155b15611c8557604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff1661300c5760405162461bcd60e51b81526004016111b9906154d6565b613014613be6565b610a1281613c15565b600054610100900460ff166130445760405162461bcd60e51b81526004016111b9906154d6565b61114d613c3c565b613054612cb2565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130893390565b6040516001600160a01b03909116815260200160405180910390a1565b60007f00000000000000000000000000000000000000000000000000000000000000008211156130f757507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa158015613155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317991906154b9565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa1580156131ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ee9190615157565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a7640000908190613225908d615170565b61322f91906151a5565b6132399084615170565b61324391906151a5565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a7640000908190613277908e615170565b61328191906151a5565b61328b9085615170565b61329591906151a5565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190615157565b90506000670de0b6b3a76400006133218c84615170565b61332b91906151a5565b90506000670de0b6b3a76400006133428e85615170565b61334c91906151a5565b905083821061337c5781600003613364576000613379565b8161336f858e615170565b61337991906151a5565b9b505b8481106133aa57806000036133925760006133a7565b8061339d868f615170565b6133a791906151a5565b9c505b6133b48d8d6151b9565b9e9b9d505050505050505050505050565b600080826000036133db575060009050806134a5565b6000836133e78b613c6f565b6133f19087615170565b6133fb91906151a5565b9050600061340987896151b9565b905080600003613421576000809350935050506134a5565b612710600080836134328c87615170565b61343c91906151a5565b9150836134498b87615170565b61345391906151a5565b90508c15613475578c6134668484615170565b61347091906151a5565b613478565b60005b96508b1561349a578b61348b8483615170565b61349591906151a5565b61349d565b60005b955050505050505b97509795505050505050565b60fb54811115610a125760fb5460405163792bfb1b60e11b81526004810191909152602481018290526044016111b9565b6134ea613d2a565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613089565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135839190615140565b6020830151909150670de0b6b3a764000061359e8284615170565b6135a891906151a5565b9695505050505050565b60006135bd8361361a565b6135c68361361a565b12156135ef576040516360c1ae3960e01b815260048101849052602481018390526044016111b9565b6135f88261361a565b6001607f1b6136068561361a565b6136109190615317565b610a3d919061539c565b60006001600160ff1b038211156130f75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016111b9565b60006113b082613d73565b60006113b082614360565b6000808212156136bd57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136068561361a565b6000808212156136ef57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136068561361a565b60008061370d6121b38461260a565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561375c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137809190615157565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e69190615157565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138569190615157565b90506000670de0b6b3a764000061386d8385615170565b61387791906151a5565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f391906154b9565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b15801561393d57600080fd5b505af1158015613951573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b15801561399d57600080fd5b505af11580156139b1573d6000803e3d6000fd5b5050505060006139c38887858e6130fb565b5050905060006139d28c612edb565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3391906151d1565b60ff169050613a43816012615140565b613a4e90600a6152d8565b613a589083615170565b61013654909250613a80908a9084906001600160801b0380821691600160801b9004166122fd565b9c9b505050505050505050505050565b61013c5415613aae5761013c60008154613aa990615129565b909155505b61013d5415801590613ae8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610a125761013d60008154613afd90615129565b9091555050565b61013c5415610a125761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610cc8908490614a71565b600054610100900460ff16613c0d5760405162461bcd60e51b81526004016111b9906154d6565b61114d614b46565b600054610100900460ff16610a095760405162461bcd60e51b81526004016111b9906154d6565b600054610100900460ff16613c635760405162461bcd60e51b81526004016111b9906154d6565b60c9805460ff19169055565b6101415460009081906001600160a01b031663a666642b613c8f85612edb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190615157565b9050613d23817f0000000000000000000000000000000000000000000000000000000000000000615170565b9392505050565b60c95460ff1661114d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016111b9565b60006001607f1b821315613d9d57604051633ce23a3d60e11b8152600481018390526024016111b9565b60008213613dc1576040516330ecaa3d60e21b8152600481018390526024016111b9565b6001607f1b8203613dd457506000919050565b640733048c5a8213613dee576113b06101ff607c1b615521565b60008060006a01c8464f761647600000008513613e3c57613e13600160841b8561553d565b93506a01c8464f76164760000000613e2f6001607f1b87615317565b613e39919061539c565b94505b6cf1aaddd7742e900000000000008513613e8957613e5e600160831b8561553d565b93506cf1aaddd7742e90000000000000613e7c6001607f1b87615317565b613e86919061539c565b94505b6615fc21041027af603f1b8513613ed057613ea8600160821b8561553d565b93506615fc21041027af603f1b613ec36001607f1b87615317565b613ecd919061539c565b94505b660960aadc109e7b60461b8513613f1757613eef600160811b8561553d565b9350660960aadc109e7b60461b613f0a6001607f1b87615317565b613f14919061539c565b94505b660454aaa8efe073604a1b8513613f5e57613f36600160801b8561553d565b9350660454aaa8efe073604a1b613f516001607f1b87615317565b613f5b919061539c565b94505b6602f16ac6c59de7604c1b8513613fa557613f7d6001607f1b8561553d565b93506602f16ac6c59de7604c1b613f986001607f1b87615317565b613fa2919061539c565b94505b6609b4597e37cb05604b1b8513613fec57613fc46001607e1b8561553d565b93506609b4597e37cb05604b1b613fdf6001607f1b87615317565b613fe9919061539c565b94505b6618ebef9eac820b604a1b85136140335761400b6001607d1b8561553d565b93506618ebef9eac820b604a1b6140266001607f1b87615317565b614030919061539c565b94505b6f70f5a893b608861e1f58934f97aea57d8513614086576140586001607c1b8561553d565b93506f70f5a893b608861e1f58934f97aea57d6140796001607f1b87615317565b614083919061539c565b94505b6140946001607f1b8661553d565b92508291506001607f1b6140a88380615317565b6140b2919061539c565b9050600160801b6140c3848261553d565b6140cd9084615317565b6140d7919061539c565b6140e1908561557c565b93506001607f1b6140f28284615317565b6140fc919061539c565b9150600160811b61411d846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa61553d565b6141279084615317565b614131919061539c565b61413b908561557c565b93506001607f1b61414c8284615317565b614156919061539c565b9150600360801b614177846f9999999999999999999999999999999961553d565b6141819084615317565b61418b919061539c565b614195908561557c565b93506001607f1b6141a68284615317565b6141b0919061539c565b9150600160821b6141d1846f9249249249249249249249249249249261553d565b6141db9084615317565b6141e5919061539c565b6141ef908561557c565b93506001607f1b6142008284615317565b61420a919061539c565b9150600560801b61422b846f8e38e38e38e38e38e38e38e38e38e38e61553d565b6142359084615317565b61423f919061539c565b614249908561557c565b93506001607f1b61425a8284615317565b614264919061539c565b9150600360811b614285846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b61553d565b61428f9084615317565b614299919061539c565b6142a3908561557c565b93506001607f1b6142b48284615317565b6142be919061539c565b9150600760801b6142df846f89d89d89d89d89d89d89d89d89d89d8961553d565b6142e99084615317565b6142f3919061539c565b6142fd908561557c565b93506001607f1b61430e8284615317565b614318919061539c565b9150600160831b614339846f8888888888888888888888888888888861553d565b6143439084615317565b61434d919061539c565b614357908561557c565b95945050505050565b60006143706101ff607c1b615521565b82121561437f57506000919050565b8160000361439257506001607f1b919050565b60008213156143b757604051631086170d60e01b8152600481018390526024016111b9565b6000806143c86001607c1b856155bd565b91508190506001607f1b6143dc8280615317565b6143e6919061539c565b90506143fa816710e1b3be415a0000615317565b614404908461557c565b92506001607f1b6144158383615317565b61441f919061539c565b9050614433816705a0913f6b1e0000615317565b61443d908461557c565b92506001607f1b61444e8383615317565b614458919061539c565b905061446c81670168244fdac78000615317565b614476908461557c565b92506001607f1b6144878383615317565b614491919061539c565b90506144a481664807432bc18000615317565b6144ae908461557c565b92506001607f1b6144bf8383615317565b6144c9919061539c565b90506144dc81660c0135dca04000615317565b6144e6908461557c565b92506001607f1b6144f78383615317565b614501919061539c565b9050614514816601b707b1cdc000615317565b61451e908461557c565b92506001607f1b61452f8383615317565b614539919061539c565b905061454b816536e0f639b800615317565b614555908461557c565b92506001607f1b6145668383615317565b614570919061539c565b905061458281650618fee9f800615317565b61458c908461557c565b92506001607f1b61459d8383615317565b6145a7919061539c565b90506145b881649c197dcc00615317565b6145c2908461557c565b92506001607f1b6145d38383615317565b6145dd919061539c565b90506145ee81640e30dce400615317565b6145f8908461557c565b92506001607f1b6146098383615317565b614613919061539c565b90506146248164012ebd1300615317565b61462e908461557c565b92506001607f1b61463f8383615317565b614649919061539c565b9050614659816317499f00615317565b614663908461557c565b92506001607f1b6146748383615317565b61467e919061539c565b905061468e816301a9d480615317565b614698908461557c565b92506001607f1b6146a98383615317565b6146b3919061539c565b90506146c281621c6380615317565b6146cc908461557c565b92506001607f1b6146dd8383615317565b6146e7919061539c565b90506146f6816201c638615317565b614700908461557c565b92506001607f1b6147118383615317565b61471b919061539c565b905061472981611ab8615317565b614733908461557c565b92506001607f1b6147448383615317565b61474e919061539c565b905061475c8161017c615317565b614766908461557c565b92506001607f1b6147778383615317565b614781919061539c565b905061478e816014615317565b614798908461557c565b92506001607f1b6147a98383615317565b6147b3919061539c565b90506147c0816001615317565b6147ca908461557c565b92506001607f1b826147e46721c3677c82b400008661539c565b6147ee919061557c565b6147f8919061557c565b925061480384615521565b9350600160841b841615614849577243cbaf42a000812488fc5c220ad7b97bf6e99e61483c6cf1aaddd7742e56d32fb9f9974485615317565b614846919061539c565b92505b600160831b84161561488e577105d27a9f51c31b7c2f8038212a05747799916148816e0afe10820813d65dfe6a33c07f738f85615317565b61488b919061539c565b92505b600160821b8416156148d357701b4c902e273a58678d6d3bfdb93db96d026148c66f02582ab704279e8efd15e0265855c47a85615317565b6148d0919061539c565b92505b600160811b841615614918577003b1cc971a9bb5b9867477440d6d15775061490b6f1152aaa3bf81cb9fdb76eae12d02957185615317565b614915919061539c565b92505b600160801b84161561495d5770015bf0a8b1457695355fb8ac404e7a79e36149506f2f16ac6c59de6f8d5d6f63c1482a7c8685615317565b61495a919061539c565b92505b6001607f1b8416156149a1576fd3094c70f034de4b96ff7d5b6f99fcd86149946f4da2cbf1be5827f9eb3ad1aa9866ebb385615317565b61499e919061539c565b92505b6001607e1b8416156149e5576fa45af1e1f40c333b3de1db4dd55f29a76149d86f63afbe7ab2082ba1a0ae5e4eb1b479dc85615317565b6149e2919061539c565b92505b6001607d1b841615614a29576f910b022db7ae67ce76b441c27035c6a1614a1c6f70f5a893b608861e1f58934f97aea57d85615317565b614a26919061539c565b92505b6001607c1b841615614a6a576f88415abbe9a76bead8d00cf112e4d4a8614a606f783eafef1c0a8f3978c7f81824d62ebf85615317565b6123af919061539c565b5050919050565b6000614ac6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b769092919063ffffffff16565b9050805160001480614ae7575080806020019051810190614ae791906152e4565b610cc85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016111b9565b600054610100900460ff16614b6d5760405162461bcd60e51b81526004016111b9906154d6565b61114d33612b4f565b60606123af848460008585600080866001600160a01b03168587604051614b9d91906155d1565b60006040518083038185875af1925050503d8060008114614bda576040519150601f19603f3d011682016040523d82523d6000602084013e614bdf565b606091505b5091509150614bf087838387614bfb565b979650505050505050565b60608315614c6a578251600003614c63576001600160a01b0385163b614c635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016111b9565b50816123af565b6123af8383815115614c7f5781518083602001fd5b8060405162461bcd60e51b81526004016111b991906155ed565b6001600160a01b0381168114610a1257600080fd5b600060208284031215614cc057600080fd5b8135613d2381614c99565b60008060408385031215614cde57600080fd5b50508035926020909101359150565b60008083601f840112614cff57600080fd5b50813567ffffffffffffffff811115614d1757600080fd5b6020830191508360208260051b8501011115614d3257600080fd5b9250929050565b60008060208385031215614d4c57600080fd5b823567ffffffffffffffff811115614d6357600080fd5b614d6f85828601614ced565b90969095509350505050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c99565b95602085013595506040909401359392505050565b60008060008060408587031215614dc657600080fd5b843567ffffffffffffffff80821115614dde57600080fd5b614dea88838901614ced565b90965094506020870135915080821115614e0357600080fd5b50614e1087828801614ced565b95989497509550505050565b8015158114610a1257600080fd5b600080600060408486031215614e3f57600080fd5b8335614e4a81614e1c565b9250602084013567ffffffffffffffff811115614e6657600080fd5b614e7286828701614ced565b9497909650939450505050565b600060208284031215614e9157600080fd5b5035919050565b60008060408385031215614eab57600080fd5b823591506020830135614ebd81614c99565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614f095783516001600160a01b031683529284019291840191600101614ee4565b50909695505050505050565b80356001600160801b03811681146113b357600080fd5b6000806000806000806000806000806101408b8d031215614f4c57600080fd5b8a35614f5781614c99565b995060208b0135614f6781614c99565b985060408b01359750614f7c60608c01614f15565b9650614f8a60808c01614f15565b955060a08b0135614f9a81614c99565b945060c08b0135614faa81614c99565b935060e08b0135614fba81614c99565b92506101008b0135614fcb81614c99565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a08688031215614ffe57600080fd5b853561500981614c99565b9450602086013561501981614c99565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561504a57600080fd5b823561505581614c99565b91506020830135614ebd81614c99565b6000806040838503121561507857600080fd5b61508183614f15565b915061508f60208401614f15565b90509250929050565b602080825282518282018190526000919060409081850190868401855b828110156150f057815180516001600160a01b03908116865287820151168786015285015185850152606090930192908501906001016150b5565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008161513857615138615113565b506000190190565b60008282101561515257615152615113565b500390565b60006020828403121561516957600080fd5b5051919050565b600081600019048311821515161561518a5761518a615113565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826151b4576151b461518f565b500490565b600082198211156151cc576151cc615113565b500190565b6000602082840312156151e357600080fd5b815160ff81168114613d2357600080fd5b600181815b8085111561522f57816000190482111561521557615215615113565b8085161561522257918102915b93841c93908002906151f9565b509250929050565b60008261524657506001610a40565b8161525357506000610a40565b816001811461526957600281146152735761528f565b6001915050610a40565b60ff84111561528457615284615113565b50506001821b610a40565b5060208310610133831016604e8410600b84101617156152b2575081810a610a40565b6152bc83836151f4565b80600019048211156152d0576152d0615113565b029392505050565b6000610a3d8383615237565b6000602082840312156152f657600080fd5b8151613d2381614e1c565b634e487b7160e01b600052604160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561533d5761533d615113565b600160ff1b600087128281168783058912161561535c5761535c615113565b6000871292508782058712848416161561537857615378615113565b8785058712818416161561538e5761538e615113565b505050929093029392505050565b6000826153ab576153ab61518f565b600160ff1b8214600019841416156153c5576153c5615113565b500590565b60005b838110156153e55781810151838201526020016153cd565b83811115610fab5750506000910152565b6000815180845261540e8160208601602086016153ca565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906123af908301846153f6565b6001600160a01b03848116825283166020820152606060408201819052600090614357908301846153f6565b60008060006060848603121561548757600080fd5b8351925060208401519150604084015190509250925092565b6000600182016154b2576154b2615113565b5060010190565b6000602082840312156154cb57600080fd5b8151613d2381614c99565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600160ff1b820161553657615536615113565b5060000390565b60008083128015600160ff1b85018412161561555b5761555b615113565b6001600160ff1b038401831381161561557657615576615113565b50500390565b600080821280156001600160ff1b038490038513161561559e5761559e615113565b600160ff1b83900384128116156155b7576155b7615113565b50500190565b6000826155cc576155cc61518f565b500790565b600082516155e38184602087016153ca565b9190910192915050565b602081526000610a3d60208301846153f656fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e74323536296164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220f6b89f52e3a14c400fe342e0c119a64c93d6aa5599ee885e5574e51ccf5084bc64736f6c634300080d0033",
1619
+ "bytecode": "0x6101406040523480156200001257600080fd5b50604051620059d5380380620059d58339810160408190526200003591620001d0565b8585858585856001600160a01b038616620000635760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166200008b5760405163e6c4247b60e01b815260040160405180910390fd5b83600003620000ad576040516302723dfb60e21b815260040160405180910390fd5b6001600160a01b0380871660a052851660c052608084905261012083905260e0829052610100819052620000e0620000f2565b5050505050505050505050506200022d565b600054610100900460ff16156200015f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001b1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b0381168114620001cb57600080fd5b919050565b60008060008060008060c08789031215620001ea57600080fd5b620001f587620001b3565b95506200020560208801620001b3565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a05160c05160e0516101005161012051615712620002c3600039600081816103c401528181610f0c01528181611e3601528181611e610152611e890152600081816109df0152818161311a0152613143015260008181610536015261271c0152600081816104990152612f4f0152600081816106280152612f890152600081816108540152613d6f01526157126000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bd212c0e146107d5578063be26317e146107df578063c0ffb809146107e857600080fd5b8063b1a250f2116101ce578063b1a250f214610720578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639f6506ce146106f7578063a15753dc14610701578063b0772d0b1461070b57600080fd5b80636426b4a7116102e457806388bead73116102775780638dd95002116102465780638dd95002146106235780638e8f294b1461064a5780639198e515146106b55780639565d3d2146106c857600080fd5b806388bead73146105d857806388d742c2146105ec57806389afcb44146105ff5780638da5cb5b1461061257600080fd5b80637dc0d1d0116102b35780637dc0d1d01461057b5780637ef820701461058f57806380d45a2d146105bb578063856c3aa4146105ce57600080fd5b80636426b4a714610531578063715018a61461055857806379ba5097146105605780637dafcd891461056857600080fd5b80633421fc521161035c57806355d36c981161032b57806355d36c98146104e0578063594a67ee146104f35780635c975abb146105065780635fe3b5671461051d57600080fd5b80633421fc521461049457806337f23cd3146104bb578063487b0dfb146104ce5780634e71d92d146104d857600080fd5b80631bffac89116103985780631bffac891461043a5780631cb9a02a1461045b578063207add911461046e57806324e6baf21461048157600080fd5b80630104db1b146103bf5780630e32cb86146103f95780631b9ce5751461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1e565b610a01565b005b61013754610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e6610448366004614d1e565b6101406020526000908152604090205481565b6103e6610469366004614d3b565b610a15565b61040c61047c366004614d3b565b610a46565b61040c61048f366004614da9565b610b01565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104c9366004614d1e565b610ccd565b6103e66101395481565b61040c610ed9565b61040c6104ee366004614deb565b610f68565b61040c610501366004614e20565b611033565b60c95460ff165b60405190151581526020016103f0565b61013f54610422906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6111ab565b61040c6111bf565b61040c610576366004614e9a565b61123b565b61014254610422906001600160a01b031681565b610136546105a3906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105c9366004614eef565b6113c5565b6103e66101315481565b61013854610422906001600160a01b031681565b6103e66105fa366004614d1e565b61140c565b61040c61060d366004614d1e565b611428565b6033546001600160a01b0316610422565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61068b610658366004614d1e565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106c3366004614d1e565b61145f565b61050d6106d6366004614f08565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b610713611623565b6040516103f09190614f38565b61040c61072e366004614f9c565b611686565b6097546001600160a01b0316610422565b610757610752366004615056565b611909565b604080519283526020830191909152016103f0565b6107a761077a3660046150a7565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d03660046150a7565b611a66565b6103e661013c5481565b6103e660fb5481565b61040c6107f6366004614deb565b611a7a565b6103e661013d5481565b61040c611c98565b61014154610422906001600160a01b031681565b610136546105a390600160801b90046001600160801b031681565b61040c61084a3660046150a7565b611ce1565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e66108843660046150a7565b611cf9565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150d5565b611d0e565b6065546001600160a01b0316610422565b61040c6108cf366004614d1e565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614d1e565b611e12565b610932610913366004614d1e565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610422610957366004614d1e565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614d1e565b6101326020526000908152604090205481565b61040c6109a2366004614d1e565b611eba565b6109ba6109b5366004614d1e565b611f2b565b6040516103f09190615108565b6107576109d53660046150a7565b61206d565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b610a0961224d565b610a12816122a7565b50565b61013654600090610a3d90849084906001600160801b0380821691600160801b90041661236d565b90505b92915050565b610a846040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e743235362900000000000000815250612427565b61012e54821080610a97575061012f5481105b15610ab55760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610aef91815260200190565b60405180910390a46101305561013155565b61013d54600003610b255760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610b495760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610cc8576000838383818110610b6857610b6861516d565b9050602002016020810190610b7d9190614d1e565b6001600160a01b038116600090815261012d602052604090205490915060ff16610bba57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610bf35750600101610b4c565b610135805460005b81811015610c4b576000838281548110610c1757610c1761516d565b6000918252602090912001546001600160a01b03169050610c3885826124c1565b610c42858261259d565b50600101610bfb565b5061013d60008154610c5c90615199565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610b4c565b505050565b6000610cd88261267a565b90506000610ce582612718565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610d3f575082155b15610da1576001600160a01b0385166000818152610132602090815260408083208390555191825260008051602061569b833981519152910160405180910390a2806020015115610d9857610d9385612751565b610ed2565b610d93856127a9565b82158015610dae57508051155b8015610db957508115155b15610e00576001600160a01b0385166000818152610132602090815260408083208390555191825260008051602061569b83398151915291015b60405180910390a2610ed2565b81158015610e0b5750825b8015610e1657508051155b15610e58576001600160a01b038516600081815261013260209081526040918290204290819055915191825260008051602061569b8339815191529101610df3565b80518015610e635750825b15610ed257610e7185612751565b6001600160a01b038516600090815261013260205260408120549003610ed2576001600160a01b038516600081815261013260209081526040918290204290819055915191825260008051602061569b833981519152910160405180910390a25b5050505050565b336000908152610132602052604081205490819003610f0a5760405162c4e3d160e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610f3582426151b0565b1015610f545760405163beb98cab60e01b815260040160405180910390fd5b610f5f60003361297d565b610a1233612a8e565b610f896040518060600160405280602a8152602001615671602a9139612427565b6001600160a01b038316600090815261013360205260409020600481015460ff16610fc757604051630ff2e4a960e31b815260040160405180910390fd5b610fd08461145f565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561102d612b8b565b50505050565b6110716040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d29815250612427565b8281146110915760405163251f56a160e21b815260040160405180910390fd5b60005b83811015610ed257428383838181106110af576110af61516d565b9050602002013511156110d55760405163b7d0949760e01b815260040160405180910390fd5b8282828181106110e7576110e761516d565b9050602002013561013260008787858181106111055761110561516d565b905060200201602081019061111a9190614d1e565b6001600160a01b031681526020810191909152604001600020558484828181106111465761114661516d565b905060200201602081019061115b9190614d1e565b6001600160a01b031660008051602061569b8339815191528484848181106111855761118561516d565b9050602002013560405161119b91815260200190565b60405180910390a2600101611094565b6111b361224d565b6111bd6000612bbf565b565b60655433906001600160a01b031681146112325760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b610a1281612bbf565b61127160405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b815250612427565b82156113865760005b8181101561102d57600061012d600085858581811061129b5761129b61516d565b90506020020160208101906112b09190614d1e565b6001600160a01b031681526020810191909152604001600020805490915060ff1680156112e457508054610100900460ff16155b1561131d576113188484848181106112fe576112fe61516d565b90506020020160208101906113139190614d1e565b612bd8565b61137d565b61134e60018585858181106113345761133461516d565b90506020020160208101906113499190614d1e565b61297d565b61137d8484848181106113635761136361516d565b90506020020160208101906113789190614d1e565b612a8e565b5060010161127a565b60005b8181101561102d576113a860008484848181106113345761133461516d565b6113bd8383838181106113635761136361516d565b600101611389565b6114036040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e743235362900000000000000815250612427565b610a1281612c88565b6000611416612d22565b6114208233612d68565b90505b919050565b6114566040518060400160405280600d81526020016c6275726e28616464726573732960981b815250612427565b610a12816127a9565b6001600160a01b038116600090815261013360205260409020600481015460ff1661149d57604051630ff2e4a960e31b815260040160405180910390fd5b60006114a883612f4b565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906151c7565b6001600160a01b03841660009081526101406020526040812054919250906115a190836151b0565b90508060008190036115b65750505050505050565b6001600160a01b0385166000908152610140602052604081208490556003870154156116005760038701546115f3670de0b6b3a7640000846151e0565b6115fd9190615215565b90505b808760020160008282546116149190615229565b90915550505050505050505050565b606061013580548060200260200160405190810160405280929190818152602001828054801561167c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161165e575b5050505050905090565b600054610100900460ff16158080156116a65750600054600160ff909116105b806116c05750303b1580156116c0575060005460ff166001145b6117235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611229565b6000805460ff191660011790558015611746576000805461ff0019166101001790555b6001600160a01b038b1661176d5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038a166117945760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0384166117bb5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166117e25760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166118095760405163e6c4247b60e01b815260040160405180910390fd5b611813888861300f565b6001600160801b03878116600160801b02908916176101365561013880546001600160a01b03808d166001600160a01b0319928316179092556101398b905561013780548e8416908316179055600061013b55610141805488841690831617905561013f805487841690831617905561014280549286169290911691909117905561189d86613055565b6118a561308d565b6118ae82612c88565b6118b66130bc565b80156118fc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161195291906151b0565b9050600061195f85613116565b90506000806000611972848b8b8f61316b565b92509250925060006119838d612f4b565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e49190615241565b60ff1690506119f48160126151b0565b6119ff90600a615348565b611a0990856151e0565b61013654909450600090611a3490879087906001600160801b0380821691600160801b90041661236d565b9050611a408188615229565b9650611a518e8c8e8787868d613435565b909f909e509c50505050505050505050505050565b6000611a70612d22565b610a3d8383612d68565b611a9b6040518060600160405280602281526020016156bb60229139612427565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611ada57604051630313b28560e01b815260040160405180910390fd5b61013f54604051638e8f294b60e01b81526001600160a01b0386811660048301526000921690638e8f294b90602401602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190615354565b905080611b6a57604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b9d86612f4b565b6001600160a01b03808216600090815261013e60205260409020549192501615611bda5760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c4b612b8b565b61013554611c5890613521565b8385876001600160a01b03167faeb29651ee58d1f8216621256cf5fe5cdf5c1a7650175c620342e0eb03de0f8e60405160405180910390a4505050505050565b611cc66040518060400160405280600d81526020016c746f67676c655061757365282960981b815250612427565b60c95460ff1615611cd9576111bd613552565b6111bd6130bc565b611ceb82826124c1565b611cf5828261259d565b5050565b6000611d048361145f565b610a3d838361358b565b611d4c6040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e743132382900000000815250612427565b611d56828261300f565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611e0957611e016101358281548110611de757611de761516d565b6000918252602090912001546001600160a01b031661145f565b600101611dc8565b50610cc8612b8b565b6001600160a01b03811660009081526101326020526040812054808203611e5b57507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611eb0577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ec261224d565b606580546001600160a01b0383166001600160a01b03199091168117909155611ef36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f4d57611f4d615371565b604051908082528060200260200182016040528015611f9857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f6b5790505b50925060005b81811015612065576000838281548110611fba57611fba61516d565b60009182526020822001546001600160a01b03169150611fda8288611cf9565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161201f85612f4b565b6001600160a01b031681526020016120378385615229565b81525087858151811061204c5761204c61516d565b6020026020010181905250836001019350505050611f9e565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e091906151c7565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214691906151c7565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b691906151c7565b90506000670de0b6b3a76400006121cd83856151e0565b6121d79190615215565b6001600160a01b03808b16600081815261013460209081526040808320948e1683529381528382206001015492825261013390529182206003015492935091906122286122238c61267a565b613116565b9050600080612239838a888d61316b565b9250925050611a518e878b85858a8a613435565b6033546001600160a01b031633146111bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611229565b6001600160a01b03811661230b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401611229565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091015b60405180910390a15050565b600084158061237a575083155b156123875750600061241f565b83850361239557508361241f565b8385106000816123ae576123a98688613622565b6123b8565b6123b88787613622565b905060006123f36123c88661368a565b6123d18861368a565b6123da856136f4565b6123e49190615387565b6123ee919061540c565b6136ff565b9050821561240f57612405878261370a565b935050505061241f565b612419878261373c565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab9061245a9033908690600401615492565b602060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b9190615354565b905080611cf557333083604051634a3fa29360e01b8152600401611229939291906154b6565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061250757506001600160a01b038216600090815261012d602052604090205460ff16155b15612510575050565b6125198161145f565b612523818361358b565b6001600160a01b038083166000908152610134602090815260408083209387168352929052908120805490919061255b908490615229565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff1615806125e457506001600160a01b038316600090815261012d602052604090205460ff16155b156125ee57505050565b60006125fa838561376e565b6001600160a01b03808516600090815261013460209081526040808320938916835292905220600101546003840154919250829161263891906151b0565b6126429190615229565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa1580156126e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270791906154e2565b9250509150808261241f91906151b0565b60007f0000000000000000000000000000000000000000000000000000000000000000821061274957506001919050565b506000919050565b610135805460005b8181101561102d5760008382815481106127755761277561516d565b6000918252602090912001546001600160a01b0316905061279685826124c1565b6127a0858261259d565b50600101612759565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261280657604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b818110156128df57600083828154811061282a5761282a61516d565b6000918252602090912001546001600160a01b0316905061284b86826124c1565b6001600160a01b03808216600081815261013460209081526040808320948b168352938152838220600101549282526101339052919091206003015461289191906151b0565b6001600160a01b03918216600090815261013360209081526040808320600301939093556101348152828220938916825292909252812060018082018390556002909101919091550161280e565b508260200151156129035761012e600081546128fa90615199565b90915550612918565b61012f6000815461291390615199565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff1916905561294384613b00565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff16156129b85760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff199092169190911760011782556129ef5761012e600081546129e690615510565b90915550612a04565b61012f600081546129ff90615510565b909155505b6101315461012e541180612a1d57506101305461012f54115b15612a3b5760405163e55fb50960e01b815260040160405180910390fd5b612a4482613b74565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612a81911515815260200190565b60405180910390a2505050565b610135805460005b8181101561102d576000838281548110612ab257612ab261516d565b6000918252602090912001546001600160a01b03169050612ad28161145f565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612b17828761376e565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612b61908290615229565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612a96565b61013b8054906000612b9c83615510565b919050555061012f5461012e54612bb39190615229565b61013c81905561013d55565b606580546001600160a01b0319169055610a1281613bb2565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612c1090615510565b9091555061012f8054600090612c2590615199565b909155506101315461012e541115612c505760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60fb548111612ce45760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401611229565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa9101612361565b60c95460ff16156111bd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401611229565b600080612d758484611cf9565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612da99082615229565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612df685612f4b565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6391906151c7565b831115612ee0576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612ec757600080fd5b505af1158015612edb573d6000803e3d6000fd5b505050505b612ef46001600160a01b0382168685613c04565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba85604051612f3991815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612fad57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612feb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190615529565b806001600160801b0316826001600160801b031610158061303757506001600160801b038216155b15611cf557604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff1661307c5760405162461bcd60e51b815260040161122990615546565b613084613c56565b610a1281613c85565b600054610100900460ff166130b45760405162461bcd60e51b815260040161122990615546565b6111bd613cac565b6130c4612d22565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130f93390565b6040516001600160a01b03909116815260200160405180910390a1565b60007f000000000000000000000000000000000000000000000000000000000000000082111561316757507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e99190615529565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561323a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325e91906151c7565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a7640000908190613295908d6151e0565b61329f9190615215565b6132a990846151e0565b6132b39190615215565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132e7908e6151e0565b6132f19190615215565b6132fb90856151e0565b6133059190615215565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa158015613356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337a91906151c7565b90506000670de0b6b3a76400006133918c846151e0565b61339b9190615215565b90506000670de0b6b3a76400006133b28e856151e0565b6133bc9190615215565b90508382106133ec57816000036133d45760006133e9565b816133df858e6151e0565b6133e99190615215565b9b505b84811061341a5780600003613402576000613417565b8061340d868f6151e0565b6134179190615215565b9c505b6134248d8d615229565b9e9b9d505050505050505050505050565b6000808260000361344b57506000905080613515565b6000836134578b613cdf565b61346190876151e0565b61346b9190615215565b905060006134798789615229565b90508060000361349157600080935093505050613515565b612710600080836134a28c876151e0565b6134ac9190615215565b9150836134b98b876151e0565b6134c39190615215565b90508c156134e5578c6134d684846151e0565b6134e09190615215565b6134e8565b60005b96508b1561350a578b6134fb84836151e0565b6135059190615215565b61350d565b60005b955050505050505b97509795505050505050565b60fb54811115610a125760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401611229565b61355a613d9a565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336130f9565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135f391906151b0565b6020830151909150670de0b6b3a764000061360e82846151e0565b6136189190615215565b9695505050505050565b600061362d8361368a565b6136368361368a565b121561365f576040516360c1ae3960e01b81526004810184905260248101839052604401611229565b6136688261368a565b6001607f1b6136768561368a565b6136809190615387565b610a3d919061540c565b60006001600160ff1b038211156131675760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611229565b600061142082613de3565b6000611420826143d0565b60008082121561372d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136768561368a565b60008082121561375f57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136768561368a565b60008061377d6122238461267a565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa1580156137cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f091906151c7565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385691906151c7565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151c7565b90506000670de0b6b3a76400006138dd83856151e0565b6138e79190615215565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139639190615529565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a0d57600080fd5b505af1158015613a21573d6000803e3d6000fd5b505050506000613a338887858e61316b565b505090506000613a428c612f4b565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa39190615241565b60ff169050613ab38160126151b0565b613abe90600a615348565b613ac890836151e0565b61013654909250613af0908a9084906001600160801b0380821691600160801b90041661236d565b9c9b505050505050505050505050565b61013c5415613b1e5761013c60008154613b1990615199565b909155505b61013d5415801590613b58575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610a125761013d60008154613b6d90615199565b9091555050565b61013c5415610a125761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610cc8908490614ae1565b600054610100900460ff16613c7d5760405162461bcd60e51b815260040161122990615546565b6111bd614bb6565b600054610100900460ff16610a095760405162461bcd60e51b815260040161122990615546565b600054610100900460ff16613cd35760405162461bcd60e51b815260040161122990615546565b60c9805460ff19169055565b6101415460009081906001600160a01b031663a666642b613cff85612f4b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6791906151c7565b9050613d93817f00000000000000000000000000000000000000000000000000000000000000006151e0565b9392505050565b60c95460ff166111bd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401611229565b60006001607f1b821315613e0d57604051633ce23a3d60e11b815260048101839052602401611229565b60008213613e31576040516330ecaa3d60e21b815260048101839052602401611229565b6001607f1b8203613e4457506000919050565b640733048c5a8213613e5e576114206101ff607c1b615591565b60008060006a01c8464f761647600000008513613eac57613e83600160841b856155ad565b93506a01c8464f76164760000000613e9f6001607f1b87615387565b613ea9919061540c565b94505b6cf1aaddd7742e900000000000008513613ef957613ece600160831b856155ad565b93506cf1aaddd7742e90000000000000613eec6001607f1b87615387565b613ef6919061540c565b94505b6615fc21041027af603f1b8513613f4057613f18600160821b856155ad565b93506615fc21041027af603f1b613f336001607f1b87615387565b613f3d919061540c565b94505b660960aadc109e7b60461b8513613f8757613f5f600160811b856155ad565b9350660960aadc109e7b60461b613f7a6001607f1b87615387565b613f84919061540c565b94505b660454aaa8efe073604a1b8513613fce57613fa6600160801b856155ad565b9350660454aaa8efe073604a1b613fc16001607f1b87615387565b613fcb919061540c565b94505b6602f16ac6c59de7604c1b851361401557613fed6001607f1b856155ad565b93506602f16ac6c59de7604c1b6140086001607f1b87615387565b614012919061540c565b94505b6609b4597e37cb05604b1b851361405c576140346001607e1b856155ad565b93506609b4597e37cb05604b1b61404f6001607f1b87615387565b614059919061540c565b94505b6618ebef9eac820b604a1b85136140a35761407b6001607d1b856155ad565b93506618ebef9eac820b604a1b6140966001607f1b87615387565b6140a0919061540c565b94505b6f70f5a893b608861e1f58934f97aea57d85136140f6576140c86001607c1b856155ad565b93506f70f5a893b608861e1f58934f97aea57d6140e96001607f1b87615387565b6140f3919061540c565b94505b6141046001607f1b866155ad565b92508291506001607f1b6141188380615387565b614122919061540c565b9050600160801b61413384826155ad565b61413d9084615387565b614147919061540c565b61415190856155ec565b93506001607f1b6141628284615387565b61416c919061540c565b9150600160811b61418d846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155ad565b6141979084615387565b6141a1919061540c565b6141ab90856155ec565b93506001607f1b6141bc8284615387565b6141c6919061540c565b9150600360801b6141e7846f999999999999999999999999999999996155ad565b6141f19084615387565b6141fb919061540c565b61420590856155ec565b93506001607f1b6142168284615387565b614220919061540c565b9150600160821b614241846f924924924924924924924924924924926155ad565b61424b9084615387565b614255919061540c565b61425f90856155ec565b93506001607f1b6142708284615387565b61427a919061540c565b9150600560801b61429b846f8e38e38e38e38e38e38e38e38e38e38e6155ad565b6142a59084615387565b6142af919061540c565b6142b990856155ec565b93506001607f1b6142ca8284615387565b6142d4919061540c565b9150600360811b6142f5846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155ad565b6142ff9084615387565b614309919061540c565b61431390856155ec565b93506001607f1b6143248284615387565b61432e919061540c565b9150600760801b61434f846f89d89d89d89d89d89d89d89d89d89d896155ad565b6143599084615387565b614363919061540c565b61436d90856155ec565b93506001607f1b61437e8284615387565b614388919061540c565b9150600160831b6143a9846f888888888888888888888888888888886155ad565b6143b39084615387565b6143bd919061540c565b6143c790856155ec565b95945050505050565b60006143e06101ff607c1b615591565b8212156143ef57506000919050565b8160000361440257506001607f1b919050565b600082131561442757604051631086170d60e01b815260048101839052602401611229565b6000806144386001607c1b8561562d565b91508190506001607f1b61444c8280615387565b614456919061540c565b905061446a816710e1b3be415a0000615387565b61447490846155ec565b92506001607f1b6144858383615387565b61448f919061540c565b90506144a3816705a0913f6b1e0000615387565b6144ad90846155ec565b92506001607f1b6144be8383615387565b6144c8919061540c565b90506144dc81670168244fdac78000615387565b6144e690846155ec565b92506001607f1b6144f78383615387565b614501919061540c565b905061451481664807432bc18000615387565b61451e90846155ec565b92506001607f1b61452f8383615387565b614539919061540c565b905061454c81660c0135dca04000615387565b61455690846155ec565b92506001607f1b6145678383615387565b614571919061540c565b9050614584816601b707b1cdc000615387565b61458e90846155ec565b92506001607f1b61459f8383615387565b6145a9919061540c565b90506145bb816536e0f639b800615387565b6145c590846155ec565b92506001607f1b6145d68383615387565b6145e0919061540c565b90506145f281650618fee9f800615387565b6145fc90846155ec565b92506001607f1b61460d8383615387565b614617919061540c565b905061462881649c197dcc00615387565b61463290846155ec565b92506001607f1b6146438383615387565b61464d919061540c565b905061465e81640e30dce400615387565b61466890846155ec565b92506001607f1b6146798383615387565b614683919061540c565b90506146948164012ebd1300615387565b61469e90846155ec565b92506001607f1b6146af8383615387565b6146b9919061540c565b90506146c9816317499f00615387565b6146d390846155ec565b92506001607f1b6146e48383615387565b6146ee919061540c565b90506146fe816301a9d480615387565b61470890846155ec565b92506001607f1b6147198383615387565b614723919061540c565b905061473281621c6380615387565b61473c90846155ec565b92506001607f1b61474d8383615387565b614757919061540c565b9050614766816201c638615387565b61477090846155ec565b92506001607f1b6147818383615387565b61478b919061540c565b905061479981611ab8615387565b6147a390846155ec565b92506001607f1b6147b48383615387565b6147be919061540c565b90506147cc8161017c615387565b6147d690846155ec565b92506001607f1b6147e78383615387565b6147f1919061540c565b90506147fe816014615387565b61480890846155ec565b92506001607f1b6148198383615387565b614823919061540c565b9050614830816001615387565b61483a90846155ec565b92506001607f1b826148546721c3677c82b400008661540c565b61485e91906155ec565b61486891906155ec565b925061487384615591565b9350600160841b8416156148b9577243cbaf42a000812488fc5c220ad7b97bf6e99e6148ac6cf1aaddd7742e56d32fb9f9974485615387565b6148b6919061540c565b92505b600160831b8416156148fe577105d27a9f51c31b7c2f8038212a05747799916148f16e0afe10820813d65dfe6a33c07f738f85615387565b6148fb919061540c565b92505b600160821b84161561494357701b4c902e273a58678d6d3bfdb93db96d026149366f02582ab704279e8efd15e0265855c47a85615387565b614940919061540c565b92505b600160811b841615614988577003b1cc971a9bb5b9867477440d6d15775061497b6f1152aaa3bf81cb9fdb76eae12d02957185615387565b614985919061540c565b92505b600160801b8416156149cd5770015bf0a8b1457695355fb8ac404e7a79e36149c06f2f16ac6c59de6f8d5d6f63c1482a7c8685615387565b6149ca919061540c565b92505b6001607f1b841615614a11576fd3094c70f034de4b96ff7d5b6f99fcd8614a046f4da2cbf1be5827f9eb3ad1aa9866ebb385615387565b614a0e919061540c565b92505b6001607e1b841615614a55576fa45af1e1f40c333b3de1db4dd55f29a7614a486f63afbe7ab2082ba1a0ae5e4eb1b479dc85615387565b614a52919061540c565b92505b6001607d1b841615614a99576f910b022db7ae67ce76b441c27035c6a1614a8c6f70f5a893b608861e1f58934f97aea57d85615387565b614a96919061540c565b92505b6001607c1b841615614ada576f88415abbe9a76bead8d00cf112e4d4a8614ad06f783eafef1c0a8f3978c7f81824d62ebf85615387565b61241f919061540c565b5050919050565b6000614b36826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614be69092919063ffffffff16565b9050805160001480614b57575080806020019051810190614b579190615354565b610cc85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611229565b600054610100900460ff16614bdd5760405162461bcd60e51b815260040161122990615546565b6111bd33612bbf565b606061241f848460008585600080866001600160a01b03168587604051614c0d9190615641565b60006040518083038185875af1925050503d8060008114614c4a576040519150601f19603f3d011682016040523d82523d6000602084013e614c4f565b606091505b5091509150614c6087838387614c6b565b979650505050505050565b60608315614cda578251600003614cd3576001600160a01b0385163b614cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611229565b508161241f565b61241f8383815115614cef5781518083602001fd5b8060405162461bcd60e51b8152600401611229919061565d565b6001600160a01b0381168114610a1257600080fd5b600060208284031215614d3057600080fd5b8135613d9381614d09565b60008060408385031215614d4e57600080fd5b50508035926020909101359150565b60008083601f840112614d6f57600080fd5b50813567ffffffffffffffff811115614d8757600080fd5b6020830191508360208260051b8501011115614da257600080fd5b9250929050565b60008060208385031215614dbc57600080fd5b823567ffffffffffffffff811115614dd357600080fd5b614ddf85828601614d5d565b90969095509350505050565b600080600060608486031215614e0057600080fd5b8335614e0b81614d09565b95602085013595506040909401359392505050565b60008060008060408587031215614e3657600080fd5b843567ffffffffffffffff80821115614e4e57600080fd5b614e5a88838901614d5d565b90965094506020870135915080821115614e7357600080fd5b50614e8087828801614d5d565b95989497509550505050565b8015158114610a1257600080fd5b600080600060408486031215614eaf57600080fd5b8335614eba81614e8c565b9250602084013567ffffffffffffffff811115614ed657600080fd5b614ee286828701614d5d565b9497909650939450505050565b600060208284031215614f0157600080fd5b5035919050565b60008060408385031215614f1b57600080fd5b823591506020830135614f2d81614d09565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614f795783516001600160a01b031683529284019291840191600101614f54565b50909695505050505050565b80356001600160801b038116811461142357600080fd5b6000806000806000806000806000806101408b8d031215614fbc57600080fd5b8a35614fc781614d09565b995060208b0135614fd781614d09565b985060408b01359750614fec60608c01614f85565b9650614ffa60808c01614f85565b955060a08b013561500a81614d09565b945060c08b013561501a81614d09565b935060e08b013561502a81614d09565b92506101008b013561503b81614d09565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a0868803121561506e57600080fd5b853561507981614d09565b9450602086013561508981614d09565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156150ba57600080fd5b82356150c581614d09565b91506020830135614f2d81614d09565b600080604083850312156150e857600080fd5b6150f183614f85565b91506150ff60208401614f85565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561516057815180516001600160a01b0390811686528782015116878601528501518585015260609093019290850190600101615125565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151a8576151a8615183565b506000190190565b6000828210156151c2576151c2615183565b500390565b6000602082840312156151d957600080fd5b5051919050565b60008160001904831182151516156151fa576151fa615183565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615224576152246151ff565b500490565b6000821982111561523c5761523c615183565b500190565b60006020828403121561525357600080fd5b815160ff81168114613d9357600080fd5b600181815b8085111561529f57816000190482111561528557615285615183565b8085161561529257918102915b93841c9390800290615269565b509250929050565b6000826152b657506001610a40565b816152c357506000610a40565b81600181146152d957600281146152e3576152ff565b6001915050610a40565b60ff8411156152f4576152f4615183565b50506001821b610a40565b5060208310610133831016604e8410600b8410161715615322575081810a610a40565b61532c8383615264565b806000190482111561534057615340615183565b029392505050565b6000610a3d83836152a7565b60006020828403121561536657600080fd5b8151613d9381614e8c565b634e487b7160e01b600052604160045260246000fd5b60006001600160ff1b03818413828413808216868404861116156153ad576153ad615183565b600160ff1b60008712828116878305891216156153cc576153cc615183565b600087129250878205871284841616156153e8576153e8615183565b878505871281841616156153fe576153fe615183565b505050929093029392505050565b60008261541b5761541b6151ff565b600160ff1b82146000198414161561543557615435615183565b500590565b60005b8381101561545557818101518382015260200161543d565b8381111561102d5750506000910152565b6000815180845261547e81602086016020860161543a565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061241f90830184615466565b6001600160a01b038481168252831660208201526060604082018190526000906143c790830184615466565b6000806000606084860312156154f757600080fd5b8351925060208401519150604084015190509250925092565b60006001820161552257615522615183565b5060010190565b60006020828403121561553b57600080fd5b8151613d9381614d09565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600160ff1b82016155a6576155a6615183565b5060000390565b60008083128015600160ff1b8501841216156155cb576155cb615183565b6001600160ff1b03840183138116156155e6576155e6615183565b50500390565b600080821280156001600160ff1b038490038513161561560e5761560e615183565b600160ff1b839003841281161561562757615627615183565b50500190565b60008261563c5761563c6151ff565b500790565b6000825161565381846020870161543a565b9190910192915050565b602081526000610a3d602083018461546656fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a26469706673582212209f02bf9a40978f4cab38e676a37102e3acad36ac400ed1fbf2ea5d523dd6051264736f6c634300080d0033",
1620
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bd212c0e146107d5578063be26317e146107df578063c0ffb809146107e857600080fd5b8063b1a250f2116101ce578063b1a250f214610720578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639f6506ce146106f7578063a15753dc14610701578063b0772d0b1461070b57600080fd5b80636426b4a7116102e457806388bead73116102775780638dd95002116102465780638dd95002146106235780638e8f294b1461064a5780639198e515146106b55780639565d3d2146106c857600080fd5b806388bead73146105d857806388d742c2146105ec57806389afcb44146105ff5780638da5cb5b1461061257600080fd5b80637dc0d1d0116102b35780637dc0d1d01461057b5780637ef820701461058f57806380d45a2d146105bb578063856c3aa4146105ce57600080fd5b80636426b4a714610531578063715018a61461055857806379ba5097146105605780637dafcd891461056857600080fd5b80633421fc521161035c57806355d36c981161032b57806355d36c98146104e0578063594a67ee146104f35780635c975abb146105065780635fe3b5671461051d57600080fd5b80633421fc521461049457806337f23cd3146104bb578063487b0dfb146104ce5780634e71d92d146104d857600080fd5b80631bffac89116103985780631bffac891461043a5780631cb9a02a1461045b578063207add911461046e57806324e6baf21461048157600080fd5b80630104db1b146103bf5780630e32cb86146103f95780631b9ce5751461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1e565b610a01565b005b61013754610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e6610448366004614d1e565b6101406020526000908152604090205481565b6103e6610469366004614d3b565b610a15565b61040c61047c366004614d3b565b610a46565b61040c61048f366004614da9565b610b01565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104c9366004614d1e565b610ccd565b6103e66101395481565b61040c610ed9565b61040c6104ee366004614deb565b610f68565b61040c610501366004614e20565b611033565b60c95460ff165b60405190151581526020016103f0565b61013f54610422906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6111ab565b61040c6111bf565b61040c610576366004614e9a565b61123b565b61014254610422906001600160a01b031681565b610136546105a3906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105c9366004614eef565b6113c5565b6103e66101315481565b61013854610422906001600160a01b031681565b6103e66105fa366004614d1e565b61140c565b61040c61060d366004614d1e565b611428565b6033546001600160a01b0316610422565b6104227f000000000000000000000000000000000000000000000000000000000000000081565b61068b610658366004614d1e565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106c3366004614d1e565b61145f565b61050d6106d6366004614f08565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b610713611623565b6040516103f09190614f38565b61040c61072e366004614f9c565b611686565b6097546001600160a01b0316610422565b610757610752366004615056565b611909565b604080519283526020830191909152016103f0565b6107a761077a3660046150a7565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d03660046150a7565b611a66565b6103e661013c5481565b6103e660fb5481565b61040c6107f6366004614deb565b611a7a565b6103e661013d5481565b61040c611c98565b61014154610422906001600160a01b031681565b610136546105a390600160801b90046001600160801b031681565b61040c61084a3660046150a7565b611ce1565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e66108843660046150a7565b611cf9565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150d5565b611d0e565b6065546001600160a01b0316610422565b61040c6108cf366004614d1e565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614d1e565b611e12565b610932610913366004614d1e565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610422610957366004614d1e565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614d1e565b6101326020526000908152604090205481565b61040c6109a2366004614d1e565b611eba565b6109ba6109b5366004614d1e565b611f2b565b6040516103f09190615108565b6107576109d53660046150a7565b61206d565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b610a0961224d565b610a12816122a7565b50565b61013654600090610a3d90849084906001600160801b0380821691600160801b90041661236d565b90505b92915050565b610a846040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e743235362900000000000000815250612427565b61012e54821080610a97575061012f5481105b15610ab55760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610aef91815260200190565b60405180910390a46101305561013155565b61013d54600003610b255760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610b495760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610cc8576000838383818110610b6857610b6861516d565b9050602002016020810190610b7d9190614d1e565b6001600160a01b038116600090815261012d602052604090205490915060ff16610bba57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610bf35750600101610b4c565b610135805460005b81811015610c4b576000838281548110610c1757610c1761516d565b6000918252602090912001546001600160a01b03169050610c3885826124c1565b610c42858261259d565b50600101610bfb565b5061013d60008154610c5c90615199565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610b4c565b505050565b6000610cd88261267a565b90506000610ce582612718565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610d3f575082155b15610da1576001600160a01b0385166000818152610132602090815260408083208390555191825260008051602061569b833981519152910160405180910390a2806020015115610d9857610d9385612751565b610ed2565b610d93856127a9565b82158015610dae57508051155b8015610db957508115155b15610e00576001600160a01b0385166000818152610132602090815260408083208390555191825260008051602061569b83398151915291015b60405180910390a2610ed2565b81158015610e0b5750825b8015610e1657508051155b15610e58576001600160a01b038516600081815261013260209081526040918290204290819055915191825260008051602061569b8339815191529101610df3565b80518015610e635750825b15610ed257610e7185612751565b6001600160a01b038516600090815261013260205260408120549003610ed2576001600160a01b038516600081815261013260209081526040918290204290819055915191825260008051602061569b833981519152910160405180910390a25b5050505050565b336000908152610132602052604081205490819003610f0a5760405162c4e3d160e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610f3582426151b0565b1015610f545760405163beb98cab60e01b815260040160405180910390fd5b610f5f60003361297d565b610a1233612a8e565b610f896040518060600160405280602a8152602001615671602a9139612427565b6001600160a01b038316600090815261013360205260409020600481015460ff16610fc757604051630ff2e4a960e31b815260040160405180910390fd5b610fd08461145f565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561102d612b8b565b50505050565b6110716040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d29815250612427565b8281146110915760405163251f56a160e21b815260040160405180910390fd5b60005b83811015610ed257428383838181106110af576110af61516d565b9050602002013511156110d55760405163b7d0949760e01b815260040160405180910390fd5b8282828181106110e7576110e761516d565b9050602002013561013260008787858181106111055761110561516d565b905060200201602081019061111a9190614d1e565b6001600160a01b031681526020810191909152604001600020558484828181106111465761114661516d565b905060200201602081019061115b9190614d1e565b6001600160a01b031660008051602061569b8339815191528484848181106111855761118561516d565b9050602002013560405161119b91815260200190565b60405180910390a2600101611094565b6111b361224d565b6111bd6000612bbf565b565b60655433906001600160a01b031681146112325760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084015b60405180910390fd5b610a1281612bbf565b61127160405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b815250612427565b82156113865760005b8181101561102d57600061012d600085858581811061129b5761129b61516d565b90506020020160208101906112b09190614d1e565b6001600160a01b031681526020810191909152604001600020805490915060ff1680156112e457508054610100900460ff16155b1561131d576113188484848181106112fe576112fe61516d565b90506020020160208101906113139190614d1e565b612bd8565b61137d565b61134e60018585858181106113345761133461516d565b90506020020160208101906113499190614d1e565b61297d565b61137d8484848181106113635761136361516d565b90506020020160208101906113789190614d1e565b612a8e565b5060010161127a565b60005b8181101561102d576113a860008484848181106113345761133461516d565b6113bd8383838181106113635761136361516d565b600101611389565b6114036040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e743235362900000000000000815250612427565b610a1281612c88565b6000611416612d22565b6114208233612d68565b90505b919050565b6114566040518060400160405280600d81526020016c6275726e28616464726573732960981b815250612427565b610a12816127a9565b6001600160a01b038116600090815261013360205260409020600481015460ff1661149d57604051630ff2e4a960e31b815260040160405180910390fd5b60006114a883612f4b565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906151c7565b6001600160a01b03841660009081526101406020526040812054919250906115a190836151b0565b90508060008190036115b65750505050505050565b6001600160a01b0385166000908152610140602052604081208490556003870154156116005760038701546115f3670de0b6b3a7640000846151e0565b6115fd9190615215565b90505b808760020160008282546116149190615229565b90915550505050505050505050565b606061013580548060200260200160405190810160405280929190818152602001828054801561167c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161165e575b5050505050905090565b600054610100900460ff16158080156116a65750600054600160ff909116105b806116c05750303b1580156116c0575060005460ff166001145b6117235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611229565b6000805460ff191660011790558015611746576000805461ff0019166101001790555b6001600160a01b038b1661176d5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038a166117945760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0384166117bb5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0383166117e25760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166118095760405163e6c4247b60e01b815260040160405180910390fd5b611813888861300f565b6001600160801b03878116600160801b02908916176101365561013880546001600160a01b03808d166001600160a01b0319928316179092556101398b905561013780548e8416908316179055600061013b55610141805488841690831617905561013f805487841690831617905561014280549286169290911691909117905561189d86613055565b6118a561308d565b6118ae82612c88565b6118b66130bc565b80156118fc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161195291906151b0565b9050600061195f85613116565b90506000806000611972848b8b8f61316b565b92509250925060006119838d612f4b565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e49190615241565b60ff1690506119f48160126151b0565b6119ff90600a615348565b611a0990856151e0565b61013654909450600090611a3490879087906001600160801b0380821691600160801b90041661236d565b9050611a408188615229565b9650611a518e8c8e8787868d613435565b909f909e509c50505050505050505050505050565b6000611a70612d22565b610a3d8383612d68565b611a9b6040518060600160405280602281526020016156bb60229139612427565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611ada57604051630313b28560e01b815260040160405180910390fd5b61013f54604051638e8f294b60e01b81526001600160a01b0386811660048301526000921690638e8f294b90602401602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190615354565b905080611b6a57604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b9d86612f4b565b6001600160a01b03808216600090815261013e60205260409020549192501615611bda5760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c4b612b8b565b61013554611c5890613521565b8385876001600160a01b03167faeb29651ee58d1f8216621256cf5fe5cdf5c1a7650175c620342e0eb03de0f8e60405160405180910390a4505050505050565b611cc66040518060400160405280600d81526020016c746f67676c655061757365282960981b815250612427565b60c95460ff1615611cd9576111bd613552565b6111bd6130bc565b611ceb82826124c1565b611cf5828261259d565b5050565b6000611d048361145f565b610a3d838361358b565b611d4c6040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e743132382900000000815250612427565b611d56828261300f565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611e0957611e016101358281548110611de757611de761516d565b6000918252602090912001546001600160a01b031661145f565b600101611dc8565b50610cc8612b8b565b6001600160a01b03811660009081526101326020526040812054808203611e5b57507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611eb0577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ec261224d565b606580546001600160a01b0383166001600160a01b03199091168117909155611ef36033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f4d57611f4d615371565b604051908082528060200260200182016040528015611f9857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f6b5790505b50925060005b81811015612065576000838281548110611fba57611fba61516d565b60009182526020822001546001600160a01b03169150611fda8288611cf9565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161201f85612f4b565b6001600160a01b031681526020016120378385615229565b81525087858151811061204c5761204c61516d565b6020026020010181905250836001019350505050611f9e565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e091906151c7565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214691906151c7565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b691906151c7565b90506000670de0b6b3a76400006121cd83856151e0565b6121d79190615215565b6001600160a01b03808b16600081815261013460209081526040808320948e1683529381528382206001015492825261013390529182206003015492935091906122286122238c61267a565b613116565b9050600080612239838a888d61316b565b9250925050611a518e878b85858a8a613435565b6033546001600160a01b031633146111bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611229565b6001600160a01b03811661230b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401611229565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091015b60405180910390a15050565b600084158061237a575083155b156123875750600061241f565b83850361239557508361241f565b8385106000816123ae576123a98688613622565b6123b8565b6123b88787613622565b905060006123f36123c88661368a565b6123d18861368a565b6123da856136f4565b6123e49190615387565b6123ee919061540c565b6136ff565b9050821561240f57612405878261370a565b935050505061241f565b612419878261373c565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab9061245a9033908690600401615492565b602060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b9190615354565b905080611cf557333083604051634a3fa29360e01b8152600401611229939291906154b6565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061250757506001600160a01b038216600090815261012d602052604090205460ff16155b15612510575050565b6125198161145f565b612523818361358b565b6001600160a01b038083166000908152610134602090815260408083209387168352929052908120805490919061255b908490615229565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff1615806125e457506001600160a01b038316600090815261012d602052604090205460ff16155b156125ee57505050565b60006125fa838561376e565b6001600160a01b03808516600090815261013460209081526040808320938916835292905220600101546003840154919250829161263891906151b0565b6126429190615229565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa1580156126e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270791906154e2565b9250509150808261241f91906151b0565b60007f0000000000000000000000000000000000000000000000000000000000000000821061274957506001919050565b506000919050565b610135805460005b8181101561102d5760008382815481106127755761277561516d565b6000918252602090912001546001600160a01b0316905061279685826124c1565b6127a0858261259d565b50600101612759565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261280657604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b818110156128df57600083828154811061282a5761282a61516d565b6000918252602090912001546001600160a01b0316905061284b86826124c1565b6001600160a01b03808216600081815261013460209081526040808320948b168352938152838220600101549282526101339052919091206003015461289191906151b0565b6001600160a01b03918216600090815261013360209081526040808320600301939093556101348152828220938916825292909252812060018082018390556002909101919091550161280e565b508260200151156129035761012e600081546128fa90615199565b90915550612918565b61012f6000815461291390615199565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff1916905561294384613b00565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff16156129b85760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff199092169190911760011782556129ef5761012e600081546129e690615510565b90915550612a04565b61012f600081546129ff90615510565b909155505b6101315461012e541180612a1d57506101305461012f54115b15612a3b5760405163e55fb50960e01b815260040160405180910390fd5b612a4482613b74565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612a81911515815260200190565b60405180910390a2505050565b610135805460005b8181101561102d576000838281548110612ab257612ab261516d565b6000918252602090912001546001600160a01b03169050612ad28161145f565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612b17828761376e565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612b61908290615229565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612a96565b61013b8054906000612b9c83615510565b919050555061012f5461012e54612bb39190615229565b61013c81905561013d55565b606580546001600160a01b0319169055610a1281613bb2565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612c1090615510565b9091555061012f8054600090612c2590615199565b909155506101315461012e541115612c505760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60fb548111612ce45760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401611229565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa9101612361565b60c95460ff16156111bd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401611229565b600080612d758484611cf9565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612da99082615229565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612df685612f4b565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6391906151c7565b831115612ee0576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612ec757600080fd5b505af1158015612edb573d6000803e3d6000fd5b505050505b612ef46001600160a01b0382168685613c04565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba85604051612f3991815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612fad57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612feb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190615529565b806001600160801b0316826001600160801b031610158061303757506001600160801b038216155b15611cf557604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff1661307c5760405162461bcd60e51b815260040161122990615546565b613084613c56565b610a1281613c85565b600054610100900460ff166130b45760405162461bcd60e51b815260040161122990615546565b6111bd613cac565b6130c4612d22565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130f93390565b6040516001600160a01b03909116815260200160405180910390a1565b60007f000000000000000000000000000000000000000000000000000000000000000082111561316757507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e99190615529565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561323a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325e91906151c7565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a7640000908190613295908d6151e0565b61329f9190615215565b6132a990846151e0565b6132b39190615215565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132e7908e6151e0565b6132f19190615215565b6132fb90856151e0565b6133059190615215565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa158015613356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337a91906151c7565b90506000670de0b6b3a76400006133918c846151e0565b61339b9190615215565b90506000670de0b6b3a76400006133b28e856151e0565b6133bc9190615215565b90508382106133ec57816000036133d45760006133e9565b816133df858e6151e0565b6133e99190615215565b9b505b84811061341a5780600003613402576000613417565b8061340d868f6151e0565b6134179190615215565b9c505b6134248d8d615229565b9e9b9d505050505050505050505050565b6000808260000361344b57506000905080613515565b6000836134578b613cdf565b61346190876151e0565b61346b9190615215565b905060006134798789615229565b90508060000361349157600080935093505050613515565b612710600080836134a28c876151e0565b6134ac9190615215565b9150836134b98b876151e0565b6134c39190615215565b90508c156134e5578c6134d684846151e0565b6134e09190615215565b6134e8565b60005b96508b1561350a578b6134fb84836151e0565b6135059190615215565b61350d565b60005b955050505050505b97509795505050505050565b60fb54811115610a125760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401611229565b61355a613d9a565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336130f9565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135f391906151b0565b6020830151909150670de0b6b3a764000061360e82846151e0565b6136189190615215565b9695505050505050565b600061362d8361368a565b6136368361368a565b121561365f576040516360c1ae3960e01b81526004810184905260248101839052604401611229565b6136688261368a565b6001607f1b6136768561368a565b6136809190615387565b610a3d919061540c565b60006001600160ff1b038211156131675760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611229565b600061142082613de3565b6000611420826143d0565b60008082121561372d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136768561368a565b60008082121561375f57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136768561368a565b60008061377d6122238461267a565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa1580156137cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f091906151c7565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385691906151c7565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151c7565b90506000670de0b6b3a76400006138dd83856151e0565b6138e79190615215565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139639190615529565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a0d57600080fd5b505af1158015613a21573d6000803e3d6000fd5b505050506000613a338887858e61316b565b505090506000613a428c612f4b565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa39190615241565b60ff169050613ab38160126151b0565b613abe90600a615348565b613ac890836151e0565b61013654909250613af0908a9084906001600160801b0380821691600160801b90041661236d565b9c9b505050505050505050505050565b61013c5415613b1e5761013c60008154613b1990615199565b909155505b61013d5415801590613b58575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610a125761013d60008154613b6d90615199565b9091555050565b61013c5415610a125761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610cc8908490614ae1565b600054610100900460ff16613c7d5760405162461bcd60e51b815260040161122990615546565b6111bd614bb6565b600054610100900460ff16610a095760405162461bcd60e51b815260040161122990615546565b600054610100900460ff16613cd35760405162461bcd60e51b815260040161122990615546565b60c9805460ff19169055565b6101415460009081906001600160a01b031663a666642b613cff85612f4b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6791906151c7565b9050613d93817f00000000000000000000000000000000000000000000000000000000000000006151e0565b9392505050565b60c95460ff166111bd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401611229565b60006001607f1b821315613e0d57604051633ce23a3d60e11b815260048101839052602401611229565b60008213613e31576040516330ecaa3d60e21b815260048101839052602401611229565b6001607f1b8203613e4457506000919050565b640733048c5a8213613e5e576114206101ff607c1b615591565b60008060006a01c8464f761647600000008513613eac57613e83600160841b856155ad565b93506a01c8464f76164760000000613e9f6001607f1b87615387565b613ea9919061540c565b94505b6cf1aaddd7742e900000000000008513613ef957613ece600160831b856155ad565b93506cf1aaddd7742e90000000000000613eec6001607f1b87615387565b613ef6919061540c565b94505b6615fc21041027af603f1b8513613f4057613f18600160821b856155ad565b93506615fc21041027af603f1b613f336001607f1b87615387565b613f3d919061540c565b94505b660960aadc109e7b60461b8513613f8757613f5f600160811b856155ad565b9350660960aadc109e7b60461b613f7a6001607f1b87615387565b613f84919061540c565b94505b660454aaa8efe073604a1b8513613fce57613fa6600160801b856155ad565b9350660454aaa8efe073604a1b613fc16001607f1b87615387565b613fcb919061540c565b94505b6602f16ac6c59de7604c1b851361401557613fed6001607f1b856155ad565b93506602f16ac6c59de7604c1b6140086001607f1b87615387565b614012919061540c565b94505b6609b4597e37cb05604b1b851361405c576140346001607e1b856155ad565b93506609b4597e37cb05604b1b61404f6001607f1b87615387565b614059919061540c565b94505b6618ebef9eac820b604a1b85136140a35761407b6001607d1b856155ad565b93506618ebef9eac820b604a1b6140966001607f1b87615387565b6140a0919061540c565b94505b6f70f5a893b608861e1f58934f97aea57d85136140f6576140c86001607c1b856155ad565b93506f70f5a893b608861e1f58934f97aea57d6140e96001607f1b87615387565b6140f3919061540c565b94505b6141046001607f1b866155ad565b92508291506001607f1b6141188380615387565b614122919061540c565b9050600160801b61413384826155ad565b61413d9084615387565b614147919061540c565b61415190856155ec565b93506001607f1b6141628284615387565b61416c919061540c565b9150600160811b61418d846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155ad565b6141979084615387565b6141a1919061540c565b6141ab90856155ec565b93506001607f1b6141bc8284615387565b6141c6919061540c565b9150600360801b6141e7846f999999999999999999999999999999996155ad565b6141f19084615387565b6141fb919061540c565b61420590856155ec565b93506001607f1b6142168284615387565b614220919061540c565b9150600160821b614241846f924924924924924924924924924924926155ad565b61424b9084615387565b614255919061540c565b61425f90856155ec565b93506001607f1b6142708284615387565b61427a919061540c565b9150600560801b61429b846f8e38e38e38e38e38e38e38e38e38e38e6155ad565b6142a59084615387565b6142af919061540c565b6142b990856155ec565b93506001607f1b6142ca8284615387565b6142d4919061540c565b9150600360811b6142f5846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155ad565b6142ff9084615387565b614309919061540c565b61431390856155ec565b93506001607f1b6143248284615387565b61432e919061540c565b9150600760801b61434f846f89d89d89d89d89d89d89d89d89d89d896155ad565b6143599084615387565b614363919061540c565b61436d90856155ec565b93506001607f1b61437e8284615387565b614388919061540c565b9150600160831b6143a9846f888888888888888888888888888888886155ad565b6143b39084615387565b6143bd919061540c565b6143c790856155ec565b95945050505050565b60006143e06101ff607c1b615591565b8212156143ef57506000919050565b8160000361440257506001607f1b919050565b600082131561442757604051631086170d60e01b815260048101839052602401611229565b6000806144386001607c1b8561562d565b91508190506001607f1b61444c8280615387565b614456919061540c565b905061446a816710e1b3be415a0000615387565b61447490846155ec565b92506001607f1b6144858383615387565b61448f919061540c565b90506144a3816705a0913f6b1e0000615387565b6144ad90846155ec565b92506001607f1b6144be8383615387565b6144c8919061540c565b90506144dc81670168244fdac78000615387565b6144e690846155ec565b92506001607f1b6144f78383615387565b614501919061540c565b905061451481664807432bc18000615387565b61451e90846155ec565b92506001607f1b61452f8383615387565b614539919061540c565b905061454c81660c0135dca04000615387565b61455690846155ec565b92506001607f1b6145678383615387565b614571919061540c565b9050614584816601b707b1cdc000615387565b61458e90846155ec565b92506001607f1b61459f8383615387565b6145a9919061540c565b90506145bb816536e0f639b800615387565b6145c590846155ec565b92506001607f1b6145d68383615387565b6145e0919061540c565b90506145f281650618fee9f800615387565b6145fc90846155ec565b92506001607f1b61460d8383615387565b614617919061540c565b905061462881649c197dcc00615387565b61463290846155ec565b92506001607f1b6146438383615387565b61464d919061540c565b905061465e81640e30dce400615387565b61466890846155ec565b92506001607f1b6146798383615387565b614683919061540c565b90506146948164012ebd1300615387565b61469e90846155ec565b92506001607f1b6146af8383615387565b6146b9919061540c565b90506146c9816317499f00615387565b6146d390846155ec565b92506001607f1b6146e48383615387565b6146ee919061540c565b90506146fe816301a9d480615387565b61470890846155ec565b92506001607f1b6147198383615387565b614723919061540c565b905061473281621c6380615387565b61473c90846155ec565b92506001607f1b61474d8383615387565b614757919061540c565b9050614766816201c638615387565b61477090846155ec565b92506001607f1b6147818383615387565b61478b919061540c565b905061479981611ab8615387565b6147a390846155ec565b92506001607f1b6147b48383615387565b6147be919061540c565b90506147cc8161017c615387565b6147d690846155ec565b92506001607f1b6147e78383615387565b6147f1919061540c565b90506147fe816014615387565b61480890846155ec565b92506001607f1b6148198383615387565b614823919061540c565b9050614830816001615387565b61483a90846155ec565b92506001607f1b826148546721c3677c82b400008661540c565b61485e91906155ec565b61486891906155ec565b925061487384615591565b9350600160841b8416156148b9577243cbaf42a000812488fc5c220ad7b97bf6e99e6148ac6cf1aaddd7742e56d32fb9f9974485615387565b6148b6919061540c565b92505b600160831b8416156148fe577105d27a9f51c31b7c2f8038212a05747799916148f16e0afe10820813d65dfe6a33c07f738f85615387565b6148fb919061540c565b92505b600160821b84161561494357701b4c902e273a58678d6d3bfdb93db96d026149366f02582ab704279e8efd15e0265855c47a85615387565b614940919061540c565b92505b600160811b841615614988577003b1cc971a9bb5b9867477440d6d15775061497b6f1152aaa3bf81cb9fdb76eae12d02957185615387565b614985919061540c565b92505b600160801b8416156149cd5770015bf0a8b1457695355fb8ac404e7a79e36149c06f2f16ac6c59de6f8d5d6f63c1482a7c8685615387565b6149ca919061540c565b92505b6001607f1b841615614a11576fd3094c70f034de4b96ff7d5b6f99fcd8614a046f4da2cbf1be5827f9eb3ad1aa9866ebb385615387565b614a0e919061540c565b92505b6001607e1b841615614a55576fa45af1e1f40c333b3de1db4dd55f29a7614a486f63afbe7ab2082ba1a0ae5e4eb1b479dc85615387565b614a52919061540c565b92505b6001607d1b841615614a99576f910b022db7ae67ce76b441c27035c6a1614a8c6f70f5a893b608861e1f58934f97aea57d85615387565b614a96919061540c565b92505b6001607c1b841615614ada576f88415abbe9a76bead8d00cf112e4d4a8614ad06f783eafef1c0a8f3978c7f81824d62ebf85615387565b61241f919061540c565b5050919050565b6000614b36826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614be69092919063ffffffff16565b9050805160001480614b57575080806020019051810190614b579190615354565b610cc85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611229565b600054610100900460ff16614bdd5760405162461bcd60e51b815260040161122990615546565b6111bd33612bbf565b606061241f848460008585600080866001600160a01b03168587604051614c0d9190615641565b60006040518083038185875af1925050503d8060008114614c4a576040519150601f19603f3d011682016040523d82523d6000602084013e614c4f565b606091505b5091509150614c6087838387614c6b565b979650505050505050565b60608315614cda578251600003614cd3576001600160a01b0385163b614cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611229565b508161241f565b61241f8383815115614cef5781518083602001fd5b8060405162461bcd60e51b8152600401611229919061565d565b6001600160a01b0381168114610a1257600080fd5b600060208284031215614d3057600080fd5b8135613d9381614d09565b60008060408385031215614d4e57600080fd5b50508035926020909101359150565b60008083601f840112614d6f57600080fd5b50813567ffffffffffffffff811115614d8757600080fd5b6020830191508360208260051b8501011115614da257600080fd5b9250929050565b60008060208385031215614dbc57600080fd5b823567ffffffffffffffff811115614dd357600080fd5b614ddf85828601614d5d565b90969095509350505050565b600080600060608486031215614e0057600080fd5b8335614e0b81614d09565b95602085013595506040909401359392505050565b60008060008060408587031215614e3657600080fd5b843567ffffffffffffffff80821115614e4e57600080fd5b614e5a88838901614d5d565b90965094506020870135915080821115614e7357600080fd5b50614e8087828801614d5d565b95989497509550505050565b8015158114610a1257600080fd5b600080600060408486031215614eaf57600080fd5b8335614eba81614e8c565b9250602084013567ffffffffffffffff811115614ed657600080fd5b614ee286828701614d5d565b9497909650939450505050565b600060208284031215614f0157600080fd5b5035919050565b60008060408385031215614f1b57600080fd5b823591506020830135614f2d81614d09565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614f795783516001600160a01b031683529284019291840191600101614f54565b50909695505050505050565b80356001600160801b038116811461142357600080fd5b6000806000806000806000806000806101408b8d031215614fbc57600080fd5b8a35614fc781614d09565b995060208b0135614fd781614d09565b985060408b01359750614fec60608c01614f85565b9650614ffa60808c01614f85565b955060a08b013561500a81614d09565b945060c08b013561501a81614d09565b935060e08b013561502a81614d09565b92506101008b013561503b81614d09565b809250506101208b013590509295989b9194979a5092959850565b600080600080600060a0868803121561506e57600080fd5b853561507981614d09565b9450602086013561508981614d09565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156150ba57600080fd5b82356150c581614d09565b91506020830135614f2d81614d09565b600080604083850312156150e857600080fd5b6150f183614f85565b91506150ff60208401614f85565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561516057815180516001600160a01b0390811686528782015116878601528501518585015260609093019290850190600101615125565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151a8576151a8615183565b506000190190565b6000828210156151c2576151c2615183565b500390565b6000602082840312156151d957600080fd5b5051919050565b60008160001904831182151516156151fa576151fa615183565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615224576152246151ff565b500490565b6000821982111561523c5761523c615183565b500190565b60006020828403121561525357600080fd5b815160ff81168114613d9357600080fd5b600181815b8085111561529f57816000190482111561528557615285615183565b8085161561529257918102915b93841c9390800290615269565b509250929050565b6000826152b657506001610a40565b816152c357506000610a40565b81600181146152d957600281146152e3576152ff565b6001915050610a40565b60ff8411156152f4576152f4615183565b50506001821b610a40565b5060208310610133831016604e8410600b8410161715615322575081810a610a40565b61532c8383615264565b806000190482111561534057615340615183565b029392505050565b6000610a3d83836152a7565b60006020828403121561536657600080fd5b8151613d9381614e8c565b634e487b7160e01b600052604160045260246000fd5b60006001600160ff1b03818413828413808216868404861116156153ad576153ad615183565b600160ff1b60008712828116878305891216156153cc576153cc615183565b600087129250878205871284841616156153e8576153e8615183565b878505871281841616156153fe576153fe615183565b505050929093029392505050565b60008261541b5761541b6151ff565b600160ff1b82146000198414161561543557615435615183565b500590565b60005b8381101561545557818101518382015260200161543d565b8381111561102d5750506000910152565b6000815180845261547e81602086016020860161543a565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061241f90830184615466565b6001600160a01b038481168252831660208201526060604082018190526000906143c790830184615466565b6000806000606084860312156154f757600080fd5b8351925060208401519150604084015190509250925092565b60006001820161552257615522615183565b5060010190565b60006020828403121561553b57600080fd5b8151613d9381614d09565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600160ff1b82016155a6576155a6615183565b5060000390565b60008083128015600160ff1b8501841216156155cb576155cb615183565b6001600160ff1b03840183138116156155e6576155e6615183565b50500390565b600080821280156001600160ff1b038490038513161561560e5761560e615183565b600160ff1b839003841281161561562757615627615183565b50500190565b60008261563c5761563c6151ff565b500790565b6000825161565381846020870161543a565b9190910192915050565b602081526000610a3d602083018461546656fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a26469706673582212209f02bf9a40978f4cab38e676a37102e3acad36ac400ed1fbf2ea5d523dd6051264736f6c634300080d0033",
1621
1621
  "linkReferences": {},
1622
1622
  "deployedLinkReferences": {}
1623
1623
  }
@@ -497,6 +497,7 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
497
497
 
498
498
  if (token.exists && !isAccountEligible) {
499
499
  delete stakedAt[user];
500
+ emit StakedAtUpdated(user, 0);
500
501
 
501
502
  if (token.isIrrevocable) {
502
503
  _accrueInterestAndUpdateScore(user);
@@ -505,13 +506,16 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
505
506
  }
506
507
  } else if (!isAccountEligible && !token.exists && userStakedAt != 0) {
507
508
  delete stakedAt[user];
509
+ emit StakedAtUpdated(user, 0);
508
510
  } else if (userStakedAt == 0 && isAccountEligible && !token.exists) {
509
511
  stakedAt[user] = block.timestamp;
512
+ emit StakedAtUpdated(user, block.timestamp);
510
513
  } else if (token.exists && isAccountEligible) {
511
514
  _accrueInterestAndUpdateScore(user);
512
515
 
513
516
  if (stakedAt[user] == 0) {
514
517
  stakedAt[user] = block.timestamp;
518
+ emit StakedAtUpdated(user, block.timestamp);
515
519
  }
516
520
  }
517
521
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "address": "0xc86f1aA3cBe1F76F3335a66Db7F490e343CbeF50",
2
+ "address": "0x371c0355CC22Ea13404F2fEAc989435DAD9b9d03",
3
3
  "abi": [
4
4
  {
5
5
  "inputs": [