@dolomite-exchange/dolomite-margin 0.2.0 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/build/contracts/Account.json +11 -11
  2. package/build/contracts/Actions.json +11 -11
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/Admin.json +23 -23
  5. package/build/contracts/AdminImpl.json +31 -322
  6. package/build/contracts/AdvancedMath.json +7 -7
  7. package/build/contracts/AmmRebalancerProxy.json +32 -77
  8. package/build/contracts/Babylonian.json +1 -1
  9. package/build/contracts/Bits.json +9 -9
  10. package/build/contracts/Cache.json +13 -13
  11. package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
  12. package/build/contracts/Context.json +1 -1
  13. package/build/contracts/CustomTestToken.json +9 -9
  14. package/build/contracts/Decimal.json +9 -9
  15. package/build/contracts/DelayedMultiSig.json +9 -9
  16. package/build/contracts/DolomiteAmmERC20.json +11 -11
  17. package/build/contracts/DolomiteAmmFactory.json +14 -52
  18. package/build/contracts/DolomiteAmmLibrary.json +24 -24
  19. package/build/contracts/DolomiteAmmPair.json +27 -27
  20. package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
  21. package/build/contracts/DolomiteMargin.json +22 -68
  22. package/build/contracts/DoubleExponentInterestSetter.json +15 -21
  23. package/build/contracts/EnumerableSet.json +7 -7
  24. package/build/contracts/ErroringOmiseToken.json +9 -9
  25. package/build/contracts/ErroringToken.json +10 -10
  26. package/build/contracts/Events.json +17 -17
  27. package/build/contracts/Exchange.json +15 -15
  28. package/build/contracts/Expiry.json +34 -34
  29. package/build/contracts/Getters.json +34 -34
  30. package/build/contracts/IAutoTrader.json +9 -9
  31. package/build/contracts/ICallee.json +7 -7
  32. package/build/contracts/IChainlinkAggregator.json +5 -5
  33. package/build/contracts/IDolomiteAmmERC20.json +5 -5
  34. package/build/contracts/IDolomiteAmmFactory.json +9 -9
  35. package/build/contracts/IDolomiteAmmPair.json +9 -9
  36. package/build/contracts/IDolomiteMargin.json +23 -23
  37. package/build/contracts/IERC20.json +1 -1
  38. package/build/contracts/IERC20Detailed.json +5 -5
  39. package/build/contracts/IExchangeWrapper.json +5 -5
  40. package/build/contracts/IExpiry.json +9 -9
  41. package/build/contracts/IInterestSetter.json +7 -7
  42. package/build/contracts/ILiquidationCallback.json +7 -7
  43. package/build/contracts/IMakerOracle.json +5 -5
  44. package/build/contracts/IOasisDex.json +5 -5
  45. package/build/contracts/IPriceOracle.json +7 -7
  46. package/build/contracts/IRecyclable.json +9 -9
  47. package/build/contracts/ITransferProxy.json +5 -5
  48. package/build/contracts/IUniswapV2Callee.json +5 -5
  49. package/build/contracts/IUniswapV2Factory.json +5 -5
  50. package/build/contracts/IUniswapV2Pair.json +5 -5
  51. package/build/contracts/IUniswapV2Router.json +5 -5
  52. package/build/contracts/IWETH.json +5 -5
  53. package/build/contracts/Interest.json +15 -15
  54. package/build/contracts/LiquidateOrVaporizeImpl.json +31 -82
  55. package/build/contracts/LiquidatorProxyHelper.json +23 -23
  56. package/build/contracts/LiquidatorProxyV1.json +31 -37
  57. package/build/contracts/LiquidatorProxyV1WithAmm.json +246 -363
  58. package/build/contracts/Math.json +1 -1
  59. package/build/contracts/Migrations.json +8 -14
  60. package/build/contracts/Monetary.json +7 -7
  61. package/build/contracts/MultiCall.json +8 -14
  62. package/build/contracts/MultiSig.json +7 -7
  63. package/build/contracts/OmiseToken.json +8 -8
  64. package/build/contracts/OnlyDolomiteMargin.json +11 -11
  65. package/build/contracts/Operation.json +15 -15
  66. package/build/contracts/OperationImpl.json +39 -47
  67. package/build/contracts/Ownable.json +1 -1
  68. package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
  69. package/build/contracts/PayableProxy.json +16 -22
  70. package/build/contracts/Permission.json +11 -11
  71. package/build/contracts/PolynomialInterestSetter.json +13 -13
  72. package/build/contracts/RecyclableTokenProxy.json +25 -25
  73. package/build/contracts/ReentrancyGuard.json +1 -1
  74. package/build/contracts/Require.json +7 -7
  75. package/build/contracts/SafeERC20.json +1 -1
  76. package/build/contracts/SafeETH.json +7 -7
  77. package/build/contracts/SafeMath.json +1 -1
  78. package/build/contracts/SignedOperationProxy.json +21 -104
  79. package/build/contracts/SimpleFeeOwner.json +19 -64
  80. package/build/contracts/State.json +9 -9
  81. package/build/contracts/Storage.json +3222 -3222
  82. package/build/contracts/TestAmmRebalancerProxy.json +32 -58
  83. package/build/contracts/TestAutoTrader.json +22 -22
  84. package/build/contracts/TestBtcUsdChainlinkAggregator.json +11 -11
  85. package/build/contracts/TestCallee.json +18 -18
  86. package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
  87. package/build/contracts/TestCounter.json +7 -7
  88. package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
  89. package/build/contracts/TestDolomiteMargin.json +21 -21
  90. package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
  91. package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
  92. package/build/contracts/TestExchangeWrapper.json +10 -10
  93. package/build/contracts/TestInterestSetter.json +13 -13
  94. package/build/contracts/TestLib.json +22 -22
  95. package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
  96. package/build/contracts/TestLiquidateCallback.json +15 -15
  97. package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
  98. package/build/contracts/TestMakerOracle.json +10 -10
  99. package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
  100. package/build/contracts/TestOasisDex.json +12 -12
  101. package/build/contracts/TestOperationImpl.json +15 -15
  102. package/build/contracts/TestPolynomialInterestSetter.json +10 -10
  103. package/build/contracts/TestPriceAggregator.json +9 -9
  104. package/build/contracts/TestPriceOracle.json +13 -13
  105. package/build/contracts/TestRecyclableToken.json +9 -9
  106. package/build/contracts/TestSimpleCallee.json +14 -14
  107. package/build/contracts/TestToken.json +9 -9
  108. package/build/contracts/TestTrader.json +17 -17
  109. package/build/contracts/TestUniswapAmmRebalancerProxy.json +43 -16
  110. package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
  111. package/build/contracts/TestWETH.json +9 -9
  112. package/build/contracts/Time.json +9 -9
  113. package/build/contracts/Token.json +9 -9
  114. package/build/contracts/TokenA.json +10 -10
  115. package/build/contracts/TokenB.json +10 -10
  116. package/build/contracts/TokenC.json +10 -10
  117. package/build/contracts/TokenD.json +10 -10
  118. package/build/contracts/TokenE.json +10 -10
  119. package/build/contracts/TokenF.json +10 -10
  120. package/build/contracts/TransferProxy.json +22 -28
  121. package/build/contracts/TypedSignature.json +9 -9
  122. package/build/contracts/Types.json +9 -9
  123. package/build/contracts/UQ112x112.json +7 -7
  124. package/build/contracts/UniswapV2ERC20.json +7 -7
  125. package/build/contracts/UniswapV2Factory.json +12 -12
  126. package/build/contracts/UniswapV2Library.json +20 -20
  127. package/build/contracts/UniswapV2Pair.json +17 -17
  128. package/build/contracts/UniswapV2Router02.json +16 -16
  129. package/build/contracts/WETH9.json +1 -1
  130. package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
  131. package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
  132. package/contracts/protocol/lib/Storage.sol +7 -0
  133. package/dist/build/published_contracts/AdminImpl.json +1 -1
  134. package/dist/build/published_contracts/AmmRebalancerProxy.json +1 -1
  135. package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
  136. package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
  137. package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
  138. package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
  139. package/dist/build/published_contracts/Expiry.json +1 -1
  140. package/dist/build/published_contracts/LiquidatorProxyV1.json +2 -2
  141. package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +2 -2
  142. package/dist/build/published_contracts/MultiCall.json +1 -1
  143. package/dist/build/published_contracts/PayableProxy.json +1 -1
  144. package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
  145. package/dist/build/published_contracts/SimpleFeeOwner.json +2 -2
  146. package/dist/build/published_contracts/TransferProxy.json +1 -1
  147. package/dist/build/wrappers/TestUniswapAmmRebalancerProxy.d.ts +66 -0
  148. package/dist/src/modules/MultiCall.js +2 -1
  149. package/dist/src/modules/MultiCall.js.map +1 -1
  150. package/dist/src/modules/operate/AccountOperation.d.ts +8 -2
  151. package/dist/src/modules/operate/AccountOperation.js +8 -10
  152. package/dist/src/modules/operate/AccountOperation.js.map +1 -1
  153. package/dist/src/types.d.ts +0 -1
  154. package/dist/src/types.js.map +1 -1
  155. package/package.json +4 -3
@@ -284,15 +284,15 @@
284
284
  "type": "function"
285
285
  }
286
286
  ],
287
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_transferProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dolomiteMargin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isPairCreated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transferProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmFactory.sol\":\"DolomiteAmmFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol\":{\"keccak256\":\"0x8f6dc3db9d017ee8f5e279dd79ea0ec6753c91e4b3246690647456ce25821e2a\",\"urls\":[\"bzz-raw://1c53e2fb97fe94096581cc688d742d8c8c30a916e134fb6bc80ce901304e38fe\",\"dweb:/ipfs/QmXNyZXey3Ej9Ahukyf7Dg4fQvm1fbYiTAxJXAMkTNsNPE\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmFactory.sol\":{\"keccak256\":\"0x64bc83d33e0c61c853ee2177edd2ceba014f4f301f3d357c7a29afd7779c4ca6\",\"urls\":[\"bzz-raw://18a42ab28d0513e4d1b6b35a86cacfcdfb72f920818b13a61744a931aa0cb229\",\"dweb:/ipfs/QmcMh6EnmSthDHchFEBQcncoa52SxCvE6t7v3o6KG4WKc7\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmPair.sol\":{\"keccak256\":\"0x0f2391666b262d97899a9941a52ef99b10c96367583733612af3a3df88f44caa\",\"urls\":[\"bzz-raw://2bb24399a06832a666cde2e083770324a2b4d91c652a25f184bed38c57cadda3\",\"dweb:/ipfs/Qmev3Z7727bs9Nai3LHEaEwky2TzFsHPo1hCtNJ5KP1TQL\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmERC20.sol\":{\"keccak256\":\"0x61b5107403bfc5ad3a60aceb47fdeb6e284c918e7828cbad4396d1ad5b0011eb\",\"urls\":[\"bzz-raw://a8d0635af18ec5e6d9a7226eecd3e522c04eae29430bbe1cc5a46315006cda11\",\"dweb:/ipfs/QmTvg9zxpGRXGrAda15SP3V1hE6CbBK7VWzM8J3MhWTa3h\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmFactory.sol\":{\"keccak256\":\"0xf5fd97ee3591ff30a3576d6d58847b5f6e156639578bed3827313a2c70823b78\",\"urls\":[\"bzz-raw://f9da41065f9b3b559bfc588cea01480f1c64ee7b1f1a86e54868f464fdfe2160\",\"dweb:/ipfs/QmWeBi2zSdPCENVV4fvCQ49HgnwLGxd3WS9sGMC4vR5NrB\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmPair.sol\":{\"keccak256\":\"0xe2272c233467a78460e681419f0acdc765de0ad5357d3b768665f289941ccd47\",\"urls\":[\"bzz-raw://114f1c797f4e7e803b0764ae7107a2279c3da806450287c9e5600211faeeab57\",\"dweb:/ipfs/QmUoLx1rGgCdX5ScsUkp4NsSZLyVWdKsVKeXuPCtcrAvLn\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/ITransferProxy.sol\":{\"keccak256\":\"0x2462d5f68186bb53e33ff9bef2a4c5a815ea09e2c0f32d2eb736b50513e30244\",\"urls\":[\"bzz-raw://43c2590e5e8cb01361fc0ac3d8d8b44b86d434d8a35d80c60b9ad3f0c54dbc2b\",\"dweb:/ipfs/QmYdptf2jFNba3aFRhcGPNdZ14QD9ZLM9tRbEWB2GFmMsa\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AdvancedMath.sol\":{\"keccak256\":\"0x652e05fcd01111a15abf215bd9869e8e54cf1170acbdad0295b62a8adc81d78c\",\"urls\":[\"bzz-raw://7c137edcac22812344c06b742583f75f0b1ec33e5fedc68e88dc0b399b7299f9\",\"dweb:/ipfs/QmQu8asaE1SUD4zxDRU557rY7zMJchkwN75zmZvxJdCFMp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/UQ112x112.sol\":{\"keccak256\":\"0x444a4eb83efb08b77e44c0ab3ea063903312e3dbde92ebdafeb137abba9c9cdd\",\"urls\":[\"bzz-raw://85323f3d86597716ad0491f8f719d0759292c818719116d038adc14ca72aac9e\",\"dweb:/ipfs/QmcYayCsypWmEh8vJwV5kzV6BbPY6fH2ZAz78DPiKD4iUm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x3e95a2b461f3f0cc4000d71d5c7bb6b1222788cfac1c66faad029ccaa1859d1e\",\"urls\":[\"bzz-raw://cad9773b4a1b196ea3d71129b5bd5679df7db601555a6b29ac111d38c36b00f0\",\"dweb:/ipfs/QmThFva71eLSVmBHHxn34zP7BUCJZDD6wMJHxEkKNWkkvv\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0xbb17eb41ff805df51e8d637ef2a368782fdc5f085889c2d847713484f8f1967b\",\"urls\":[\"bzz-raw://538001d60d625695754159a8f716877f72217899fdab296d4725dc44bdbe1895\",\"dweb:/ipfs/QmbRm1WpPpaynnwTdmwB5M7H1cZQEtRAuExqtJ3g9SUiVp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0xca1826cf783a2d48a5a45309ca92cbaee46d2caec7b5a7c154b2dfda06af8975\",\"urls\":[\"bzz-raw://e13679dfa92725d990e3b0656f4eca4b0d09616e5c2729a3bc0276923d6887e1\",\"dweb:/ipfs/QmVc8teCJ6rKutZLyvk568hCw1vYj2nC6DwyxRgswHu71k\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
288
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620056c1380380620056c183398101604081905262000034916200008a565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600380549190931691161790556200010a565b80516200008481620000f0565b92915050565b600080600060608486031215620000a057600080fd5b6000620000ae868662000077565b9350506020620000c18682870162000077565b9250506040620000d48682870162000077565b9150509250925092565b60006001600160a01b03821662000084565b620000fb81620000de565b81146200010757600080fd5b50565b6155a7806200011a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000f45760003560e01c80636e667db31162000099578063ba5ad85d116200006f578063ba5ad85d14620001b2578063c9c6539614620001cb578063e6a4390514620001e2578063f46901ed14620001f957620000f4565b80636e667db3146200018557806376354857146200018f578063a2e74af6146200019957620000f4565b806324e43f3d11620000cf57806324e43f3d146200013c5780632fe0f4771462000155578063574f2ba3146200017b57620000f4565b8063017e7e5814620000f9578063094b7415146200011b5780631e3dd18b1462000125575b600080fd5b6200010362000210565b60405162000112919062000ce7565b60405180910390f35b620001036200022c565b620001036200013636600462000b79565b62000248565b620001466200027d565b60405162000112919062000d7a565b6200016c6200016636600462000b11565b620002b1565b60405162000112919062000d6a565b62000146620002c6565b62000103620002cc565b62000103620002e8565b620001b0620001aa36600462000b11565b62000304565b005b620001bc620003b3565b60405162000112919062000d8a565b62000103620001dc36600462000b3a565b620003fd565b62000103620001f336600462000b3a565b62000865565b620001b06200020a36600462000b11565b62000898565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106200025657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600060405180602001620002919062000ae3565b6020820181038252601f19601f8201166040525080519060200120905090565b60066020526000908152604090205460ff1681565b60055490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001546200036c9073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060405180602001620003c79062000ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052905090565b60006200047b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f6964656e746963616c206164647265737300000000000000000000000000000062000947565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610620004ba578385620004bd565b84845b90925090506200054973ffffffffffffffffffffffffffffffffffffffff83161580159062000501575073ffffffffffffffffffffffffffffffffffffffff821615155b7f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7a65726f2061646472657373000000000000000000000000000000000000000062000947565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526004602090815260408083208585168452909152902054620005cc9116157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7061697220616c7265616479206578697374730000000000000000000000000062000947565b6060620005d8620003b3565b905060008383604051602001620005f192919062000c6f565b604051602081830303815290604052805190602001209050808251602084016000f56003546040517f9afd538800000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff1690639afd5388906200066f90889060019060040162000d25565b600060405180830381600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b50506003546040517fc0c53b8b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116945063c0c53b8b93506200070192899289929091169060040162000cf7565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526004602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff0000000000000000000000000000000000000000988916811790915593835281852086865283528185208054881685179055838552600690925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600580549182018155948590527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909616909217909455905490517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e99162000853918a919062000d4b565b60405180910390a35050505092915050565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600154620009009073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8262000a0157620009588262000a06565b7f3a20000000000000000000000000000000000000000000000000000000000000620009848362000a06565b604051602001620009989392919062000cb0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620009f89160040162000d8a565b60405180910390fd5b505050565b6060808260405160200162000a1c919062000c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801562000aca5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811062000a8a57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161562000ac4576001018152905062000ade565b62000a4f565b505060408051600081526020810190915290505b919050565b6146cd8062000e9883390190565b803562000afe8162000e72565b92915050565b803562000afe8162000e8c565b60006020828403121562000b2457600080fd5b600062000b32848462000af1565b949350505050565b6000806040838503121562000b4e57600080fd5b600062000b5c858562000af1565b925050602062000b6f8582860162000af1565b9150509250929050565b60006020828403121562000b8c57600080fd5b600062000b32848462000b04565b62000ba58162000daa565b82525050565b62000ba562000bba8262000daa565b62000e30565b62000ba58162000db7565b62000ba562000bda8262000dbc565b62000de1565b62000ba58162000de1565b62000ba562000bda8262000de1565b600062000c078262000d9d565b62000c13818562000da1565b935062000c2581856020860162000dfd565b62000c308162000e44565b9093019392505050565b600062000c478262000d9d565b62000c53818562000ade565b935062000c6581856020860162000dfd565b9290920192915050565b600062000c7d828562000bab565b60148201915062000c8f828462000bab565b5060140192915050565b600062000ca7828462000beb565b50602001919050565b600062000cbe828662000c3a565b915062000ccc828562000bcb565b60028201915062000cde828462000c3a565b95945050505050565b6020810162000afe828462000b9a565b6060810162000d07828662000b9a565b62000d16602083018562000b9a565b62000b32604083018462000b9a565b6040810162000d35828562000b9a565b62000d44602083018462000bc0565b9392505050565b6040810162000d5b828562000b9a565b62000d44602083018462000be0565b6020810162000afe828462000bc0565b6020810162000afe828462000be0565b6020808252810162000d44818462000bfa565b5190565b90815260200190565b600062000afe8262000de4565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b8381101562000e1a57818101518382015260200162000e00565b8381111562000e2a576000848401525b50505050565b600062000afe82600062000afe8262000e6c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60601b90565b62000e7d8162000daa565b811462000e8957600080fd5b50565b62000e7d8162000de156fe60806040526001600f553480156200001657600080fd5b50604051469062000027906200045a565b604051908190039020620000436001600160e01b03620000c916565b805160209182012060408051808201825260018152603160f81b90840152516200009593927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200049d565b60408051601f19818403018152919052805160209091012060035550600580546001600160a01b03191633179055620005a7565b6060620000de6001600160e01b036200011816565b620000f16001600160e01b036200016e16565b6040516020016200010492919062000467565b604051602081830303815290604052905090565b6008546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b60408051601f198184030181529190526001600160e01b036200019f16565b91505090565b6009546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b606060006060846001600160a01b031684604051620001bf919062000445565b600060405180830381855afa9150503d8060008114620001fc576040519150601f19603f3d011682016040523d82523d6000602084013e62000201565b606091505b509150915081801562000215575060008151115b156200023b5780806020019051620002319190810190620002b2565b9250505062000250565b60405180602001604052806000815250925050505b92915050565b600082601f8301126200026857600080fd5b81516200027f62000279826200051a565b620004f3565b915080825260208301602083018583830111156200029c57600080fd5b620002a983828462000574565b50505092915050565b600060208284031215620002c557600080fd5b81516001600160401b03811115620002dc57600080fd5b620002ea8482850162000256565b949350505050565b620002fd816200054b565b82525050565b620002fd8162000558565b620002fd6200031d826200055b565b62000558565b6000620003308262000542565b6200033c818562000546565b93506200034e81856020860162000574565b9290920192915050565b60006200036760528362000546565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520192915050565b6000620003e360018362000546565b605f60f81b815260010192915050565b60006200040260138362000546565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b60006200043c82846200030e565b50600401919050565b600062000453828462000323565b9392505050565b6000620002508262000358565b60006200047482620003f3565b915062000482828562000323565b91506200048f82620003d4565b9150620002ea828462000323565b60a08101620004ad828862000303565b620004bc602083018762000303565b620004cb604083018662000303565b620004da606083018562000303565b620004e96080830184620002f2565b9695505050505050565b6040518181016001600160401b03811182821017156200051257600080fd5b604052919050565b60006001600160401b038211156200053157600080fd5b506020601f91909101601f19160190565b5190565b919050565b6000620002508262000568565b90565b6001600160e01b03191690565b6001600160a01b031690565b60005b838110156200059157818101518382015260200162000577565b83811115620005a1576000848401525b50505050565b61411680620005b76000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636a62784211610145578063b432a82c116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610442578063e29d390e14610455578063fff6cae91461045d57610241565b8063d21220a714610427578063d505accf1461042f57610241565b8063b432a82c146103fc578063ba9a7a5614610404578063c0c53b8b1461040c578063c45a01551461041f57610241565b8063763548571161011457806395d89b41116100f957806395d89b41146103c05780639dc29fac146103c8578063a9059cbb146103e957610241565b806376354857146103a55780637ecebe00146103ad57610241565b80636a627842146103605780636b818e181461037357806370a082311461038a5780637464fc3d1461039d57610241565b8063313ce567116101d8578063448f7065116101a75780635a3d54931161018c5780635a3d5493146103485780635cbe0192146103505780635cebb0451461035857610241565b8063448f7065146103205780635909c0d51461034057610241565b8063313ce567146102e65780633644e515146102fb5780633f165227146103035780634101d9531461030b57610241565b806323b872dd1161021457806323b872dd146102ae5780632580aeca146102c15780632d28b749146102c957806330adf81f146102de57610241565b806306fdde0314610246578063095ea7b3146102645780630dfe16811461028457806318160ddd14610299575b600080fd5b61024e610465565b60405161025b9190613dc3565b60405180910390f35b6102776102723660046136e1565b61049c565b60405161025b9190613cca565b61028c6104b3565b60405161025b9190613cbc565b6102a16104c2565b60405161025b9190613cd8565b6102776102bc366004613602565b6104c8565b61024e610581565b6102dc6102d73660046136e1565b6105e2565b005b6102a161085b565b6102ee61087f565b60405161025b9190613eb2565b6102a1610884565b6102a161088a565b610313610896565b60405161025b9190613e60565b61033361032e3660046137dc565b6108ae565b60405161025b9190613df4565b6102a16111d6565b6102a16111dc565b61024e6111e2565b610313611229565b6102a161036e366004613537565b611255565b61037b611579565b60405161025b93929190613e38565b6102a1610398366004613537565b6115ce565b6102a16115e0565b61028c6115e6565b6102a16103bb366004613537565b6115f5565b61024e611607565b6103db6103d63660046136e1565b61162a565b60405161025b929190613e7c565b6102776103f73660046136e1565b611b23565b61037b611b30565b6102a1611d73565b6102dc61041a3660046135b5565b611d79565b61028c612154565b61028c612163565b6102dc61043d366004613645565b612172565b6102a161045036600461357b565b61235c565b61028c612379565b6102dc612388565b606061046f610581565b6104776111e2565b604051602001610488929190613cb1565b604051602081830303815290604052905090565b60006104a933848461246c565b5060015b92915050565b6008546001600160a01b031681565b60005481565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461056b576001600160a01b0384166000908152600260209081526040808320338452909152902054610546908363ffffffff6124d416565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610576848484612516565b5060015b9392505050565b6008546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b6040516020818303038152906040526125c6565b91505090565b610624600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654604080516002808252606080830184526001600160a01b0390941693926020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff169183915060009061067b57fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816001815181106106c557fe5b602002602001018181525050600061072d600a60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721858560008151811061071457fe5b6020026020010151612730565b9063ffffffff6124d416565b90506000610772600a600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721868660018151811061071457fe5b60408051600280825260608083018452939450909160208301908038833901905050905082816000815181106107a457fe5b60200260200101818152505081816001815181106107be57fe5b60209081029190910101526007546040517f87ff090a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906387ff090a9061081b906000908b908b908a908890600401613d75565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506001600f55505050505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601290565b60035481565b670de0b6b3a764000081565b600b546fffffffffffffffffffffffffffffffff1681565b6108b661320d565b6108be613236565b6006546040805160e0810182526001600160a01b03909216808352600b546fffffffffffffffffffffffffffffffff808216602086018190527001000000000000000000000000000000009092041692840192909252919060608201906109269084906127f6565b815260200161096583600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166127f6565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b2916109c6916fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a169190810190613764565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b291610a8b9170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015610aa357600080fd5b505afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb9190810190613764565b90528051909250610b2b91506001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642073656e64657200000000000000000000000000000000000061267a565b8751610b75906001600160a01b031630146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206f776e6572000000000061267a565b610bb988602001516000146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206e756d6265720000000061267a565b8651600854610c3c916001600160a01b03918216911614801590610bed575087516009546001600160a01b03908116911614155b8015610c03575087516001600160a01b03163014155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642074616b6572206163636f756e74206f776e6572000000000061267a565b600080610c9083602001518d1480610c57575083604001518d145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c696420696e707574206d61726b657400000000000000000000000061267a565b610ce183602001518c1480610ca8575083604001518c145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206f7574707574206d61726b6574000000000000000000000061267a565b8551610d20906e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e70757420776569206d75737420626520706f73697469766500000000000061267a565b600085806020019051610d3691908101906137be565b9050610d78600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206f757470757420616d6f756e7400000000000061267a565b83602001518d1415610dc85760208701516060850151610d9d9163ffffffff6128aa16565b60608501526080840151610db7908263ffffffff6124d416565b608085015260009250905080610e15565b83604001518d14610dd557fe5b60208701516080850151610dee9163ffffffff6128aa16565b60808501526060840151610e08908263ffffffff6124d416565b6060850152915060009050815b50600080600080610e24611b30565b5091509150610e93826dffffffffffffffffffffffffffff1687108015610e5a5750816dffffffffffffffffffffffffffff1686105b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c69717569646974790000000000000000000061267a565b85826dffffffffffffffffffffffffffff1603876060015111610eb7576000610ed1565b85826dffffffffffffffffffffffffffff16038760600151035b935084816dffffffffffffffffffffffffffff1603876080015111610ef7576000610f11565b84816dffffffffffffffffffffffffffff16038760800151035b9250610f5e6000851180610f255750600084115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e7420696e70757420616d6f756e740000000000000061267a565b6000610f8b610f7486600363ffffffff6128e916565b60608a0151610721906103e863ffffffff6128e916565b90506000610fba610fa386600363ffffffff6128e916565b60808b0151610721906103e863ffffffff6128e916565b9050611040610ff5620f4240610fe96dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b9063ffffffff6128e916565b611005848463ffffffff6128e916565b10156e2237b637b6b4ba32a0b6b6a830b4b960891b7f4b0000000000000000000000000000000000000000000000000000000000000061267a565b61113861107a670de0b6b3a76400008b60a00151602001516bffffffffffffffffffffffff168c6060015161293d9092919063ffffffff16565b60c08b01516020015160808c01516110af91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60a08c0151602001516110f1906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60c08d015160200151611133906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b6129e6565b505050508a600001516001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822848488886040516111899493929190613e97565b60405180910390a3604080516080810190915260008082526020820190815260200160008152602001600086116111c057846111c2565b855b90529e9d5050505050505050505050505050565b600c5481565b600d5481565b6009546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b600b5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6000611299600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f819055806112a9611579565b50600654600b549294509092506001600160a01b0316906000906112e09083906fffffffffffffffffffffffffffffffff16612730565b600b5490915060009061131a90849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b9050600061133e836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506000611362836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506113a4600083116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742030000000000000000000000061267a565b6113e4600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742031000000000000000000000061267a565b60006113f08888612c70565b6000549091508061142d576114196103e8610721611414878763ffffffff6128e916565b612dd4565b995061142860006103e8612e26565b61148a565b6114876dffffffffffffffffffffffffffff8a16611451868463ffffffff6128e916565b8161145857fe5b046dffffffffffffffffffffffffffff8a1661147a868563ffffffff6128e916565b8161148157fe5b04612ebf565b99505b6114ca60008b116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206d696e74656400000061267a565b6114d48b8b612e26565b6114e086868b8b6129e6565b811561152257600a5461151e906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f858560405161155d929190613e7c565b60405180910390a250506001600f555095979650505050505050565b600a546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60016020526000908152604090205481565b600e5481565b6006546001600160a01b031681565b60046020526000908152604090205481565b6060611611610581565b6116196111e2565b604051602001610488929190613c83565b60008061166f600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f8190558061167f611579565b50600654604080516002808252606080830184529597509395506001600160a01b039092169392906020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff16918391506000906116d957fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168160018151811061172357fe5b6020026020010181815250506000611742838360008151811061071457fe5b90506000611757848460018151811061071457fe5b306000908152600160205260408120548551929350909182906001600160a01b038816906356ea84b2908890849061178b57fe5b60200260200101516040518263ffffffff1660e01b81526004016117af9190613cd8565b60606040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ff9190810190613764565b602001516bffffffffffffffffffffffff1690506000876001600160a01b03166356ea84b28860018151811061183157fe5b60200260200101516040518263ffffffff1660e01b81526004016118559190613cd8565b60606040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a59190810190613764565b602001516bffffffffffffffffffffffff1690506118c38a8a612c70565b6000549094506118fc83670de0b6b3a7640000836118e7888c63ffffffff6128e916565b816118ee57fe5b04919063ffffffff61293d16565b9c5061191c82670de0b6b3a7640000836118e7888b63ffffffff6128e916565b9b5061196a60008e118015611931575060008d115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206275726e656400000061267a565b6119743085612ed5565b50506040805160028082526060808301845294509092509060208301908038833901905050905089816000815181106119a957fe5b60200260200101818152505088816001815181106119c357fe5b602002602001018181525050600760009054906101000a90046001600160a01b03166001600160a01b03166387ff090a60008e8e89866040518663ffffffff1660e01b8152600401611a19959493929190613d75565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050611a5c868660008151811061071457fe5b9350611a6f868660018151811061071457fe5b9250611a7d84848a8a6129e6565b8115611abf57600a54611abb906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b8b6001600160a01b0316336001600160a01b03167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968c8c604051611b04929190613e7c565b60405180910390a350505050505050506001600f819055509250929050565b60006104a9338484612516565b600654600b546040517f56ea84b2000000000000000000000000000000000000000000000000000000008152600092839283926001600160a01b0390921691839183916356ea84b291611b9a916fffffffffffffffffffffffffffffffff90911690600401613e6e565b60606040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bea9190810190613764565b60200151600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90921692506000916001600160a01b038516916356ea84b291611c709170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015611c8857600080fd5b505afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cc09190810190613764565b60200151600a546bffffffffffffffffffffffff9091169150611d02906dffffffffffffffffffffffffffff1683670de0b6b3a764000063ffffffff61293d16565b600a54909650611d3d906e01000000000000000000000000000090046dffffffffffffffffffffffffffff1682670de0b6b3a764000061293d565b600a54969790967c0100000000000000000000000000000000000000000000000000000000900463ffffffff1695509350505050565b6103e881565b600554611dc4906001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f666f7262696464656e000000000000000000000000000000000000000000000061267a565b6040517f61bf17b4000000000000000000000000000000000000000000000000000000008152611e96906001600160a01b038316906361bf17b490611e0d903090600401613cbc565b60206040518083038186803b158015611e2557600080fd5b505afa158015611e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5d9190810190613711565b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f7472616e736665722070726f7879206e6f7420656e61626c656400000000000061267a565b600880546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556009805492851692909116919091179055604080517f76354857000000000000000000000000000000000000000000000000000000008152905133916376354857916004808301926020929190829003018186803b158015611f2e57600080fd5b505afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f66919081019061355d565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161791829055600780549091168484161790556008546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291831692638fae3be192611fee9290911690600401613cbc565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203e91908101906137be565b600b80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790556006546009546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692638fae3be1926120cc92911690600401613cbc565b60206040518083038186803b1580156120e457600080fd5b505afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061211c91908101906137be565b600b80546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505050565b6005546001600160a01b031681565b6009546001600160a01b031681565b6121c0428510157f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f657870697265640000000000000000000000000000000000000000000000000061267a565b6003546001600160a01b03881660009081526004602090815260408083208054600181019091559051929392612221927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d9101613ce6565b60405160208183030381529060405280519060200120604051602001612248929190613c52565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516122859493929190613d40565b6020604051602081039080840390855afa1580156122a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151915061234690506001600160a01b038216158015906122ff5750896001600160a01b0316826001600160a01b0316145b7f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f696e76616c6964207369676e617475726500000000000000000000000000000061267a565b61235189898961246c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6007546001600160a01b031681565b6123ca600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654600b546001600160a01b0390911690612464906124029083906fffffffffffffffffffffffffffffffff16612730565b600b5461243690849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b600a546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166129e6565b506001600f55565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c7908590613cd8565b60405180910390a3505050565b600061057a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f6b565b6001600160a01b03831660009081526001602052604090205461253f908263ffffffff6124d416565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612574908263ffffffff6128aa16565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c7908590613cd8565b606060006060846001600160a01b0316846040516125e49190613c1e565b600060405180830381855afa9150503d806000811461261f576040519150601f19603f3d011682016040523d82523d6000602084013e612624565b606091505b5091509150818015612637575060008151115b156126595780806020019051612650919081019061372f565b925050506104ad565b60405180602001604052806000815250925050506104ad565b505092915050565b8261272b5761268882612fb1565b7f3a200000000000000000000000000000000000000000000000000000000000006126b283612fb1565b6040516020016126c493929190613c2a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261272291600401613dc3565b60405180910390fd5b505050565b60408051808201825230815260006020820181905291517f47d1b53c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516916347d1b53c9161278a91908690600401613e02565b604080518083038186803b1580156127a157600080fd5b505afa1580156127b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127d99190810190613782565b602001516fffffffffffffffffffffffffffffffff169392505050565b60408051808201825230815260006020820181905291517fc190c2ec0000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163c190c2ec9161285091908690600401613e02565b604080518083038186803b15801561286757600080fd5b505afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289f91908101906137a0565b602001519392505050565b60008282018381101561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613dd4565b6000826128f8575060006104ad565b8282028284828161290557fe5b041461057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613de4565b600083158061294a575082155b156129615761295a600083613085565b905061057a565b6000612973858563ffffffff6128e916565b90506129dd6129aa600161299e6002612992888463ffffffff6124d416565b9063ffffffff61308516565b9063ffffffff6128aa16565b6129ba838663ffffffff6130c716565b10156129c75760006129ca565b60015b60ff1661299e838663ffffffff61308516565b95945050505050565b612a4e6dffffffffffffffffffffffffffff8511801590612a1557506dffffffffffffffffffffffffffff8411155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f62616c616e6365206f766572666c6f770000000000000000000000000000000061267a565b600a5463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612a9e57506dffffffffffffffffffffffffffff841615155b8015612ab957506dffffffffffffffffffffffffffff831615155b15612b69578063ffffffff16612afc85612ad286613109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61312d16565b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612b3c84612ad287613109565b600d80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600a80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad193612c6093818116939091041690613e1d565b60405180910390a1505050505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015612cc157600080fd5b505afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cf9919081019061355d565b600e546001600160a01b038216158015945091925090612dc1578015612dbc576000612d416114146dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b90506000612d4e83612dd4565b905080821115612db9576000612d7c612d6d848463ffffffff6124d416565b6000549063ffffffff6128e916565b90506000612d958361299e86600263ffffffff6128e916565b90506000818381612da257fe5b0490508015612db557612db58782612e26565b5050505b50505b612672565b8015612672576000600e55505092915050565b60006003821115612e17575080600160028204015b81811015612e1157809150600281828581612e0057fe5b040181612e0957fe5b049050612de9565b50612e21565b8115612e21575060015b919050565b600054612e39908263ffffffff6128aa16565b60009081556001600160a01b038316815260016020526040902054612e64908263ffffffff6128aa16565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60405180910390a35050565b6000818310612ece578161057a565b5090919050565b6001600160a01b038216600090815260016020526040902054612efe908263ffffffff6124d416565b6001600160a01b03831660009081526001602052604081209190915554612f2b908263ffffffff6124d416565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60008184841115612fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b505050900390565b60608082604051602001612fc59190613bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561306e5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061303157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156130695760010181529050612e21565b612ff8565b505060408051600081526020810190915292915050565b600061057a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316e565b600061057a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506131bf565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161316657fe5b049392505050565b600081836131a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5060008385816131b557fe5b0495945050505050565b600081836131fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5082848161320457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001613275613287565b8152602001613282613287565b905290565b604080516060810182526000808252602082018190529181019190915290565b80356104ad81614089565b80516104ad81614089565b80356104ad8161409d565b80516104ad8161409d565b80356104ad816140a6565b600082601f8301126132ef57600080fd5b81356133026132fd82613ee7565b613ec0565b9150808252602083016020830185838301111561331e57600080fd5b61332983828461401c565b50505092915050565b600082601f83011261334357600080fd5b81516133516132fd82613ee7565b9150808252602083016020830185838301111561336d57600080fd5b613329838284614028565b60006060828403121561338a57600080fd5b6133946060613ec0565b905060006133a2848461352c565b82525060206133b38484830161352c565b60208301525060406133c784828501613516565b60408301525092915050565b6000604082840312156133e557600080fd5b6133ef6040613ec0565b905060006133fd84846132a7565b825250602061340e848483016132d3565b60208301525092915050565b60006040828403121561342c57600080fd5b6134366040613ec0565b9050600061344484846132bd565b825250602061340e848483016134f5565b60006040828403121561346757600080fd5b6134716040613ec0565b9050600061347f84846132c8565b825250602061340e84848301613500565b6000604082840312156134a257600080fd5b6134ac6040613ec0565b905060006133fd84846132bd565b6000604082840312156134cc57600080fd5b6134d66040613ec0565b905060006134e484846132c8565b825250602061340e8484830161350b565b80356104ad816140af565b80516104ad816140af565b80516104ad816140a6565b80516104ad816140b8565b80356104ad816140c1565b80516104ad816140ca565b60006020828403121561354957600080fd5b600061355584846132a7565b949350505050565b60006020828403121561356f57600080fd5b600061355584846132b2565b6000806040838503121561358e57600080fd5b600061359a85856132a7565b92505060206135ab858286016132a7565b9150509250929050565b6000806000606084860312156135ca57600080fd5b60006135d686866132a7565b93505060206135e7868287016132a7565b92505060406135f8868287016132a7565b9150509250925092565b60008060006060848603121561361757600080fd5b600061362386866132a7565b9350506020613634868287016132a7565b92505060406135f8868287016132d3565b600080600080600080600060e0888a03121561366057600080fd5b600061366c8a8a6132a7565b975050602061367d8a828b016132a7565b965050604061368e8a828b016132d3565b955050606061369f8a828b016132d3565b94505060806136b08a828b01613521565b93505060a06136c18a828b016132d3565b92505060c06136d28a828b016132d3565b91505092959891949750929550565b600080604083850312156136f457600080fd5b600061370085856132a7565b92505060206135ab858286016132d3565b60006020828403121561372357600080fd5b600061355584846132c8565b60006020828403121561374157600080fd5b815167ffffffffffffffff81111561375857600080fd5b61355584828501613332565b60006060828403121561377657600080fd5b60006135558484613378565b60006040828403121561379457600080fd5b60006135558484613455565b6000604082840312156137b257600080fd5b600061355584846134ba565b6000602082840312156137d057600080fd5b6000613555848461350b565b6000806000806000806000806101a0898b0312156137f957600080fd5b60006138058b8b6132d3565b98505060206138168b828c016132d3565b97505060406138278b828c016133d3565b96505060806138388b828c016133d3565b95505060c06138498b828c0161341a565b94505061010061385b8b828c0161341a565b93505061014061386d8b828c01613490565b92505061018089013567ffffffffffffffff81111561388b57600080fd5b6138978b828c016132de565b9150509295985092959890939650565b60006138b3838361393d565b505060200190565b6138c481613f40565b82525050565b60006138d582613f33565b6138df8185613f37565b93506138ea83613f2d565b8060005b8381101561391857815161390288826138a7565b975061390d83613f2d565b9250506001016138ee565b509495945050505050565b6138c481613f4b565b6138c461393882613f50565b613f75565b6138c481613f75565b6138c461393882613f75565b6138c461393882613f78565b600061396982613f33565b6139738185612e21565b9350613983818560208601614028565b9290920192915050565b6138c481613ffb565b6138c481614006565b60006139aa82613f33565b6139b48185613f37565b93506139c4818560208601614028565b6139cd81614054565b9093019392505050565b60006139e4600283612e21565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000613a1d601b83613f37565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613a56600483612e21565b7f444c505f00000000000000000000000000000000000000000000000000000000815260040192915050565b6000613a8f602183613f37565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613aee600183612e21565b7f5f00000000000000000000000000000000000000000000000000000000000000815260010192915050565b6000613b27601383612e21565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b80516080830190613b648482613923565b506020820151613b77602085018261398d565b506040820151613b8a604085018261398d565b506060820151613b9d606085018261393d565b50505050565b80516040830190613bb484826138bb565b506020820151613b9d602085018261393d565b6138c481613fa7565b6138c481613fba565b6138c481614011565b6138c481613fdb565b6138c481613fe4565b6000613c008284613946565b50602001919050565b6000613c158284613952565b50600401919050565b600061057a828461395e565b6000613c36828661395e565b9150613c42828561392c565b6002820191506129dd828461395e565b6000613c5d826139d7565b9150613c698285613946565b602082019150613c798284613946565b5060200192915050565b6000613c8e82613a49565b9150613c9a828561395e565b9150613ca582613ae1565b9150613555828461395e565b6000613c8e82613b1a565b602081016104ad82846138bb565b602081016104ad8284613923565b602081016104ad828461393d565b60c08101613cf4828961393d565b613d0160208301886138bb565b613d0e60408301876138bb565b613d1b606083018661393d565b613d28608083018561393d565b613d3560a083018461393d565b979650505050505050565b60808101613d4e828761393d565b613d5b6020830186613beb565b613d68604083018561393d565b6129dd606083018461393d565b60a08101613d838288613996565b613d9060208301876138bb565b613d9d604083018661393d565b8181036060830152613daf81856138ca565b90508181036080830152613d3581846138ca565b6020808252810161057a818461399f565b602080825281016104ad81613a10565b602080825281016104ad81613a82565b608081016104ad8284613b53565b60608101613e108285613ba3565b61057a604083018461393d565b60408101613e2b8285613bc7565b61057a6020830184613bc7565b60608101613e468286613bc7565b613e536020830185613bc7565b6135556040830184613be2565b602081016104ad8284613bd0565b602081016104ad8284613bd9565b60408101613e8a828561393d565b61057a602083018461393d565b60808101613ea5828761393d565b613d5b602083018661393d565b602081016104ad8284613beb565b60405181810167ffffffffffffffff81118282101715613edf57600080fd5b604052919050565b600067ffffffffffffffff821115613efe57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006104ad82613fcf565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b80612e218161407c565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006104ad82613f9d565b60006104ad82613f75565b60006104ad82613fba565b82818337506000910152565b60005b8381101561404357818101518382015260200161402b565b83811115613b9d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061408657fe5b50565b61409281613f40565b811461408657600080fd5b61409281613f4b565b61409281613f75565b61409281613fba565b61409281613fdb565b61409281613fe4565b61409281613fea56fea365627a7a72315820caec0e4984d5b8a8e0dadb993c8e4cb529c3578fd2f359509ea0e40f1dade1cc6c6578706572696d656e74616cf564736f6c63430005100040a365627a7a723158200e26ddc922f9a466b4f04f11d7687750fc3b27e4c9a8b81d9241f03ef6018c1d6c6578706572696d656e74616cf564736f6c63430005100040",
289
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000f45760003560e01c80636e667db31162000099578063ba5ad85d116200006f578063ba5ad85d14620001b2578063c9c6539614620001cb578063e6a4390514620001e2578063f46901ed14620001f957620000f4565b80636e667db3146200018557806376354857146200018f578063a2e74af6146200019957620000f4565b806324e43f3d11620000cf57806324e43f3d146200013c5780632fe0f4771462000155578063574f2ba3146200017b57620000f4565b8063017e7e5814620000f9578063094b7415146200011b5780631e3dd18b1462000125575b600080fd5b6200010362000210565b60405162000112919062000ce7565b60405180910390f35b620001036200022c565b620001036200013636600462000b79565b62000248565b620001466200027d565b60405162000112919062000d7a565b6200016c6200016636600462000b11565b620002b1565b60405162000112919062000d6a565b62000146620002c6565b62000103620002cc565b62000103620002e8565b620001b0620001aa36600462000b11565b62000304565b005b620001bc620003b3565b60405162000112919062000d8a565b62000103620001dc36600462000b3a565b620003fd565b62000103620001f336600462000b3a565b62000865565b620001b06200020a36600462000b11565b62000898565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106200025657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600060405180602001620002919062000ae3565b6020820181038252601f19601f8201166040525080519060200120905090565b60066020526000908152604090205460ff1681565b60055490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001546200036c9073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060405180602001620003c79062000ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052905090565b60006200047b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f6964656e746963616c206164647265737300000000000000000000000000000062000947565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610620004ba578385620004bd565b84845b90925090506200054973ffffffffffffffffffffffffffffffffffffffff83161580159062000501575073ffffffffffffffffffffffffffffffffffffffff821615155b7f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7a65726f2061646472657373000000000000000000000000000000000000000062000947565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526004602090815260408083208585168452909152902054620005cc9116157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7061697220616c7265616479206578697374730000000000000000000000000062000947565b6060620005d8620003b3565b905060008383604051602001620005f192919062000c6f565b604051602081830303815290604052805190602001209050808251602084016000f56003546040517f9afd538800000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff1690639afd5388906200066f90889060019060040162000d25565b600060405180830381600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b50506003546040517fc0c53b8b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116945063c0c53b8b93506200070192899289929091169060040162000cf7565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526004602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff0000000000000000000000000000000000000000988916811790915593835281852086865283528185208054881685179055838552600690925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600580549182018155948590527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909616909217909455905490517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e99162000853918a919062000d4b565b60405180910390a35050505092915050565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600154620009009073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8262000a0157620009588262000a06565b7f3a20000000000000000000000000000000000000000000000000000000000000620009848362000a06565b604051602001620009989392919062000cb0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620009f89160040162000d8a565b60405180910390fd5b505050565b6060808260405160200162000a1c919062000c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801562000aca5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811062000a8a57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161562000ac4576001018152905062000ade565b62000a4f565b505060408051600081526020810190915290505b919050565b6146cd8062000e9883390190565b803562000afe8162000e72565b92915050565b803562000afe8162000e8c565b60006020828403121562000b2457600080fd5b600062000b32848462000af1565b949350505050565b6000806040838503121562000b4e57600080fd5b600062000b5c858562000af1565b925050602062000b6f8582860162000af1565b9150509250929050565b60006020828403121562000b8c57600080fd5b600062000b32848462000b04565b62000ba58162000daa565b82525050565b62000ba562000bba8262000daa565b62000e30565b62000ba58162000db7565b62000ba562000bda8262000dbc565b62000de1565b62000ba58162000de1565b62000ba562000bda8262000de1565b600062000c078262000d9d565b62000c13818562000da1565b935062000c2581856020860162000dfd565b62000c308162000e44565b9093019392505050565b600062000c478262000d9d565b62000c53818562000ade565b935062000c6581856020860162000dfd565b9290920192915050565b600062000c7d828562000bab565b60148201915062000c8f828462000bab565b5060140192915050565b600062000ca7828462000beb565b50602001919050565b600062000cbe828662000c3a565b915062000ccc828562000bcb565b60028201915062000cde828462000c3a565b95945050505050565b6020810162000afe828462000b9a565b6060810162000d07828662000b9a565b62000d16602083018562000b9a565b62000b32604083018462000b9a565b6040810162000d35828562000b9a565b62000d44602083018462000bc0565b9392505050565b6040810162000d5b828562000b9a565b62000d44602083018462000be0565b6020810162000afe828462000bc0565b6020810162000afe828462000be0565b6020808252810162000d44818462000bfa565b5190565b90815260200190565b600062000afe8262000de4565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b8381101562000e1a57818101518382015260200162000e00565b8381111562000e2a576000848401525b50505050565b600062000afe82600062000afe8262000e6c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60601b90565b62000e7d8162000daa565b811462000e8957600080fd5b50565b62000e7d8162000de156fe60806040526001600f553480156200001657600080fd5b50604051469062000027906200045a565b604051908190039020620000436001600160e01b03620000c916565b805160209182012060408051808201825260018152603160f81b90840152516200009593927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200049d565b60408051601f19818403018152919052805160209091012060035550600580546001600160a01b03191633179055620005a7565b6060620000de6001600160e01b036200011816565b620000f16001600160e01b036200016e16565b6040516020016200010492919062000467565b604051602081830303815290604052905090565b6008546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b60408051601f198184030181529190526001600160e01b036200019f16565b91505090565b6009546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b606060006060846001600160a01b031684604051620001bf919062000445565b600060405180830381855afa9150503d8060008114620001fc576040519150601f19603f3d011682016040523d82523d6000602084013e62000201565b606091505b509150915081801562000215575060008151115b156200023b5780806020019051620002319190810190620002b2565b9250505062000250565b60405180602001604052806000815250925050505b92915050565b600082601f8301126200026857600080fd5b81516200027f62000279826200051a565b620004f3565b915080825260208301602083018583830111156200029c57600080fd5b620002a983828462000574565b50505092915050565b600060208284031215620002c557600080fd5b81516001600160401b03811115620002dc57600080fd5b620002ea8482850162000256565b949350505050565b620002fd816200054b565b82525050565b620002fd8162000558565b620002fd6200031d826200055b565b62000558565b6000620003308262000542565b6200033c818562000546565b93506200034e81856020860162000574565b9290920192915050565b60006200036760528362000546565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520192915050565b6000620003e360018362000546565b605f60f81b815260010192915050565b60006200040260138362000546565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b60006200043c82846200030e565b50600401919050565b600062000453828462000323565b9392505050565b6000620002508262000358565b60006200047482620003f3565b915062000482828562000323565b91506200048f82620003d4565b9150620002ea828462000323565b60a08101620004ad828862000303565b620004bc602083018762000303565b620004cb604083018662000303565b620004da606083018562000303565b620004e96080830184620002f2565b9695505050505050565b6040518181016001600160401b03811182821017156200051257600080fd5b604052919050565b60006001600160401b038211156200053157600080fd5b506020601f91909101601f19160190565b5190565b919050565b6000620002508262000568565b90565b6001600160e01b03191690565b6001600160a01b031690565b60005b838110156200059157818101518382015260200162000577565b83811115620005a1576000848401525b50505050565b61411680620005b76000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636a62784211610145578063b432a82c116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610442578063e29d390e14610455578063fff6cae91461045d57610241565b8063d21220a714610427578063d505accf1461042f57610241565b8063b432a82c146103fc578063ba9a7a5614610404578063c0c53b8b1461040c578063c45a01551461041f57610241565b8063763548571161011457806395d89b41116100f957806395d89b41146103c05780639dc29fac146103c8578063a9059cbb146103e957610241565b806376354857146103a55780637ecebe00146103ad57610241565b80636a627842146103605780636b818e181461037357806370a082311461038a5780637464fc3d1461039d57610241565b8063313ce567116101d8578063448f7065116101a75780635a3d54931161018c5780635a3d5493146103485780635cbe0192146103505780635cebb0451461035857610241565b8063448f7065146103205780635909c0d51461034057610241565b8063313ce567146102e65780633644e515146102fb5780633f165227146103035780634101d9531461030b57610241565b806323b872dd1161021457806323b872dd146102ae5780632580aeca146102c15780632d28b749146102c957806330adf81f146102de57610241565b806306fdde0314610246578063095ea7b3146102645780630dfe16811461028457806318160ddd14610299575b600080fd5b61024e610465565b60405161025b9190613dc3565b60405180910390f35b6102776102723660046136e1565b61049c565b60405161025b9190613cca565b61028c6104b3565b60405161025b9190613cbc565b6102a16104c2565b60405161025b9190613cd8565b6102776102bc366004613602565b6104c8565b61024e610581565b6102dc6102d73660046136e1565b6105e2565b005b6102a161085b565b6102ee61087f565b60405161025b9190613eb2565b6102a1610884565b6102a161088a565b610313610896565b60405161025b9190613e60565b61033361032e3660046137dc565b6108ae565b60405161025b9190613df4565b6102a16111d6565b6102a16111dc565b61024e6111e2565b610313611229565b6102a161036e366004613537565b611255565b61037b611579565b60405161025b93929190613e38565b6102a1610398366004613537565b6115ce565b6102a16115e0565b61028c6115e6565b6102a16103bb366004613537565b6115f5565b61024e611607565b6103db6103d63660046136e1565b61162a565b60405161025b929190613e7c565b6102776103f73660046136e1565b611b23565b61037b611b30565b6102a1611d73565b6102dc61041a3660046135b5565b611d79565b61028c612154565b61028c612163565b6102dc61043d366004613645565b612172565b6102a161045036600461357b565b61235c565b61028c612379565b6102dc612388565b606061046f610581565b6104776111e2565b604051602001610488929190613cb1565b604051602081830303815290604052905090565b60006104a933848461246c565b5060015b92915050565b6008546001600160a01b031681565b60005481565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461056b576001600160a01b0384166000908152600260209081526040808320338452909152902054610546908363ffffffff6124d416565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610576848484612516565b5060015b9392505050565b6008546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b6040516020818303038152906040526125c6565b91505090565b610624600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654604080516002808252606080830184526001600160a01b0390941693926020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff169183915060009061067b57fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816001815181106106c557fe5b602002602001018181525050600061072d600a60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721858560008151811061071457fe5b6020026020010151612730565b9063ffffffff6124d416565b90506000610772600a600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721868660018151811061071457fe5b60408051600280825260608083018452939450909160208301908038833901905050905082816000815181106107a457fe5b60200260200101818152505081816001815181106107be57fe5b60209081029190910101526007546040517f87ff090a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906387ff090a9061081b906000908b908b908a908890600401613d75565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506001600f55505050505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601290565b60035481565b670de0b6b3a764000081565b600b546fffffffffffffffffffffffffffffffff1681565b6108b661320d565b6108be613236565b6006546040805160e0810182526001600160a01b03909216808352600b546fffffffffffffffffffffffffffffffff808216602086018190527001000000000000000000000000000000009092041692840192909252919060608201906109269084906127f6565b815260200161096583600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166127f6565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b2916109c6916fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a169190810190613764565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b291610a8b9170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015610aa357600080fd5b505afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb9190810190613764565b90528051909250610b2b91506001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642073656e64657200000000000000000000000000000000000061267a565b8751610b75906001600160a01b031630146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206f776e6572000000000061267a565b610bb988602001516000146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206e756d6265720000000061267a565b8651600854610c3c916001600160a01b03918216911614801590610bed575087516009546001600160a01b03908116911614155b8015610c03575087516001600160a01b03163014155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642074616b6572206163636f756e74206f776e6572000000000061267a565b600080610c9083602001518d1480610c57575083604001518d145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c696420696e707574206d61726b657400000000000000000000000061267a565b610ce183602001518c1480610ca8575083604001518c145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206f7574707574206d61726b6574000000000000000000000061267a565b8551610d20906e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e70757420776569206d75737420626520706f73697469766500000000000061267a565b600085806020019051610d3691908101906137be565b9050610d78600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206f757470757420616d6f756e7400000000000061267a565b83602001518d1415610dc85760208701516060850151610d9d9163ffffffff6128aa16565b60608501526080840151610db7908263ffffffff6124d416565b608085015260009250905080610e15565b83604001518d14610dd557fe5b60208701516080850151610dee9163ffffffff6128aa16565b60808501526060840151610e08908263ffffffff6124d416565b6060850152915060009050815b50600080600080610e24611b30565b5091509150610e93826dffffffffffffffffffffffffffff1687108015610e5a5750816dffffffffffffffffffffffffffff1686105b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c69717569646974790000000000000000000061267a565b85826dffffffffffffffffffffffffffff1603876060015111610eb7576000610ed1565b85826dffffffffffffffffffffffffffff16038760600151035b935084816dffffffffffffffffffffffffffff1603876080015111610ef7576000610f11565b84816dffffffffffffffffffffffffffff16038760800151035b9250610f5e6000851180610f255750600084115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e7420696e70757420616d6f756e740000000000000061267a565b6000610f8b610f7486600363ffffffff6128e916565b60608a0151610721906103e863ffffffff6128e916565b90506000610fba610fa386600363ffffffff6128e916565b60808b0151610721906103e863ffffffff6128e916565b9050611040610ff5620f4240610fe96dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b9063ffffffff6128e916565b611005848463ffffffff6128e916565b10156e2237b637b6b4ba32a0b6b6a830b4b960891b7f4b0000000000000000000000000000000000000000000000000000000000000061267a565b61113861107a670de0b6b3a76400008b60a00151602001516bffffffffffffffffffffffff168c6060015161293d9092919063ffffffff16565b60c08b01516020015160808c01516110af91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60a08c0151602001516110f1906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60c08d015160200151611133906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b6129e6565b505050508a600001516001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822848488886040516111899493929190613e97565b60405180910390a3604080516080810190915260008082526020820190815260200160008152602001600086116111c057846111c2565b855b90529e9d5050505050505050505050505050565b600c5481565b600d5481565b6009546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b600b5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6000611299600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f819055806112a9611579565b50600654600b549294509092506001600160a01b0316906000906112e09083906fffffffffffffffffffffffffffffffff16612730565b600b5490915060009061131a90849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b9050600061133e836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506000611362836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506113a4600083116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742030000000000000000000000061267a565b6113e4600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742031000000000000000000000061267a565b60006113f08888612c70565b6000549091508061142d576114196103e8610721611414878763ffffffff6128e916565b612dd4565b995061142860006103e8612e26565b61148a565b6114876dffffffffffffffffffffffffffff8a16611451868463ffffffff6128e916565b8161145857fe5b046dffffffffffffffffffffffffffff8a1661147a868563ffffffff6128e916565b8161148157fe5b04612ebf565b99505b6114ca60008b116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206d696e74656400000061267a565b6114d48b8b612e26565b6114e086868b8b6129e6565b811561152257600a5461151e906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f858560405161155d929190613e7c565b60405180910390a250506001600f555095979650505050505050565b600a546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60016020526000908152604090205481565b600e5481565b6006546001600160a01b031681565b60046020526000908152604090205481565b6060611611610581565b6116196111e2565b604051602001610488929190613c83565b60008061166f600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f8190558061167f611579565b50600654604080516002808252606080830184529597509395506001600160a01b039092169392906020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff16918391506000906116d957fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168160018151811061172357fe5b6020026020010181815250506000611742838360008151811061071457fe5b90506000611757848460018151811061071457fe5b306000908152600160205260408120548551929350909182906001600160a01b038816906356ea84b2908890849061178b57fe5b60200260200101516040518263ffffffff1660e01b81526004016117af9190613cd8565b60606040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ff9190810190613764565b602001516bffffffffffffffffffffffff1690506000876001600160a01b03166356ea84b28860018151811061183157fe5b60200260200101516040518263ffffffff1660e01b81526004016118559190613cd8565b60606040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a59190810190613764565b602001516bffffffffffffffffffffffff1690506118c38a8a612c70565b6000549094506118fc83670de0b6b3a7640000836118e7888c63ffffffff6128e916565b816118ee57fe5b04919063ffffffff61293d16565b9c5061191c82670de0b6b3a7640000836118e7888b63ffffffff6128e916565b9b5061196a60008e118015611931575060008d115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206275726e656400000061267a565b6119743085612ed5565b50506040805160028082526060808301845294509092509060208301908038833901905050905089816000815181106119a957fe5b60200260200101818152505088816001815181106119c357fe5b602002602001018181525050600760009054906101000a90046001600160a01b03166001600160a01b03166387ff090a60008e8e89866040518663ffffffff1660e01b8152600401611a19959493929190613d75565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050611a5c868660008151811061071457fe5b9350611a6f868660018151811061071457fe5b9250611a7d84848a8a6129e6565b8115611abf57600a54611abb906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b8b6001600160a01b0316336001600160a01b03167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968c8c604051611b04929190613e7c565b60405180910390a350505050505050506001600f819055509250929050565b60006104a9338484612516565b600654600b546040517f56ea84b2000000000000000000000000000000000000000000000000000000008152600092839283926001600160a01b0390921691839183916356ea84b291611b9a916fffffffffffffffffffffffffffffffff90911690600401613e6e565b60606040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bea9190810190613764565b60200151600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90921692506000916001600160a01b038516916356ea84b291611c709170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015611c8857600080fd5b505afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cc09190810190613764565b60200151600a546bffffffffffffffffffffffff9091169150611d02906dffffffffffffffffffffffffffff1683670de0b6b3a764000063ffffffff61293d16565b600a54909650611d3d906e01000000000000000000000000000090046dffffffffffffffffffffffffffff1682670de0b6b3a764000061293d565b600a54969790967c0100000000000000000000000000000000000000000000000000000000900463ffffffff1695509350505050565b6103e881565b600554611dc4906001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f666f7262696464656e000000000000000000000000000000000000000000000061267a565b6040517f61bf17b4000000000000000000000000000000000000000000000000000000008152611e96906001600160a01b038316906361bf17b490611e0d903090600401613cbc565b60206040518083038186803b158015611e2557600080fd5b505afa158015611e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5d9190810190613711565b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f7472616e736665722070726f7879206e6f7420656e61626c656400000000000061267a565b600880546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556009805492851692909116919091179055604080517f76354857000000000000000000000000000000000000000000000000000000008152905133916376354857916004808301926020929190829003018186803b158015611f2e57600080fd5b505afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f66919081019061355d565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161791829055600780549091168484161790556008546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291831692638fae3be192611fee9290911690600401613cbc565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203e91908101906137be565b600b80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790556006546009546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692638fae3be1926120cc92911690600401613cbc565b60206040518083038186803b1580156120e457600080fd5b505afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061211c91908101906137be565b600b80546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505050565b6005546001600160a01b031681565b6009546001600160a01b031681565b6121c0428510157f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f657870697265640000000000000000000000000000000000000000000000000061267a565b6003546001600160a01b03881660009081526004602090815260408083208054600181019091559051929392612221927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d9101613ce6565b60405160208183030381529060405280519060200120604051602001612248929190613c52565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516122859493929190613d40565b6020604051602081039080840390855afa1580156122a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151915061234690506001600160a01b038216158015906122ff5750896001600160a01b0316826001600160a01b0316145b7f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f696e76616c6964207369676e617475726500000000000000000000000000000061267a565b61235189898961246c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6007546001600160a01b031681565b6123ca600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654600b546001600160a01b0390911690612464906124029083906fffffffffffffffffffffffffffffffff16612730565b600b5461243690849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b600a546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166129e6565b506001600f55565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c7908590613cd8565b60405180910390a3505050565b600061057a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f6b565b6001600160a01b03831660009081526001602052604090205461253f908263ffffffff6124d416565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612574908263ffffffff6128aa16565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c7908590613cd8565b606060006060846001600160a01b0316846040516125e49190613c1e565b600060405180830381855afa9150503d806000811461261f576040519150601f19603f3d011682016040523d82523d6000602084013e612624565b606091505b5091509150818015612637575060008151115b156126595780806020019051612650919081019061372f565b925050506104ad565b60405180602001604052806000815250925050506104ad565b505092915050565b8261272b5761268882612fb1565b7f3a200000000000000000000000000000000000000000000000000000000000006126b283612fb1565b6040516020016126c493929190613c2a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261272291600401613dc3565b60405180910390fd5b505050565b60408051808201825230815260006020820181905291517f47d1b53c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516916347d1b53c9161278a91908690600401613e02565b604080518083038186803b1580156127a157600080fd5b505afa1580156127b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127d99190810190613782565b602001516fffffffffffffffffffffffffffffffff169392505050565b60408051808201825230815260006020820181905291517fc190c2ec0000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163c190c2ec9161285091908690600401613e02565b604080518083038186803b15801561286757600080fd5b505afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289f91908101906137a0565b602001519392505050565b60008282018381101561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613dd4565b6000826128f8575060006104ad565b8282028284828161290557fe5b041461057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613de4565b600083158061294a575082155b156129615761295a600083613085565b905061057a565b6000612973858563ffffffff6128e916565b90506129dd6129aa600161299e6002612992888463ffffffff6124d416565b9063ffffffff61308516565b9063ffffffff6128aa16565b6129ba838663ffffffff6130c716565b10156129c75760006129ca565b60015b60ff1661299e838663ffffffff61308516565b95945050505050565b612a4e6dffffffffffffffffffffffffffff8511801590612a1557506dffffffffffffffffffffffffffff8411155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f62616c616e6365206f766572666c6f770000000000000000000000000000000061267a565b600a5463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612a9e57506dffffffffffffffffffffffffffff841615155b8015612ab957506dffffffffffffffffffffffffffff831615155b15612b69578063ffffffff16612afc85612ad286613109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61312d16565b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612b3c84612ad287613109565b600d80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600a80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad193612c6093818116939091041690613e1d565b60405180910390a1505050505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015612cc157600080fd5b505afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cf9919081019061355d565b600e546001600160a01b038216158015945091925090612dc1578015612dbc576000612d416114146dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b90506000612d4e83612dd4565b905080821115612db9576000612d7c612d6d848463ffffffff6124d416565b6000549063ffffffff6128e916565b90506000612d958361299e86600263ffffffff6128e916565b90506000818381612da257fe5b0490508015612db557612db58782612e26565b5050505b50505b612672565b8015612672576000600e55505092915050565b60006003821115612e17575080600160028204015b81811015612e1157809150600281828581612e0057fe5b040181612e0957fe5b049050612de9565b50612e21565b8115612e21575060015b919050565b600054612e39908263ffffffff6128aa16565b60009081556001600160a01b038316815260016020526040902054612e64908263ffffffff6128aa16565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60405180910390a35050565b6000818310612ece578161057a565b5090919050565b6001600160a01b038216600090815260016020526040902054612efe908263ffffffff6124d416565b6001600160a01b03831660009081526001602052604081209190915554612f2b908263ffffffff6124d416565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60008184841115612fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b505050900390565b60608082604051602001612fc59190613bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561306e5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061303157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156130695760010181529050612e21565b612ff8565b505060408051600081526020810190915292915050565b600061057a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316e565b600061057a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506131bf565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161316657fe5b049392505050565b600081836131a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5060008385816131b557fe5b0495945050505050565b600081836131fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5082848161320457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001613275613287565b8152602001613282613287565b905290565b604080516060810182526000808252602082018190529181019190915290565b80356104ad81614089565b80516104ad81614089565b80356104ad8161409d565b80516104ad8161409d565b80356104ad816140a6565b600082601f8301126132ef57600080fd5b81356133026132fd82613ee7565b613ec0565b9150808252602083016020830185838301111561331e57600080fd5b61332983828461401c565b50505092915050565b600082601f83011261334357600080fd5b81516133516132fd82613ee7565b9150808252602083016020830185838301111561336d57600080fd5b613329838284614028565b60006060828403121561338a57600080fd5b6133946060613ec0565b905060006133a2848461352c565b82525060206133b38484830161352c565b60208301525060406133c784828501613516565b60408301525092915050565b6000604082840312156133e557600080fd5b6133ef6040613ec0565b905060006133fd84846132a7565b825250602061340e848483016132d3565b60208301525092915050565b60006040828403121561342c57600080fd5b6134366040613ec0565b9050600061344484846132bd565b825250602061340e848483016134f5565b60006040828403121561346757600080fd5b6134716040613ec0565b9050600061347f84846132c8565b825250602061340e84848301613500565b6000604082840312156134a257600080fd5b6134ac6040613ec0565b905060006133fd84846132bd565b6000604082840312156134cc57600080fd5b6134d66040613ec0565b905060006134e484846132c8565b825250602061340e8484830161350b565b80356104ad816140af565b80516104ad816140af565b80516104ad816140a6565b80516104ad816140b8565b80356104ad816140c1565b80516104ad816140ca565b60006020828403121561354957600080fd5b600061355584846132a7565b949350505050565b60006020828403121561356f57600080fd5b600061355584846132b2565b6000806040838503121561358e57600080fd5b600061359a85856132a7565b92505060206135ab858286016132a7565b9150509250929050565b6000806000606084860312156135ca57600080fd5b60006135d686866132a7565b93505060206135e7868287016132a7565b92505060406135f8868287016132a7565b9150509250925092565b60008060006060848603121561361757600080fd5b600061362386866132a7565b9350506020613634868287016132a7565b92505060406135f8868287016132d3565b600080600080600080600060e0888a03121561366057600080fd5b600061366c8a8a6132a7565b975050602061367d8a828b016132a7565b965050604061368e8a828b016132d3565b955050606061369f8a828b016132d3565b94505060806136b08a828b01613521565b93505060a06136c18a828b016132d3565b92505060c06136d28a828b016132d3565b91505092959891949750929550565b600080604083850312156136f457600080fd5b600061370085856132a7565b92505060206135ab858286016132d3565b60006020828403121561372357600080fd5b600061355584846132c8565b60006020828403121561374157600080fd5b815167ffffffffffffffff81111561375857600080fd5b61355584828501613332565b60006060828403121561377657600080fd5b60006135558484613378565b60006040828403121561379457600080fd5b60006135558484613455565b6000604082840312156137b257600080fd5b600061355584846134ba565b6000602082840312156137d057600080fd5b6000613555848461350b565b6000806000806000806000806101a0898b0312156137f957600080fd5b60006138058b8b6132d3565b98505060206138168b828c016132d3565b97505060406138278b828c016133d3565b96505060806138388b828c016133d3565b95505060c06138498b828c0161341a565b94505061010061385b8b828c0161341a565b93505061014061386d8b828c01613490565b92505061018089013567ffffffffffffffff81111561388b57600080fd5b6138978b828c016132de565b9150509295985092959890939650565b60006138b3838361393d565b505060200190565b6138c481613f40565b82525050565b60006138d582613f33565b6138df8185613f37565b93506138ea83613f2d565b8060005b8381101561391857815161390288826138a7565b975061390d83613f2d565b9250506001016138ee565b509495945050505050565b6138c481613f4b565b6138c461393882613f50565b613f75565b6138c481613f75565b6138c461393882613f75565b6138c461393882613f78565b600061396982613f33565b6139738185612e21565b9350613983818560208601614028565b9290920192915050565b6138c481613ffb565b6138c481614006565b60006139aa82613f33565b6139b48185613f37565b93506139c4818560208601614028565b6139cd81614054565b9093019392505050565b60006139e4600283612e21565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000613a1d601b83613f37565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613a56600483612e21565b7f444c505f00000000000000000000000000000000000000000000000000000000815260040192915050565b6000613a8f602183613f37565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613aee600183612e21565b7f5f00000000000000000000000000000000000000000000000000000000000000815260010192915050565b6000613b27601383612e21565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b80516080830190613b648482613923565b506020820151613b77602085018261398d565b506040820151613b8a604085018261398d565b506060820151613b9d606085018261393d565b50505050565b80516040830190613bb484826138bb565b506020820151613b9d602085018261393d565b6138c481613fa7565b6138c481613fba565b6138c481614011565b6138c481613fdb565b6138c481613fe4565b6000613c008284613946565b50602001919050565b6000613c158284613952565b50600401919050565b600061057a828461395e565b6000613c36828661395e565b9150613c42828561392c565b6002820191506129dd828461395e565b6000613c5d826139d7565b9150613c698285613946565b602082019150613c798284613946565b5060200192915050565b6000613c8e82613a49565b9150613c9a828561395e565b9150613ca582613ae1565b9150613555828461395e565b6000613c8e82613b1a565b602081016104ad82846138bb565b602081016104ad8284613923565b602081016104ad828461393d565b60c08101613cf4828961393d565b613d0160208301886138bb565b613d0e60408301876138bb565b613d1b606083018661393d565b613d28608083018561393d565b613d3560a083018461393d565b979650505050505050565b60808101613d4e828761393d565b613d5b6020830186613beb565b613d68604083018561393d565b6129dd606083018461393d565b60a08101613d838288613996565b613d9060208301876138bb565b613d9d604083018661393d565b8181036060830152613daf81856138ca565b90508181036080830152613d3581846138ca565b6020808252810161057a818461399f565b602080825281016104ad81613a10565b602080825281016104ad81613a82565b608081016104ad8284613b53565b60608101613e108285613ba3565b61057a604083018461393d565b60408101613e2b8285613bc7565b61057a6020830184613bc7565b60608101613e468286613bc7565b613e536020830185613bc7565b6135556040830184613be2565b602081016104ad8284613bd0565b602081016104ad8284613bd9565b60408101613e8a828561393d565b61057a602083018461393d565b60808101613ea5828761393d565b613d5b602083018661393d565b602081016104ad8284613beb565b60405181810167ffffffffffffffff81118282101715613edf57600080fd5b604052919050565b600067ffffffffffffffff821115613efe57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006104ad82613fcf565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b80612e218161407c565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006104ad82613f9d565b60006104ad82613f75565b60006104ad82613fba565b82818337506000910152565b60005b8381101561404357818101518382015260200161402b565b83811115613b9d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061408657fe5b50565b61409281613f40565b811461408657600080fd5b61409281613f4b565b61409281613f75565b61409281613fba565b61409281613fdb565b61409281613fe4565b61409281613fea56fea365627a7a72315820caec0e4984d5b8a8e0dadb993c8e4cb529c3578fd2f359509ea0e40f1dade1cc6c6578706572696d656e74616cf564736f6c63430005100040a365627a7a723158200e26ddc922f9a466b4f04f11d7687750fc3b27e4c9a8b81d9241f03ef6018c1d6c6578706572696d656e74616cf564736f6c63430005100040",
287
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_transferProxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dolomiteMargin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isPairCreated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeToSetter\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transferProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmFactory.sol\":\"DolomiteAmmFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol\":{\"keccak256\":\"0x8f6dc3db9d017ee8f5e279dd79ea0ec6753c91e4b3246690647456ce25821e2a\",\"urls\":[\"bzz-raw://1c53e2fb97fe94096581cc688d742d8c8c30a916e134fb6bc80ce901304e38fe\",\"dweb:/ipfs/QmXNyZXey3Ej9Ahukyf7Dg4fQvm1fbYiTAxJXAMkTNsNPE\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmFactory.sol\":{\"keccak256\":\"0x64bc83d33e0c61c853ee2177edd2ceba014f4f301f3d357c7a29afd7779c4ca6\",\"urls\":[\"bzz-raw://18a42ab28d0513e4d1b6b35a86cacfcdfb72f920818b13a61744a931aa0cb229\",\"dweb:/ipfs/QmcMh6EnmSthDHchFEBQcncoa52SxCvE6t7v3o6KG4WKc7\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmPair.sol\":{\"keccak256\":\"0x0f2391666b262d97899a9941a52ef99b10c96367583733612af3a3df88f44caa\",\"urls\":[\"bzz-raw://2bb24399a06832a666cde2e083770324a2b4d91c652a25f184bed38c57cadda3\",\"dweb:/ipfs/Qmev3Z7727bs9Nai3LHEaEwky2TzFsHPo1hCtNJ5KP1TQL\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmERC20.sol\":{\"keccak256\":\"0x61b5107403bfc5ad3a60aceb47fdeb6e284c918e7828cbad4396d1ad5b0011eb\",\"urls\":[\"bzz-raw://a8d0635af18ec5e6d9a7226eecd3e522c04eae29430bbe1cc5a46315006cda11\",\"dweb:/ipfs/QmTvg9zxpGRXGrAda15SP3V1hE6CbBK7VWzM8J3MhWTa3h\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmFactory.sol\":{\"keccak256\":\"0xf5fd97ee3591ff30a3576d6d58847b5f6e156639578bed3827313a2c70823b78\",\"urls\":[\"bzz-raw://f9da41065f9b3b559bfc588cea01480f1c64ee7b1f1a86e54868f464fdfe2160\",\"dweb:/ipfs/QmWeBi2zSdPCENVV4fvCQ49HgnwLGxd3WS9sGMC4vR5NrB\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmPair.sol\":{\"keccak256\":\"0xe2272c233467a78460e681419f0acdc765de0ad5357d3b768665f289941ccd47\",\"urls\":[\"bzz-raw://114f1c797f4e7e803b0764ae7107a2279c3da806450287c9e5600211faeeab57\",\"dweb:/ipfs/QmUoLx1rGgCdX5ScsUkp4NsSZLyVWdKsVKeXuPCtcrAvLn\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/ITransferProxy.sol\":{\"keccak256\":\"0x2462d5f68186bb53e33ff9bef2a4c5a815ea09e2c0f32d2eb736b50513e30244\",\"urls\":[\"bzz-raw://43c2590e5e8cb01361fc0ac3d8d8b44b86d434d8a35d80c60b9ad3f0c54dbc2b\",\"dweb:/ipfs/QmYdptf2jFNba3aFRhcGPNdZ14QD9ZLM9tRbEWB2GFmMsa\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/lib/AdvancedMath.sol\":{\"keccak256\":\"0x652e05fcd01111a15abf215bd9869e8e54cf1170acbdad0295b62a8adc81d78c\",\"urls\":[\"bzz-raw://7c137edcac22812344c06b742583f75f0b1ec33e5fedc68e88dc0b399b7299f9\",\"dweb:/ipfs/QmQu8asaE1SUD4zxDRU557rY7zMJchkwN75zmZvxJdCFMp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/lib/UQ112x112.sol\":{\"keccak256\":\"0x444a4eb83efb08b77e44c0ab3ea063903312e3dbde92ebdafeb137abba9c9cdd\",\"urls\":[\"bzz-raw://85323f3d86597716ad0491f8f719d0759292c818719116d038adc14ca72aac9e\",\"dweb:/ipfs/QmcYayCsypWmEh8vJwV5kzV6BbPY6fH2ZAz78DPiKD4iUm\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x62cbb936c4abdfc1ab33bb3ee5505279cc7354f9404bedf74ee3d099623a6dfa\",\"urls\":[\"bzz-raw://91ab2bd45600b1d3268a5592deb8b396d0fc4bba05a00d1aa4b4b785a6ee46ad\",\"dweb:/ipfs/QmVmBdFGFuA6XzaWxVAxxFDH81mhomg6uJvnYi4NYRHfDk\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x3e95a2b461f3f0cc4000d71d5c7bb6b1222788cfac1c66faad029ccaa1859d1e\",\"urls\":[\"bzz-raw://cad9773b4a1b196ea3d71129b5bd5679df7db601555a6b29ac111d38c36b00f0\",\"dweb:/ipfs/QmThFva71eLSVmBHHxn34zP7BUCJZDD6wMJHxEkKNWkkvv\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x0ab9a3fabc89984dff748af63d4319ee134051de2d7fc560e34ebaac86198396\",\"urls\":[\"bzz-raw://ab67f499a8ef83dc7e7cf7176a0f66eced40fa228eda8dd2d47e066ab985cf42\",\"dweb:/ipfs/QmXRHbsEYxr2Qsfsj5psXGV5LaPZHuzLiEXzSQJ77WSE27\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x44ec62b766a88a2f65267991e76cab88711e733b826dc9e578cb6ad6b38b2445\",\"urls\":[\"bzz-raw://731a8d44e57c9dcd7fbdefc37a6b5889c0d06defb3bd66b921b2a7db0edf0103\",\"dweb:/ipfs/QmcVbXc9oi5DMxjPtsBF76oJzD6zVjm7RuXgJfP3Goqrrb\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x425bf5764368faca16cc30a64b79d9bbe01fd8150444b58a464971c32450bd85\",\"urls\":[\"bzz-raw://064baf3155da634c5c80cea70bba0dda7a33af934b34f75f596961b4ab9aeafe\",\"dweb:/ipfs/QmTUHXoi9L6CkERyfhFs1jhxU66u2sbc6XRR5cH4TeHEqL\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0x1e6ff383f285e311d07374edda353e14ac4f29201726b0062a2f046c1a2b482c\",\"urls\":[\"bzz-raw://fd11c5db01039bf2c95f3561b08d271b80b7b1cb9fd7f75da887f7609807c5a7\",\"dweb:/ipfs/QmcY6CugdEHaYUa8ZKSnUDhvtVuoLfpDscZcmC91koAn1t\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0x66990bbe3c58d0edf57d3f67ab5280e2a53958ce44f75c335c4c50542321bccb\",\"urls\":[\"bzz-raw://724cfdb5c99121aab5262679e46766a2883e344749870d7dbfa92d1617f68bf2\",\"dweb:/ipfs/QmYjAsS45f6UG2u3zuTks2HVfMYtyFCVMgUvD7Gt7XtU3R\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x9710b0ab43cc2d964d8722a0aabbedbf7e9d4756dcc0b4ab7c46c1ee68653042\",\"urls\":[\"bzz-raw://2405593d37f0f224bfca556f01634a9755bb0ed626f74dd15293106a8b4dd7d3\",\"dweb:/ipfs/QmTZ16S336jsoDnK5p3vAZRzimBkmdEJibncHVBJxBt469\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0xbb17eb41ff805df51e8d637ef2a368782fdc5f085889c2d847713484f8f1967b\",\"urls\":[\"bzz-raw://538001d60d625695754159a8f716877f72217899fdab296d4725dc44bdbe1895\",\"dweb:/ipfs/QmbRm1WpPpaynnwTdmwB5M7H1cZQEtRAuExqtJ3g9SUiVp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Math.sol\":{\"keccak256\":\"0x0c0c913b6ccdb69063f9ec84879fcad20a1ee6f44402c9f5ec2b4f5b9f2fa16b\",\"urls\":[\"bzz-raw://89b32eefb57e5e63ad8c6e079ae7bf2d2c8622776cd45af0cf304e1cafd6e078\",\"dweb:/ipfs/Qmcj7yRnYuTgKC3ZqZqe8rynHGYVDS3UrFExcVGcqeaDHY\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9f8e80613b7dcefc4719e57a4a3f7c9bf2cadeb1d2c205c0b667fd5c5538648d\",\"urls\":[\"bzz-raw://ad5d2626e00154cdd4651c718824108220405b75e9196f0744874527d239246b\",\"dweb:/ipfs/QmW7VgfjXDURsTLBayTL6XBkvEX7BGsT9SYCVLpYVMAJtC\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x233d6ebf965711bf980f4bb2e672fb1a11b4b879fd41c884b3c2b704417d0d0c\",\"urls\":[\"bzz-raw://6478ff81706d531f9438b96274a7b904abbbd9c631540c68c6a89c3accf27abf\",\"dweb:/ipfs/QmWe9vkz3qwVjrcbmcTL8wgkjLPsrEqxcqPJL9ujM8PPbp\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0xd7bcae9e3c570544fc946a00cc7695106a64c20bc130d0183612c0410a531d19\",\"urls\":[\"bzz-raw://0ff5ffd6abb9ed223a64128c131afd962bec07fb9867cb62593906b339c76920\",\"dweb:/ipfs/QmbTrJL4bekvBqqaw6wXnBhYzS9uAqULSWF2VzW4cdfsM5\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xab134538648a2e223a7fe61db03c14f687657a5d37147f93c9088f11735aa311\",\"urls\":[\"bzz-raw://79dc7d2b30576d2349b99267642ac8d5fb7939c920b8d8045379d3614238bdc3\",\"dweb:/ipfs/QmaQJYg1nirHoWSC6G38Cjsk9pZBzEaNrGXKqTsvAzbyES\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
288
+ "bytecode": "0x60806040523480156200001157600080fd5b50604051620056c1380380620056c183398101604081905262000034916200008a565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600380549190931691161790556200010a565b80516200008481620000f0565b92915050565b600080600060608486031215620000a057600080fd5b6000620000ae868662000077565b9350506020620000c18682870162000077565b9250506040620000d48682870162000077565b9150509250925092565b60006001600160a01b03821662000084565b620000fb81620000de565b81146200010757600080fd5b50565b6155a7806200011a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000f45760003560e01c80636e667db31162000099578063ba5ad85d116200006f578063ba5ad85d14620001b2578063c9c6539614620001cb578063e6a4390514620001e2578063f46901ed14620001f957620000f4565b80636e667db3146200018557806376354857146200018f578063a2e74af6146200019957620000f4565b806324e43f3d11620000cf57806324e43f3d146200013c5780632fe0f4771462000155578063574f2ba3146200017b57620000f4565b8063017e7e5814620000f9578063094b7415146200011b5780631e3dd18b1462000125575b600080fd5b6200010362000210565b60405162000112919062000ce7565b60405180910390f35b620001036200022c565b620001036200013636600462000b79565b62000248565b620001466200027d565b60405162000112919062000d7a565b6200016c6200016636600462000b11565b620002b1565b60405162000112919062000d6a565b62000146620002c6565b62000103620002cc565b62000103620002e8565b620001b0620001aa36600462000b11565b62000304565b005b620001bc620003b3565b60405162000112919062000d8a565b62000103620001dc36600462000b3a565b620003fd565b62000103620001f336600462000b3a565b62000865565b620001b06200020a36600462000b11565b62000898565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106200025657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600060405180602001620002919062000ae3565b6020820181038252601f19601f8201166040525080519060200120905090565b60066020526000908152604090205460ff1681565b60055490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001546200036c9073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060405180602001620003c79062000ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052905090565b60006200047b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f6964656e746963616c206164647265737300000000000000000000000000000062000947565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610620004ba578385620004bd565b84845b90925090506200054973ffffffffffffffffffffffffffffffffffffffff83161580159062000501575073ffffffffffffffffffffffffffffffffffffffff821615155b7f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7a65726f2061646472657373000000000000000000000000000000000000000062000947565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526004602090815260408083208585168452909152902054620005cc9116157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7061697220616c7265616479206578697374730000000000000000000000000062000947565b6060620005d8620003b3565b905060008383604051602001620005f192919062000c6f565b604051602081830303815290604052805190602001209050808251602084016000f56003546040517f9afd538800000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff1690639afd5388906200066f90889060019060040162000d25565b600060405180830381600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b50506003546040517fc0c53b8b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116945063c0c53b8b93506200070192899289929091169060040162000cf7565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526004602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff0000000000000000000000000000000000000000988916811790915593835281852086865283528185208054881685179055838552600690925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600580549182018155948590527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909616909217909455905490517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e99162000853918a919062000d4b565b60405180910390a35050505092915050565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600154620009009073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8262000a0157620009588262000a06565b7f3a20000000000000000000000000000000000000000000000000000000000000620009848362000a06565b604051602001620009989392919062000cb0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620009f89160040162000d8a565b60405180910390fd5b505050565b6060808260405160200162000a1c919062000c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801562000aca5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811062000a8a57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161562000ac4576001018152905062000ade565b62000a4f565b505060408051600081526020810190915290505b919050565b6146cd8062000e9883390190565b803562000afe8162000e72565b92915050565b803562000afe8162000e8c565b60006020828403121562000b2457600080fd5b600062000b32848462000af1565b949350505050565b6000806040838503121562000b4e57600080fd5b600062000b5c858562000af1565b925050602062000b6f8582860162000af1565b9150509250929050565b60006020828403121562000b8c57600080fd5b600062000b32848462000b04565b62000ba58162000daa565b82525050565b62000ba562000bba8262000daa565b62000e30565b62000ba58162000db7565b62000ba562000bda8262000dbc565b62000de1565b62000ba58162000de1565b62000ba562000bda8262000de1565b600062000c078262000d9d565b62000c13818562000da1565b935062000c2581856020860162000dfd565b62000c308162000e44565b9093019392505050565b600062000c478262000d9d565b62000c53818562000ade565b935062000c6581856020860162000dfd565b9290920192915050565b600062000c7d828562000bab565b60148201915062000c8f828462000bab565b5060140192915050565b600062000ca7828462000beb565b50602001919050565b600062000cbe828662000c3a565b915062000ccc828562000bcb565b60028201915062000cde828462000c3a565b95945050505050565b6020810162000afe828462000b9a565b6060810162000d07828662000b9a565b62000d16602083018562000b9a565b62000b32604083018462000b9a565b6040810162000d35828562000b9a565b62000d44602083018462000bc0565b9392505050565b6040810162000d5b828562000b9a565b62000d44602083018462000be0565b6020810162000afe828462000bc0565b6020810162000afe828462000be0565b6020808252810162000d44818462000bfa565b5190565b90815260200190565b600062000afe8262000de4565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b8381101562000e1a57818101518382015260200162000e00565b8381111562000e2a576000848401525b50505050565b600062000afe82600062000afe8262000e6c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60601b90565b62000e7d8162000daa565b811462000e8957600080fd5b50565b62000e7d8162000de156fe60806040526001600f553480156200001657600080fd5b50604051469062000027906200045a565b604051908190039020620000436001600160e01b03620000c916565b805160209182012060408051808201825260018152603160f81b90840152516200009593927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200049d565b60408051601f19818403018152919052805160209091012060035550600580546001600160a01b03191633179055620005a7565b6060620000de6001600160e01b036200011816565b620000f16001600160e01b036200016e16565b6040516020016200010492919062000467565b604051602081830303815290604052905090565b6008546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b60408051601f198184030181529190526001600160e01b036200019f16565b91505090565b6009546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b606060006060846001600160a01b031684604051620001bf919062000445565b600060405180830381855afa9150503d8060008114620001fc576040519150601f19603f3d011682016040523d82523d6000602084013e62000201565b606091505b509150915081801562000215575060008151115b156200023b5780806020019051620002319190810190620002b2565b9250505062000250565b60405180602001604052806000815250925050505b92915050565b600082601f8301126200026857600080fd5b81516200027f62000279826200051a565b620004f3565b915080825260208301602083018583830111156200029c57600080fd5b620002a983828462000574565b50505092915050565b600060208284031215620002c557600080fd5b81516001600160401b03811115620002dc57600080fd5b620002ea8482850162000256565b949350505050565b620002fd816200054b565b82525050565b620002fd8162000558565b620002fd6200031d826200055b565b62000558565b6000620003308262000542565b6200033c818562000546565b93506200034e81856020860162000574565b9290920192915050565b60006200036760528362000546565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520192915050565b6000620003e360018362000546565b605f60f81b815260010192915050565b60006200040260138362000546565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b60006200043c82846200030e565b50600401919050565b600062000453828462000323565b9392505050565b6000620002508262000358565b60006200047482620003f3565b915062000482828562000323565b91506200048f82620003d4565b9150620002ea828462000323565b60a08101620004ad828862000303565b620004bc602083018762000303565b620004cb604083018662000303565b620004da606083018562000303565b620004e96080830184620002f2565b9695505050505050565b6040518181016001600160401b03811182821017156200051257600080fd5b604052919050565b60006001600160401b038211156200053157600080fd5b506020601f91909101601f19160190565b5190565b919050565b6000620002508262000568565b90565b6001600160e01b03191690565b6001600160a01b031690565b60005b838110156200059157818101518382015260200162000577565b83811115620005a1576000848401525b50505050565b61411680620005b76000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636a62784211610145578063b432a82c116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610442578063e29d390e14610455578063fff6cae91461045d57610241565b8063d21220a714610427578063d505accf1461042f57610241565b8063b432a82c146103fc578063ba9a7a5614610404578063c0c53b8b1461040c578063c45a01551461041f57610241565b8063763548571161011457806395d89b41116100f957806395d89b41146103c05780639dc29fac146103c8578063a9059cbb146103e957610241565b806376354857146103a55780637ecebe00146103ad57610241565b80636a627842146103605780636b818e181461037357806370a082311461038a5780637464fc3d1461039d57610241565b8063313ce567116101d8578063448f7065116101a75780635a3d54931161018c5780635a3d5493146103485780635cbe0192146103505780635cebb0451461035857610241565b8063448f7065146103205780635909c0d51461034057610241565b8063313ce567146102e65780633644e515146102fb5780633f165227146103035780634101d9531461030b57610241565b806323b872dd1161021457806323b872dd146102ae5780632580aeca146102c15780632d28b749146102c957806330adf81f146102de57610241565b806306fdde0314610246578063095ea7b3146102645780630dfe16811461028457806318160ddd14610299575b600080fd5b61024e610465565b60405161025b9190613dc3565b60405180910390f35b6102776102723660046136e1565b61049c565b60405161025b9190613cca565b61028c6104b3565b60405161025b9190613cbc565b6102a16104c2565b60405161025b9190613cd8565b6102776102bc366004613602565b6104c8565b61024e610581565b6102dc6102d73660046136e1565b6105e2565b005b6102a161085b565b6102ee61087f565b60405161025b9190613eb2565b6102a1610884565b6102a161088a565b610313610896565b60405161025b9190613e60565b61033361032e3660046137dc565b6108ae565b60405161025b9190613df4565b6102a16111d6565b6102a16111dc565b61024e6111e2565b610313611229565b6102a161036e366004613537565b611255565b61037b611579565b60405161025b93929190613e38565b6102a1610398366004613537565b6115ce565b6102a16115e0565b61028c6115e6565b6102a16103bb366004613537565b6115f5565b61024e611607565b6103db6103d63660046136e1565b61162a565b60405161025b929190613e7c565b6102776103f73660046136e1565b611b23565b61037b611b30565b6102a1611d73565b6102dc61041a3660046135b5565b611d79565b61028c612154565b61028c612163565b6102dc61043d366004613645565b612172565b6102a161045036600461357b565b61235c565b61028c612379565b6102dc612388565b606061046f610581565b6104776111e2565b604051602001610488929190613cb1565b604051602081830303815290604052905090565b60006104a933848461246c565b5060015b92915050565b6008546001600160a01b031681565b60005481565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461056b576001600160a01b0384166000908152600260209081526040808320338452909152902054610546908363ffffffff6124d416565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610576848484612516565b5060015b9392505050565b6008546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b6040516020818303038152906040526125c6565b91505090565b610624600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654604080516002808252606080830184526001600160a01b0390941693926020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff169183915060009061067b57fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816001815181106106c557fe5b602002602001018181525050600061072d600a60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721858560008151811061071457fe5b6020026020010151612730565b9063ffffffff6124d416565b90506000610772600a600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721868660018151811061071457fe5b60408051600280825260608083018452939450909160208301908038833901905050905082816000815181106107a457fe5b60200260200101818152505081816001815181106107be57fe5b60209081029190910101526007546040517f87ff090a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906387ff090a9061081b906000908b908b908a908890600401613d75565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506001600f55505050505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601290565b60035481565b670de0b6b3a764000081565b600b546fffffffffffffffffffffffffffffffff1681565b6108b661320d565b6108be613236565b6006546040805160e0810182526001600160a01b03909216808352600b546fffffffffffffffffffffffffffffffff808216602086018190527001000000000000000000000000000000009092041692840192909252919060608201906109269084906127f6565b815260200161096583600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166127f6565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b2916109c6916fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a169190810190613764565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b291610a8b9170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015610aa357600080fd5b505afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb9190810190613764565b90528051909250610b2b91506001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642073656e64657200000000000000000000000000000000000061267a565b8751610b75906001600160a01b031630146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206f776e6572000000000061267a565b610bb988602001516000146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206e756d6265720000000061267a565b8651600854610c3c916001600160a01b03918216911614801590610bed575087516009546001600160a01b03908116911614155b8015610c03575087516001600160a01b03163014155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642074616b6572206163636f756e74206f776e6572000000000061267a565b600080610c9083602001518d1480610c57575083604001518d145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c696420696e707574206d61726b657400000000000000000000000061267a565b610ce183602001518c1480610ca8575083604001518c145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206f7574707574206d61726b6574000000000000000000000061267a565b8551610d20906e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e70757420776569206d75737420626520706f73697469766500000000000061267a565b600085806020019051610d3691908101906137be565b9050610d78600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206f757470757420616d6f756e7400000000000061267a565b83602001518d1415610dc85760208701516060850151610d9d9163ffffffff6128aa16565b60608501526080840151610db7908263ffffffff6124d416565b608085015260009250905080610e15565b83604001518d14610dd557fe5b60208701516080850151610dee9163ffffffff6128aa16565b60808501526060840151610e08908263ffffffff6124d416565b6060850152915060009050815b50600080600080610e24611b30565b5091509150610e93826dffffffffffffffffffffffffffff1687108015610e5a5750816dffffffffffffffffffffffffffff1686105b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c69717569646974790000000000000000000061267a565b85826dffffffffffffffffffffffffffff1603876060015111610eb7576000610ed1565b85826dffffffffffffffffffffffffffff16038760600151035b935084816dffffffffffffffffffffffffffff1603876080015111610ef7576000610f11565b84816dffffffffffffffffffffffffffff16038760800151035b9250610f5e6000851180610f255750600084115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e7420696e70757420616d6f756e740000000000000061267a565b6000610f8b610f7486600363ffffffff6128e916565b60608a0151610721906103e863ffffffff6128e916565b90506000610fba610fa386600363ffffffff6128e916565b60808b0151610721906103e863ffffffff6128e916565b9050611040610ff5620f4240610fe96dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b9063ffffffff6128e916565b611005848463ffffffff6128e916565b10156e2237b637b6b4ba32a0b6b6a830b4b960891b7f4b0000000000000000000000000000000000000000000000000000000000000061267a565b61113861107a670de0b6b3a76400008b60a00151602001516bffffffffffffffffffffffff168c6060015161293d9092919063ffffffff16565b60c08b01516020015160808c01516110af91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60a08c0151602001516110f1906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60c08d015160200151611133906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b6129e6565b505050508a600001516001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822848488886040516111899493929190613e97565b60405180910390a3604080516080810190915260008082526020820190815260200160008152602001600086116111c057846111c2565b855b90529e9d5050505050505050505050505050565b600c5481565b600d5481565b6009546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b600b5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6000611299600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f819055806112a9611579565b50600654600b549294509092506001600160a01b0316906000906112e09083906fffffffffffffffffffffffffffffffff16612730565b600b5490915060009061131a90849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b9050600061133e836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506000611362836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506113a4600083116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742030000000000000000000000061267a565b6113e4600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742031000000000000000000000061267a565b60006113f08888612c70565b6000549091508061142d576114196103e8610721611414878763ffffffff6128e916565b612dd4565b995061142860006103e8612e26565b61148a565b6114876dffffffffffffffffffffffffffff8a16611451868463ffffffff6128e916565b8161145857fe5b046dffffffffffffffffffffffffffff8a1661147a868563ffffffff6128e916565b8161148157fe5b04612ebf565b99505b6114ca60008b116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206d696e74656400000061267a565b6114d48b8b612e26565b6114e086868b8b6129e6565b811561152257600a5461151e906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f858560405161155d929190613e7c565b60405180910390a250506001600f555095979650505050505050565b600a546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60016020526000908152604090205481565b600e5481565b6006546001600160a01b031681565b60046020526000908152604090205481565b6060611611610581565b6116196111e2565b604051602001610488929190613c83565b60008061166f600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f8190558061167f611579565b50600654604080516002808252606080830184529597509395506001600160a01b039092169392906020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff16918391506000906116d957fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168160018151811061172357fe5b6020026020010181815250506000611742838360008151811061071457fe5b90506000611757848460018151811061071457fe5b306000908152600160205260408120548551929350909182906001600160a01b038816906356ea84b2908890849061178b57fe5b60200260200101516040518263ffffffff1660e01b81526004016117af9190613cd8565b60606040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ff9190810190613764565b602001516bffffffffffffffffffffffff1690506000876001600160a01b03166356ea84b28860018151811061183157fe5b60200260200101516040518263ffffffff1660e01b81526004016118559190613cd8565b60606040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a59190810190613764565b602001516bffffffffffffffffffffffff1690506118c38a8a612c70565b6000549094506118fc83670de0b6b3a7640000836118e7888c63ffffffff6128e916565b816118ee57fe5b04919063ffffffff61293d16565b9c5061191c82670de0b6b3a7640000836118e7888b63ffffffff6128e916565b9b5061196a60008e118015611931575060008d115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206275726e656400000061267a565b6119743085612ed5565b50506040805160028082526060808301845294509092509060208301908038833901905050905089816000815181106119a957fe5b60200260200101818152505088816001815181106119c357fe5b602002602001018181525050600760009054906101000a90046001600160a01b03166001600160a01b03166387ff090a60008e8e89866040518663ffffffff1660e01b8152600401611a19959493929190613d75565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050611a5c868660008151811061071457fe5b9350611a6f868660018151811061071457fe5b9250611a7d84848a8a6129e6565b8115611abf57600a54611abb906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b8b6001600160a01b0316336001600160a01b03167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968c8c604051611b04929190613e7c565b60405180910390a350505050505050506001600f819055509250929050565b60006104a9338484612516565b600654600b546040517f56ea84b2000000000000000000000000000000000000000000000000000000008152600092839283926001600160a01b0390921691839183916356ea84b291611b9a916fffffffffffffffffffffffffffffffff90911690600401613e6e565b60606040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bea9190810190613764565b60200151600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90921692506000916001600160a01b038516916356ea84b291611c709170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015611c8857600080fd5b505afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cc09190810190613764565b60200151600a546bffffffffffffffffffffffff9091169150611d02906dffffffffffffffffffffffffffff1683670de0b6b3a764000063ffffffff61293d16565b600a54909650611d3d906e01000000000000000000000000000090046dffffffffffffffffffffffffffff1682670de0b6b3a764000061293d565b600a54969790967c0100000000000000000000000000000000000000000000000000000000900463ffffffff1695509350505050565b6103e881565b600554611dc4906001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f666f7262696464656e000000000000000000000000000000000000000000000061267a565b6040517f61bf17b4000000000000000000000000000000000000000000000000000000008152611e96906001600160a01b038316906361bf17b490611e0d903090600401613cbc565b60206040518083038186803b158015611e2557600080fd5b505afa158015611e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5d9190810190613711565b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f7472616e736665722070726f7879206e6f7420656e61626c656400000000000061267a565b600880546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556009805492851692909116919091179055604080517f76354857000000000000000000000000000000000000000000000000000000008152905133916376354857916004808301926020929190829003018186803b158015611f2e57600080fd5b505afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f66919081019061355d565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161791829055600780549091168484161790556008546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291831692638fae3be192611fee9290911690600401613cbc565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203e91908101906137be565b600b80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790556006546009546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692638fae3be1926120cc92911690600401613cbc565b60206040518083038186803b1580156120e457600080fd5b505afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061211c91908101906137be565b600b80546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505050565b6005546001600160a01b031681565b6009546001600160a01b031681565b6121c0428510157f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f657870697265640000000000000000000000000000000000000000000000000061267a565b6003546001600160a01b03881660009081526004602090815260408083208054600181019091559051929392612221927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d9101613ce6565b60405160208183030381529060405280519060200120604051602001612248929190613c52565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516122859493929190613d40565b6020604051602081039080840390855afa1580156122a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151915061234690506001600160a01b038216158015906122ff5750896001600160a01b0316826001600160a01b0316145b7f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f696e76616c6964207369676e617475726500000000000000000000000000000061267a565b61235189898961246c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6007546001600160a01b031681565b6123ca600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654600b546001600160a01b0390911690612464906124029083906fffffffffffffffffffffffffffffffff16612730565b600b5461243690849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b600a546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166129e6565b506001600f55565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c7908590613cd8565b60405180910390a3505050565b600061057a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f6b565b6001600160a01b03831660009081526001602052604090205461253f908263ffffffff6124d416565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612574908263ffffffff6128aa16565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c7908590613cd8565b606060006060846001600160a01b0316846040516125e49190613c1e565b600060405180830381855afa9150503d806000811461261f576040519150601f19603f3d011682016040523d82523d6000602084013e612624565b606091505b5091509150818015612637575060008151115b156126595780806020019051612650919081019061372f565b925050506104ad565b60405180602001604052806000815250925050506104ad565b505092915050565b8261272b5761268882612fb1565b7f3a200000000000000000000000000000000000000000000000000000000000006126b283612fb1565b6040516020016126c493929190613c2a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261272291600401613dc3565b60405180910390fd5b505050565b60408051808201825230815260006020820181905291517f47d1b53c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516916347d1b53c9161278a91908690600401613e02565b604080518083038186803b1580156127a157600080fd5b505afa1580156127b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127d99190810190613782565b602001516fffffffffffffffffffffffffffffffff169392505050565b60408051808201825230815260006020820181905291517fc190c2ec0000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163c190c2ec9161285091908690600401613e02565b604080518083038186803b15801561286757600080fd5b505afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289f91908101906137a0565b602001519392505050565b60008282018381101561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613dd4565b6000826128f8575060006104ad565b8282028284828161290557fe5b041461057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613de4565b600083158061294a575082155b156129615761295a600083613085565b905061057a565b6000612973858563ffffffff6128e916565b90506129dd6129aa600161299e6002612992888463ffffffff6124d416565b9063ffffffff61308516565b9063ffffffff6128aa16565b6129ba838663ffffffff6130c716565b10156129c75760006129ca565b60015b60ff1661299e838663ffffffff61308516565b95945050505050565b612a4e6dffffffffffffffffffffffffffff8511801590612a1557506dffffffffffffffffffffffffffff8411155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f62616c616e6365206f766572666c6f770000000000000000000000000000000061267a565b600a5463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612a9e57506dffffffffffffffffffffffffffff841615155b8015612ab957506dffffffffffffffffffffffffffff831615155b15612b69578063ffffffff16612afc85612ad286613109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61312d16565b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612b3c84612ad287613109565b600d80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600a80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad193612c6093818116939091041690613e1d565b60405180910390a1505050505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015612cc157600080fd5b505afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cf9919081019061355d565b600e546001600160a01b038216158015945091925090612dc1578015612dbc576000612d416114146dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b90506000612d4e83612dd4565b905080821115612db9576000612d7c612d6d848463ffffffff6124d416565b6000549063ffffffff6128e916565b90506000612d958361299e86600263ffffffff6128e916565b90506000818381612da257fe5b0490508015612db557612db58782612e26565b5050505b50505b612672565b8015612672576000600e55505092915050565b60006003821115612e17575080600160028204015b81811015612e1157809150600281828581612e0057fe5b040181612e0957fe5b049050612de9565b50612e21565b8115612e21575060015b919050565b600054612e39908263ffffffff6128aa16565b60009081556001600160a01b038316815260016020526040902054612e64908263ffffffff6128aa16565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60405180910390a35050565b6000818310612ece578161057a565b5090919050565b6001600160a01b038216600090815260016020526040902054612efe908263ffffffff6124d416565b6001600160a01b03831660009081526001602052604081209190915554612f2b908263ffffffff6124d416565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60008184841115612fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b505050900390565b60608082604051602001612fc59190613bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561306e5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061303157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156130695760010181529050612e21565b612ff8565b505060408051600081526020810190915292915050565b600061057a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316e565b600061057a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506131bf565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161316657fe5b049392505050565b600081836131a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5060008385816131b557fe5b0495945050505050565b600081836131fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5082848161320457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001613275613287565b8152602001613282613287565b905290565b604080516060810182526000808252602082018190529181019190915290565b80356104ad81614089565b80516104ad81614089565b80356104ad8161409d565b80516104ad8161409d565b80356104ad816140a6565b600082601f8301126132ef57600080fd5b81356133026132fd82613ee7565b613ec0565b9150808252602083016020830185838301111561331e57600080fd5b61332983828461401c565b50505092915050565b600082601f83011261334357600080fd5b81516133516132fd82613ee7565b9150808252602083016020830185838301111561336d57600080fd5b613329838284614028565b60006060828403121561338a57600080fd5b6133946060613ec0565b905060006133a2848461352c565b82525060206133b38484830161352c565b60208301525060406133c784828501613516565b60408301525092915050565b6000604082840312156133e557600080fd5b6133ef6040613ec0565b905060006133fd84846132a7565b825250602061340e848483016132d3565b60208301525092915050565b60006040828403121561342c57600080fd5b6134366040613ec0565b9050600061344484846132bd565b825250602061340e848483016134f5565b60006040828403121561346757600080fd5b6134716040613ec0565b9050600061347f84846132c8565b825250602061340e84848301613500565b6000604082840312156134a257600080fd5b6134ac6040613ec0565b905060006133fd84846132bd565b6000604082840312156134cc57600080fd5b6134d66040613ec0565b905060006134e484846132c8565b825250602061340e8484830161350b565b80356104ad816140af565b80516104ad816140af565b80516104ad816140a6565b80516104ad816140b8565b80356104ad816140c1565b80516104ad816140ca565b60006020828403121561354957600080fd5b600061355584846132a7565b949350505050565b60006020828403121561356f57600080fd5b600061355584846132b2565b6000806040838503121561358e57600080fd5b600061359a85856132a7565b92505060206135ab858286016132a7565b9150509250929050565b6000806000606084860312156135ca57600080fd5b60006135d686866132a7565b93505060206135e7868287016132a7565b92505060406135f8868287016132a7565b9150509250925092565b60008060006060848603121561361757600080fd5b600061362386866132a7565b9350506020613634868287016132a7565b92505060406135f8868287016132d3565b600080600080600080600060e0888a03121561366057600080fd5b600061366c8a8a6132a7565b975050602061367d8a828b016132a7565b965050604061368e8a828b016132d3565b955050606061369f8a828b016132d3565b94505060806136b08a828b01613521565b93505060a06136c18a828b016132d3565b92505060c06136d28a828b016132d3565b91505092959891949750929550565b600080604083850312156136f457600080fd5b600061370085856132a7565b92505060206135ab858286016132d3565b60006020828403121561372357600080fd5b600061355584846132c8565b60006020828403121561374157600080fd5b815167ffffffffffffffff81111561375857600080fd5b61355584828501613332565b60006060828403121561377657600080fd5b60006135558484613378565b60006040828403121561379457600080fd5b60006135558484613455565b6000604082840312156137b257600080fd5b600061355584846134ba565b6000602082840312156137d057600080fd5b6000613555848461350b565b6000806000806000806000806101a0898b0312156137f957600080fd5b60006138058b8b6132d3565b98505060206138168b828c016132d3565b97505060406138278b828c016133d3565b96505060806138388b828c016133d3565b95505060c06138498b828c0161341a565b94505061010061385b8b828c0161341a565b93505061014061386d8b828c01613490565b92505061018089013567ffffffffffffffff81111561388b57600080fd5b6138978b828c016132de565b9150509295985092959890939650565b60006138b3838361393d565b505060200190565b6138c481613f40565b82525050565b60006138d582613f33565b6138df8185613f37565b93506138ea83613f2d565b8060005b8381101561391857815161390288826138a7565b975061390d83613f2d565b9250506001016138ee565b509495945050505050565b6138c481613f4b565b6138c461393882613f50565b613f75565b6138c481613f75565b6138c461393882613f75565b6138c461393882613f78565b600061396982613f33565b6139738185612e21565b9350613983818560208601614028565b9290920192915050565b6138c481613ffb565b6138c481614006565b60006139aa82613f33565b6139b48185613f37565b93506139c4818560208601614028565b6139cd81614054565b9093019392505050565b60006139e4600283612e21565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000613a1d601b83613f37565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613a56600483612e21565b7f444c505f00000000000000000000000000000000000000000000000000000000815260040192915050565b6000613a8f602183613f37565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613aee600183612e21565b7f5f00000000000000000000000000000000000000000000000000000000000000815260010192915050565b6000613b27601383612e21565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b80516080830190613b648482613923565b506020820151613b77602085018261398d565b506040820151613b8a604085018261398d565b506060820151613b9d606085018261393d565b50505050565b80516040830190613bb484826138bb565b506020820151613b9d602085018261393d565b6138c481613fa7565b6138c481613fba565b6138c481614011565b6138c481613fdb565b6138c481613fe4565b6000613c008284613946565b50602001919050565b6000613c158284613952565b50600401919050565b600061057a828461395e565b6000613c36828661395e565b9150613c42828561392c565b6002820191506129dd828461395e565b6000613c5d826139d7565b9150613c698285613946565b602082019150613c798284613946565b5060200192915050565b6000613c8e82613a49565b9150613c9a828561395e565b9150613ca582613ae1565b9150613555828461395e565b6000613c8e82613b1a565b602081016104ad82846138bb565b602081016104ad8284613923565b602081016104ad828461393d565b60c08101613cf4828961393d565b613d0160208301886138bb565b613d0e60408301876138bb565b613d1b606083018661393d565b613d28608083018561393d565b613d3560a083018461393d565b979650505050505050565b60808101613d4e828761393d565b613d5b6020830186613beb565b613d68604083018561393d565b6129dd606083018461393d565b60a08101613d838288613996565b613d9060208301876138bb565b613d9d604083018661393d565b8181036060830152613daf81856138ca565b90508181036080830152613d3581846138ca565b6020808252810161057a818461399f565b602080825281016104ad81613a10565b602080825281016104ad81613a82565b608081016104ad8284613b53565b60608101613e108285613ba3565b61057a604083018461393d565b60408101613e2b8285613bc7565b61057a6020830184613bc7565b60608101613e468286613bc7565b613e536020830185613bc7565b6135556040830184613be2565b602081016104ad8284613bd0565b602081016104ad8284613bd9565b60408101613e8a828561393d565b61057a602083018461393d565b60808101613ea5828761393d565b613d5b602083018661393d565b602081016104ad8284613beb565b60405181810167ffffffffffffffff81118282101715613edf57600080fd5b604052919050565b600067ffffffffffffffff821115613efe57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006104ad82613fcf565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b80612e218161407c565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006104ad82613f9d565b60006104ad82613f75565b60006104ad82613fba565b82818337506000910152565b60005b8381101561404357818101518382015260200161402b565b83811115613b9d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061408657fe5b50565b61409281613f40565b811461408657600080fd5b61409281613f4b565b61409281613f75565b61409281613fba565b61409281613fdb565b61409281613fe4565b61409281613fea56fea365627a7a723158202324cf58849517f365100cafed7e40960134976856f21cd03eee6f755e820c8e6c6578706572696d656e74616cf564736f6c63430005100040a365627a7a72315820f8e8d4fe0855c786dc8386a3fc3e3c4437128374977eee3159e721b918e5dee76c6578706572696d656e74616cf564736f6c63430005100040",
289
+ "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000f45760003560e01c80636e667db31162000099578063ba5ad85d116200006f578063ba5ad85d14620001b2578063c9c6539614620001cb578063e6a4390514620001e2578063f46901ed14620001f957620000f4565b80636e667db3146200018557806376354857146200018f578063a2e74af6146200019957620000f4565b806324e43f3d11620000cf57806324e43f3d146200013c5780632fe0f4771462000155578063574f2ba3146200017b57620000f4565b8063017e7e5814620000f9578063094b7415146200011b5780631e3dd18b1462000125575b600080fd5b6200010362000210565b60405162000112919062000ce7565b60405180910390f35b620001036200022c565b620001036200013636600462000b79565b62000248565b620001466200027d565b60405162000112919062000d7a565b6200016c6200016636600462000b11565b620002b1565b60405162000112919062000d6a565b62000146620002c6565b62000103620002cc565b62000103620002e8565b620001b0620001aa36600462000b11565b62000304565b005b620001bc620003b3565b60405162000112919062000d8a565b62000103620001dc36600462000b3a565b620003fd565b62000103620001f336600462000b3a565b62000865565b620001b06200020a36600462000b11565b62000898565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106200025657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600060405180602001620002919062000ae3565b6020820181038252601f19601f8201166040525080519060200120905090565b60066020526000908152604090205460ff1681565b60055490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6001546200036c9073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606060405180602001620003c79062000ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052905090565b60006200047b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f6964656e746963616c206164647265737300000000000000000000000000000062000947565b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610620004ba578385620004bd565b84845b90925090506200054973ffffffffffffffffffffffffffffffffffffffff83161580159062000501575073ffffffffffffffffffffffffffffffffffffffff821615155b7f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7a65726f2061646472657373000000000000000000000000000000000000000062000947565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526004602090815260408083208585168452909152902054620005cc9116157f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f7061697220616c7265616479206578697374730000000000000000000000000062000947565b6060620005d8620003b3565b905060008383604051602001620005f192919062000c6f565b604051602081830303815290604052805190602001209050808251602084016000f56003546040517f9afd538800000000000000000000000000000000000000000000000000000000815291965073ffffffffffffffffffffffffffffffffffffffff1690639afd5388906200066f90889060019060040162000d25565b600060405180830381600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b50506003546040517fc0c53b8b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116945063c0c53b8b93506200070192899289929091169060040162000cf7565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526004602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff0000000000000000000000000000000000000000988916811790915593835281852086865283528185208054881685179055838552600690925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600580549182018155948590527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909616909217909455905490517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e99162000853918a919062000d4b565b60405180910390a35050505092915050565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600154620009009073ffffffffffffffffffffffffffffffffffffffff1633147f446f6c6f6d697465416d6d466163746f727900000000000000000000000000007f666f7262696464656e000000000000000000000000000000000000000000000062000947565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8262000a0157620009588262000a06565b7f3a20000000000000000000000000000000000000000000000000000000000000620009848362000a06565b604051602001620009989392919062000cb0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620009f89160040162000d8a565b60405180910390fd5b505050565b6060808260405160200162000a1c919062000c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801562000aca5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811062000a8a57fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161562000ac4576001018152905062000ade565b62000a4f565b505060408051600081526020810190915290505b919050565b6146cd8062000e9883390190565b803562000afe8162000e72565b92915050565b803562000afe8162000e8c565b60006020828403121562000b2457600080fd5b600062000b32848462000af1565b949350505050565b6000806040838503121562000b4e57600080fd5b600062000b5c858562000af1565b925050602062000b6f8582860162000af1565b9150509250929050565b60006020828403121562000b8c57600080fd5b600062000b32848462000b04565b62000ba58162000daa565b82525050565b62000ba562000bba8262000daa565b62000e30565b62000ba58162000db7565b62000ba562000bda8262000dbc565b62000de1565b62000ba58162000de1565b62000ba562000bda8262000de1565b600062000c078262000d9d565b62000c13818562000da1565b935062000c2581856020860162000dfd565b62000c308162000e44565b9093019392505050565b600062000c478262000d9d565b62000c53818562000ade565b935062000c6581856020860162000dfd565b9290920192915050565b600062000c7d828562000bab565b60148201915062000c8f828462000bab565b5060140192915050565b600062000ca7828462000beb565b50602001919050565b600062000cbe828662000c3a565b915062000ccc828562000bcb565b60028201915062000cde828462000c3a565b95945050505050565b6020810162000afe828462000b9a565b6060810162000d07828662000b9a565b62000d16602083018562000b9a565b62000b32604083018462000b9a565b6040810162000d35828562000b9a565b62000d44602083018462000bc0565b9392505050565b6040810162000d5b828562000b9a565b62000d44602083018462000be0565b6020810162000afe828462000bc0565b6020810162000afe828462000be0565b6020808252810162000d44818462000bfa565b5190565b90815260200190565b600062000afe8262000de4565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b8381101562000e1a57818101518382015260200162000e00565b8381111562000e2a576000848401525b50505050565b600062000afe82600062000afe8262000e6c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60601b90565b62000e7d8162000daa565b811462000e8957600080fd5b50565b62000e7d8162000de156fe60806040526001600f553480156200001657600080fd5b50604051469062000027906200045a565b604051908190039020620000436001600160e01b03620000c916565b805160209182012060408051808201825260018152603160f81b90840152516200009593927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200049d565b60408051601f19818403018152919052805160209091012060035550600580546001600160a01b03191633179055620005a7565b6060620000de6001600160e01b036200011816565b620000f16001600160e01b036200016e16565b6040516020016200010492919062000467565b604051602081830303815290604052905090565b6008546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b60408051601f198184030181529190526001600160e01b036200019f16565b91505090565b6009546040516060916001600160a01b0316906200016890829062000149906395d89b4160e01b906020016200042e565b606060006060846001600160a01b031684604051620001bf919062000445565b600060405180830381855afa9150503d8060008114620001fc576040519150601f19603f3d011682016040523d82523d6000602084013e62000201565b606091505b509150915081801562000215575060008151115b156200023b5780806020019051620002319190810190620002b2565b9250505062000250565b60405180602001604052806000815250925050505b92915050565b600082601f8301126200026857600080fd5b81516200027f62000279826200051a565b620004f3565b915080825260208301602083018583830111156200029c57600080fd5b620002a983828462000574565b50505092915050565b600060208284031215620002c557600080fd5b81516001600160401b03811115620002dc57600080fd5b620002ea8482850162000256565b949350505050565b620002fd816200054b565b82525050565b620002fd8162000558565b620002fd6200031d826200055b565b62000558565b6000620003308262000542565b6200033c818562000546565b93506200034e81856020860162000574565b9290920192915050565b60006200036760528362000546565b7f454950373132446f6d61696e28737472696e67206e616d652c737472696e672081527f76657273696f6e2c75696e7432353620636861696e49642c6164647265737320602082015271766572696679696e67436f6e74726163742960701b604082015260520192915050565b6000620003e360018362000546565b605f60f81b815260010192915050565b60006200040260138362000546565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b60006200043c82846200030e565b50600401919050565b600062000453828462000323565b9392505050565b6000620002508262000358565b60006200047482620003f3565b915062000482828562000323565b91506200048f82620003d4565b9150620002ea828462000323565b60a08101620004ad828862000303565b620004bc602083018762000303565b620004cb604083018662000303565b620004da606083018562000303565b620004e96080830184620002f2565b9695505050505050565b6040518181016001600160401b03811182821017156200051257600080fd5b604052919050565b60006001600160401b038211156200053157600080fd5b506020601f91909101601f19160190565b5190565b919050565b6000620002508262000568565b90565b6001600160e01b03191690565b6001600160a01b031690565b60005b838110156200059157818101518382015260200162000577565b83811115620005a1576000848401525b50505050565b61411680620005b76000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636a62784211610145578063b432a82c116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610442578063e29d390e14610455578063fff6cae91461045d57610241565b8063d21220a714610427578063d505accf1461042f57610241565b8063b432a82c146103fc578063ba9a7a5614610404578063c0c53b8b1461040c578063c45a01551461041f57610241565b8063763548571161011457806395d89b41116100f957806395d89b41146103c05780639dc29fac146103c8578063a9059cbb146103e957610241565b806376354857146103a55780637ecebe00146103ad57610241565b80636a627842146103605780636b818e181461037357806370a082311461038a5780637464fc3d1461039d57610241565b8063313ce567116101d8578063448f7065116101a75780635a3d54931161018c5780635a3d5493146103485780635cbe0192146103505780635cebb0451461035857610241565b8063448f7065146103205780635909c0d51461034057610241565b8063313ce567146102e65780633644e515146102fb5780633f165227146103035780634101d9531461030b57610241565b806323b872dd1161021457806323b872dd146102ae5780632580aeca146102c15780632d28b749146102c957806330adf81f146102de57610241565b806306fdde0314610246578063095ea7b3146102645780630dfe16811461028457806318160ddd14610299575b600080fd5b61024e610465565b60405161025b9190613dc3565b60405180910390f35b6102776102723660046136e1565b61049c565b60405161025b9190613cca565b61028c6104b3565b60405161025b9190613cbc565b6102a16104c2565b60405161025b9190613cd8565b6102776102bc366004613602565b6104c8565b61024e610581565b6102dc6102d73660046136e1565b6105e2565b005b6102a161085b565b6102ee61087f565b60405161025b9190613eb2565b6102a1610884565b6102a161088a565b610313610896565b60405161025b9190613e60565b61033361032e3660046137dc565b6108ae565b60405161025b9190613df4565b6102a16111d6565b6102a16111dc565b61024e6111e2565b610313611229565b6102a161036e366004613537565b611255565b61037b611579565b60405161025b93929190613e38565b6102a1610398366004613537565b6115ce565b6102a16115e0565b61028c6115e6565b6102a16103bb366004613537565b6115f5565b61024e611607565b6103db6103d63660046136e1565b61162a565b60405161025b929190613e7c565b6102776103f73660046136e1565b611b23565b61037b611b30565b6102a1611d73565b6102dc61041a3660046135b5565b611d79565b61028c612154565b61028c612163565b6102dc61043d366004613645565b612172565b6102a161045036600461357b565b61235c565b61028c612379565b6102dc612388565b606061046f610581565b6104776111e2565b604051602001610488929190613cb1565b604051602081830303815290604052905090565b60006104a933848461246c565b5060015b92915050565b6008546001600160a01b031681565b60005481565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461056b576001600160a01b0384166000908152600260209081526040808320338452909152902054610546908363ffffffff6124d416565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610576848484612516565b5060015b9392505050565b6008546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b6040516020818303038152906040526125c6565b91505090565b610624600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654604080516002808252606080830184526001600160a01b0390941693926020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff169183915060009061067b57fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16816001815181106106c557fe5b602002602001018181525050600061072d600a60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721858560008151811061071457fe5b6020026020010151612730565b9063ffffffff6124d416565b90506000610772600a600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16610721868660018151811061071457fe5b60408051600280825260608083018452939450909160208301908038833901905050905082816000815181106107a457fe5b60200260200101818152505081816001815181106107be57fe5b60209081029190910101526007546040517f87ff090a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906387ff090a9061081b906000908b908b908a908890600401613d75565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506001600f55505050505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601290565b60035481565b670de0b6b3a764000081565b600b546fffffffffffffffffffffffffffffffff1681565b6108b661320d565b6108be613236565b6006546040805160e0810182526001600160a01b03909216808352600b546fffffffffffffffffffffffffffffffff808216602086018190527001000000000000000000000000000000009092041692840192909252919060608201906109269084906127f6565b815260200161096583600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166127f6565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b2916109c6916fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a169190810190613764565b8152600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526020909201916001600160a01b038516916356ea84b291610a8b9170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015610aa357600080fd5b505afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb9190810190613764565b90528051909250610b2b91506001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642073656e64657200000000000000000000000000000000000061267a565b8751610b75906001600160a01b031630146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206f776e6572000000000061267a565b610bb988602001516000146e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d616b6572206163636f756e74206e756d6265720000000061267a565b8651600854610c3c916001600160a01b03918216911614801590610bed575087516009546001600160a01b03908116911614155b8015610c03575087516001600160a01b03163014155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c69642074616b6572206163636f756e74206f776e6572000000000061267a565b600080610c9083602001518d1480610c57575083604001518d145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c696420696e707574206d61726b657400000000000000000000000061267a565b610ce183602001518c1480610ca8575083604001518c145b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206f7574707574206d61726b6574000000000000000000000061267a565b8551610d20906e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e70757420776569206d75737420626520706f73697469766500000000000061267a565b600085806020019051610d3691908101906137be565b9050610d78600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206f757470757420616d6f756e7400000000000061267a565b83602001518d1415610dc85760208701516060850151610d9d9163ffffffff6128aa16565b60608501526080840151610db7908263ffffffff6124d416565b608085015260009250905080610e15565b83604001518d14610dd557fe5b60208701516080850151610dee9163ffffffff6128aa16565b60808501526060840151610e08908263ffffffff6124d416565b6060850152915060009050815b50600080600080610e24611b30565b5091509150610e93826dffffffffffffffffffffffffffff1687108015610e5a5750816dffffffffffffffffffffffffffff1686105b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c69717569646974790000000000000000000061267a565b85826dffffffffffffffffffffffffffff1603876060015111610eb7576000610ed1565b85826dffffffffffffffffffffffffffff16038760600151035b935084816dffffffffffffffffffffffffffff1603876080015111610ef7576000610f11565b84816dffffffffffffffffffffffffffff16038760800151035b9250610f5e6000851180610f255750600084115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e7420696e70757420616d6f756e740000000000000061267a565b6000610f8b610f7486600363ffffffff6128e916565b60608a0151610721906103e863ffffffff6128e916565b90506000610fba610fa386600363ffffffff6128e916565b60808b0151610721906103e863ffffffff6128e916565b9050611040610ff5620f4240610fe96dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b9063ffffffff6128e916565b611005848463ffffffff6128e916565b10156e2237b637b6b4ba32a0b6b6a830b4b960891b7f4b0000000000000000000000000000000000000000000000000000000000000061267a565b61113861107a670de0b6b3a76400008b60a00151602001516bffffffffffffffffffffffff168c6060015161293d9092919063ffffffff16565b60c08b01516020015160808c01516110af91670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60a08c0151602001516110f1906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b60c08d015160200151611133906dffffffffffffffffffffffffffff891690670de0b6b3a7640000906bffffffffffffffffffffffff1663ffffffff61293d16565b6129e6565b505050508a600001516001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822848488886040516111899493929190613e97565b60405180910390a3604080516080810190915260008082526020820190815260200160008152602001600086116111c057846111c2565b855b90529e9d5050505050505050505050505050565b600c5481565b600d5481565b6009546040516060916001600160a01b0316906105dc9082906105c8907f95d89b410000000000000000000000000000000000000000000000000000000090602001613c09565b600b5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6000611299600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f819055806112a9611579565b50600654600b549294509092506001600160a01b0316906000906112e09083906fffffffffffffffffffffffffffffffff16612730565b600b5490915060009061131a90849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b9050600061133e836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506000611362836dffffffffffffffffffffffffffff881663ffffffff6124d416565b90506113a4600083116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742030000000000000000000000061267a565b6113e4600082116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e76616c6964206d696e7420616d6f756e742031000000000000000000000061267a565b60006113f08888612c70565b6000549091508061142d576114196103e8610721611414878763ffffffff6128e916565b612dd4565b995061142860006103e8612e26565b61148a565b6114876dffffffffffffffffffffffffffff8a16611451868463ffffffff6128e916565b8161145857fe5b046dffffffffffffffffffffffffffff8a1661147a868563ffffffff6128e916565b8161148157fe5b04612ebf565b99505b6114ca60008b116e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206d696e74656400000061267a565b6114d48b8b612e26565b6114e086868b8b6129e6565b811561152257600a5461151e906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b336001600160a01b03167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f858560405161155d929190613e7c565b60405180910390a250506001600f555095979650505050505050565b600a546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b60016020526000908152604090205481565b600e5481565b6006546001600160a01b031681565b60046020526000908152604090205481565b6060611611610581565b6116196111e2565b604051602001610488929190613c83565b60008061166f600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f8190558061167f611579565b50600654604080516002808252606080830184529597509395506001600160a01b039092169392906020830190803883395050600b5482519293506fffffffffffffffffffffffffffffffff16918391506000906116d957fe5b602002602001018181525050600b60109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168160018151811061172357fe5b6020026020010181815250506000611742838360008151811061071457fe5b90506000611757848460018151811061071457fe5b306000908152600160205260408120548551929350909182906001600160a01b038816906356ea84b2908890849061178b57fe5b60200260200101516040518263ffffffff1660e01b81526004016117af9190613cd8565b60606040518083038186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ff9190810190613764565b602001516bffffffffffffffffffffffff1690506000876001600160a01b03166356ea84b28860018151811061183157fe5b60200260200101516040518263ffffffff1660e01b81526004016118559190613cd8565b60606040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a59190810190613764565b602001516bffffffffffffffffffffffff1690506118c38a8a612c70565b6000549094506118fc83670de0b6b3a7640000836118e7888c63ffffffff6128e916565b816118ee57fe5b04919063ffffffff61293d16565b9c5061191c82670de0b6b3a7640000836118e7888b63ffffffff6128e916565b9b5061196a60008e118015611931575060008d115b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f696e73756666696369656e74206c6971756964697479206275726e656400000061267a565b6119743085612ed5565b50506040805160028082526060808301845294509092509060208301908038833901905050905089816000815181106119a957fe5b60200260200101818152505088816001815181106119c357fe5b602002602001018181525050600760009054906101000a90046001600160a01b03166001600160a01b03166387ff090a60008e8e89866040518663ffffffff1660e01b8152600401611a19959493929190613d75565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050611a5c868660008151811061071457fe5b9350611a6f868660018151811061071457fe5b9250611a7d84848a8a6129e6565b8115611abf57600a54611abb906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6128e916565b600e555b8b6001600160a01b0316336001600160a01b03167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968c8c604051611b04929190613e7c565b60405180910390a350505050505050506001600f819055509250929050565b60006104a9338484612516565b600654600b546040517f56ea84b2000000000000000000000000000000000000000000000000000000008152600092839283926001600160a01b0390921691839183916356ea84b291611b9a916fffffffffffffffffffffffffffffffff90911690600401613e6e565b60606040518083038186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bea9190810190613764565b60200151600b546040517f56ea84b20000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90921692506000916001600160a01b038516916356ea84b291611c709170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690600401613e6e565b60606040518083038186803b158015611c8857600080fd5b505afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cc09190810190613764565b60200151600a546bffffffffffffffffffffffff9091169150611d02906dffffffffffffffffffffffffffff1683670de0b6b3a764000063ffffffff61293d16565b600a54909650611d3d906e01000000000000000000000000000090046dffffffffffffffffffffffffffff1682670de0b6b3a764000061293d565b600a54969790967c0100000000000000000000000000000000000000000000000000000000900463ffffffff1695509350505050565b6103e881565b600554611dc4906001600160a01b031633146e2237b637b6b4ba32a0b6b6a830b4b960891b7f666f7262696464656e000000000000000000000000000000000000000000000061267a565b6040517f61bf17b4000000000000000000000000000000000000000000000000000000008152611e96906001600160a01b038316906361bf17b490611e0d903090600401613cbc565b60206040518083038186803b158015611e2557600080fd5b505afa158015611e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5d9190810190613711565b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f7472616e736665722070726f7879206e6f7420656e61626c656400000000000061267a565b600880546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556009805492851692909116919091179055604080517f76354857000000000000000000000000000000000000000000000000000000008152905133916376354857916004808301926020929190829003018186803b158015611f2e57600080fd5b505afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f66919081019061355d565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161791829055600780549091168484161790556008546040517f8fae3be100000000000000000000000000000000000000000000000000000000815291831692638fae3be192611fee9290911690600401613cbc565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203e91908101906137be565b600b80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790556006546009546040517f8fae3be10000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692638fae3be1926120cc92911690600401613cbc565b60206040518083038186803b1580156120e457600080fd5b505afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061211c91908101906137be565b600b80546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055505050565b6005546001600160a01b031681565b6009546001600160a01b031681565b6121c0428510157f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f657870697265640000000000000000000000000000000000000000000000000061267a565b6003546001600160a01b03881660009081526004602090815260408083208054600181019091559051929392612221927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d9101613ce6565b60405160208183030381529060405280519060200120604051602001612248929190613c52565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516122859493929190613d40565b6020604051602081039080840390855afa1580156122a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151915061234690506001600160a01b038216158015906122ff5750896001600160a01b0316826001600160a01b0316145b7f446f6c6f6d697465416d6d4552433230000000000000000000000000000000007f696e76616c6964207369676e617475726500000000000000000000000000000061267a565b61235189898961246c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6007546001600160a01b031681565b6123ca600f546001146e2237b637b6b4ba32a0b6b6a830b4b960891b7f6c6f636b6564000000000000000000000000000000000000000000000000000061267a565b6000600f55600654600b546001600160a01b0390911690612464906124029083906fffffffffffffffffffffffffffffffff16612730565b600b5461243690849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612730565b600a546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166129e6565b506001600f55565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c7908590613cd8565b60405180910390a3505050565b600061057a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f6b565b6001600160a01b03831660009081526001602052604090205461253f908263ffffffff6124d416565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612574908263ffffffff6128aa16565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c7908590613cd8565b606060006060846001600160a01b0316846040516125e49190613c1e565b600060405180830381855afa9150503d806000811461261f576040519150601f19603f3d011682016040523d82523d6000602084013e612624565b606091505b5091509150818015612637575060008151115b156126595780806020019051612650919081019061372f565b925050506104ad565b60405180602001604052806000815250925050506104ad565b505092915050565b8261272b5761268882612fb1565b7f3a200000000000000000000000000000000000000000000000000000000000006126b283612fb1565b6040516020016126c493929190613c2a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261272291600401613dc3565b60405180910390fd5b505050565b60408051808201825230815260006020820181905291517f47d1b53c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516916347d1b53c9161278a91908690600401613e02565b604080518083038186803b1580156127a157600080fd5b505afa1580156127b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127d99190810190613782565b602001516fffffffffffffffffffffffffffffffff169392505050565b60408051808201825230815260006020820181905291517fc190c2ec0000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163c190c2ec9161285091908690600401613e02565b604080518083038186803b15801561286757600080fd5b505afa15801561287b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061289f91908101906137a0565b602001519392505050565b60008282018381101561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613dd4565b6000826128f8575060006104ad565b8282028284828161290557fe5b041461057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290613de4565b600083158061294a575082155b156129615761295a600083613085565b905061057a565b6000612973858563ffffffff6128e916565b90506129dd6129aa600161299e6002612992888463ffffffff6124d416565b9063ffffffff61308516565b9063ffffffff6128aa16565b6129ba838663ffffffff6130c716565b10156129c75760006129ca565b60015b60ff1661299e838663ffffffff61308516565b95945050505050565b612a4e6dffffffffffffffffffffffffffff8511801590612a1557506dffffffffffffffffffffffffffff8411155b6e2237b637b6b4ba32a0b6b6a830b4b960891b7f62616c616e6365206f766572666c6f770000000000000000000000000000000061267a565b600a5463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612a9e57506dffffffffffffffffffffffffffff841615155b8015612ab957506dffffffffffffffffffffffffffff831615155b15612b69578063ffffffff16612afc85612ad286613109565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61312d16565b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612b3c84612ad287613109565b600d80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600a80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad193612c6093818116939091041690613e1d565b60405180910390a1505050505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015612cc157600080fd5b505afa158015612cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cf9919081019061355d565b600e546001600160a01b038216158015945091925090612dc1578015612dbc576000612d416114146dffffffffffffffffffffffffffff88811690881663ffffffff6128e916565b90506000612d4e83612dd4565b905080821115612db9576000612d7c612d6d848463ffffffff6124d416565b6000549063ffffffff6128e916565b90506000612d958361299e86600263ffffffff6128e916565b90506000818381612da257fe5b0490508015612db557612db58782612e26565b5050505b50505b612672565b8015612672576000600e55505092915050565b60006003821115612e17575080600160028204015b81811015612e1157809150600281828581612e0057fe5b040181612e0957fe5b049050612de9565b50612e21565b8115612e21575060015b919050565b600054612e39908263ffffffff6128aa16565b60009081556001600160a01b038316815260016020526040902054612e64908263ffffffff6128aa16565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60405180910390a35050565b6000818310612ece578161057a565b5090919050565b6001600160a01b038216600090815260016020526040902054612efe908263ffffffff6124d416565b6001600160a01b03831660009081526001602052604081209190915554612f2b908263ffffffff6124d416565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612eb3908590613cd8565b60008184841115612fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b505050900390565b60608082604051602001612fc59190613bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561306e5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061303157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156130695760010181529050612e21565b612ff8565b505060408051600081526020810190915292915050565b600061057a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061316e565b600061057a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506131bf565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161316657fe5b049392505050565b600081836131a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5060008385816131b557fe5b0495945050505050565b600081836131fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127229190613dc3565b5082848161320457fe5b06949350505050565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001613275613287565b8152602001613282613287565b905290565b604080516060810182526000808252602082018190529181019190915290565b80356104ad81614089565b80516104ad81614089565b80356104ad8161409d565b80516104ad8161409d565b80356104ad816140a6565b600082601f8301126132ef57600080fd5b81356133026132fd82613ee7565b613ec0565b9150808252602083016020830185838301111561331e57600080fd5b61332983828461401c565b50505092915050565b600082601f83011261334357600080fd5b81516133516132fd82613ee7565b9150808252602083016020830185838301111561336d57600080fd5b613329838284614028565b60006060828403121561338a57600080fd5b6133946060613ec0565b905060006133a2848461352c565b82525060206133b38484830161352c565b60208301525060406133c784828501613516565b60408301525092915050565b6000604082840312156133e557600080fd5b6133ef6040613ec0565b905060006133fd84846132a7565b825250602061340e848483016132d3565b60208301525092915050565b60006040828403121561342c57600080fd5b6134366040613ec0565b9050600061344484846132bd565b825250602061340e848483016134f5565b60006040828403121561346757600080fd5b6134716040613ec0565b9050600061347f84846132c8565b825250602061340e84848301613500565b6000604082840312156134a257600080fd5b6134ac6040613ec0565b905060006133fd84846132bd565b6000604082840312156134cc57600080fd5b6134d66040613ec0565b905060006134e484846132c8565b825250602061340e8484830161350b565b80356104ad816140af565b80516104ad816140af565b80516104ad816140a6565b80516104ad816140b8565b80356104ad816140c1565b80516104ad816140ca565b60006020828403121561354957600080fd5b600061355584846132a7565b949350505050565b60006020828403121561356f57600080fd5b600061355584846132b2565b6000806040838503121561358e57600080fd5b600061359a85856132a7565b92505060206135ab858286016132a7565b9150509250929050565b6000806000606084860312156135ca57600080fd5b60006135d686866132a7565b93505060206135e7868287016132a7565b92505060406135f8868287016132a7565b9150509250925092565b60008060006060848603121561361757600080fd5b600061362386866132a7565b9350506020613634868287016132a7565b92505060406135f8868287016132d3565b600080600080600080600060e0888a03121561366057600080fd5b600061366c8a8a6132a7565b975050602061367d8a828b016132a7565b965050604061368e8a828b016132d3565b955050606061369f8a828b016132d3565b94505060806136b08a828b01613521565b93505060a06136c18a828b016132d3565b92505060c06136d28a828b016132d3565b91505092959891949750929550565b600080604083850312156136f457600080fd5b600061370085856132a7565b92505060206135ab858286016132d3565b60006020828403121561372357600080fd5b600061355584846132c8565b60006020828403121561374157600080fd5b815167ffffffffffffffff81111561375857600080fd5b61355584828501613332565b60006060828403121561377657600080fd5b60006135558484613378565b60006040828403121561379457600080fd5b60006135558484613455565b6000604082840312156137b257600080fd5b600061355584846134ba565b6000602082840312156137d057600080fd5b6000613555848461350b565b6000806000806000806000806101a0898b0312156137f957600080fd5b60006138058b8b6132d3565b98505060206138168b828c016132d3565b97505060406138278b828c016133d3565b96505060806138388b828c016133d3565b95505060c06138498b828c0161341a565b94505061010061385b8b828c0161341a565b93505061014061386d8b828c01613490565b92505061018089013567ffffffffffffffff81111561388b57600080fd5b6138978b828c016132de565b9150509295985092959890939650565b60006138b3838361393d565b505060200190565b6138c481613f40565b82525050565b60006138d582613f33565b6138df8185613f37565b93506138ea83613f2d565b8060005b8381101561391857815161390288826138a7565b975061390d83613f2d565b9250506001016138ee565b509495945050505050565b6138c481613f4b565b6138c461393882613f50565b613f75565b6138c481613f75565b6138c461393882613f75565b6138c461393882613f78565b600061396982613f33565b6139738185612e21565b9350613983818560208601614028565b9290920192915050565b6138c481613ffb565b6138c481614006565b60006139aa82613f33565b6139b48185613f37565b93506139c4818560208601614028565b6139cd81614054565b9093019392505050565b60006139e4600283612e21565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000613a1d601b83613f37565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613a56600483612e21565b7f444c505f00000000000000000000000000000000000000000000000000000000815260040192915050565b6000613a8f602183613f37565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000613aee600183612e21565b7f5f00000000000000000000000000000000000000000000000000000000000000815260010192915050565b6000613b27601383612e21565b7f446f6c6f6d697465204c5020546f6b656e3a2000000000000000000000000000815260130192915050565b80516080830190613b648482613923565b506020820151613b77602085018261398d565b506040820151613b8a604085018261398d565b506060820151613b9d606085018261393d565b50505050565b80516040830190613bb484826138bb565b506020820151613b9d602085018261393d565b6138c481613fa7565b6138c481613fba565b6138c481614011565b6138c481613fdb565b6138c481613fe4565b6000613c008284613946565b50602001919050565b6000613c158284613952565b50600401919050565b600061057a828461395e565b6000613c36828661395e565b9150613c42828561392c565b6002820191506129dd828461395e565b6000613c5d826139d7565b9150613c698285613946565b602082019150613c798284613946565b5060200192915050565b6000613c8e82613a49565b9150613c9a828561395e565b9150613ca582613ae1565b9150613555828461395e565b6000613c8e82613b1a565b602081016104ad82846138bb565b602081016104ad8284613923565b602081016104ad828461393d565b60c08101613cf4828961393d565b613d0160208301886138bb565b613d0e60408301876138bb565b613d1b606083018661393d565b613d28608083018561393d565b613d3560a083018461393d565b979650505050505050565b60808101613d4e828761393d565b613d5b6020830186613beb565b613d68604083018561393d565b6129dd606083018461393d565b60a08101613d838288613996565b613d9060208301876138bb565b613d9d604083018661393d565b8181036060830152613daf81856138ca565b90508181036080830152613d3581846138ca565b6020808252810161057a818461399f565b602080825281016104ad81613a10565b602080825281016104ad81613a82565b608081016104ad8284613b53565b60608101613e108285613ba3565b61057a604083018461393d565b60408101613e2b8285613bc7565b61057a6020830184613bc7565b60608101613e468286613bc7565b613e536020830185613bc7565b6135556040830184613be2565b602081016104ad8284613bd0565b602081016104ad8284613bd9565b60408101613e8a828561393d565b61057a602083018461393d565b60808101613ea5828761393d565b613d5b602083018661393d565b602081016104ad8284613beb565b60405181810167ffffffffffffffff81118282101715613edf57600080fd5b604052919050565b600067ffffffffffffffff821115613efe57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006104ad82613fcf565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b80612e218161407c565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006104ad82613f9d565b60006104ad82613f75565b60006104ad82613fba565b82818337506000910152565b60005b8381101561404357818101518382015260200161402b565b83811115613b9d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6002811061408657fe5b50565b61409281613f40565b811461408657600080fd5b61409281613f4b565b61409281613f75565b61409281613fba565b61409281613fdb565b61409281613fe4565b61409281613fea56fea365627a7a723158202324cf58849517f365100cafed7e40960134976856f21cd03eee6f755e820c8e6c6578706572696d656e74616cf564736f6c63430005100040a365627a7a72315820f8e8d4fe0855c786dc8386a3fc3e3c4437128374977eee3159e721b918e5dee76c6578706572696d656e74616cf564736f6c63430005100040",
290
290
  "sourceMap": "780:2881:2:-;;;1269:245;8:9:-1;5:2;;;30:1;27;20:12;5:2;1269:245:2;;;;;;;;;;;;;;;;;;;;;1399:11;:26;;-1:-1:-1;;;;;1399:26:2;;;-1:-1:-1;;;;;;1399:26:2;;;;;;;1435:14;:32;;;;;;;;;;;;;;;1477:13;:30;;;;;;;;;;;780:2881;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:535;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;311:1;308;301:12;263:2;346:1;363:64;419:7;399:9;363:64;;;353:74;;325:108;464:2;482:64;538:7;529:6;518:9;514:22;482:64;;;472:74;;443:109;583:2;601:64;657:7;648:6;637:9;633:22;601:64;;;591:74;;562:109;257:424;;;;;;688:91;;-1:-1;;;;;848:54;;750:24;831:76;914:117;983:24;1001:5;983:24;;;976:5;973:35;963:2;;1022:1;1019;1012:12;963:2;957:74;;;780:2881:2;;;;;;",
291
291
  "deployedSourceMap": "780:2881:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;780:2881:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:20;;;:::i;:::-;;;;;;;;;;;;;;;;924:26;;;:::i;1094:25::-;;;;;;;;;:::i;3529:130::-;;;:::i;:::-;;;;;;;;1125:45;;;;;;;;;:::i;:::-;;;;;;;;1520:94;;;:::i;991:28::-;;;:::i;956:29::-;;;:::i;3185:212::-;;;;;;;;;:::i;:::-;;3403:120;;;:::i;:::-;;;;;;;;1620:1365;;;;;;;;;:::i;1026:62::-;;;;;;;;;:::i;2991:188::-;;;;;;;;;:::i;898:20::-;;;;;;:::o;924:26::-;;;;;;:::o;1094:25::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1094:25:2;:::o;3529:130::-;3581:7;3617:34;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;3617:34:2;3607:45;;;;;;3600:52;;3529:130;:::o;1125:45::-;;;;;;;;;;;;;;;:::o;1520:94::-;1592:8;:15;1520:94;:::o;991:28::-;;;;;;:::o;956:29::-;;;;;;:::o;3185:212::-;3290:11;;3250:104;;3290:11;;3276:10;:25;3315:4;3250:104;:12;:104::i;:::-;3364:11;:26;;;;;;;;;;;;;;;3185:212::o;3403:120::-;3451:12;3482:34;;;;;;;;:::i;:::-;21:26:-1;;;;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;34:5;-1:-1;3403:120:2;:::o;1620:1365::-;1690:12;1714:103;1750:6;1740:16;;:6;:16;;;;1770:4;1714:103;:12;:103::i;:::-;1828:14;1844;1871:6;1862:15;;:6;:15;;;:53;;1900:6;1908;1862:53;;;1881:6;1889;1862:53;1827:88;;-1:-1:-1;1827:88:2;-1:-1:-1;1925:126:2;1951:20;;;;;;;:44;;-1:-1:-1;1975:20:2;;;;;1951:44;2009:4;1925:126;:12;:126::i;:::-;2087:37;:15;;;2122:1;2087:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;2061:126;;2087:23;:37;2138:4;2061:126;:12;:126::i;:::-;2235:21;2259:17;:15;:17::i;:::-;2235:41;;2286:12;2328:6;2336;2311:32;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2311:32:2;;;2301:43;;;;;;2286:58;;2499:4;2488:8;2482:15;2477:2;2467:8;2463:17;2460:1;2452:52;2538:13;;2523:60;;;;;2444;;-1:-1:-1;2538:13:2;;;2523:48;;:60;;2444;;2538:13;;2523:60;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2523:60:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2643:13:2;;2593:64;;;;;:33;;;;;-1:-1:-1;2593:33:2;;-1:-1:-1;2593:64:2;;2627:6;;2635;;2643:13;;;;2593:64;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2593:64:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;2667:15:2;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;2707:15;;;;;;:23;;;;;;;;:30;;;;;;;;2747:19;;;:13;:19;;;;;;:26;;;;-1:-1:-1;2747:26:2;;;;;;2836:8;27:10:-1;;23:18;;;45:23;;2836:19:2;;;;;;;;;;;;;;;;;2953:15;;2870:108;;;;;;2667:30;;2953:15;2870:108;;;;;;;;;;1620:1365;;;;;;;;:::o;1026:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2991:188::-;3084:11;;3044:104;;3084:11;;3070:10;:25;3109:4;3044:104;:12;:104::i;:::-;3158:5;:14;;;;;;;;;;;;;;;2991:188::o;1294:426:76:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:76;;;;1448:255;;;;;;;;;;;;;;;;;1423:291;1294:426;;;:::o;6359:966::-;6462:12;6537:19;6576:5;6559:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6559:23:76;;;;-1:-1:-1;49:4;6688:571:76;6709:5;;6688:571;;6960:9;;6862:3;;;;;6960:6;;6862:3;;6960:9;;;;;;;;;;;;:14;6956:293;;7015:1;7011:5;7141:22;;7148:6;-1:-1:-1;7221:13:76;;6956:293;6688:571;;;-1:-1:-1;;7306:12:76;;;7316:1;7306:12;;;;;;;;;-1:-1:-1;6359:966:76;;;;:::o;780:2881:2:-;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:130;209:20;;234:33;209:20;234:33;;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;399:1;396;389:12;351:2;434:1;451:53;496:7;476:9;451:53;;;441:63;345:175;-1:-1;;;;345:175;527:366;;;648:2;636:9;627:7;623:23;619:32;616:2;;;664:1;661;654:12;616:2;699:1;716:53;761:7;741:9;716:53;;;706:63;;678:97;806:2;824:53;869:7;860:6;849:9;845:22;824:53;;;814:63;;785:98;610:283;;;;;;900:241;;1004:2;992:9;983:7;979:23;975:32;972:2;;;1020:1;1017;1010:12;972:2;1055:1;1072:53;1117:7;1097:9;1072:53;;1148:113;1231:24;1249:5;1231:24;;;1226:3;1219:37;1213:48;;;1268:152;1369:45;1389:24;1407:5;1389:24;;;1369:45;;1427:104;1504:21;1519:5;1504:21;;1538:148;1637:43;1656:23;1673:5;1656:23;;;1637:43;;1693:113;1776:24;1794:5;1776:24;;1813:152;1914:45;1934:24;1952:5;1934:24;;1972:343;;2082:38;2114:5;2082:38;;;2132:70;2195:6;2190:3;2132:70;;;2125:77;;2207:52;2252:6;2247:3;2240:4;2233:5;2229:16;2207:52;;;2280:29;2302:6;2280:29;;;2271:39;;;;2062:253;-1:-1;;;2062:253;2322:356;;2450:38;2482:5;2450:38;;;2500:88;2581:6;2576:3;2500:88;;;2493:95;;2593:52;2638:6;2633:3;2626:4;2619:5;2615:16;2593:52;;;2657:16;;;;;2430:248;-1:-1;;2430:248;3159:383;;3306:75;3377:3;3368:6;3306:75;;;3403:2;3398:3;3394:12;3387:19;;3417:75;3488:3;3479:6;3417:75;;;-1:-1;3514:2;3505:12;;3294:248;-1:-1;;3294:248;3549:244;;3668:75;3739:3;3730:6;3668:75;;;-1:-1;3765:2;3756:12;;3656:137;-1:-1;3656:137;3800:553;;4016:93;4105:3;4096:6;4016:93;;;4009:100;;4120:73;4189:3;4180:6;4120:73;;;4215:1;4210:3;4206:11;4199:18;;4235:93;4324:3;4315:6;4235:93;;;4228:100;3997:356;-1:-1;;;;;3997:356;4360:213;4478:2;4463:18;;4492:71;4467:9;4536:6;4492:71;;4580:435;4754:2;4739:18;;4768:71;4743:9;4812:6;4768:71;;;4850:72;4918:2;4907:9;4903:18;4894:6;4850:72;;;4933;5001:2;4990:9;4986:18;4977:6;4933:72;;5022:312;5162:2;5147:18;;5176:71;5151:9;5220:6;5176:71;;;5258:66;5320:2;5309:9;5305:18;5296:6;5258:66;;;5133:201;;;;;;5341:324;5487:2;5472:18;;5501:71;5476:9;5545:6;5501:71;;;5583:72;5651:2;5640:9;5636:18;5627:6;5583:72;;5672:201;5784:2;5769:18;;5798:65;5773:9;5836:6;5798:65;;5880:213;5998:2;5983:18;;6012:71;5987:9;6056:6;6012:71;;6100:297;6236:2;6250:47;;;6221:18;;6311:76;6221:18;6373:6;6311:76;;6932:121;7019:12;;6990:63;7190:162;7292:19;;;7341:4;7332:14;;7285:67;7685:91;;7747:24;7765:5;7747:24;;7783:85;7849:13;7842:21;;7825:43;7875:144;7947:66;7936:78;;7919:100;8026:72;8088:5;8071:27;8105:121;8178:42;8167:54;;8150:76;8313:268;8378:1;8385:101;8399:6;8396:1;8393:13;8385:101;;;8466:11;;;8460:18;8447:11;;;8440:39;8421:2;8414:10;8385:101;;;8501:6;8498:1;8495:13;8492:2;;;8566:1;8557:6;8552:3;8548:16;8541:27;8492:2;8362:219;;;;;8589:95;;8653:26;8673:5;8852:89;8916:20;8930:5;8916:20;;8948:97;9036:2;9016:14;9032:7;9012:28;;8996:49;9053:94;9127:2;9123:14;;9095:52;9155:117;9224:24;9242:5;9224:24;;;9217:5;9214:35;9204:2;;9263:1;9260;9253:12;9204:2;9198:74;;9279:117;9348:24;9366:5;9348:24;",
292
292
  "source": "/*\n\n Copyright 2021 Dolomite.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../../protocol/lib/Require.sol\";\n\nimport \"../interfaces/IDolomiteAmmFactory.sol\";\n\nimport \"./DolomiteAmmPair.sol\";\n\n\ncontract DolomiteAmmFactory is IDolomiteAmmFactory {\n\n bytes32 internal constant FILE = \"DolomiteAmmFactory\";\n\n address public feeTo;\n address public feeToSetter;\n address public dolomiteMargin;\n address public transferProxy;\n\n mapping(address => mapping(address => address)) public getPair;\n address[] public allPairs;\n mapping(address => bool) public isPairCreated;\n\n event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n constructor(\n address _feeToSetter,\n address _dolomiteMargin,\n address _transferProxy\n ) public {\n feeToSetter = _feeToSetter;\n dolomiteMargin = _dolomiteMargin;\n transferProxy = _transferProxy;\n }\n\n function allPairsLength() external view returns (uint) {\n return allPairs.length;\n }\n\n function createPair(address tokenA, address tokenB) external returns (address pair) {\n Require.that(\n tokenA != tokenB,\n FILE,\n \"identical address\"\n );\n (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n Require.that(\n token0 != address(0) && token1 != address(0),\n FILE,\n \"zero address\"\n );\n Require.that(\n getPair[token0][token1] == address(0),\n FILE,\n \"pair already exists\"\n );\n // single check is sufficient\n bytes memory bytecode = getPairInitCode();\n bytes32 salt = keccak256(abi.encodePacked(token0, token1));\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n pair := create2(0, add(bytecode, 32), mload(bytecode), salt)\n }\n ITransferProxy(transferProxy).setIsCallerTrusted(pair, true);\n IDolomiteAmmPair(pair).initialize(token0, token1, transferProxy);\n getPair[token0][token1] = pair;\n getPair[token1][token0] = pair;\n isPairCreated[pair] = true;\n // populate mapping in the reverse direction\n allPairs.push(pair);\n emit PairCreated(\n token0,\n token1,\n pair,\n allPairs.length\n );\n }\n\n function setFeeTo(address _feeTo) external {\n Require.that(\n msg.sender == feeToSetter,\n FILE,\n \"forbidden\"\n );\n feeTo = _feeTo;\n }\n\n function setFeeToSetter(address _feeToSetter) external {\n Require.that(\n msg.sender == feeToSetter,\n FILE,\n \"forbidden\"\n );\n feeToSetter = _feeToSetter;\n }\n\n function getPairInitCode() public pure returns (bytes memory) {\n return type(DolomiteAmmPair).creationCode;\n }\n\n function getPairInitCodeHash() public pure returns (bytes32) {\n return keccak256(type(DolomiteAmmPair).creationCode);\n }\n}\n",
293
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmFactory.sol",
293
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmFactory.sol",
294
294
  "ast": {
295
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmFactory.sol",
295
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmFactory.sol",
296
296
  "exportedSymbols": {
297
297
  "DolomiteAmmFactory": [
298
298
  724
@@ -322,7 +322,7 @@
322
322
  "src": "620:33:2"
323
323
  },
324
324
  {
325
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
325
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
326
326
  "file": "../../protocol/lib/Require.sol",
327
327
  "id": 450,
328
328
  "nodeType": "ImportDirective",
@@ -333,7 +333,7 @@
333
333
  "unitAlias": ""
334
334
  },
335
335
  {
336
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmFactory.sol",
336
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmFactory.sol",
337
337
  "file": "../interfaces/IDolomiteAmmFactory.sol",
338
338
  "id": 451,
339
339
  "nodeType": "ImportDirective",
@@ -344,7 +344,7 @@
344
344
  "unitAlias": ""
345
345
  },
346
346
  {
347
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmPair.sol",
347
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmPair.sol",
348
348
  "file": "./DolomiteAmmPair.sol",
349
349
  "id": 452,
350
350
  "nodeType": "ImportDirective",
@@ -3993,7 +3993,7 @@
3993
3993
  "src": "595:3067:2"
3994
3994
  },
3995
3995
  "legacyAST": {
3996
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmFactory.sol",
3996
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmFactory.sol",
3997
3997
  "exportedSymbols": {
3998
3998
  "DolomiteAmmFactory": [
3999
3999
  724
@@ -4023,7 +4023,7 @@
4023
4023
  "src": "620:33:2"
4024
4024
  },
4025
4025
  {
4026
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
4026
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
4027
4027
  "file": "../../protocol/lib/Require.sol",
4028
4028
  "id": 450,
4029
4029
  "nodeType": "ImportDirective",
@@ -4034,7 +4034,7 @@
4034
4034
  "unitAlias": ""
4035
4035
  },
4036
4036
  {
4037
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmFactory.sol",
4037
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmFactory.sol",
4038
4038
  "file": "../interfaces/IDolomiteAmmFactory.sol",
4039
4039
  "id": 451,
4040
4040
  "nodeType": "ImportDirective",
@@ -4045,7 +4045,7 @@
4045
4045
  "unitAlias": ""
4046
4046
  },
4047
4047
  {
4048
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmPair.sol",
4048
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmPair.sol",
4049
4049
  "file": "./DolomiteAmmPair.sol",
4050
4050
  "id": 452,
4051
4051
  "nodeType": "ImportDirective",
@@ -7734,49 +7734,11 @@
7734
7734
  },
7735
7735
  "links": {},
7736
7736
  "address": "0x7414e38377D6DAf6045626EC8a8ABB8a1BC4B97a",
7737
- "transactionHash": "0x500554c07850b42575e5abe22a14b376e22284608fb857a1cba800bf39156ddb"
7738
- },
7739
- "80001": {
7740
- "events": {
7741
- "0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9": {
7742
- "anonymous": false,
7743
- "inputs": [
7744
- {
7745
- "indexed": true,
7746
- "internalType": "address",
7747
- "name": "token0",
7748
- "type": "address"
7749
- },
7750
- {
7751
- "indexed": true,
7752
- "internalType": "address",
7753
- "name": "token1",
7754
- "type": "address"
7755
- },
7756
- {
7757
- "indexed": false,
7758
- "internalType": "address",
7759
- "name": "pair",
7760
- "type": "address"
7761
- },
7762
- {
7763
- "indexed": false,
7764
- "internalType": "uint256",
7765
- "name": "",
7766
- "type": "uint256"
7767
- }
7768
- ],
7769
- "name": "PairCreated",
7770
- "type": "event"
7771
- }
7772
- },
7773
- "links": {},
7774
- "address": "0x790C61eA35C6480f46EBCFff390e2dB5745B4Dd1",
7775
- "transactionHash": "0x391551128e2152dc04367b2e7cce1d7b412c6461339037fdc8530341d6572c54"
7737
+ "transactionHash": "0x988b4d1ffe2576d87b457798c1a4c4c106f55128715cbecb420aac9256537627"
7776
7738
  }
7777
7739
  },
7778
7740
  "schemaVersion": "3.0.23",
7779
- "updatedAt": "2022-01-25T06:59:14.095Z",
7741
+ "updatedAt": "2022-01-29T21:54:40.450Z",
7780
7742
  "devdoc": {
7781
7743
  "methods": {}
7782
7744
  },