@pendle/core-v2 6.6.0 → 6.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/build/artifacts/contracts/cross-chain/FixedPricePTAMMV2.sol/FixedPricePTAMMV2.dbg.json +4 -0
  2. package/build/artifacts/contracts/cross-chain/FixedPricePTAMMV2.sol/FixedPricePTAMMV2.json +766 -0
  3. package/build/artifacts/contracts/cross-chain/PendleSwapHelper.sol/PendleSwapHelper.dbg.json +4 -0
  4. package/build/artifacts/contracts/cross-chain/PendleSwapHelper.sol/PendleSwapHelper.json +99 -0
  5. package/build/artifacts/contracts/cross-chain/funder/BridgeFunder.sol/BridgeFunder.dbg.json +4 -0
  6. package/build/artifacts/contracts/cross-chain/funder/BridgeFunder.sol/BridgeFunder.json +210 -0
  7. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol/OFTAdapterAltImpl.dbg.json +4 -0
  8. package/build/artifacts/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol/OFTAdapterAltImpl.json +1294 -0
  9. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol/PendleBridgedPrincipalTokenAlt.dbg.json +4 -0
  10. package/build/artifacts/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol/PendleBridgedPrincipalTokenAlt.json +1602 -0
  11. package/build/artifacts/contracts/interfaces/IMarketSweed.sol/IMarketSweed.dbg.json +1 -1
  12. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
  13. package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
  14. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  15. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  16. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
  17. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  18. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
  19. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
  20. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
  21. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  22. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +0 -88
  23. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
  24. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
  25. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
  26. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
  27. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
  28. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
  29. package/build/artifacts/contracts/interfaces/IPBridgeFunder.sol/IPBridgeFunder.dbg.json +4 -0
  30. package/build/artifacts/contracts/interfaces/IPBridgeFunder.sol/IPBridgeFunder.json +85 -0
  31. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMMV2.sol/IPFixedPricePTAMMSwapCallback.dbg.json +4 -0
  32. package/build/artifacts/contracts/interfaces/{IPFixedPricePTAMM.sol → IPFixedPricePTAMMV2.sol}/IPFixedPricePTAMMSwapCallback.json +1 -1
  33. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMMV2.sol/IPFixedPricePTAMMV2.dbg.json +4 -0
  34. package/build/artifacts/contracts/interfaces/{IPFixedPricePTAMM.sol/IPFixedPricePTAMM.json → IPFixedPricePTAMMV2.sol/IPFixedPricePTAMMV2.json} +285 -93
  35. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
  36. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
  37. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.json +156 -0
  38. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
  39. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  40. package/build/artifacts/contracts/interfaces/IPSwapHelper.sol/IPSwapHelper.dbg.json +4 -0
  41. package/build/artifacts/contracts/interfaces/{IPActionCrossChain.sol/IPActionCrossChain.json → IPSwapHelper.sol/IPSwapHelper.json} +2 -2
  42. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
  43. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.json +2 -2
  44. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  45. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.json +258 -1
  46. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  47. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +265 -3
  48. package/build/artifacts/contracts/limit/helpers/MintSyHelper.sol/MintSyHelper.dbg.json +4 -0
  49. package/build/artifacts/contracts/limit/helpers/MintSyHelper.sol/MintSyHelper.json +156 -0
  50. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.dbg.json +1 -1
  51. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.json +2 -2
  52. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.dbg.json +1 -1
  53. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.json +2 -2
  54. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.dbg.json +1 -1
  55. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.json +2 -2
  56. package/build/artifacts/contracts/offchain-helpers/PendleFeeSetter.sol/PendleFeeSetter.dbg.json +1 -1
  57. package/build/artifacts/contracts/offchain-helpers/PendleFeeSetter.sol/PendleFeeSetter.json +33 -2
  58. package/build/artifacts/contracts/offchain-helpers/PendleProxyAdmin.sol/PendleProxyAdmin.dbg.json +4 -0
  59. package/build/artifacts/contracts/offchain-helpers/PendleProxyAdmin.sol/PendleProxyAdmin.json +171 -0
  60. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.dbg.json +1 -1
  61. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.json +2 -2
  62. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  63. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
  64. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.dbg.json +1 -1
  65. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.json +2 -2
  66. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  67. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  68. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  69. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  70. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  71. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  72. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  73. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  74. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  75. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  76. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  77. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  78. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  79. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  80. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
  81. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.json +2 -2
  82. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
  83. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.json +2 -2
  84. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  85. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
  86. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -2
  87. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.dbg.json +1 -1
  88. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.json +2 -2
  89. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
  90. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -2
  91. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
  92. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -2
  93. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
  94. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -2
  95. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
  96. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -2
  97. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
  98. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -2
  99. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
  100. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
  101. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  102. package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
  103. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  104. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  105. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
  106. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
  107. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
  108. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
  109. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
  110. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
  111. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
  112. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
  113. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.json +2 -2
  114. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
  115. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.json +2 -2
  116. package/contracts/cross-chain/FixedPricePTAMMV2.sol +162 -0
  117. package/contracts/{router/ActionCrossChain.sol → cross-chain/PendleSwapHelper.sol} +11 -7
  118. package/contracts/cross-chain/funder/BridgeFunder.sol +61 -0
  119. package/contracts/cross-chain/oftImpl/hub/OFTAdapterAltImpl.sol +55 -0
  120. package/contracts/cross-chain/oftImpl/spoke/PendleBridgedPrincipalTokenAlt.sol +64 -0
  121. package/contracts/interfaces/IPAllActionTypeV3.sol +1 -0
  122. package/contracts/interfaces/IPAllActionV3.sol +1 -3
  123. package/contracts/interfaces/IPBridgeFunder.sol +17 -0
  124. package/contracts/interfaces/IPFixedPricePTAMMV2.sol +58 -0
  125. package/contracts/interfaces/IPLimitRouter.sol +22 -0
  126. package/contracts/interfaces/{IPActionCrossChain.sol → IPSwapHelper.sol} +1 -1
  127. package/contracts/limit/LimitRouterBase.sol +101 -47
  128. package/contracts/limit/PendleLimitRouter.sol +1 -1
  129. package/contracts/limit/helpers/MintSyHelper.sol +114 -0
  130. package/contracts/offchain-helpers/PendleFeeSetter.sol +19 -1
  131. package/contracts/offchain-helpers/PendleProxyAdmin.sol +11 -0
  132. package/contracts/router/base/ActionBase.sol +16 -2
  133. package/deployments/1-core.json +1 -0
  134. package/deployments/1-offchain-helper.json +1 -1
  135. package/deployments/10-core.json +1 -0
  136. package/deployments/10-offchain-helper.json +1 -1
  137. package/deployments/130-core.json +1 -0
  138. package/deployments/143-core.json +1 -0
  139. package/deployments/146-core.json +1 -0
  140. package/deployments/146-offchain-helper.json +1 -1
  141. package/deployments/42161-core.json +1 -0
  142. package/deployments/42161-offchain-helper.json +1 -1
  143. package/deployments/4217-core.json +14 -0
  144. package/deployments/43114-core.json +1 -0
  145. package/deployments/5000-core.json +1 -0
  146. package/deployments/5000-offchain-helper.json +1 -1
  147. package/deployments/56-core.json +1 -0
  148. package/deployments/56-offchain-helper.json +1 -1
  149. package/deployments/57073-core.json +1 -0
  150. package/deployments/747474-core.json +1 -0
  151. package/deployments/80094-core.json +1 -0
  152. package/deployments/80094-offchain-helper.json +1 -1
  153. package/deployments/8453-core.json +1 -0
  154. package/deployments/8453-offchain-helper.json +1 -1
  155. package/deployments/9745-core.json +1 -0
  156. package/deployments/9745-offchain-helper.json +1 -1
  157. package/deployments/999-core.json +1 -0
  158. package/deployments/999-offchain-helper.json +1 -1
  159. package/package.json +1 -1
  160. package/typechain-types/BridgeFunder.ts +344 -0
  161. package/typechain-types/FixedPricePTAMMV2.ts +1104 -0
  162. package/typechain-types/IPAllActionV3.ts +0 -54
  163. package/typechain-types/IPBridgeFunder.ts +165 -0
  164. package/typechain-types/IPFixedPricePTAMMV2.ts +864 -0
  165. package/typechain-types/IPLimitRouter.ts +104 -0
  166. package/typechain-types/IPSwapHelper.ts +161 -0
  167. package/typechain-types/LimitRouterBase.ts +233 -5
  168. package/typechain-types/MintSyHelper.ts +230 -0
  169. package/typechain-types/OFTAdapterAltImpl.ts +1350 -0
  170. package/typechain-types/PendleBridgedPrincipalTokenAlt.ts +1708 -0
  171. package/typechain-types/PendleFeeSetter.ts +53 -0
  172. package/typechain-types/PendleLimitRouter.ts +233 -5
  173. package/typechain-types/PendleProxyAdmin.ts +341 -0
  174. package/typechain-types/PendleSwapHelper.ts +161 -0
  175. package/typechain-types/ProxyAdmin.ts +341 -0
  176. package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
  177. package/typechain-types/factories/ActionCallbackV3__factory.ts +1 -1
  178. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  179. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  180. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  181. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  182. package/typechain-types/factories/ActionMiscV3__factory.ts +1 -1
  183. package/typechain-types/factories/ActionSimple__factory.ts +1 -1
  184. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  185. package/typechain-types/factories/ActionStorageV4__factory.ts +1 -1
  186. package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
  187. package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
  188. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  189. package/typechain-types/factories/BridgeFunder__factory.ts +265 -0
  190. package/typechain-types/factories/ExpiredLpPtRedeemer__factory.ts +1 -1
  191. package/typechain-types/factories/FixedPricePTAMMV2__factory.ts +824 -0
  192. package/typechain-types/factories/IPAllActionV3__factory.ts +0 -88
  193. package/typechain-types/factories/IPBridgeFunder__factory.ts +100 -0
  194. package/typechain-types/factories/IPFixedPricePTAMMV2__factory.ts +621 -0
  195. package/typechain-types/factories/IPLimitRouter__factory.ts +156 -0
  196. package/typechain-types/factories/IPSwapHelper__factory.ts +111 -0
  197. package/typechain-types/factories/LimitBackendHelperV2__factory.ts +1 -1
  198. package/typechain-types/factories/LimitRouterBase__factory.ts +258 -1
  199. package/typechain-types/factories/MarketSweed__factory.ts +1 -1
  200. package/typechain-types/factories/MintSyHelper__factory.ts +168 -0
  201. package/typechain-types/factories/OFTAdapterAltImpl__factory.ts +1363 -0
  202. package/typechain-types/factories/PendleBridgedPrincipalTokenAlt__factory.ts +1702 -0
  203. package/typechain-types/factories/PendleCommonPoolDeployHelperV2__factory.ts +1 -1
  204. package/typechain-types/factories/PendleFeeSetter__factory.ts +36 -1
  205. package/typechain-types/factories/PendleLimitRouter__factory.ts +268 -3
  206. package/typechain-types/factories/PendlePoolDeployHelperV2__factory.ts +1 -1
  207. package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
  208. package/typechain-types/factories/PendleProxyAdmin__factory.ts +229 -0
  209. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  210. package/typechain-types/factories/PendleRouterV4__factory.ts +1 -1
  211. package/typechain-types/factories/PendleSwapHelper__factory.ts +152 -0
  212. package/typechain-types/factories/ProxyAdmin__factory.ts +210 -0
  213. package/typechain-types/factories/Reflector__factory.ts +1 -1
  214. package/typechain-types/hardhat.d.ts +108 -0
  215. package/typechain-types/index.ts +22 -0
  216. package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.dbg.json +0 -4
  217. package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.json +0 -667
  218. package/build/artifacts/contracts/interfaces/IPActionCrossChain.sol/IPActionCrossChain.dbg.json +0 -4
  219. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMM.dbg.json +0 -4
  220. package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMMSwapCallback.dbg.json +0 -4
  221. package/build/artifacts/contracts/router/ActionCrossChain.sol/ActionCrossChain.dbg.json +0 -4
  222. package/build/artifacts/contracts/router/ActionCrossChain.sol/ActionCrossChain.json +0 -99
  223. package/contracts/cross-chain/FixedPricePTAMM.sol +0 -200
  224. package/contracts/interfaces/IPFixedPricePTAMM.sol +0 -69
@@ -9,6 +9,11 @@
9
9
  "internalType": "address",
10
10
  "name": "_WNATIVE",
11
11
  "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_ROUTER",
16
+ "type": "address"
12
17
  }
13
18
  ],
14
19
  "stateMutability": "nonpayable",
@@ -68,6 +73,25 @@
68
73
  "name": "LnFeeRateRootsSet",
69
74
  "type": "event"
70
75
  },
76
+ {
77
+ "anonymous": false,
78
+ "inputs": [
79
+ {
80
+ "indexed": false,
81
+ "internalType": "address",
82
+ "name": "signer1",
83
+ "type": "address"
84
+ },
85
+ {
86
+ "indexed": false,
87
+ "internalType": "address",
88
+ "name": "signer2",
89
+ "type": "address"
90
+ }
91
+ ],
92
+ "name": "MintSySignersSet",
93
+ "type": "event"
94
+ },
71
95
  {
72
96
  "anonymous": false,
73
97
  "inputs": [
@@ -360,6 +384,19 @@
360
384
  "stateMutability": "view",
361
385
  "type": "function"
362
386
  },
387
+ {
388
+ "inputs": [],
389
+ "name": "ROUTER",
390
+ "outputs": [
391
+ {
392
+ "internalType": "address",
393
+ "name": "",
394
+ "type": "address"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
363
400
  {
364
401
  "inputs": [],
365
402
  "name": "WNATIVE",
@@ -793,7 +830,7 @@
793
830
  },
794
831
  {
795
832
  "internalType": "bytes",
796
- "name": "",
833
+ "name": "optData",
797
834
  "type": "bytes"
798
835
  },
799
836
  {
@@ -860,6 +897,187 @@
860
897
  "stateMutability": "view",
861
898
  "type": "function"
862
899
  },
900
+ {
901
+ "inputs": [
902
+ {
903
+ "components": [
904
+ {
905
+ "components": [
906
+ {
907
+ "internalType": "uint256",
908
+ "name": "salt",
909
+ "type": "uint256"
910
+ },
911
+ {
912
+ "internalType": "uint256",
913
+ "name": "expiry",
914
+ "type": "uint256"
915
+ },
916
+ {
917
+ "internalType": "uint256",
918
+ "name": "nonce",
919
+ "type": "uint256"
920
+ },
921
+ {
922
+ "internalType": "enum IPLimitOrderType.OrderType",
923
+ "name": "orderType",
924
+ "type": "uint8"
925
+ },
926
+ {
927
+ "internalType": "address",
928
+ "name": "token",
929
+ "type": "address"
930
+ },
931
+ {
932
+ "internalType": "address",
933
+ "name": "YT",
934
+ "type": "address"
935
+ },
936
+ {
937
+ "internalType": "address",
938
+ "name": "maker",
939
+ "type": "address"
940
+ },
941
+ {
942
+ "internalType": "address",
943
+ "name": "receiver",
944
+ "type": "address"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "makingAmount",
949
+ "type": "uint256"
950
+ },
951
+ {
952
+ "internalType": "uint256",
953
+ "name": "lnImpliedRate",
954
+ "type": "uint256"
955
+ },
956
+ {
957
+ "internalType": "uint256",
958
+ "name": "failSafeRate",
959
+ "type": "uint256"
960
+ },
961
+ {
962
+ "internalType": "bytes",
963
+ "name": "permit",
964
+ "type": "bytes"
965
+ }
966
+ ],
967
+ "internalType": "struct Order",
968
+ "name": "order",
969
+ "type": "tuple"
970
+ },
971
+ {
972
+ "internalType": "bytes",
973
+ "name": "signature",
974
+ "type": "bytes"
975
+ },
976
+ {
977
+ "internalType": "uint256",
978
+ "name": "makingAmount",
979
+ "type": "uint256"
980
+ }
981
+ ],
982
+ "internalType": "struct FillOrderParams[]",
983
+ "name": "params",
984
+ "type": "tuple[]"
985
+ }
986
+ ],
987
+ "name": "hashFillParams",
988
+ "outputs": [
989
+ {
990
+ "internalType": "bytes32",
991
+ "name": "",
992
+ "type": "bytes32"
993
+ }
994
+ ],
995
+ "stateMutability": "pure",
996
+ "type": "function"
997
+ },
998
+ {
999
+ "inputs": [
1000
+ {
1001
+ "components": [
1002
+ {
1003
+ "internalType": "address",
1004
+ "name": "tokenIn",
1005
+ "type": "address"
1006
+ },
1007
+ {
1008
+ "internalType": "uint256",
1009
+ "name": "netTokenIn",
1010
+ "type": "uint256"
1011
+ },
1012
+ {
1013
+ "internalType": "address",
1014
+ "name": "tokenMintSy",
1015
+ "type": "address"
1016
+ },
1017
+ {
1018
+ "internalType": "address",
1019
+ "name": "pendleSwap",
1020
+ "type": "address"
1021
+ },
1022
+ {
1023
+ "components": [
1024
+ {
1025
+ "internalType": "enum SwapType",
1026
+ "name": "swapType",
1027
+ "type": "uint8"
1028
+ },
1029
+ {
1030
+ "internalType": "address",
1031
+ "name": "extRouter",
1032
+ "type": "address"
1033
+ },
1034
+ {
1035
+ "internalType": "bytes",
1036
+ "name": "extCalldata",
1037
+ "type": "bytes"
1038
+ },
1039
+ {
1040
+ "internalType": "bool",
1041
+ "name": "needScale",
1042
+ "type": "bool"
1043
+ }
1044
+ ],
1045
+ "internalType": "struct SwapData",
1046
+ "name": "swapData",
1047
+ "type": "tuple"
1048
+ }
1049
+ ],
1050
+ "internalType": "struct TokenInput[]",
1051
+ "name": "inps",
1052
+ "type": "tuple[]"
1053
+ },
1054
+ {
1055
+ "internalType": "uint256[]",
1056
+ "name": "minSyOuts",
1057
+ "type": "uint256[]"
1058
+ },
1059
+ {
1060
+ "internalType": "uint256",
1061
+ "name": "expiry",
1062
+ "type": "uint256"
1063
+ },
1064
+ {
1065
+ "internalType": "bytes32",
1066
+ "name": "fillParamsHash",
1067
+ "type": "bytes32"
1068
+ }
1069
+ ],
1070
+ "name": "hashMintSyPayload",
1071
+ "outputs": [
1072
+ {
1073
+ "internalType": "bytes32",
1074
+ "name": "",
1075
+ "type": "bytes32"
1076
+ }
1077
+ ],
1078
+ "stateMutability": "view",
1079
+ "type": "function"
1080
+ },
863
1081
  {
864
1082
  "inputs": [
865
1083
  {
@@ -966,6 +1184,32 @@
966
1184
  "stateMutability": "nonpayable",
967
1185
  "type": "function"
968
1186
  },
1187
+ {
1188
+ "inputs": [],
1189
+ "name": "mintSySigner1",
1190
+ "outputs": [
1191
+ {
1192
+ "internalType": "address",
1193
+ "name": "",
1194
+ "type": "address"
1195
+ }
1196
+ ],
1197
+ "stateMutability": "view",
1198
+ "type": "function"
1199
+ },
1200
+ {
1201
+ "inputs": [],
1202
+ "name": "mintSySigner2",
1203
+ "outputs": [
1204
+ {
1205
+ "internalType": "address",
1206
+ "name": "",
1207
+ "type": "address"
1208
+ }
1209
+ ],
1210
+ "stateMutability": "view",
1211
+ "type": "function"
1212
+ },
969
1213
  {
970
1214
  "inputs": [
971
1215
  {
@@ -1269,6 +1513,24 @@
1269
1513
  "stateMutability": "nonpayable",
1270
1514
  "type": "function"
1271
1515
  },
1516
+ {
1517
+ "inputs": [
1518
+ {
1519
+ "internalType": "address",
1520
+ "name": "_signer1",
1521
+ "type": "address"
1522
+ },
1523
+ {
1524
+ "internalType": "address",
1525
+ "name": "_signer2",
1526
+ "type": "address"
1527
+ }
1528
+ ],
1529
+ "name": "setMintSySigners",
1530
+ "outputs": [],
1531
+ "stateMutability": "nonpayable",
1532
+ "type": "function"
1533
+ },
1272
1534
  {
1273
1535
  "inputs": [
1274
1536
  {
@@ -1315,8 +1577,8 @@
1315
1577
  "type": "receive"
1316
1578
  }
1317
1579
  ],
1318
- "bytecode": "0x60a03461014157601f61636338819003918201601f19168301916001600160401b038311848410176101455780849260209460405283398101031261014157516001600160a01b03811681036101415760805260015460ff8160a81c166100ec5760ff808260a01c16036100a9575b604051616209908161015a823960805181818161144401528181614d2801528181614d9701528181614e17015281816150cc015261532d0152f35b60ff60a01b191660ff60a01b1760015560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f61006e565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063078dfbe7146101c95780630b4e3350146101c45780630c0b8c9c146101bf5780632545e4bd146101ba57806326bbbdf5146101b557806332707597146101b057806335ee3ffc146101ab5780633644e515146101a657806346904840146101a1578063485cc9551461019c5780634e71e0c8146101975780635413fba7146101925780636122b1731461018d57806370ae92d21461018857806372c244a81461018357806384b0196e1461017e5780638da5cb5b1461017957806397cf58b014610174578063b381cf401461016f578063bd61951d1461016a578063c36c434014610165578063c53a029214610160578063cf6fc6e31461015b578063d74a3eca14610156578063e30c397814610151578063e74b981b1461014c5763f1d4deb30361000e576118a3565b611817565b6117c6565b6116c7565b61165c565b6115c8565b611597565b611468565b6113fa565b611321565b611274565b6111a3565b61106f565b611008565b610e59565b610d8e565b610caa565b610b0b565b610aba565b610a82565b610a57565b6109fe565b6109e8565b61092b565b610846565b6106a8565b610221565b73ffffffffffffffffffffffffffffffffffffffff8116036101ec57565b5f80fd5b602435906101fd826101ce565b565b35906101fd826101ce565b801515036101ec57565b604435906101fd8261020a565b346101ec5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043561025c816101ce565b602435906102698261020a565b604435916102768361020a565b61029873ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b156103f45773ffffffffffffffffffffffffffffffffffffffff8116918215908115916103ec575b501561038e576103619173ffffffffffffffffffffffffffffffffffffffff6102fd5f5473ffffffffffffffffffffffffffffffffffffffff1690565b167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6100187fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90505f6102c0565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761048257604052565b610439565b6040810190811067ffffffffffffffff82111761048257604052565b610160810190811067ffffffffffffffff82111761048257604052565b610180810190811067ffffffffffffffff82111761048257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761048257604052565b604051906101fd610180836104dd565b604051906101fd60a0836104dd565b604051906101fd6040836104dd565b359060048210156101ec57565b67ffffffffffffffff811161048257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156101ec578035906105aa82610559565b926105b860405194856104dd565b828452602083830101116101ec57815f926020809301838601378301015290565b919091610180818403126101ec576105ef61051e565b928135845260208201356020850152604082013560408501526106146060830161054c565b6060850152610625608083016101ff565b608085015261063660a083016101ff565b60a085015261064760c083016101ff565b60c085015261065860e083016101ff565b60e085015261010082013561010085015261012082013561012085015261014082013561014085015261016082013567ffffffffffffffff81116101ec576106a09201610593565b610160830152565b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec576106f79036906004016105d9565b60243567ffffffffffffffff81116101ec5760609161071d610723923690600401610593565b90611a9c565b9060405192835260208301526040820152f35b67ffffffffffffffff81116104825760051b60200190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101ec576004359067ffffffffffffffff82116101ec57806023830112156101ec5781600401356107a481610736565b926107b260405194856104dd565b8184526024602085019260051b8201019283116101ec57602401905b8282106107db5750505090565b81358152602091820191016107ce565b90602080835192838152019201905f5b8181106108085750505090565b82518452602093840193909201916001016107fb565b9091610835610843936040845260408401906107eb565b9160208184039101526107eb565b90565b346101ec5761085c6108573661074e565b612479565b5f5b8251811015610916576108718184611ba2565b51156108b857807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108a560019386611ba2565b51016108b18286611ba2565b520161085e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20556e6b6e6f776e206f7264657200000000000000000000000000006044820152fd5b50906109276040519283928361081e565b0390f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602061097060043561096b816101ce565b611bb6565b604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101ec576004359067ffffffffffffffff82116101ec577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610180920301126101ec5760040190565b346101ec576100186109f936610978565b612049565b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57610970610a5260209236906004016105d9565b612366565b346101ec57610a686108573661074e565b906109276040519283928361081e565b5f9103126101ec57565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760206109706138c5565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff60cb5416604051908152f35b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57600435610b46816101ce565b610bc9602435610b55816101ce565b60015492610b7b60ff60a886901c161580958196610c98575b8115610c75575b50612538565b83610bc0740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff6001541617600155565b610c2b576125c3565b610bcf57005b610bfc7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff60015416600155565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b610c7075010000000000000000000000000000000000000000007fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff6001541617600155565b6125c3565b303b15915081610c87575b505f610b75565b60a01c60ff1660011490505f610c80565b600160a082901c60ff16109150610b6e565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff60015416803303610d3057806103619173ffffffffffffffffffffffffffffffffffffffff6102fd5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346101ec57610018610d9f36610978565b612800565b9181601f840112156101ec5782359167ffffffffffffffff83116101ec57602083818601950101116101ec57565b5f5b838110610de35750505f910152565b8181015183820152602001610dd4565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610e2f81518092818752878088019101610dd2565b0116010190565b909260809261084395948352602083015260408201528160608201520190610df3565b346101ec5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57366023820112156101ec578060040135610eb381610736565b91610ec160405193846104dd565b8183526024602084019260051b820101903682116101ec5760248101925b828410610f545784610eef6101f0565b906044359060643567ffffffffffffffff81116101ec57610f14903690600401610da4565b50506084359167ffffffffffffffff83116101ec5761092793610f3e610f44943690600401610593565b926128dc565b9060409492945194859485610e36565b833567ffffffffffffffff81116101ec57820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126101ec5760405191610fa083610466565b602482013567ffffffffffffffff81116101ec57610fc490602436918501016105d9565b835260448201359267ffffffffffffffff84116101ec57606460209493610ff2869560243691840101610593565b8584015201356040820152815201930192610edf565b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff600435611058816101ce565b165f526066602052602060405f2054604051908152f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043560ff81168091036101ec57335f52606660205260405f20549080820180921161111957335f5260666020528160405f20558103908082116111195760408051928352602083019190915233917fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191819081015b0390a2005b611df7565b919361118461084396949561117673ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190610df3565b908582036040870152610df3565b9460608401521660808201525f60a082015260c08184039101526107eb565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57600254158061126a575b1561120c576111e8613728565b6111f06137fb565b906109276111fc61240f565b604051938493309146918661111e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50600354156111db565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b9080601f830112156101ec5781356112db81610736565b926112e960405194856104dd565b81845260208085019260051b8201019283116101ec57602001905b8282106113115750505090565b8135815260209182019101611304565b346101ec5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57366023820112156101ec5780600401359061137c82610736565b9161138a60405193846104dd565b8083526024602084019160051b830101913683116101ec57602401905b8282106113e0576024358467ffffffffffffffff82116101ec576113d26100189236906004016112c4565b6113da610214565b916129ca565b6020809183356113ef816101ce565b8152019101906113a7565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043561149e816101ce565b60243567ffffffffffffffff81116101ec575f916114c183923690600401610da4565b90816040519283928337810184815203915af46114dc612c93565b906115216040519283927f1934afc800000000000000000000000000000000000000000000000000000000845215156004840152604060248401526044830190610df3565b0390fd5b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101ec5760043567ffffffffffffffff81116101ec5760040182601f820112156101ec5780359267ffffffffffffffff84116101ec576020808301928560051b0101116101ec579190565b346101ec576115a536611525565b905f5b8281106115b157005b806115c26109f96001938686612cc2565b016115a8565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57335f52606660205260405f205460018101808211611119576111147fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191335f5260666020528060405f205560405191829133958360209093929193604081019481520152565b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec576020600435611699816101ce565b73ffffffffffffffffffffffffffffffffffffffff60243591165f526066825260405f205414604051908152f35b346101ec576116d536611525565b906116f873ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b5f5b82811061170357005b806117116001928585612d02565b355f5260cd6020528161173a60405f205460801c6fffffffffffffffffffffffffffffffff1690565b146117c15761178a61175f611750838787612d02565b355f5260cd60205260405f2090565b7001000000000000000000000000000000006fffffffffffffffffffffffffffffffff825416179055565b611795818585612d02565b357f7e764b5c87bad409a763c11635251284e519d7bbd042eef277b3529e212c25465f80a25b016116fa565b6117bb565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff600435611867816101ce565b611875825f541633146118d4565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb555f80f35b346101ec576118b136611525565b905f5b8281106118bd57005b806118ce610d9f6001938686612cc2565b016118b4565b156118db57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61195b73ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b73ffffffffffffffffffffffffffffffffffffffff8116908115801590611a30575b1561038e57611a039173ffffffffffffffffffffffffffffffffffffffff805f5416167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6101fd7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b505f61197d565b15611a3e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20626164207369676e617475726500000000000000000000000000006044820152fd5b90916fffffffffffffffffffffffffffffffff611ab883612366565b93845f5260cd60205260405f2093828080602060405198611ad88a610487565b5498828a16998a825260801c9182910152169616951680155f14611b375750611b2d611b286101009388611b2360c086015173ffffffffffffffffffffffffffffffffffffffff1690565b612d62565b611a37565b0151935b93921690565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91500193611b31565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115611b9d5760200190565b611b63565b8051821015611b9d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2054908115611be157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20666565206e6f7420736574000000000000000000000000000000006044820152fd5b35610843816101ce565b15611c5057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a204163636573732064656e69656400000000000000000000000000006044820152fd5b15611cb557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20696e76616c6964206e6f6e636500000000000000000000000000006044820152fd5b908160209103126101ec575190565b6040513d5f823e3d90fd5b15611d3457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20696e76616c696420657870697279000000000000000000000000006044820152fd5b15611d9957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20616c726561647920657869737400000000000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b906001820180921161111957565b9190820180921161111957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60041115611e7657565b611e3f565b906004821015611e765752565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101ec57016020813591019167ffffffffffffffff82116101ec5781360383136101ec57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6101a06120386108439360208452803560208501526020810135604085015260408101356060850152611f58611f4e6060830161054c565b6080860190611e7b565b611f84611f67608083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660a0860152565b611fb0611f9360a083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152565b611fdc611fbf60c083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660e0860152565b612009611feb60e083016101ff565b73ffffffffffffffffffffffffffffffffffffffff16610100860152565b610100810135610120850152610120810135610140850152610140810135610160850152610160810190611e88565b919092610180808201520191611ed8565b6120b660c0820161207961205c82611c3f565b73ffffffffffffffffffffffffffffffffffffffff163314611c49565b6120ae61208a604085013592611c3f565b73ffffffffffffffffffffffffffffffffffffffff165f52606660205260405f2090565b541115611cae565b602081013580421090816121b5575b506120cf90611d2d565b7fdc3f8d38b05347fcb135fa64908d456029c6fcb974c0b823d45e1424df6ef0d56121b0612100610a5236856105d9565b926121386fffffffffffffffffffffffffffffffff61213161212a875f5260cd60205260405f2090565b5460801c90565b1615611d92565b6121a461215161214c610100840135611e24565b612e6d565b612163865f5260cd60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b60405191829182611f16565b0390a2565b6004915060206121e66121cd6121cd60a08701611c3f565b73ffffffffffffffffffffffffffffffffffffffff1690565b604051938480927fe184c9be0000000000000000000000000000000000000000000000000000000082525afa90811561225d576120cf925f9261222c575b5010906120c5565b61224f91925060203d602011612256575b61224781836104dd565b810190611d13565b905f612224565b503d61223d565b611d22565b61018090939291936101406101a08201957f22742a2f8610a2d0e945db84f408aacc9d3081f99974bc30b023966fa2fd593183528051602084015260208101516040840152604081015160608401526122c360608201516080850190611e7b565b608081015173ffffffffffffffffffffffffffffffffffffffff1660a084015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c084015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e084015260e081015173ffffffffffffffffffffffffffffffffffffffff166101008401526101008101516101208401526101208101518284015201516101608201520152565b610843905f61014060405161237a816104a3565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015201526123db61240761016083015160208151910120604051928391602083019586612262565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826104dd565b519020612e99565b6040519061241e6020836104dd565b5f808352366020840137565b9061243482610736565b61244160405191826104dd565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061246f8294610736565b0190602036910137565b8051916124858361242a565b9261248f8161242a565b925f5b82811061249e57505050565b806124ab60019284611ba2565b515f5260cd6020526fffffffffffffffffffffffffffffffff60405f2061251b612506836020604051946124de86610487565b54948286169586825260801c918291015216926fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b612525848a611ba2565b52166125318289611ba2565b5201612492565b1561253f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b6125d460ff60015460a81c16612eda565b5f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556040805161260b82826104dd565b601b81527f50656e646c65204c696d6974204f726465722050726f746f636f6c00000000006020820152612641825192836104dd565b600182527f3100000000000000000000000000000000000000000000000000000000000000602083015261268560ff60015460a81c1661268081612eda565b612eda565b80519067ffffffffffffffff8211610482576126ab826126a66004546136d7565b61392c565b602090601f83116001146127345792612705836101fd97969461270d94612724975f92612729575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b6004556139cb565b6127165f600255565b61271f5f600355565b612d12565b611939565b015190505f806126d3565b60045f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b925f5b8181106127e857509361270d936127249693600193836101fd9b9a98106127b1575b505050811b016004556139cb565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806127a3565b92936020600181928786015181550195019301612781565b610a5261281f9161281860c082013561205c816101ce565b36906105d9565b805f5260cd602052600160405f205460801c146128725761284b61175f825f5260cd60205260405f2090565b337f35ab4a1a0e9bec7fd7ae164679b9cc00e6568e4db238d8055a75b1862f62ec2e5f80a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20616c72656164792066696c6c6564000000000000000000000000006044820152fd5b6004821015611e765752565b6128e8909391936131a5565b918251156129a85760606128fb84611b90565b515101519261290984611e6c565b61291284611e6c565b83158015612995575b156129735761296b9461295c9161293a61293361052e565b96876128d0565b602086015273ffffffffffffffffffffffffffffffffffffffff166040850152565b606083015260808201526135a6565b929391929091565b61296b946129869161293a61293361052e565b6060830152608082015261345a565b5061299f84611e6c565b6002841461291b565b5090506129b59150613afe565b5f9182918291565b9190820391821161111957565b90916129ee73ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b81519083518203612ae0575f5b828110612a3c57505050907fc3db6554492d97a6a5438d341beeab3232f4f79acc844de8e881ccf16330d31f91612a3760405192839283612c2e565b0390a1565b80612a4960019287611ba2565b5115801590612ad9575b612a5c90612b3e565b612a7966ad566553da1bc3612a718389611ba2565b511115612bc9565b612a838187611ba2565b51612ad2612aae612a948489611ba2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2090565b55016129fb565b5082612a53565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206c656e677468206d69736d617463680000000000000000000000006044820152fd5b15612b4557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4f503a207a65726f20666565206d75737420626520616c6c6f77656420657860448201527f706c696369746c790000000000000000000000000000000000000000000000006064820152fd5b15612bd057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4f503a2066656520746f6f20686967680000000000000000000000000000006044820152fd5b9291604084019360408152825180955260206060820193015f955b808710612c6557505061084393945060208184039101526107eb565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590612c49565b3d15612cbd573d90612ca482610559565b91612cb260405193846104dd565b82523d5f602084013e565b606090565b9190811015611b9d5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81813603018212156101ec570190565b9190811015611b9d5760051b0190565b73ffffffffffffffffffffffffffffffffffffffff90612d36825f541633146118d4565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb55565b90612d6d8382613890565b6005819592951015611e7657159384612e4a575b508315612d8f575b50505090565b5f9350906123db612de085949360405192839160208301957f1626ba7e0000000000000000000000000000000000000000000000000000000087526024840152604060448401526064830190610df3565b51915afa612dec612c93565b81612e3c575b81612e01575b505f8080612d89565b90506020818051810103126101ec57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612df8565b905060208151101590612df2565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f612d81565b6fffffffffffffffffffffffffffffffff81116101ec576fffffffffffffffffffffffffffffffff1690565b604290612ea46138c5565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b15612ee157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b15612f6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20656d707479206261746368000000000000000000000000000000006044820152fd5b15612fd157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a205059206578706972656400000000000000000000000000000000006044820152fd5b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d69736d61746368207479706573000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111195760010190565b6040515f81526108436020826104dd565b906130dc82610736565b6130e960405191826104dd565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06131178294610736565b01905f5b82811061312757505050565b60209060405161313681610466565b604051613142816104c0565b5f81525f848201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f610140820152606061016082015281526060838201525f60408201528282850101520161311b565b9081516131b3811515612f65565b6131de60a06131c185611b90565b5151015173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff60606131fe86611b90565b515101519161320c83611e6c565b166040517fe184c9be000000000000000000000000000000000000000000000000000000008152602081600481855afa801561225d57613255915f916133d6575b504210612fca565b5f915f5b8481106132d95750505061327061327591836129bd565b6130d2565b925f905f5b8381106132875750505050565b60206132938284611ba2565b510151516132a4575b60010161327a565b916132d16001916132b58585611ba2565b516132c0828a611ba2565b526132cb8189611ba2565b50613094565b92905061329c565b6132e38188611ba2565b51518260608201516132f481611e6c565b6132fd82611e6c565b61330681611e6c565b1480613392575b6133169061302f565b60208101514210908161335e575b5015613333575b600101613259565b9261333f600191613094565b936133486130c1565b6020613354838b611ba2565b510152905061332b565b905061338961208a60c0604084015193015173ffffffffffffffffffffffffffffffffffffffff1690565b5411155f613324565b506133168473ffffffffffffffffffffffffffffffffffffffff6133cd60a085015173ffffffffffffffffffffffffffffffffffffffff1690565b1614905061330d565b6133ef915060203d6020116122565761224781836104dd565b5f61324d565b156133fc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4f503a206d617854616b696e672065786365656465640000000000000000006044820152fd5b60208101916134698351613ccf565b61348487949593969297518861347e81611bb6565b91613f24565b80519560208201519561349d6040840197885190611e32565b9651978789819b839d6134b660608b01518511156133f5565b60018a516134c381611e6c565b6134cc81611e6c565b0361359e5750975b8451604082015173ffffffffffffffffffffffffffffffffffffffff1699608089019a8b519173ffffffffffffffffffffffffffffffffffffffff169261351a93614019565b608001519161352893613bd3565b9661354b90303373ffffffffffffffffffffffffffffffffffffffff86166140be565b805160a084015161355c91846141b6565b918860cb5461357e9073ffffffffffffffffffffffffffffffffffffffff1690565b61358792614486565b51935160c08301519260e00151936101fd956145b0565b9050976134d4565b90602082019081516135b790613ccf565b95928594929194516135c9908261470b565b968651866135d681611bb6565b906135e092613f24565b9081519860408301998a516135f4916129bd565b9860208401519a5198898c9b809d60608c0151811115613613906133f5565b60408c015161363a90839073ffffffffffffffffffffffffffffffffffffffff168b614486565b8260808d01519161364a93613bd3565b995161365581611e6c565b61365e81611e6c565b155f14976136bb926101fd996136cf5750965b61369c84519860a08901998a519173ffffffffffffffffffffffffffffffffffffffff3391166148cb565b60cb5473ffffffffffffffffffffffffffffffffffffffff1690614486565b5193519160e060c0850151940151946145b0565b905096613671565b90600182811c9216801561371e575b60208310146136f157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916136e6565b604051905f826004549161373b836136d7565b80835292600181169081156137be575060011461375f575b6101fd925003836104dd565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106137a25750509060206101fd92820101613753565b602091935080600191548385890101520191019091849261378a565b602092506101fd9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101613753565b604051905f826005549161380e836136d7565b80835292600181169081156137be5750600114613831576101fd925003836104dd565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106138745750509060206101fd92820101613753565b602091935080600191548385890101520191019091849261385c565b9060418151145f146138bc576138b891602082015190606060408401519301515f1a90614970565b9091565b50505f90600290565b6138cd6149f8565b6138d5614a43565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261392660c0826104dd565b51902090565b601f8111613938575050565b60045f5260205f20906020601f840160051c83019310613972575b601f0160051c01905b818110613967575050565b5f815560010161395c565b9091508190613953565b601f821161398957505050565b5f5260205f20906020601f840160051c830193106139c1575b601f0160051c01905b8181106139b6575050565b5f81556001016139ab565b90915081906139a2565b90815167ffffffffffffffff8111610482576139f3816139ec6005546136d7565b600561397c565b602092601f8211600114613a4557613a40929382915f926127295750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600555565b60055f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b868110613ae65750836001959610613aaf575b505050811b01600555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080613aa4565b91926020600181928685015181550194019201613a91565b906060918051613b0b5750565b613b499192505f90604051809381927feb3a7d4700000000000000000000000000000000000000000000000000000000835284808060048601610e36565b038183335af190811561225d575f91613b60575090565b90503d805f833e613b7181836104dd565b8101906020818303126101ec5780519067ffffffffffffffff82116101ec570181601f820112156101ec578051613ba781610559565b92613bb560405194856104dd565b818452602082840101116101ec576108439160208085019101610dd2565b83516060959490613be5575b50505050565b5f93949550613c229060405195869485947feb3a7d4700000000000000000000000000000000000000000000000000000000865260048601610e36565b038183335af190811561225d575f91613c41575b50905f808080613bdf565b90503d805f833e613c5281836104dd565b8101906020818303126101ec5780519067ffffffffffffffff82116101ec570181601f820112156101ec578051613c8881610559565b92613c9660405194856104dd565b818452602082840101116101ec57613cb49160208085019101610dd2565b5f613c36565b908160209103126101ec5751610843816101ce565b90815191613cdc8361242a565b925f5b818110613dd957505060a06131c1613cf692611b90565b73ffffffffffffffffffffffffffffffffffffffff8116926040517fafd27bf5000000000000000000000000000000000000000000000000000000008152602081600481885afa90811561225d576004916020915f91613dbc575b5095604051928380927fd94073d40000000000000000000000000000000000000000000000000000000082525afa90811561225d575f91613d90575092565b613db2915060203d602011613db5575b613daa81836104dd565b810190613cba565b92565b503d613da0565b613dd39150823d8411613db557613daa81836104dd565b5f613d51565b8060406001613de9819487611ba2565b51613ec4613e2a613e67613e038451602086015190611a9c565b93919790950194613e23613e18828851614a69565b978880930301612e6d565b9301612e6d565b91613e4e613e3661053d565b6fffffffffffffffffffffffffffffffff9094168452565b6fffffffffffffffffffffffffffffffff166020830152565b613e79855f5260cd60205260405f2090565b81516020929092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b52613ecf8288611ba2565b5201613cdf565b60405190610100820182811067ffffffffffffffff82111761048257604052606060e0835f81525f60208201525f60408201525f838201528260808201528260a08201528260c08201520152565b919073ffffffffffffffffffffffffffffffffffffffff90613f44613ed6565b501691604051927fe184c9be000000000000000000000000000000000000000000000000000000008452602084600481845afa801561225d57613f946020915f968791613ffc575b5042906129bd565b916004604051809781937f1d52edc40000000000000000000000000000000000000000000000000000000083525af191821561225d57610843945f93613fdb575b50614ae0565b613ff591935060203d6020116122565761224781836104dd565b915f613fd5565b6140139150833d85116122565761224781836104dd565b5f613f8c565b909392918451925f5b8481106140325750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60c06140566001948b611ba2565b515101511673ffffffffffffffffffffffffffffffffffffffff8516146140b9576140b373ffffffffffffffffffffffffffffffffffffffff60c061409b848c611ba2565b5151015116856140ab8487611ba2565b519188614c8f565b01614022565b6140b3565b929190826140cc5750505050565b6140d593614c8f565b5f808080613bdf565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561111957565b8181029291811591840414171561111957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561414c570490565b614115565b1561415857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4f503a206661696c20736166650000000000000000000000000000000000006044820152fd5b9092918351906141c58261242a565b945f5f945b8482106141d957505050505050565b909192946141f060806131c185879b989a9b611ba2565b905f5b88821080614468575b156142255761421961421f91614212848b611ba2565b5190611e32565b91613094565b906141f3565b909598979694939181156144605773ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff8516811461440c576001614273858a6129bd565b0361432657506142a0915061428d60e06131c18588611ba2565b90846142998589611ba2565b5192614dd3565b6142aa828a611ba2565b525b8481106142bf57505b83909493946141ca565b806142db6142cf60019386611ba2565b51516130859051061590565b6142e6575b016142ac565b6143216142f38287611ba2565b5161431a614301848d611ba2565b5191610140614310868a611ba2565b5151015190615278565b1115614151565b6142e0565b61433283838730614dd3565b92845b8c888a8c841061434c5750505050505050506142ac565b83928589859361435c8587611ba2565b51516080015173ffffffffffffffffffffffffffffffffffffffff169461438291611ba2565b519061438d91614102565b9061439791614142565b6143a18583611ba2565b52878473ffffffffffffffffffffffffffffffffffffffff841689141560e06131c16001996143ea986143e3966143dd956143f0575b50611ba2565b92611ba2565b5191614486565b01614335565b614406908a6143ff858c611ba2565b51916151ba565b8e6143d7565b5050505b84811061441d57506142b5565b8061444461443260e06131c160019588611ba2565b61443c8388611ba2565b519085614486565b61444e8186611ba2565b51614459828b611ba2565b5201614410565b5050506142b5565b5061448161447b60806131c1858a611ba2565b84614cf6565b6141fc565b82158015614591575b61458c5773ffffffffffffffffffffffffffffffffffffffff168061452557505f80809381935af16144bf612c93565b50156144c757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526101fd916145876064836104dd565b615578565b505050565b503073ffffffffffffffffffffffffffffffffffffffff83161461448f565b91939490948551955f5b8781106145cb575050505050505050565b80878782808080808c8c8c8c6145e18585611ba2565b5151976145ed91611ba2565b519860608801519a6145fe8c611e6c565b60a089015173ffffffffffffffffffffffffffffffffffffffff1660809099015173ffffffffffffffffffffffffffffffffffffffff169761463f91611ba2565b519561464a91611ba2565b519a61465591611ba2565b519661466091611ba2565b519161466b91611ba2565b515160c0015173ffffffffffffffffffffffffffffffffffffffff169061469188611e6c565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301989098526060820194909452608081019690965291821660a08601523360c086015216927f338aa396bce529256f46f1d51f463cc5be80195004e47cf0a1527507d38404479060e090a46001016145ba565b91909182516147198161242a565b935f5f935b83821061472c575050505050565b61474060806131c1848697999a9896611ba2565b925f5b8782108061489b575b156147bb576147956147b59161478061476a60c06131c1878c611ba2565b6040614776878c611ba2565b510151908961528f565b604061478c858a611ba2565b51015190611e32565b9160406147a28289611ba2565b5101516147af828a611ba2565b52613094565b90614743565b91929094939796959773ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8216148015614893575b61488b5782614809918561532b565b905b858110614820575050505b829093929361471e565b80604061482f60019388611ba2565b510151614845856148408684614102565b614142565b90816148546142cf858b611ba2565b614870575b505060406148678389611ba2565b5101520161480b565b61431a61488492610140614310878d611ba2565b5f81614859565b505050614816565b5082156147fa565b506148ab60806131c18489611ba2565b73ffffffffffffffffffffffffffffffffffffffff80871691161461474c565b909193928451925f5b8481106148e45750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60e06149086001948b611ba2565b515101511673ffffffffffffffffffffffffffffffffffffffff84161461496b5761496573ffffffffffffffffffffffffffffffffffffffff60e061494d848c611ba2565b515101511661495c8387611ba2565b51908588614c8f565b016148d4565b614965565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116149ed576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa1561225d575f5173ffffffffffffffffffffffffffffffffffffffff8116156149e557905f90565b505f90600190565b505050505f90600390565b614a00613728565b8051908115614a10576020012090565b50506002548015614a1e5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b614a4b6137fb565b8051908115614a5b576020012090565b50506003548015614a1e5790565b9080821015614a76575090565b905090565b15614a8257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4c4f503a2063616e27742073776170203020616d6f756e7400000000000000006044820152fd5b939192614aeb613ed6565b938585815194614afa8661242a565b9060808301918252614b0b8761242a565b9160a0840192835287614b66614b6184614b5b6060614b49614b3c614b2f8861242a565b9760c08d0198895261242a565b9b60e08c019c8d52611b90565b51510151614b5681611e6c565b6154e7565b9a6158b8565b61556e565b60608601986040870196602001915f5b8c8110614b8f5750505050505050505050505050909150565b8f908f8d8d838e8e8e8e8e8e8e8e8e614bab60019f8b90611ba2565b51916040830197885115614c7b57614c729e614c62614c5a614c6a9f8f9a8f614c3d614c629f614c5a9f8f9a8f918c614c629f96614c5a9f614c288f9591849c859b99614c3794614c218f899d90614c0d614c379c6101208d9451015161552d565b9451614c1a838351611ba2565b5251611ba2565b51906160c6565b92919a90965197519351611ba2565b52611ba2565b52614c54614c4c838851611ba2565b511515614a7b565b51611ba2565b518251611e32565b905251611ba2565b519051611e32565b8d525b01614b76565b505050505050505050505050505050614c75565b90919273ffffffffffffffffffffffffffffffffffffffff6101fd9481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526145876084836104dd565b73ffffffffffffffffffffffffffffffffffffffff9081169116818114918215614d6f575b8215614d2657505090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614915081614d69575090565b90501590565b8092501580614d7f575b91614d1b565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114614d79565b908160209103126101ec57516108438161020a565b73ffffffffffffffffffffffffffffffffffffffff8316949385158080156150b4575b15614ff85715614fdc5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000935b6040517f784367d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152911691602082602481865afa94851561225d57614f13956020935f91614faf575b5015614fa75750859283915b5f6040518098819582947f769f8e5d000000000000000000000000000000000000000000000000000000008452306004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b03925af192831561225d575f93614f86575b508284819773ffffffffffffffffffffffffffffffffffffffff841603614f75575b5050503073ffffffffffffffffffffffffffffffffffffffff821603614f6c57505050565b6101fd92614486565b614f7e926151ba565b5f8284614f47565b614fa091935060203d6020116122565761224781836104dd565b915f614f25565b928391614ea7565b614fcf9150843d8611614fd5575b614fc781836104dd565b810190614dbe565b5f614e9b565b503d614fbd565b73ffffffffffffffffffffffffffffffffffffffff5f93614e38565b506150859495505f73ffffffffffffffffffffffffffffffffffffffff6020959493604051978896879586937f769f8e5d0000000000000000000000000000000000000000000000000000000085526004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b0393165af190811561225d575f9161509b575090565b610843915060203d6020116122565761224781836104dd565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168714614df6565b73ffffffffffffffffffffffffffffffffffffffff168061516857505f3b156101ec575f600491604051928380927fd0e30db0000000000000000000000000000000000000000000000000000000008252845af1801561225d576151545750565b806151625f6101fd936104dd565b80610a78565b803b156101ec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481015b03925af1801561225d576151545750565b73ffffffffffffffffffffffffffffffffffffffff1690816152325773ffffffffffffffffffffffffffffffffffffffff915016803b156101ec575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561225d576151545750565b50803b156101ec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481016151a9565b670de0b6b3a76400009161528b91614102565b0490565b90919073ffffffffffffffffffffffffffffffffffffffff16806153165750905034036152b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b8161532057505050565b6101fd923091614c8f565b7f0000000000000000000000000000000000000000000000000000000000000000929173ffffffffffffffffffffffffffffffffffffffff808216908516148061543b575b9083615085956020959493615429575b505061538c828261569a565b73ffffffffffffffffffffffffffffffffffffffff811661542357825b73ffffffffffffffffffffffffffffffffffffffff6040518097819682957f20e8c5650000000000000000000000000000000000000000000000000000000084523060048501606091949373ffffffffffffffffffffffffffffffffffffffff5f9481608085019816845216602083015260408201520152565b5f6153a9565b61543392506150f3565b5f825f615380565b506040517ffa5a4f0600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201529291906020848060248101038173ffffffffffffffffffffffffffffffffffffffff86165afa93841561225d576150859560209585925f916154ca575b50159293945095509350615370565b6154e19150873d8911614fd557614fc781836104dd565b5f6154bb565b6004811015611e7657806154fb5750600190565b61550481611e6c565b600181036155125750600290565b8061551e600292611e6c565b0361552857600390565b600490565b9061553791614102565b6301e1338090047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116101ec5761556e90615b0d565b5f81126101ec5790565b9073ffffffffffffffffffffffffffffffffffffffff6155e692165f80604051936155a46040866104dd565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af16155e0612c93565b91615fcd565b8051908115918215615680575b5050156155fc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6156939250602080918301019101614dbe565b5f806155f3565b9073ffffffffffffffffffffffffffffffffffffffff8216801561458c576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015290602090829060449082905afa90811561225d575f91615745575b506b7fffffffffffffffffffffff11615732575050565b81615740826101fd946158f8565b615a02565b61575e915060203d6020116122565761224781836104dd565b5f61571b565b9293917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082019180831161111957670de0b6b3a76400006157a86157ae9387614102565b04614102565b811561414c57819004937ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810190811161111957816157f061528b9286614102565b04936140de565b615806909493949291926140de565b91801561414c57615818920490615a84565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810190811161111957615856670de0b6b3a76400009184614102565b04908290565b929391670de0b6b3a764000091826157a86158779387614102565b04927ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611119576158ad9084614102565b811561414c57049190565b6301e13380916158c791614102565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116101ec5761084390615b0d565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201525f6044820181905292839291839061595b81606481016123db565b51925af1615967612c93565b816159d3575b501561597557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b80518015925082156159e8575b50505f61596d565b6159fb9250602080918301019101614dbe565b5f806159e0565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201525f92839291839061595b81606481016123db565b90614142906140de565b15615a9557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b801561414c576ec097ce7bc90715b34b9f10000000000590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000081121580615fba575b615b4090615a8e565b5f8112615fa657610843906806f05b59d3b20000008112615f4f577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000001615d186064770195e54c5dd42177f53a27172fa9ec630262827000000000925b0268056bc75e2d631000009068ad78ebc5ac62000000811215615f16575b6856bc75e2d631000000811215615ecc575b682b5e3af16b18800000811215615e84575b6815af1d78b58c400000811215615e3c575b680ad78ebc5ac6200000811215615df5575b68056bc75e2d63100000811215615dae575b6802b5e3af16b1880000811215615d67575b68015af1d78b58c40000811215615d20575b600268056bc75e2d631000008280020505600368056bc75e2d631000008383020505600468056bc75e2d631000008483020505600568056bc75e2d631000008583020505600668056bc75e2d631000008683020505600768056bc75e2d63100000878302050590600868056bc75e2d63100000888402050592600968056bc75e2d6310000089860205059468056bc75e2d63100000600a8a88028290050597600b68056bc75e2d631000008c8b02050599600c68056bc75e2d631000008d8d0205059b0101010101010101010101010268056bc75e2d63100000900590565b026064900590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000615d619201920268056bc75e2d63100000900590565b90615c39565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000615da89201920268056bc75e2d63100000900590565b90615c27565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000615def9201920268056bc75e2d63100000900590565b90615c15565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000615e369201920268056bc75e2d63100000900590565b90615c03565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00000615e7e9201920268056bc75e2d63100000900590565b90615bf1565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000615ec69201920268056bc75e2d63100000900590565b90615bdf565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000615f109201920268056bc75e2d63100000900590565b90615bcd565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001615bbb565b6803782dace9d90000008112615f99577ffffffffffffffffffffffffffffffffffffffffffffffffc87d253162700000001615d1860646b1425982cf597cd205cef738092615b9d565b615d186064600192615b9d565b615fb1905f03615b0d565b61084390615af3565b5068070c1cc73b00c80000811315615b37565b919290156160485750815115615fe1575090565b3b15615fea5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561605b5750805190602001fd5b611521906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610df3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b93929190938060041461610e578060031461610457806002146160fa57600103616099576160f39361585c565b9192909190565b506160f3936157f7565b506160f393615764565b50907ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082959394950194828611611119578561614991614102565b91801561414c5761615b920490615a84565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611119576161909084614102565b811561414c570492670de0b6b3a7640000840293808504670de0b6b3a7640000149015171561111957801561414c576161cc81614840856140de565b929304919056fea26469706673582212208a144b3891fea36a49e91e053a5e5f85c59e4ac1c5855ce5031241e46290afc264736f6c634300081e0033",
1319
- "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063078dfbe7146101c95780630b4e3350146101c45780630c0b8c9c146101bf5780632545e4bd146101ba57806326bbbdf5146101b557806332707597146101b057806335ee3ffc146101ab5780633644e515146101a657806346904840146101a1578063485cc9551461019c5780634e71e0c8146101975780635413fba7146101925780636122b1731461018d57806370ae92d21461018857806372c244a81461018357806384b0196e1461017e5780638da5cb5b1461017957806397cf58b014610174578063b381cf401461016f578063bd61951d1461016a578063c36c434014610165578063c53a029214610160578063cf6fc6e31461015b578063d74a3eca14610156578063e30c397814610151578063e74b981b1461014c5763f1d4deb30361000e576118a3565b611817565b6117c6565b6116c7565b61165c565b6115c8565b611597565b611468565b6113fa565b611321565b611274565b6111a3565b61106f565b611008565b610e59565b610d8e565b610caa565b610b0b565b610aba565b610a82565b610a57565b6109fe565b6109e8565b61092b565b610846565b6106a8565b610221565b73ffffffffffffffffffffffffffffffffffffffff8116036101ec57565b5f80fd5b602435906101fd826101ce565b565b35906101fd826101ce565b801515036101ec57565b604435906101fd8261020a565b346101ec5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043561025c816101ce565b602435906102698261020a565b604435916102768361020a565b61029873ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b156103f45773ffffffffffffffffffffffffffffffffffffffff8116918215908115916103ec575b501561038e576103619173ffffffffffffffffffffffffffffffffffffffff6102fd5f5473ffffffffffffffffffffffffffffffffffffffff1690565b167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6100187fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90505f6102c0565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761048257604052565b610439565b6040810190811067ffffffffffffffff82111761048257604052565b610160810190811067ffffffffffffffff82111761048257604052565b610180810190811067ffffffffffffffff82111761048257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761048257604052565b604051906101fd610180836104dd565b604051906101fd60a0836104dd565b604051906101fd6040836104dd565b359060048210156101ec57565b67ffffffffffffffff811161048257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156101ec578035906105aa82610559565b926105b860405194856104dd565b828452602083830101116101ec57815f926020809301838601378301015290565b919091610180818403126101ec576105ef61051e565b928135845260208201356020850152604082013560408501526106146060830161054c565b6060850152610625608083016101ff565b608085015261063660a083016101ff565b60a085015261064760c083016101ff565b60c085015261065860e083016101ff565b60e085015261010082013561010085015261012082013561012085015261014082013561014085015261016082013567ffffffffffffffff81116101ec576106a09201610593565b610160830152565b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec576106f79036906004016105d9565b60243567ffffffffffffffff81116101ec5760609161071d610723923690600401610593565b90611a9c565b9060405192835260208301526040820152f35b67ffffffffffffffff81116104825760051b60200190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101ec576004359067ffffffffffffffff82116101ec57806023830112156101ec5781600401356107a481610736565b926107b260405194856104dd565b8184526024602085019260051b8201019283116101ec57602401905b8282106107db5750505090565b81358152602091820191016107ce565b90602080835192838152019201905f5b8181106108085750505090565b82518452602093840193909201916001016107fb565b9091610835610843936040845260408401906107eb565b9160208184039101526107eb565b90565b346101ec5761085c6108573661074e565b612479565b5f5b8251811015610916576108718184611ba2565b51156108b857807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108a560019386611ba2565b51016108b18286611ba2565b520161085e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20556e6b6e6f776e206f7264657200000000000000000000000000006044820152fd5b50906109276040519283928361081e565b0390f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602061097060043561096b816101ce565b611bb6565b604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101ec576004359067ffffffffffffffff82116101ec577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610180920301126101ec5760040190565b346101ec576100186109f936610978565b612049565b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57610970610a5260209236906004016105d9565b612366565b346101ec57610a686108573661074e565b906109276040519283928361081e565b5f9103126101ec57565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760206109706138c5565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff60cb5416604051908152f35b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57600435610b46816101ce565b610bc9602435610b55816101ce565b60015492610b7b60ff60a886901c161580958196610c98575b8115610c75575b50612538565b83610bc0740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff6001541617600155565b610c2b576125c3565b610bcf57005b610bfc7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff60015416600155565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b610c7075010000000000000000000000000000000000000000007fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff6001541617600155565b6125c3565b303b15915081610c87575b505f610b75565b60a01c60ff1660011490505f610c80565b600160a082901c60ff16109150610b6e565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff60015416803303610d3057806103619173ffffffffffffffffffffffffffffffffffffffff6102fd5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346101ec57610018610d9f36610978565b612800565b9181601f840112156101ec5782359167ffffffffffffffff83116101ec57602083818601950101116101ec57565b5f5b838110610de35750505f910152565b8181015183820152602001610dd4565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610e2f81518092818752878088019101610dd2565b0116010190565b909260809261084395948352602083015260408201528160608201520190610df3565b346101ec5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57366023820112156101ec578060040135610eb381610736565b91610ec160405193846104dd565b8183526024602084019260051b820101903682116101ec5760248101925b828410610f545784610eef6101f0565b906044359060643567ffffffffffffffff81116101ec57610f14903690600401610da4565b50506084359167ffffffffffffffff83116101ec5761092793610f3e610f44943690600401610593565b926128dc565b9060409492945194859485610e36565b833567ffffffffffffffff81116101ec57820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126101ec5760405191610fa083610466565b602482013567ffffffffffffffff81116101ec57610fc490602436918501016105d9565b835260448201359267ffffffffffffffff84116101ec57606460209493610ff2869560243691840101610593565b8584015201356040820152815201930192610edf565b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff600435611058816101ce565b165f526066602052602060405f2054604051908152f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043560ff81168091036101ec57335f52606660205260405f20549080820180921161111957335f5260666020528160405f20558103908082116111195760408051928352602083019190915233917fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191819081015b0390a2005b611df7565b919361118461084396949561117673ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190610df3565b908582036040870152610df3565b9460608401521660808201525f60a082015260c08184039101526107eb565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57600254158061126a575b1561120c576111e8613728565b6111f06137fb565b906109276111fc61240f565b604051938493309146918661111e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50600354156111db565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b9080601f830112156101ec5781356112db81610736565b926112e960405194856104dd565b81845260208085019260051b8201019283116101ec57602001905b8282106113115750505090565b8135815260209182019101611304565b346101ec5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043567ffffffffffffffff81116101ec57366023820112156101ec5780600401359061137c82610736565b9161138a60405193846104dd565b8083526024602084019160051b830101913683116101ec57602401905b8282106113e0576024358467ffffffffffffffff82116101ec576113d26100189236906004016112c4565b6113da610214565b916129ca565b6020809183356113ef816101ce565b8152019101906113a7565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5760043561149e816101ce565b60243567ffffffffffffffff81116101ec575f916114c183923690600401610da4565b90816040519283928337810184815203915af46114dc612c93565b906115216040519283927f1934afc800000000000000000000000000000000000000000000000000000000845215156004840152604060248401526044830190610df3565b0390fd5b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101ec5760043567ffffffffffffffff81116101ec5760040182601f820112156101ec5780359267ffffffffffffffff84116101ec576020808301928560051b0101116101ec579190565b346101ec576115a536611525565b905f5b8281106115b157005b806115c26109f96001938686612cc2565b016115a8565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57335f52606660205260405f205460018101808211611119576111147fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191335f5260666020528060405f205560405191829133958360209093929193604081019481520152565b346101ec5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec576020600435611699816101ce565b73ffffffffffffffffffffffffffffffffffffffff60243591165f526066825260405f205414604051908152f35b346101ec576116d536611525565b906116f873ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b5f5b82811061170357005b806117116001928585612d02565b355f5260cd6020528161173a60405f205460801c6fffffffffffffffffffffffffffffffff1690565b146117c15761178a61175f611750838787612d02565b355f5260cd60205260405f2090565b7001000000000000000000000000000000006fffffffffffffffffffffffffffffffff825416179055565b611795818585612d02565b357f7e764b5c87bad409a763c11635251284e519d7bbd042eef277b3529e212c25465f80a25b016116fa565b6117bb565b346101ec575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346101ec5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101ec5773ffffffffffffffffffffffffffffffffffffffff600435611867816101ce565b611875825f541633146118d4565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb555f80f35b346101ec576118b136611525565b905f5b8281106118bd57005b806118ce610d9f6001938686612cc2565b016118b4565b156118db57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61195b73ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b73ffffffffffffffffffffffffffffffffffffffff8116908115801590611a30575b1561038e57611a039173ffffffffffffffffffffffffffffffffffffffff805f5416167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6101fd7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b505f61197d565b15611a3e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20626164207369676e617475726500000000000000000000000000006044820152fd5b90916fffffffffffffffffffffffffffffffff611ab883612366565b93845f5260cd60205260405f2093828080602060405198611ad88a610487565b5498828a16998a825260801c9182910152169616951680155f14611b375750611b2d611b286101009388611b2360c086015173ffffffffffffffffffffffffffffffffffffffff1690565b612d62565b611a37565b0151935b93921690565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91500193611b31565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115611b9d5760200190565b611b63565b8051821015611b9d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2054908115611be157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20666565206e6f7420736574000000000000000000000000000000006044820152fd5b35610843816101ce565b15611c5057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a204163636573732064656e69656400000000000000000000000000006044820152fd5b15611cb557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20696e76616c6964206e6f6e636500000000000000000000000000006044820152fd5b908160209103126101ec575190565b6040513d5f823e3d90fd5b15611d3457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20696e76616c696420657870697279000000000000000000000000006044820152fd5b15611d9957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20616c726561647920657869737400000000000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b906001820180921161111957565b9190820180921161111957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60041115611e7657565b611e3f565b906004821015611e765752565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101ec57016020813591019167ffffffffffffffff82116101ec5781360383136101ec57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6101a06120386108439360208452803560208501526020810135604085015260408101356060850152611f58611f4e6060830161054c565b6080860190611e7b565b611f84611f67608083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660a0860152565b611fb0611f9360a083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152565b611fdc611fbf60c083016101ff565b73ffffffffffffffffffffffffffffffffffffffff1660e0860152565b612009611feb60e083016101ff565b73ffffffffffffffffffffffffffffffffffffffff16610100860152565b610100810135610120850152610120810135610140850152610140810135610160850152610160810190611e88565b919092610180808201520191611ed8565b6120b660c0820161207961205c82611c3f565b73ffffffffffffffffffffffffffffffffffffffff163314611c49565b6120ae61208a604085013592611c3f565b73ffffffffffffffffffffffffffffffffffffffff165f52606660205260405f2090565b541115611cae565b602081013580421090816121b5575b506120cf90611d2d565b7fdc3f8d38b05347fcb135fa64908d456029c6fcb974c0b823d45e1424df6ef0d56121b0612100610a5236856105d9565b926121386fffffffffffffffffffffffffffffffff61213161212a875f5260cd60205260405f2090565b5460801c90565b1615611d92565b6121a461215161214c610100840135611e24565b612e6d565b612163865f5260cd60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b60405191829182611f16565b0390a2565b6004915060206121e66121cd6121cd60a08701611c3f565b73ffffffffffffffffffffffffffffffffffffffff1690565b604051938480927fe184c9be0000000000000000000000000000000000000000000000000000000082525afa90811561225d576120cf925f9261222c575b5010906120c5565b61224f91925060203d602011612256575b61224781836104dd565b810190611d13565b905f612224565b503d61223d565b611d22565b61018090939291936101406101a08201957f22742a2f8610a2d0e945db84f408aacc9d3081f99974bc30b023966fa2fd593183528051602084015260208101516040840152604081015160608401526122c360608201516080850190611e7b565b608081015173ffffffffffffffffffffffffffffffffffffffff1660a084015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c084015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e084015260e081015173ffffffffffffffffffffffffffffffffffffffff166101008401526101008101516101208401526101208101518284015201516101608201520152565b610843905f61014060405161237a816104a3565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015201526123db61240761016083015160208151910120604051928391602083019586612262565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826104dd565b519020612e99565b6040519061241e6020836104dd565b5f808352366020840137565b9061243482610736565b61244160405191826104dd565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061246f8294610736565b0190602036910137565b8051916124858361242a565b9261248f8161242a565b925f5b82811061249e57505050565b806124ab60019284611ba2565b515f5260cd6020526fffffffffffffffffffffffffffffffff60405f2061251b612506836020604051946124de86610487565b54948286169586825260801c918291015216926fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b612525848a611ba2565b52166125318289611ba2565b5201612492565b1561253f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b6125d460ff60015460a81c16612eda565b5f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556040805161260b82826104dd565b601b81527f50656e646c65204c696d6974204f726465722050726f746f636f6c00000000006020820152612641825192836104dd565b600182527f3100000000000000000000000000000000000000000000000000000000000000602083015261268560ff60015460a81c1661268081612eda565b612eda565b80519067ffffffffffffffff8211610482576126ab826126a66004546136d7565b61392c565b602090601f83116001146127345792612705836101fd97969461270d94612724975f92612729575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b6004556139cb565b6127165f600255565b61271f5f600355565b612d12565b611939565b015190505f806126d3565b60045f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b925f5b8181106127e857509361270d936127249693600193836101fd9b9a98106127b1575b505050811b016004556139cb565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806127a3565b92936020600181928786015181550195019301612781565b610a5261281f9161281860c082013561205c816101ce565b36906105d9565b805f5260cd602052600160405f205460801c146128725761284b61175f825f5260cd60205260405f2090565b337f35ab4a1a0e9bec7fd7ae164679b9cc00e6568e4db238d8055a75b1862f62ec2e5f80a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20616c72656164792066696c6c6564000000000000000000000000006044820152fd5b6004821015611e765752565b6128e8909391936131a5565b918251156129a85760606128fb84611b90565b515101519261290984611e6c565b61291284611e6c565b83158015612995575b156129735761296b9461295c9161293a61293361052e565b96876128d0565b602086015273ffffffffffffffffffffffffffffffffffffffff166040850152565b606083015260808201526135a6565b929391929091565b61296b946129869161293a61293361052e565b6060830152608082015261345a565b5061299f84611e6c565b6002841461291b565b5090506129b59150613afe565b5f9182918291565b9190820391821161111957565b90916129ee73ffffffffffffffffffffffffffffffffffffffff5f541633146118d4565b81519083518203612ae0575f5b828110612a3c57505050907fc3db6554492d97a6a5438d341beeab3232f4f79acc844de8e881ccf16330d31f91612a3760405192839283612c2e565b0390a1565b80612a4960019287611ba2565b5115801590612ad9575b612a5c90612b3e565b612a7966ad566553da1bc3612a718389611ba2565b511115612bc9565b612a838187611ba2565b51612ad2612aae612a948489611ba2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2090565b55016129fb565b5082612a53565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206c656e677468206d69736d617463680000000000000000000000006044820152fd5b15612b4557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4f503a207a65726f20666565206d75737420626520616c6c6f77656420657860448201527f706c696369746c790000000000000000000000000000000000000000000000006064820152fd5b15612bd057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4f503a2066656520746f6f20686967680000000000000000000000000000006044820152fd5b9291604084019360408152825180955260206060820193015f955b808710612c6557505061084393945060208184039101526107eb565b909360208060019273ffffffffffffffffffffffffffffffffffffffff885116815201950196019590612c49565b3d15612cbd573d90612ca482610559565b91612cb260405193846104dd565b82523d5f602084013e565b606090565b9190811015611b9d5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81813603018212156101ec570190565b9190811015611b9d5760051b0190565b73ffffffffffffffffffffffffffffffffffffffff90612d36825f541633146118d4565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb55565b90612d6d8382613890565b6005819592951015611e7657159384612e4a575b508315612d8f575b50505090565b5f9350906123db612de085949360405192839160208301957f1626ba7e0000000000000000000000000000000000000000000000000000000087526024840152604060448401526064830190610df3565b51915afa612dec612c93565b81612e3c575b81612e01575b505f8080612d89565b90506020818051810103126101ec57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612df8565b905060208151101590612df2565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f612d81565b6fffffffffffffffffffffffffffffffff81116101ec576fffffffffffffffffffffffffffffffff1690565b604290612ea46138c5565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b15612ee157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b15612f6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20656d707479206261746368000000000000000000000000000000006044820152fd5b15612fd157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a205059206578706972656400000000000000000000000000000000006044820152fd5b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d69736d61746368207479706573000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111195760010190565b6040515f81526108436020826104dd565b906130dc82610736565b6130e960405191826104dd565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06131178294610736565b01905f5b82811061312757505050565b60209060405161313681610466565b604051613142816104c0565b5f81525f848201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f610140820152606061016082015281526060838201525f60408201528282850101520161311b565b9081516131b3811515612f65565b6131de60a06131c185611b90565b5151015173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff60606131fe86611b90565b515101519161320c83611e6c565b166040517fe184c9be000000000000000000000000000000000000000000000000000000008152602081600481855afa801561225d57613255915f916133d6575b504210612fca565b5f915f5b8481106132d95750505061327061327591836129bd565b6130d2565b925f905f5b8381106132875750505050565b60206132938284611ba2565b510151516132a4575b60010161327a565b916132d16001916132b58585611ba2565b516132c0828a611ba2565b526132cb8189611ba2565b50613094565b92905061329c565b6132e38188611ba2565b51518260608201516132f481611e6c565b6132fd82611e6c565b61330681611e6c565b1480613392575b6133169061302f565b60208101514210908161335e575b5015613333575b600101613259565b9261333f600191613094565b936133486130c1565b6020613354838b611ba2565b510152905061332b565b905061338961208a60c0604084015193015173ffffffffffffffffffffffffffffffffffffffff1690565b5411155f613324565b506133168473ffffffffffffffffffffffffffffffffffffffff6133cd60a085015173ffffffffffffffffffffffffffffffffffffffff1690565b1614905061330d565b6133ef915060203d6020116122565761224781836104dd565b5f61324d565b156133fc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4f503a206d617854616b696e672065786365656465640000000000000000006044820152fd5b60208101916134698351613ccf565b61348487949593969297518861347e81611bb6565b91613f24565b80519560208201519561349d6040840197885190611e32565b9651978789819b839d6134b660608b01518511156133f5565b60018a516134c381611e6c565b6134cc81611e6c565b0361359e5750975b8451604082015173ffffffffffffffffffffffffffffffffffffffff1699608089019a8b519173ffffffffffffffffffffffffffffffffffffffff169261351a93614019565b608001519161352893613bd3565b9661354b90303373ffffffffffffffffffffffffffffffffffffffff86166140be565b805160a084015161355c91846141b6565b918860cb5461357e9073ffffffffffffffffffffffffffffffffffffffff1690565b61358792614486565b51935160c08301519260e00151936101fd956145b0565b9050976134d4565b90602082019081516135b790613ccf565b95928594929194516135c9908261470b565b968651866135d681611bb6565b906135e092613f24565b9081519860408301998a516135f4916129bd565b9860208401519a5198898c9b809d60608c0151811115613613906133f5565b60408c015161363a90839073ffffffffffffffffffffffffffffffffffffffff168b614486565b8260808d01519161364a93613bd3565b995161365581611e6c565b61365e81611e6c565b155f14976136bb926101fd996136cf5750965b61369c84519860a08901998a519173ffffffffffffffffffffffffffffffffffffffff3391166148cb565b60cb5473ffffffffffffffffffffffffffffffffffffffff1690614486565b5193519160e060c0850151940151946145b0565b905096613671565b90600182811c9216801561371e575b60208310146136f157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916136e6565b604051905f826004549161373b836136d7565b80835292600181169081156137be575060011461375f575b6101fd925003836104dd565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106137a25750509060206101fd92820101613753565b602091935080600191548385890101520191019091849261378a565b602092506101fd9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101613753565b604051905f826005549161380e836136d7565b80835292600181169081156137be5750600114613831576101fd925003836104dd565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106138745750509060206101fd92820101613753565b602091935080600191548385890101520191019091849261385c565b9060418151145f146138bc576138b891602082015190606060408401519301515f1a90614970565b9091565b50505f90600290565b6138cd6149f8565b6138d5614a43565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261392660c0826104dd565b51902090565b601f8111613938575050565b60045f5260205f20906020601f840160051c83019310613972575b601f0160051c01905b818110613967575050565b5f815560010161395c565b9091508190613953565b601f821161398957505050565b5f5260205f20906020601f840160051c830193106139c1575b601f0160051c01905b8181106139b6575050565b5f81556001016139ab565b90915081906139a2565b90815167ffffffffffffffff8111610482576139f3816139ec6005546136d7565b600561397c565b602092601f8211600114613a4557613a40929382915f926127295750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600555565b60055f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b868110613ae65750836001959610613aaf575b505050811b01600555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080613aa4565b91926020600181928685015181550194019201613a91565b906060918051613b0b5750565b613b499192505f90604051809381927feb3a7d4700000000000000000000000000000000000000000000000000000000835284808060048601610e36565b038183335af190811561225d575f91613b60575090565b90503d805f833e613b7181836104dd565b8101906020818303126101ec5780519067ffffffffffffffff82116101ec570181601f820112156101ec578051613ba781610559565b92613bb560405194856104dd565b818452602082840101116101ec576108439160208085019101610dd2565b83516060959490613be5575b50505050565b5f93949550613c229060405195869485947feb3a7d4700000000000000000000000000000000000000000000000000000000865260048601610e36565b038183335af190811561225d575f91613c41575b50905f808080613bdf565b90503d805f833e613c5281836104dd565b8101906020818303126101ec5780519067ffffffffffffffff82116101ec570181601f820112156101ec578051613c8881610559565b92613c9660405194856104dd565b818452602082840101116101ec57613cb49160208085019101610dd2565b5f613c36565b908160209103126101ec5751610843816101ce565b90815191613cdc8361242a565b925f5b818110613dd957505060a06131c1613cf692611b90565b73ffffffffffffffffffffffffffffffffffffffff8116926040517fafd27bf5000000000000000000000000000000000000000000000000000000008152602081600481885afa90811561225d576004916020915f91613dbc575b5095604051928380927fd94073d40000000000000000000000000000000000000000000000000000000082525afa90811561225d575f91613d90575092565b613db2915060203d602011613db5575b613daa81836104dd565b810190613cba565b92565b503d613da0565b613dd39150823d8411613db557613daa81836104dd565b5f613d51565b8060406001613de9819487611ba2565b51613ec4613e2a613e67613e038451602086015190611a9c565b93919790950194613e23613e18828851614a69565b978880930301612e6d565b9301612e6d565b91613e4e613e3661053d565b6fffffffffffffffffffffffffffffffff9094168452565b6fffffffffffffffffffffffffffffffff166020830152565b613e79855f5260cd60205260405f2090565b81516020929092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b52613ecf8288611ba2565b5201613cdf565b60405190610100820182811067ffffffffffffffff82111761048257604052606060e0835f81525f60208201525f60408201525f838201528260808201528260a08201528260c08201520152565b919073ffffffffffffffffffffffffffffffffffffffff90613f44613ed6565b501691604051927fe184c9be000000000000000000000000000000000000000000000000000000008452602084600481845afa801561225d57613f946020915f968791613ffc575b5042906129bd565b916004604051809781937f1d52edc40000000000000000000000000000000000000000000000000000000083525af191821561225d57610843945f93613fdb575b50614ae0565b613ff591935060203d6020116122565761224781836104dd565b915f613fd5565b6140139150833d85116122565761224781836104dd565b5f613f8c565b909392918451925f5b8481106140325750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60c06140566001948b611ba2565b515101511673ffffffffffffffffffffffffffffffffffffffff8516146140b9576140b373ffffffffffffffffffffffffffffffffffffffff60c061409b848c611ba2565b5151015116856140ab8487611ba2565b519188614c8f565b01614022565b6140b3565b929190826140cc5750505050565b6140d593614c8f565b5f808080613bdf565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561111957565b8181029291811591840414171561111957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561414c570490565b614115565b1561415857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4f503a206661696c20736166650000000000000000000000000000000000006044820152fd5b9092918351906141c58261242a565b945f5f945b8482106141d957505050505050565b909192946141f060806131c185879b989a9b611ba2565b905f5b88821080614468575b156142255761421961421f91614212848b611ba2565b5190611e32565b91613094565b906141f3565b909598979694939181156144605773ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff8516811461440c576001614273858a6129bd565b0361432657506142a0915061428d60e06131c18588611ba2565b90846142998589611ba2565b5192614dd3565b6142aa828a611ba2565b525b8481106142bf57505b83909493946141ca565b806142db6142cf60019386611ba2565b51516130859051061590565b6142e6575b016142ac565b6143216142f38287611ba2565b5161431a614301848d611ba2565b5191610140614310868a611ba2565b5151015190615278565b1115614151565b6142e0565b61433283838730614dd3565b92845b8c888a8c841061434c5750505050505050506142ac565b83928589859361435c8587611ba2565b51516080015173ffffffffffffffffffffffffffffffffffffffff169461438291611ba2565b519061438d91614102565b9061439791614142565b6143a18583611ba2565b52878473ffffffffffffffffffffffffffffffffffffffff841689141560e06131c16001996143ea986143e3966143dd956143f0575b50611ba2565b92611ba2565b5191614486565b01614335565b614406908a6143ff858c611ba2565b51916151ba565b8e6143d7565b5050505b84811061441d57506142b5565b8061444461443260e06131c160019588611ba2565b61443c8388611ba2565b519085614486565b61444e8186611ba2565b51614459828b611ba2565b5201614410565b5050506142b5565b5061448161447b60806131c1858a611ba2565b84614cf6565b6141fc565b82158015614591575b61458c5773ffffffffffffffffffffffffffffffffffffffff168061452557505f80809381935af16144bf612c93565b50156144c757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526101fd916145876064836104dd565b615578565b505050565b503073ffffffffffffffffffffffffffffffffffffffff83161461448f565b91939490948551955f5b8781106145cb575050505050505050565b80878782808080808c8c8c8c6145e18585611ba2565b5151976145ed91611ba2565b519860608801519a6145fe8c611e6c565b60a089015173ffffffffffffffffffffffffffffffffffffffff1660809099015173ffffffffffffffffffffffffffffffffffffffff169761463f91611ba2565b519561464a91611ba2565b519a61465591611ba2565b519661466091611ba2565b519161466b91611ba2565b515160c0015173ffffffffffffffffffffffffffffffffffffffff169061469188611e6c565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301989098526060820194909452608081019690965291821660a08601523360c086015216927f338aa396bce529256f46f1d51f463cc5be80195004e47cf0a1527507d38404479060e090a46001016145ba565b91909182516147198161242a565b935f5f935b83821061472c575050505050565b61474060806131c1848697999a9896611ba2565b925f5b8782108061489b575b156147bb576147956147b59161478061476a60c06131c1878c611ba2565b6040614776878c611ba2565b510151908961528f565b604061478c858a611ba2565b51015190611e32565b9160406147a28289611ba2565b5101516147af828a611ba2565b52613094565b90614743565b91929094939796959773ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8216148015614893575b61488b5782614809918561532b565b905b858110614820575050505b829093929361471e565b80604061482f60019388611ba2565b510151614845856148408684614102565b614142565b90816148546142cf858b611ba2565b614870575b505060406148678389611ba2565b5101520161480b565b61431a61488492610140614310878d611ba2565b5f81614859565b505050614816565b5082156147fa565b506148ab60806131c18489611ba2565b73ffffffffffffffffffffffffffffffffffffffff80871691161461474c565b909193928451925f5b8481106148e45750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60e06149086001948b611ba2565b515101511673ffffffffffffffffffffffffffffffffffffffff84161461496b5761496573ffffffffffffffffffffffffffffffffffffffff60e061494d848c611ba2565b515101511661495c8387611ba2565b51908588614c8f565b016148d4565b614965565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116149ed576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa1561225d575f5173ffffffffffffffffffffffffffffffffffffffff8116156149e557905f90565b505f90600190565b505050505f90600390565b614a00613728565b8051908115614a10576020012090565b50506002548015614a1e5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b614a4b6137fb565b8051908115614a5b576020012090565b50506003548015614a1e5790565b9080821015614a76575090565b905090565b15614a8257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4c4f503a2063616e27742073776170203020616d6f756e7400000000000000006044820152fd5b939192614aeb613ed6565b938585815194614afa8661242a565b9060808301918252614b0b8761242a565b9160a0840192835287614b66614b6184614b5b6060614b49614b3c614b2f8861242a565b9760c08d0198895261242a565b9b60e08c019c8d52611b90565b51510151614b5681611e6c565b6154e7565b9a6158b8565b61556e565b60608601986040870196602001915f5b8c8110614b8f5750505050505050505050505050909150565b8f908f8d8d838e8e8e8e8e8e8e8e8e614bab60019f8b90611ba2565b51916040830197885115614c7b57614c729e614c62614c5a614c6a9f8f9a8f614c3d614c629f614c5a9f8f9a8f918c614c629f96614c5a9f614c288f9591849c859b99614c3794614c218f899d90614c0d614c379c6101208d9451015161552d565b9451614c1a838351611ba2565b5251611ba2565b51906160c6565b92919a90965197519351611ba2565b52611ba2565b52614c54614c4c838851611ba2565b511515614a7b565b51611ba2565b518251611e32565b905251611ba2565b519051611e32565b8d525b01614b76565b505050505050505050505050505050614c75565b90919273ffffffffffffffffffffffffffffffffffffffff6101fd9481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526145876084836104dd565b73ffffffffffffffffffffffffffffffffffffffff9081169116818114918215614d6f575b8215614d2657505090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614915081614d69575090565b90501590565b8092501580614d7f575b91614d1b565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114614d79565b908160209103126101ec57516108438161020a565b73ffffffffffffffffffffffffffffffffffffffff8316949385158080156150b4575b15614ff85715614fdc5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000935b6040517f784367d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152911691602082602481865afa94851561225d57614f13956020935f91614faf575b5015614fa75750859283915b5f6040518098819582947f769f8e5d000000000000000000000000000000000000000000000000000000008452306004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b03925af192831561225d575f93614f86575b508284819773ffffffffffffffffffffffffffffffffffffffff841603614f75575b5050503073ffffffffffffffffffffffffffffffffffffffff821603614f6c57505050565b6101fd92614486565b614f7e926151ba565b5f8284614f47565b614fa091935060203d6020116122565761224781836104dd565b915f614f25565b928391614ea7565b614fcf9150843d8611614fd5575b614fc781836104dd565b810190614dbe565b5f614e9b565b503d614fbd565b73ffffffffffffffffffffffffffffffffffffffff5f93614e38565b506150859495505f73ffffffffffffffffffffffffffffffffffffffff6020959493604051978896879586937f769f8e5d0000000000000000000000000000000000000000000000000000000085526004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b0393165af190811561225d575f9161509b575090565b610843915060203d6020116122565761224781836104dd565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168714614df6565b73ffffffffffffffffffffffffffffffffffffffff168061516857505f3b156101ec575f600491604051928380927fd0e30db0000000000000000000000000000000000000000000000000000000008252845af1801561225d576151545750565b806151625f6101fd936104dd565b80610a78565b803b156101ec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481015b03925af1801561225d576151545750565b73ffffffffffffffffffffffffffffffffffffffff1690816152325773ffffffffffffffffffffffffffffffffffffffff915016803b156101ec575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561225d576151545750565b50803b156101ec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481016151a9565b670de0b6b3a76400009161528b91614102565b0490565b90919073ffffffffffffffffffffffffffffffffffffffff16806153165750905034036152b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b8161532057505050565b6101fd923091614c8f565b7f0000000000000000000000000000000000000000000000000000000000000000929173ffffffffffffffffffffffffffffffffffffffff808216908516148061543b575b9083615085956020959493615429575b505061538c828261569a565b73ffffffffffffffffffffffffffffffffffffffff811661542357825b73ffffffffffffffffffffffffffffffffffffffff6040518097819682957f20e8c5650000000000000000000000000000000000000000000000000000000084523060048501606091949373ffffffffffffffffffffffffffffffffffffffff5f9481608085019816845216602083015260408201520152565b5f6153a9565b61543392506150f3565b5f825f615380565b506040517ffa5a4f0600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201529291906020848060248101038173ffffffffffffffffffffffffffffffffffffffff86165afa93841561225d576150859560209585925f916154ca575b50159293945095509350615370565b6154e19150873d8911614fd557614fc781836104dd565b5f6154bb565b6004811015611e7657806154fb5750600190565b61550481611e6c565b600181036155125750600290565b8061551e600292611e6c565b0361552857600390565b600490565b9061553791614102565b6301e1338090047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116101ec5761556e90615b0d565b5f81126101ec5790565b9073ffffffffffffffffffffffffffffffffffffffff6155e692165f80604051936155a46040866104dd565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af16155e0612c93565b91615fcd565b8051908115918215615680575b5050156155fc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6156939250602080918301019101614dbe565b5f806155f3565b9073ffffffffffffffffffffffffffffffffffffffff8216801561458c576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015290602090829060449082905afa90811561225d575f91615745575b506b7fffffffffffffffffffffff11615732575050565b81615740826101fd946158f8565b615a02565b61575e915060203d6020116122565761224781836104dd565b5f61571b565b9293917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082019180831161111957670de0b6b3a76400006157a86157ae9387614102565b04614102565b811561414c57819004937ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810190811161111957816157f061528b9286614102565b04936140de565b615806909493949291926140de565b91801561414c57615818920490615a84565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810190811161111957615856670de0b6b3a76400009184614102565b04908290565b929391670de0b6b3a764000091826157a86158779387614102565b04927ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611119576158ad9084614102565b811561414c57049190565b6301e13380916158c791614102565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116101ec5761084390615b0d565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201525f6044820181905292839291839061595b81606481016123db565b51925af1615967612c93565b816159d3575b501561597557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b80518015925082156159e8575b50505f61596d565b6159fb9250602080918301019101614dbe565b5f806159e0565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201525f92839291839061595b81606481016123db565b90614142906140de565b15615a9557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b801561414c576ec097ce7bc90715b34b9f10000000000590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000081121580615fba575b615b4090615a8e565b5f8112615fa657610843906806f05b59d3b20000008112615f4f577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000001615d186064770195e54c5dd42177f53a27172fa9ec630262827000000000925b0268056bc75e2d631000009068ad78ebc5ac62000000811215615f16575b6856bc75e2d631000000811215615ecc575b682b5e3af16b18800000811215615e84575b6815af1d78b58c400000811215615e3c575b680ad78ebc5ac6200000811215615df5575b68056bc75e2d63100000811215615dae575b6802b5e3af16b1880000811215615d67575b68015af1d78b58c40000811215615d20575b600268056bc75e2d631000008280020505600368056bc75e2d631000008383020505600468056bc75e2d631000008483020505600568056bc75e2d631000008583020505600668056bc75e2d631000008683020505600768056bc75e2d63100000878302050590600868056bc75e2d63100000888402050592600968056bc75e2d6310000089860205059468056bc75e2d63100000600a8a88028290050597600b68056bc75e2d631000008c8b02050599600c68056bc75e2d631000008d8d0205059b0101010101010101010101010268056bc75e2d63100000900590565b026064900590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000615d619201920268056bc75e2d63100000900590565b90615c39565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000615da89201920268056bc75e2d63100000900590565b90615c27565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000615def9201920268056bc75e2d63100000900590565b90615c15565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000615e369201920268056bc75e2d63100000900590565b90615c03565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00000615e7e9201920268056bc75e2d63100000900590565b90615bf1565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000615ec69201920268056bc75e2d63100000900590565b90615bdf565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000615f109201920268056bc75e2d63100000900590565b90615bcd565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001615bbb565b6803782dace9d90000008112615f99577ffffffffffffffffffffffffffffffffffffffffffffffffc87d253162700000001615d1860646b1425982cf597cd205cef738092615b9d565b615d186064600192615b9d565b615fb1905f03615b0d565b61084390615af3565b5068070c1cc73b00c80000811315615b37565b919290156160485750815115615fe1575090565b3b15615fea5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561605b5750805190602001fd5b611521906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610df3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b93929190938060041461610e578060031461610457806002146160fa57600103616099576160f39361585c565b9192909190565b506160f3936157f7565b506160f393615764565b50907ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082959394950194828611611119578561614991614102565b91801561414c5761615b920490615a84565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611119576161909084614102565b811561414c570492670de0b6b3a7640000840293808504670de0b6b3a7640000149015171561111957801561414c576161cc81614840856140de565b929304919056fea26469706673582212208a144b3891fea36a49e91e053a5e5f85c59e4ac1c5855ce5031241e46290afc264736f6c634300081e0033",
1580
+ "bytecode": "0x60c03461015857601f61762e38819003918201601f19168301916001600160401b0383118484101761015c57808492604094855283398101031261015857610052602061004b83610170565b9201610170565b9060805260a05260015460ff8160a81c166101035760ff808260a01c16036100c0575b6040516174a99081610185823960805181818161174b01528181615bec01528181615c5b01528181615cdb01528181615f900152616744015260a051818181610b5101526162c80152f35b60ff60a01b191660ff60a01b1760015560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f610075565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101585756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063078dfbe7146102295780630b4e3350146102245780630c0b8c9c1461021f5780632545e4bd1461021a57806326bbbdf514610215578063327075971461021057806332fe7b261461020b57806335ee3ffc146102065780633644e5151461020157806346904840146101fc578063485cc955146101f75780634e71e0c8146101f25780635413fba7146101ed578063556e0da9146101e85780636122b173146101e357806370ae92d2146101de57806372c244a8146101d95780637f3bc4dd146101d457806384b0196e146101cf5780638da5cb5b146101ca57806397cf58b0146101c55780639a046669146101c0578063ab16a690146101bb578063b381cf40146101b6578063bd61951d146101b1578063c36c4340146101ac578063c53a0292146101a7578063cf6fc6e3146101a2578063d74a3eca1461019d578063d914237714610198578063e30c397814610193578063e74b981b1461018e5763f1d4deb30361000e57611dd4565b611d48565b611cf7565b611af9565b6119f0565b611985565b6118f1565b6118c0565b61176f565b611701565b6116b0565b611657565b61157e565b6114d1565b611400565b611275565b6111c6565b61115f565b6110a1565b610ec8565b610eb2565b610dce565b610c62565b610bce565b610b96565b610b75565b610b07565b610aa4565b610a8e565b6109d1565b6108ec565b61074e565b610274565b73ffffffffffffffffffffffffffffffffffffffff81160361024c57565b5f80fd5b359061025b8261022e565b565b8015150361024c57565b6044359061025b8261025d565b3461024c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576004356102af8161022e565b602435906102bc8261025d565b604435916102c98361025d565b6102eb73ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b156104475773ffffffffffffffffffffffffffffffffffffffff81169182159081159161043f575b50156103e1576103b49173ffffffffffffffffffffffffffffffffffffffff6103505f5473ffffffffffffffffffffffffffffffffffffffff1690565b167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6100187fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90505f610313565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176104d557604052565b61048c565b60a0810190811067ffffffffffffffff8211176104d557604052565b6080810190811067ffffffffffffffff8211176104d557604052565b6040810190811067ffffffffffffffff8211176104d557604052565b610160810190811067ffffffffffffffff8211176104d557604052565b6020810190811067ffffffffffffffff8211176104d557604052565b60c0810190811067ffffffffffffffff8211176104d557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176104d557604052565b6040519061025b61018083610583565b6040519061025b60c083610583565b6040519061025b604083610583565b3590600482101561024c57565b67ffffffffffffffff81116104d557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561024c57803590610650826105ff565b9261065e6040519485610583565b8284526020838301011161024c57815f926020809301838601378301015290565b9190916101808184031261024c576106956105c4565b928135845260208201356020850152604082013560408501526106ba606083016105f2565b60608501526106cb60808301610250565b60808501526106dc60a08301610250565b60a08501526106ed60c08301610250565b60c08501526106fe60e08301610250565b60e085015261010082013561010085015261012082013561012085015261014082013561014085015261016082013567ffffffffffffffff811161024c576107469201610639565b610160830152565b3461024c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c5761079d90369060040161067f565b60243567ffffffffffffffff811161024c576060916107c36107c9923690600401610639565b90611fcd565b9060405192835260208301526040820152f35b67ffffffffffffffff81116104d55760051b60200190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261024c576004359067ffffffffffffffff821161024c578060238301121561024c57816004013561084a816107dc565b926108586040519485610583565b8184526024602085019260051b82010192831161024c57602401905b8282106108815750505090565b8135815260209182019101610874565b90602080835192838152019201905f5b8181106108ae5750505090565b82518452602093840193909201916001016108a1565b90916108db6108e993604084526040840190610891565b916020818403910152610891565b90565b3461024c576109026108fd366107f4565b6129aa565b5f5b82518110156109bc5761091781846120d3565b511561095e57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61094b600193866120d3565b510161095782866120d3565b5201610904565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20556e6b6e6f776e206f7264657200000000000000000000000000006044820152fd5b50906109cd604051928392836108c4565b0390f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576020610a16600435610a118161022e565b6120e7565b604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261024c576004359067ffffffffffffffff821161024c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826101809203011261024c5760040190565b3461024c57610018610a9f36610a1e565b61257a565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c57610a16610af8602092369060040161067f565b612897565b5f91031261024c57565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461024c57610b866108fd366107f4565b906109cd604051928392836108c4565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576020610a16614636565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60cb5416604051908152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261024c57600435610c558161022e565b906024356108e98161022e565b3461024c57610ce8610c7336610c1f565b6001549291610c9a60ff60a886901c161580958196610dbc575b8115610d99575b50612a69565b83610cdf740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff6001541617600155565b610d4f57612af4565b610cee57005b610d1b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff60015416600155565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b610d9475010000000000000000000000000000000000000000007fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff6001541617600155565b612af4565b303b15915081610dab575b505f610c94565b60a01c60ff1660011490505f610da4565b600160a082901c60ff16109150610c8d565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff60015416803303610e5457806103b49173ffffffffffffffffffffffffffffffffffffffff6103505f5473ffffffffffffffffffffffffffffffffffffffff1690565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461024c57610018610ec336610a1e565b612d31565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60cf5416604051908152f35b81601f8201121561024c57803590610f30826107dc565b92610f3e6040519485610583565b82845260208085019360051b8301019181831161024c5760208101935b838510610f6a57505050505090565b843567ffffffffffffffff811161024c57820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261024c5760405191610fb6836104b9565b602082013567ffffffffffffffff811161024c57856020610fd99285010161067f565b835260408201359267ffffffffffffffff841161024c57606083611004886020809881980101610639565b8584015201356040820152815201940193610f5b565b5f5b83811061102b5750505f910152565b818101518382015260200161101c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936110778151809281875287808801910161101a565b0116010190565b90926080926108e99594835260208301526040820152816060820152019061103b565b3461024c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c576110f0903690600401610f19565b602435906110fd8261022e565b6044359060643567ffffffffffffffff811161024c57611121903690600401610639565b6084359267ffffffffffffffff841161024c576109cd9461114961114f953690600401610639565b93612e0d565b906040949294519485948561107e565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff6004356111af8161022e565b165f526066602052602060405f2054604051908152f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043560ff811680910361024c57335f52606660205260405f20549080820180921161127057335f5260666020528160405f20558103908082116112705760408051928352602083019190915233917fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191819081015b0390a2005b612328565b3461024c577ffb7d0c5375fabc97c2f8b965867b65175296e925b60141a8283b3e91061341d26112a436610c1f565b906112c773ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000060cf54161760cf5573ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff000000000000000000000000000000000000000060d054161760d055610d4a6040519283928390929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b91936113e16108e99694956113d373ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e087019061103b565b90858203604087015261103b565b9460608401521660808201525f60a082015260c0818403910152610891565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760325415806114c7575b1561146957611445614330565b61144d614403565b906109cd611459612940565b604051938493309146918661137b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060335415611438565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b9080601f8301121561024c578135611538816107dc565b926115466040519485610583565b81845260208085019260051b82010192831161024c57602001905b82821061156e5750505090565b8135815260209182019101611561565b3461024c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c573660238201121561024c578060040135906115d9826107dc565b916115e76040519384610583565b8083526024602084019160051b8301019136831161024c57602401905b82821061163d576024358467ffffffffffffffff821161024c5761162f610018923690600401611521565b611637610267565b91612f22565b60208091833561164c8161022e565b815201910190611604565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c57610a166116ab6020923690600401610f19565b6131eb565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60d05416604051908152f35b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576004356117a58161022e565b60243567ffffffffffffffff811161024c573660238201121561024c5780600401359167ffffffffffffffff831161024c57366024848401011161024c5760245f9392838594604051938493018337810184815203915af46118056133aa565b9061184a6040519283927f1934afc80000000000000000000000000000000000000000000000000000000084521515600484015260406024840152604483019061103b565b0390fd5b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261024c5760043567ffffffffffffffff811161024c5760040182601f8201121561024c5780359267ffffffffffffffff841161024c576020808301928560051b01011161024c579190565b3461024c576118ce3661184e565b905f5b8281106118da57005b806118eb610a9f60019386866133d9565b016118d1565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57335f52606660205260405f2054600181018082116112705761126b7fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191335f5260666020528060405f205560405191829133958360209093929193604081019481520152565b3461024c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760206004356119c28161022e565b73ffffffffffffffffffffffffffffffffffffffff60243591165f526066825260405f205414604051908152f35b3461024c576119fe3661184e565b90611a2173ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b5f5b828110611a2c57005b80611a3a6001928585613419565b355f5260cd60205281611a6360405f205460801c6fffffffffffffffffffffffffffffffff1690565b14611aea57611ab3611a88611a79838787613419565b355f5260cd60205260405f2090565b7001000000000000000000000000000000006fffffffffffffffffffffffffffffffff825416179055565b611abe818585613419565b357f7e764b5c87bad409a763c11635251284e519d7bbd042eef277b3529e212c25465f80a25b01611a23565b611ae4565b600b111561024c57565b3461024c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c573660238201121561024c578060040135611b53816107dc565b91611b616040519384610583565b8183526024602084019260051b8201019036821161024c5760248101925b828410611bcb578460243567ffffffffffffffff811161024c576109cd91611bae611bbb923690600401611521565b6044359060643592613456565b6040519081529081906020820190565b833567ffffffffffffffff811161024c5782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc833603011261024c5760405191611c18836104da565b6024810135611c268161022e565b8352604481013560208401526064810135611c408161022e565b60408401526084810135611c538161022e565b606084015260a481013567ffffffffffffffff811161024c5760249101019060808236031261024c5760405192611c89846104f6565b8235611c9481611aef565b84526020830135611ca48161022e565b602085015260408301359367ffffffffffffffff851161024c57606060209594611cd2879636908301610639565b60408401520135611ce28161025d565b60608201526080820152815201930192611b7f565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff600435611d988161022e565b611da6825f54163314611e05565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb555f80f35b3461024c57611de23661184e565b905f5b828110611dee57005b80611dff610ec360019386866133d9565b01611de5565b15611e0c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b611e8c73ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b73ffffffffffffffffffffffffffffffffffffffff8116908115801590611f61575b156103e157611f349173ffffffffffffffffffffffffffffffffffffffff805f5416167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b61025b7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b505f611eae565b15611f6f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20626164207369676e617475726500000000000000000000000000006044820152fd5b90916fffffffffffffffffffffffffffffffff611fe983612897565b93845f5260cd60205260405f20938280806020604051986120098a610512565b5498828a16998a825260801c9182910152169616951680155f14612068575061205e612059610100938861205460c086015173ffffffffffffffffffffffffffffffffffffffff1690565b613575565b611f68565b0151935b93921690565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91500193612062565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156120ce5760200190565b612094565b80518210156120ce5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f205490811561211257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20666565206e6f7420736574000000000000000000000000000000006044820152fd5b356108e98161022e565b1561218157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a204163636573732064656e69656400000000000000000000000000006044820152fd5b156121e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20696e76616c6964206e6f6e636500000000000000000000000000006044820152fd5b9081602091031261024c575190565b6040513d5f823e3d90fd5b1561226557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20696e76616c696420657870697279000000000000000000000000006044820152fd5b156122ca57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20616c726561647920657869737400000000000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b906001820180921161127057565b9190820180921161127057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600411156123a757565b612370565b9060048210156123a75752565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561024c57016020813591019167ffffffffffffffff821161024c57813603831361024c57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6101a06125696108e9936020845280356020850152602081013560408501526040810135606085015261248961247f606083016105f2565b60808601906123ac565b6124b561249860808301610250565b73ffffffffffffffffffffffffffffffffffffffff1660a0860152565b6124e16124c460a08301610250565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152565b61250d6124f060c08301610250565b73ffffffffffffffffffffffffffffffffffffffff1660e0860152565b61253a61251c60e08301610250565b73ffffffffffffffffffffffffffffffffffffffff16610100860152565b6101008101356101208501526101208101356101408501526101408101356101608501526101608101906123b9565b919092610180808201520191612409565b6125e760c082016125aa61258d82612170565b73ffffffffffffffffffffffffffffffffffffffff16331461217a565b6125df6125bb604085013592612170565b73ffffffffffffffffffffffffffffffffffffffff165f52606660205260405f2090565b5411156121df565b602081013580421090816126e6575b506126009061225e565b7fdc3f8d38b05347fcb135fa64908d456029c6fcb974c0b823d45e1424df6ef0d56126e1612631610af8368561067f565b926126696fffffffffffffffffffffffffffffffff61266261265b875f5260cd60205260405f2090565b5460801c90565b16156122c3565b6126d561268261267d610100840135612355565b613680565b612694865f5260cd60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b60405191829182612447565b0390a2565b6004915060206127176126fe6126fe60a08701612170565b73ffffffffffffffffffffffffffffffffffffffff1690565b604051938480927fe184c9be0000000000000000000000000000000000000000000000000000000082525afa90811561278e57612600925f9261275d575b5010906125f6565b61278091925060203d602011612787575b6127788183610583565b810190612244565b905f612755565b503d61276e565b612253565b61018090939291936101406101a08201957f22742a2f8610a2d0e945db84f408aacc9d3081f99974bc30b023966fa2fd593183528051602084015260208101516040840152604081015160608401526127f4606082015160808501906123ac565b608081015173ffffffffffffffffffffffffffffffffffffffff1660a084015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c084015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e084015260e081015173ffffffffffffffffffffffffffffffffffffffff166101008401526101008101516101208401526101208101518284015201516101608201520152565b6108e9905f6101406040516128ab8161052e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152015261290c61293861016083015160208151910120604051928391602083019586612793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610583565b5190206136ac565b6040519061294f602083610583565b5f808352366020840137565b90612965826107dc565b6129726040519182610583565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06129a082946107dc565b0190602036910137565b8051916129b68361295b565b926129c08161295b565b925f5b8281106129cf57505050565b806129dc600192846120d3565b515f5260cd6020526fffffffffffffffffffffffffffffffff60405f20612a4c612a3783602060405194612a0f86610512565b54948286169586825260801c918291015216926fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b612a56848a6120d3565b5216612a6282896120d3565b52016129c3565b15612a7057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b612b0560ff60015460a81c166136ed565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905560408051612b3c8282610583565b601b81527f50656e646c65204c696d6974204f726465722050726f746f636f6c00000000006020820152612b7282519283610583565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152612bb660ff60015460a81c16612bb1816136ed565b6136ed565b80519067ffffffffffffffff82116104d557612bdc82612bd76034546142df565b614697565b602090601f8311600114612c655792612c368361025b979694612c3e94612c55975f92612c5a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b603455614736565b612c475f603255565b612c505f603355565b613525565b611e6a565b015190505f80612c04565b60345f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691907f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1925f5b818110612d19575093612c3e93612c5596936001938361025b9b9a9810612ce2575b505050811b01603455614736565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080612cd4565b92936020600181928786015181550195019301612cb2565b610af8612d5091612d4960c082013561258d8161022e565b369061067f565b805f5260cd602052600160405f205460801c14612da357612d7c611a88825f5260cd60205260405f2090565b337f35ab4a1a0e9bec7fd7ae164679b9cc00e6568e4db238d8055a75b1862f62ec2e5f80a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20616c72656164792066696c6c6564000000000000000000000000006044820152fd5b60048210156123a75752565b939092612e1a9085613af8565b91612e2485613d91565b845115612ed257612e7c6060612e39876120c1565b5151015194612e478661239d565b612e4f6105d4565b96612e5a8789612e01565b602088015273ffffffffffffffffffffffffffffffffffffffff166040870152565b6060850152608084015260a0830152612e948161239d565b8015908115612ebe575b5015612eb557612ead906141a8565b929391929091565b612ead9061405c565b60029150612ecb8161239d565b145f612e9e565b50915050612ee09150614a6c565b5f9182918291565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161127057565b9190820391821161127057565b9091612f4673ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b815190612f55845183146130bc565b5f5b828110612f9857505050907fc3db6554492d97a6a5438d341beeab3232f4f79acc844de8e881ccf16330d31f91612f9360405192839283613186565b0390a1565b612fa281866120d3565b51158015906130b5575b156130315780612fd166ad566553da1bc3612fc9600194896120d3565b511115613121565b612fdb81876120d3565b5161302a613006612fec84896120d3565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2090565b5501612f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4f503a207a65726f20666565206d75737420626520616c6c6f77656420657860448201527f706c696369746c790000000000000000000000000000000000000000000000006064820152fd5b5081612fac565b156130c357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206c656e677468206d69736d617463680000000000000000000000006044820152fd5b1561312857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4f503a2066656520746f6f20686967680000000000000000000000000000006044820152fd5b9291604084019360408152825180955260206060820193015f955b8087106131bd5750506108e99394506020818403910152610891565b909360208060019273ffffffffffffffffffffffffffffffffffffffff8851168152019501960195906131a1565b60405160208101918160408101916020855280518093526060820192602060608260051b8501019201935f905b828210613259575050506132539250037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610583565b51902090565b91936020847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082936001959703018552875190604080613394613384610160865160608752805160608801528881015160808801528481015160a08801526132c9606082015160c08901906123ac565b608081015173ffffffffffffffffffffffffffffffffffffffff1660e088015260a081015173ffffffffffffffffffffffffffffffffffffffff1661010088015260c081015173ffffffffffffffffffffffffffffffffffffffff1661012088015260e081015173ffffffffffffffffffffffffffffffffffffffff16610140880152610100810151828801526101208101516101808801526101408101516101a088015201516101806101c08701526101e086019061103b565b868601518582038887015261103b565b9301519101529601920192018593919492613218565b3d156133d4573d906133bb826105ff565b916133c96040519384610583565b82523d5f602084013e565b606090565b91908110156120ce5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818136030182121561024c570190565b91908110156120ce5760051b0190565b80516020909101905f5b8181106134405750505090565b8251845260209384019390920191600101613433565b9390613462855161295b565b925f5b8651811015613495578061348461347e6001938a6120d3565b51614498565b61348e82886120d3565b5201613465565b50919450916108e99361290c612938926040516134ba8161290c602082018095613429565b519020946040516134d38161290c602082018095613429565b519020916040519485936020850197889094939260809260a08301967f2207225b55a9b1d5083cb62224dd5d8b2a6c965776a0f526e7fd237fcb04902084526020840152604083015260608201520152565b73ffffffffffffffffffffffffffffffffffffffff90613549825f54163314611e05565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb55565b906135808382614601565b60058195929510156123a75715938461365d575b5083156135a2575b50505090565b5f93509061290c6135f385949360405192839160208301957f1626ba7e000000000000000000000000000000000000000000000000000000008752602484015260406044840152606483019061103b565b51915afa6135ff6133aa565b8161364f575b81613614575b505f808061359c565b905060208180518101031261024c57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f61360b565b905060208151101590613605565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f613594565b6fffffffffffffffffffffffffffffffff811161024c576fffffffffffffffffffffffffffffffff1690565b6042906136b7614636565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b156136f457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b81601f8201121561024c57805161378e816105ff565b9261379c6040519485610583565b8184526020828401011161024c576108e9916020808501910161101a565b91909160408184031261024c57805192602082015167ffffffffffffffff811161024c576108e99201613778565b156137ef57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20696e76616c69642076657273696f6e0000000000000000000000006044820152fd5b81601f8201121561024c57805190613864826107dc565b926138726040519485610583565b82845260208085019360051b8301019181831161024c5760208101935b83851061389e57505050505090565b845167ffffffffffffffff811161024c5782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838603011261024c57604051916138eb836104da565b60208101516138f98161022e565b83526040810151602084015260608101516139138161022e565b604084015260808101516139268161022e565b606084015260a081015167ffffffffffffffff811161024c5760209101019060808286031261024c576040519261395c846104f6565b825161396781611aef565b845260208301516139778161022e565b602085015260408301519367ffffffffffffffff851161024c576060846139a389602098899801613778565b604084015201516139b38161025d565b6060820152608082015281520194019361388f565b9080601f8301121561024c5781516139df816107dc565b926139ed6040519485610583565b81845260208085019260051b82010192831161024c57602001905b828210613a155750505090565b8151815260209182019101613a08565b60208183031261024c5780519067ffffffffffffffff821161024c570160c08183031261024c57613a546105d4565b91815167ffffffffffffffff811161024c5781613a7291840161384d565b8352602082015167ffffffffffffffff811161024c5781613a949184016139c8565b60208401526040820151604084015260608201516060840152608082015167ffffffffffffffff811161024c5781613acd918401613778565b608084015260a082015167ffffffffffffffff811161024c57613af09201613778565b60a082015290565b9190604051613b068161054b565b604051613b1281610567565b60608152606060208201525f60408201525f606082015260606080820152606060a08201528152809382519081613b4a575b50505050565b613b806001613b71613b6a87602080613b8898613bc79b010191016137ba565b92146137e8565b60208082518301019101613a25565b8093526131eb565b60cf5473ffffffffffffffffffffffffffffffffffffffff1690613bc160d05473ffffffffffffffffffffffffffffffffffffffff1690565b92614998565b5f808080613b44565b15613bd757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20656d707479206261746368000000000000000000000000000000006044820152fd5b15613c3c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a205059206578706972656400000000000000000000000000000000006044820152fd5b15613ca157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4f503a20696e76616c6964206f72646572696e6700000000000000000000006044820152fd5b15613d0657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d69736d61746368207479706573000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112705760010190565b805190613d9f821515613bd0565b613dca60a0613dad836120c1565b5151015173ffffffffffffffffffffffffffffffffffffffff1690565b9173ffffffffffffffffffffffffffffffffffffffff6060613deb846120c1565b5151015193613df98561239d565b16926040517fe184c9be000000000000000000000000000000000000000000000000000000008152602081600481885afa801561278e57613e47915f91613fd8575b50949291944210613c35565b5f935f925b828410613e5a575050505052565b90919294613e6886866120d3565b515186158015613f79575b613e7c90613c9a565b836060820151613e8b8161239d565b613e948261239d565b613e9d8161239d565b1480613f35575b613ead90613cff565b602081015142109081613f01575b5015613ef857613eed600191613ed188886120d3565b51613edc82896120d3565b52613ee781886120d3565b50613d64565b955b01929190613e4c565b94600190613eef565b9050613f2c6125bb60c0604084015193015173ffffffffffffffffffffffffffffffffffffffff1690565b5411155f613ebb565b50613ead8373ffffffffffffffffffffffffffffffffffffffff613f7060a085015173ffffffffffffffffffffffffffffffffffffffff1690565b16149050613ea4565b50613e7c8773ffffffffffffffffffffffffffffffffffffffff613fcd6126fe6080613dad613fc7613fc1838a015173ffffffffffffffffffffffffffffffffffffffff1690565b96612ee8565b8d6120d3565b911610159050613e73565b613ff1915060203d602011612787576127788183610583565b5f613e3b565b15613ffe57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4f503a206d617854616b696e672065786365656465640000000000000000006044820152fd5b602081019161406b8351614bc6565b614086879495939692975188614080816120e7565b91614e1b565b80519560208201519561409f6040840197885190612363565b9651978789819b839d6140b860608b0151851115613ff7565b60018a516140c58161239d565b6140ce8161239d565b036141a05750975b8451604082015173ffffffffffffffffffffffffffffffffffffffff1699608089019a8b519173ffffffffffffffffffffffffffffffffffffffff169261411c93614f10565b608001519161412a93614b06565b9661414d90303373ffffffffffffffffffffffffffffffffffffffff8616614fb5565b805160a084015161415e91846150a4565b918860cb546141809073ffffffffffffffffffffffffffffffffffffffff1690565b6141899261534e565b51935160c08301519260e001519361025b95615478565b9050976140d6565b90602082019081516141b990614bc6565b959285949291945160a0850151516141d191836155d3565b968651866141de816120e7565b906141e892614e1b565b9081519860408301998a516141fc91612f15565b9860208401519a5198898c9b809d60608c015181111561421b90613ff7565b60408c015161424290839073ffffffffffffffffffffffffffffffffffffffff168b61534e565b8260808d01519161425293614b06565b995161425d8161239d565b6142668161239d565b155f14976142c39261025b996142d75750965b6142a484519860a08901998a519173ffffffffffffffffffffffffffffffffffffffff339116615782565b60cb5473ffffffffffffffffffffffffffffffffffffffff169061534e565b5193519160e060c085015194015194615478565b905096614279565b90600182811c92168015614326575b60208310146142f957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916142ee565b604051905f8260345491614343836142df565b80835292600181169081156143c65750600114614367575b61025b92500383610583565b5060345f90815290917f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c15b8183106143aa57505090602061025b9282010161435b565b6020919350806001915483858901015201910190918492614392565b6020925061025b9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010161435b565b604051905f8260355491614416836142df565b80835292600181169081156143c657506001146144395761025b92500383610583565b5060355f90815290917fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d5b81831061447c57505090602061025b9282010161435b565b6020919350806001915483858901015201910190918492614464565b73ffffffffffffffffffffffffffffffffffffffff8151169060208101519073ffffffffffffffffffffffffffffffffffffffff60408201511691608073ffffffffffffffffffffffffffffffffffffffff606084015116920151805192600b8410156123a757613253938273ffffffffffffffffffffffffffffffffffffffff602061290c950151169060606040820151602081519101209101511515906040519261457060208501957f92c327568280269b9f5ff13cc39573423140669d42c04f868a3459f4ff7c221d87526040860190615827565b6060840152608083015260a082015260a0815261458e60c082610583565b51902090604051958694602086019889919373ffffffffffffffffffffffffffffffffffffffff60a09481939897968260c087019a7fcc513f3680a104600c308518f4e6313dfbea1485c225b7599773fc742e8a1bf6885216602087015260408601521660608401521660808201520152565b9060418151145f1461462d5761462991602082015190606060408401519301515f1a90615834565b9091565b50505f90600290565b61463e6158bc565b614646615907565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261325360c082610583565b601f81116146a3575050565b60345f5260205f20906020601f840160051c830193106146dd575b601f0160051c01905b8181106146d2575050565b5f81556001016146c7565b90915081906146be565b601f82116146f457505050565b5f5260205f20906020601f840160051c8301931061472c575b601f0160051c01905b818110614721575050565b5f8155600101614716565b909150819061470d565b90815167ffffffffffffffff81116104d55761475e816147576035546142df565b60356146e7565b602092601f82116001146147b0576147ab929382915f92612c5a5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b603555565b60355f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d915f5b868110614851575083600195961061481a575b505050811b01603555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f808061480f565b919260206001819286850151815501940192016147fc565b1561487057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4c4f503a206d696e74537920706172616d73206d69736d6174636800000000006044820152fd5b156148d557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20626164206d696e74537920736967310000000000000000000000006044820152fd5b1561493a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20626164206d696e74537920736967320000000000000000000000006044820152fd5b929091604084018051421015614a0e5784614a016149fc6149ef60a094614a09986149cc606061025b9c0191825114614869565b855151916149e16020880193845151146130bc565b865192519051915192613456565b9485608085015191613575565b6148ce565b015191613575565b614933565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d696e7453792065787069726564000000000000000000000000006044820152fd5b906060918051614a795750565b614ab79192505f90604051809381927feb3a7d470000000000000000000000000000000000000000000000000000000083528480806004860161107e565b038183335af190811561278e575f91614ace575090565b90503d805f833e614adf8183610583565b810160208282031261024c57815167ffffffffffffffff811161024c576108e99201613778565b83516060959490614b175750505050565b5f93949550614b549060405195869485947feb3a7d470000000000000000000000000000000000000000000000000000000086526004860161107e565b038183335af190811561278e575f91614b73575b50905f808080613b44565b90503d805f833e614b848183610583565b810160208282031261024c57815167ffffffffffffffff811161024c57614bab9201613778565b5f614b68565b9081602091031261024c57516108e98161022e565b90815191614bd38361295b565b925f5b818110614cd057505060a0613dad614bed926120c1565b73ffffffffffffffffffffffffffffffffffffffff8116926040517fafd27bf5000000000000000000000000000000000000000000000000000000008152602081600481885afa90811561278e576004916020915f91614cb3575b5095604051928380927fd94073d40000000000000000000000000000000000000000000000000000000082525afa90811561278e575f91614c87575092565b614ca9915060203d602011614cac575b614ca18183610583565b810190614bb1565b92565b503d614c97565b614cca9150823d8411614cac57614ca18183610583565b5f614c48565b8060406001614ce08194876120d3565b51614dbb614d21614d5e614cfa8451602086015190611fcd565b93919790950194614d1a614d0f82885161592d565b978880930301613680565b9301613680565b91614d45614d2d6105e3565b6fffffffffffffffffffffffffffffffff9094168452565b6fffffffffffffffffffffffffffffffff166020830152565b614d70855f5260cd60205260405f2090565b81516020929092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b52614dc682886120d3565b5201614bd6565b60405190610100820182811067ffffffffffffffff8211176104d557604052606060e0835f81525f60208201525f60408201525f838201528260808201528260a08201528260c08201520152565b919073ffffffffffffffffffffffffffffffffffffffff90614e3b614dcd565b501691604051927fe184c9be000000000000000000000000000000000000000000000000000000008452602084600481845afa801561278e57614e8b6020915f968791614ef3575b504290612f15565b916004604051809781937f1d52edc40000000000000000000000000000000000000000000000000000000083525af191821561278e576108e9945f93614ed2575b506159a4565b614eec91935060203d602011612787576127788183610583565b915f614ecc565b614f0a9150833d8511612787576127788183610583565b5f614e83565b909392918451925f5b848110614f295750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60c0614f4d6001948b6120d3565b515101511673ffffffffffffffffffffffffffffffffffffffff851614614fb057614faa73ffffffffffffffffffffffffffffffffffffffff60c0614f92848c6120d3565b515101511685614fa284876120d3565b519188615b53565b01614f19565b614faa565b92919082614fc35750505050565b613bc793615b53565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561127057565b8181029291811591840414171561127057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561503a570490565b615003565b1561504657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4f503a206661696c20736166650000000000000000000000000000000000006044820152fd5b81519193926150b28361295b565b945f5f935b8582106150c657505050505050565b9091936150dc6080613dad85889b97999b6120d3565b905f5b89821080615330575b156151115761510561510b916150fe848b6120d3565b5190612363565b91613d64565b906150df565b9096949895939181156153285773ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff851681146152d457600161515e858b612f15565b036151ee575061518b915061517860e0613dad85886120d3565b908461518485896120d3565b5192615c97565b615195828a6120d3565b525b8581106151aa57505b84909493946150b7565b806151e86151ba600193876120d3565b516151e16151c8848d6120d3565b51916101406151d7868a6120d3565b515101519061613c565b111561503f565b01615197565b6151fa83838730615c97565b92845b8c888a8d8410615214575050505050505050615197565b83928589859361522485876120d3565b51516080015173ffffffffffffffffffffffffffffffffffffffff169461524a916120d3565b519061525591614ff0565b9061525f91615030565b61526985836120d3565b52878473ffffffffffffffffffffffffffffffffffffffff841689141560e0613dad6001996152b2986152ab966152a5956152b8575b506120d3565b926120d3565b519161534e565b016151fd565b6152ce908a6152c7858c6120d3565b519161607e565b8e61529f565b5050505b8581106152e557506151a0565b8061530c6152fa60e0613dad600195886120d3565b61530483886120d3565b51908561534e565b61531681866120d3565b51615321828b6120d3565b52016152d8565b5050506151a0565b506153496153436080613dad858b6120d3565b84615bba565b6150e8565b82158015615459575b6154545773ffffffffffffffffffffffffffffffffffffffff16806153ed57505f80809381935af16153876133aa565b501561538f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261025b9161544f606483610583565b6163f4565b505050565b503073ffffffffffffffffffffffffffffffffffffffff831614615357565b91939490948551955f5b878110615493575050505050505050565b80878782808080808c8c8c8c6154a985856120d3565b5151976154b5916120d3565b519860608801519a6154c68c61239d565b60a089015173ffffffffffffffffffffffffffffffffffffffff1660809099015173ffffffffffffffffffffffffffffffffffffffff1697615507916120d3565b5195615512916120d3565b519a61551d916120d3565b5196615528916120d3565b5191615533916120d3565b515160c0015173ffffffffffffffffffffffffffffffffffffffff16906155598861239d565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301989098526060820194909452608081019690965291821660a08601523360c086015216927f338aa396bce529256f46f1d51f463cc5be80195004e47cf0a1527507d38404479060e090a4600101615482565b9291908051916155e28361295b565b945f905f925b8583106155f757505050505050565b61560a6080613dad8588999b9a986120d3565b935f5b89821080615752575b15615686576156606156809161564b8a60406156418761563b60c0613dad83876120d3565b936120d3565b510151908a616153565b6040615657858c6120d3565b51015190612363565b91604061566d828b6120d3565b51015161567a828c6120d3565b52613d64565b9061560d565b919390969597989473ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821614801561574a575b615742576156db90855184602088015192876161ef565b905b8781106156f2575050505b84919492946155e8565b808061572d896151e16040615709600197846120d3565b5101516101406151d76157258b6157208c86614ff0565b615030565b9687956120d3565b6040615739838b6120d3565b510152016156dd565b5050506156e8565b5082156156c4565b506157626080613dad848b6120d3565b73ffffffffffffffffffffffffffffffffffffffff808816911614615616565b909193928451925f5b84811061579b5750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60e06157bf6001948b6120d3565b515101511673ffffffffffffffffffffffffffffffffffffffff8416146158225761581c73ffffffffffffffffffffffffffffffffffffffff60e0615804848c6120d3565b515101511661581383876120d3565b51908588615b53565b0161578b565b61581c565b90600b8210156123a75752565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116158b1576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa1561278e575f5173ffffffffffffffffffffffffffffffffffffffff8116156158a957905f90565b505f90600190565b505050505f90600390565b6158c4614330565b80519081156158d4576020012090565b505060325480156158e25790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61590f614403565b805190811561591f576020012090565b505060335480156158e25790565b908082101561593a575090565b905090565b1561594657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4c4f503a2063616e27742073776170203020616d6f756e7400000000000000006044820152fd5b9391926159af614dcd565b9385858151946159be8661295b565b90608083019182526159cf8761295b565b9160a0840192835287615a2a615a2584615a1f6060615a0d615a006159f38861295b565b9760c08d0198895261295b565b9b60e08c019c8d526120c1565b51510151615a1a8161239d565b616363565b9a616a52565b6163ea565b60608601986040870196602001915f5b8c8110615a535750505050505050505050505050909150565b8f908f8d8d838e8e8e8e8e8e8e8e8e615a6f60019f8b906120d3565b51916040830197885115615b3f57615b369e615b26615b1e615b2e9f8f9a8f615b01615b269f615b1e9f8f9a8f918c615b269f96615b1e9f615aec8f9591849c859b99615afb94615ae58f899d90615ad1615afb9c6101208d945101516163a9565b9451615ade8383516120d3565b52516120d3565b5190617366565b92919a909651975193516120d3565b526120d3565b52615b18615b108388516120d3565b51151561593f565b516120d3565b518251612363565b9052516120d3565b519051612363565b8d525b01615a3a565b505050505050505050505050505050615b39565b90919273ffffffffffffffffffffffffffffffffffffffff61025b9481604051957f23b872dd00000000000000000000000000000000000000000000000000000000602088015216602486015216604484015260648301526064825261544f608483610583565b73ffffffffffffffffffffffffffffffffffffffff9081169116818114918215615c33575b8215615bea57505090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614915081615c2d575090565b90501590565b8092501580615c43575b91615bdf565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114615c3d565b9081602091031261024c57516108e98161025d565b73ffffffffffffffffffffffffffffffffffffffff831694938515808015615f78575b15615ebc5715615ea05773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000935b6040517f784367d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152911691602082602481865afa94851561278e57615dd7956020935f91615e73575b5015615e6b5750859283915b5f6040518098819582947f769f8e5d000000000000000000000000000000000000000000000000000000008452306004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b03925af192831561278e575f93615e4a575b508284819773ffffffffffffffffffffffffffffffffffffffff841603615e39575b5050503073ffffffffffffffffffffffffffffffffffffffff821603615e3057505050565b61025b9261534e565b615e429261607e565b5f8284615e0b565b615e6491935060203d602011612787576127788183610583565b915f615de9565b928391615d6b565b615e939150843d8611615e99575b615e8b8183610583565b810190615c82565b5f615d5f565b503d615e81565b73ffffffffffffffffffffffffffffffffffffffff5f93615cfc565b50615f499495505f73ffffffffffffffffffffffffffffffffffffffff6020959493604051978896879586937f769f8e5d0000000000000000000000000000000000000000000000000000000085526004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b0393165af190811561278e575f91615f5f575090565b6108e9915060203d602011612787576127788183610583565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168714615cba565b73ffffffffffffffffffffffffffffffffffffffff168061602c57505f3b1561024c575f600491604051928380927fd0e30db0000000000000000000000000000000000000000000000000000000008252845af1801561278e576160185750565b806160265f61025b93610583565b80610afd565b803b1561024c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481015b03925af1801561278e576160185750565b73ffffffffffffffffffffffffffffffffffffffff1690816160f65773ffffffffffffffffffffffffffffffffffffffff915016803b1561024c575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561278e576160185750565b50803b1561024c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f9082908183816024810161606d565b670de0b6b3a76400009161614f91614ff0565b0490565b90919073ffffffffffffffffffffffffffffffffffffffff16806161da57509050340361617c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b816161e457505050565b61025b923091615b53565b949293915f5b85518110156163535773ffffffffffffffffffffffffffffffffffffffff61621d82886120d3565b51511673ffffffffffffffffffffffffffffffffffffffff841614616244576001016161f5565b73ffffffffffffffffffffffffffffffffffffffff602095976162768361626f5f956163259b6120d3565b51976120d3565b519361629161628c606060808a01510151151590565b616516565b6162b66162ae828a8a01976162a9895183111561657b565b614ff0565b865190615030565b946162c28615156165e0565b526162ee7f00000000000000000000000000000000000000000000000000000000000000008096616a92565b604051978896879586937f2e071dc60000000000000000000000000000000000000000000000000000000085523060048601616645565b0393165af190811561278e575f9161633b575090565b6108e9915060203d8111612787576127788183610583565b5092949091506108e99350616742565b60048110156123a757806163775750600190565b6163808161239d565b6001810361638e5750600290565b8061639a60029261239d565b036163a457600390565b600490565b906163b391614ff0565b6301e1338090047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161024c576163ea90616ce2565b5f811261024c5790565b9073ffffffffffffffffffffffffffffffffffffffff61646292165f8060405193616420604086610583565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af161645c6133aa565b9161726d565b80519081159182156164fc575b50501561647857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b61650f9250602080918301019101615c82565b5f8061646f565b1561651d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a206e656564207363616c6500000000000000000000000000000000006044820152fd5b1561658257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206f6e6c79207363616c6520646f776e0000000000000000000000006044820152fd5b156165e757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4f503a207a65726f207363616c65644d696e537900000000000000000000006044820152fd5b939173ffffffffffffffffffffffffffffffffffffffff908160809593168652166020850152604084015281606084015273ffffffffffffffffffffffffffffffffffffffff81511682840152602081015160a084015273ffffffffffffffffffffffffffffffffffffffff60408201511660c084015273ffffffffffffffffffffffffffffffffffffffff60608201511660e084015201519060a06101008201526166f661012082018351615827565b73ffffffffffffffffffffffffffffffffffffffff6020830151166101408201526101806060616737604085015160806101608601526101a085019061103b565b930151151591015290565b7f0000000000000000000000000000000000000000000000000000000000000000929173ffffffffffffffffffffffffffffffffffffffff8082169085161480616852575b9083615f49956020959493616840575b50506167a38282616a92565b73ffffffffffffffffffffffffffffffffffffffff811661683a57825b73ffffffffffffffffffffffffffffffffffffffff6040518097819682957f20e8c5650000000000000000000000000000000000000000000000000000000084523060048501606091949373ffffffffffffffffffffffffffffffffffffffff5f9481608085019816845216602083015260408201520152565b5f6167c0565b61684a9250615fb7565b5f825f616797565b506040517ffa5a4f0600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201529291906020848060248101038173ffffffffffffffffffffffffffffffffffffffff86165afa93841561278e57615f499560209585925f916168e1575b50159293945095509350616787565b6168f89150873d8911615e9957615e8b8183610583565b5f6168d2565b9293917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082019180831161127057670de0b6b3a76400006169426169489387614ff0565b04614ff0565b811561503a57819004937ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101908111611270578161698a61614f9286614ff0565b0493614fcc565b6169a090949394929192614fcc565b91801561503a576169b2920490616c59565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101908111611270576169f0670de0b6b3a76400009184614ff0565b04908290565b929391670de0b6b3a76400009182616942616a119387614ff0565b04927ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810181811161127057616a479084614ff0565b811561503a57049190565b6301e1338091616a6191614ff0565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161024c576108e990616ce2565b9073ffffffffffffffffffffffffffffffffffffffff82168015615454576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015290602090829060449082905afa90811561278e575f91616c3a575b506b7fffffffffffffffffffffff11616b2a575050565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff831660248301525f6044830181905291829190616b8a816064810161290c565b519082865af1616b986133aa565b81616c0b575b5015616bad5761025b916171a2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b8051801592508215616c20575b50505f616b9e565b616c339250602080918301019101615c82565b5f80616c18565b616c53915060203d602011612787576127788183610583565b5f616b13565b9061503090614fcc565b15616c6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b801561503a576ec097ce7bc90715b34b9f10000000000590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008112158061718f575b616d1590616c63565b5f811261717b576108e9906806f05b59d3b20000008112617124577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000001616eed6064770195e54c5dd42177f53a27172fa9ec630262827000000000925b0268056bc75e2d631000009068ad78ebc5ac620000008112156170eb575b6856bc75e2d6310000008112156170a1575b682b5e3af16b18800000811215617059575b6815af1d78b58c400000811215617011575b680ad78ebc5ac6200000811215616fca575b68056bc75e2d63100000811215616f83575b6802b5e3af16b1880000811215616f3c575b68015af1d78b58c40000811215616ef5575b600268056bc75e2d631000008280020505600368056bc75e2d631000008383020505600468056bc75e2d631000008483020505600568056bc75e2d631000008583020505600668056bc75e2d631000008683020505600768056bc75e2d63100000878302050590600868056bc75e2d63100000888402050592600968056bc75e2d6310000089860205059468056bc75e2d63100000600a8a88028290050597600b68056bc75e2d631000008c8b02050599600c68056bc75e2d631000008d8d0205059b0101010101010101010101010268056bc75e2d63100000900590565b026064900590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000616f369201920268056bc75e2d63100000900590565b90616e0e565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000616f7d9201920268056bc75e2d63100000900590565b90616dfc565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000616fc49201920268056bc75e2d63100000900590565b90616dea565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000061700b9201920268056bc75e2d63100000900590565b90616dd8565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000006170539201920268056bc75e2d63100000900590565b90616dc6565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000061709b9201920268056bc75e2d63100000900590565b90616db4565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000006170e59201920268056bc75e2d63100000900590565b90616da2565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001616d90565b6803782dace9d9000000811261716e577ffffffffffffffffffffffffffffffffffffffffffffffffc87d253162700000001616eed60646b1425982cf597cd205cef738092616d72565b616eed6064600192616d72565b617186905f03616ce2565b6108e990616cc8565b5068070c1cc73b00c80000811315616d0c565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201525f928392918390617224816064810161290c565b51925af16172306133aa565b8161723e575b5015616bad57565b8051801592508215617253575b50505f617236565b6172669250602080918301019101615c82565b5f8061724b565b919290156172e85750815115617281575090565b3b1561728a5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156172fb5750805190602001fd5b61184a906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061103b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b9392919093806004146173ae57806003146173a4578060021461739a5760010361733957617393936169f6565b9192909190565b5061739393616991565b50617393936168fe565b50907ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008295939495019482861161127057856173e991614ff0565b91801561503a576173fb920490616c59565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611270576174309084614ff0565b811561503a570492670de0b6b3a7640000840293808504670de0b6b3a7640000149015171561127057801561503a5761746c8161572085614fcc565b929304919056fea2646970667358221220f5726cd2e960db838bff0ba4a4a3bcda8fd729bb148f839d6b5f756f30946f0a64736f6c634300081e0033",
1581
+ "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063078dfbe7146102295780630b4e3350146102245780630c0b8c9c1461021f5780632545e4bd1461021a57806326bbbdf514610215578063327075971461021057806332fe7b261461020b57806335ee3ffc146102065780633644e5151461020157806346904840146101fc578063485cc955146101f75780634e71e0c8146101f25780635413fba7146101ed578063556e0da9146101e85780636122b173146101e357806370ae92d2146101de57806372c244a8146101d95780637f3bc4dd146101d457806384b0196e146101cf5780638da5cb5b146101ca57806397cf58b0146101c55780639a046669146101c0578063ab16a690146101bb578063b381cf40146101b6578063bd61951d146101b1578063c36c4340146101ac578063c53a0292146101a7578063cf6fc6e3146101a2578063d74a3eca1461019d578063d914237714610198578063e30c397814610193578063e74b981b1461018e5763f1d4deb30361000e57611dd4565b611d48565b611cf7565b611af9565b6119f0565b611985565b6118f1565b6118c0565b61176f565b611701565b6116b0565b611657565b61157e565b6114d1565b611400565b611275565b6111c6565b61115f565b6110a1565b610ec8565b610eb2565b610dce565b610c62565b610bce565b610b96565b610b75565b610b07565b610aa4565b610a8e565b6109d1565b6108ec565b61074e565b610274565b73ffffffffffffffffffffffffffffffffffffffff81160361024c57565b5f80fd5b359061025b8261022e565b565b8015150361024c57565b6044359061025b8261025d565b3461024c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576004356102af8161022e565b602435906102bc8261025d565b604435916102c98361025d565b6102eb73ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b156104475773ffffffffffffffffffffffffffffffffffffffff81169182159081159161043f575b50156103e1576103b49173ffffffffffffffffffffffffffffffffffffffff6103505f5473ffffffffffffffffffffffffffffffffffffffff1690565b167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b6100187fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90505f610313565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff8211176104d557604052565b61048c565b60a0810190811067ffffffffffffffff8211176104d557604052565b6080810190811067ffffffffffffffff8211176104d557604052565b6040810190811067ffffffffffffffff8211176104d557604052565b610160810190811067ffffffffffffffff8211176104d557604052565b6020810190811067ffffffffffffffff8211176104d557604052565b60c0810190811067ffffffffffffffff8211176104d557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176104d557604052565b6040519061025b61018083610583565b6040519061025b60c083610583565b6040519061025b604083610583565b3590600482101561024c57565b67ffffffffffffffff81116104d557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561024c57803590610650826105ff565b9261065e6040519485610583565b8284526020838301011161024c57815f926020809301838601378301015290565b9190916101808184031261024c576106956105c4565b928135845260208201356020850152604082013560408501526106ba606083016105f2565b60608501526106cb60808301610250565b60808501526106dc60a08301610250565b60a08501526106ed60c08301610250565b60c08501526106fe60e08301610250565b60e085015261010082013561010085015261012082013561012085015261014082013561014085015261016082013567ffffffffffffffff811161024c576107469201610639565b610160830152565b3461024c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c5761079d90369060040161067f565b60243567ffffffffffffffff811161024c576060916107c36107c9923690600401610639565b90611fcd565b9060405192835260208301526040820152f35b67ffffffffffffffff81116104d55760051b60200190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261024c576004359067ffffffffffffffff821161024c578060238301121561024c57816004013561084a816107dc565b926108586040519485610583565b8184526024602085019260051b82010192831161024c57602401905b8282106108815750505090565b8135815260209182019101610874565b90602080835192838152019201905f5b8181106108ae5750505090565b82518452602093840193909201916001016108a1565b90916108db6108e993604084526040840190610891565b916020818403910152610891565b90565b3461024c576109026108fd366107f4565b6129aa565b5f5b82518110156109bc5761091781846120d3565b511561095e57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61094b600193866120d3565b510161095782866120d3565b5201610904565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20556e6b6e6f776e206f7264657200000000000000000000000000006044820152fd5b50906109cd604051928392836108c4565b0390f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576020610a16600435610a118161022e565b6120e7565b604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261024c576004359067ffffffffffffffff821161024c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826101809203011261024c5760040190565b3461024c57610018610a9f36610a1e565b61257a565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c57610a16610af8602092369060040161067f565b612897565b5f91031261024c57565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461024c57610b866108fd366107f4565b906109cd604051928392836108c4565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576020610a16614636565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60cb5416604051908152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261024c57600435610c558161022e565b906024356108e98161022e565b3461024c57610ce8610c7336610c1f565b6001549291610c9a60ff60a886901c161580958196610dbc575b8115610d99575b50612a69565b83610cdf740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff6001541617600155565b610d4f57612af4565b610cee57005b610d1b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff60015416600155565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b610d9475010000000000000000000000000000000000000000007fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff6001541617600155565b612af4565b303b15915081610dab575b505f610c94565b60a01c60ff1660011490505f610da4565b600160a082901c60ff16109150610c8d565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff60015416803303610e5457806103b49173ffffffffffffffffffffffffffffffffffffffff6103505f5473ffffffffffffffffffffffffffffffffffffffff1690565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461024c57610018610ec336610a1e565b612d31565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60cf5416604051908152f35b81601f8201121561024c57803590610f30826107dc565b92610f3e6040519485610583565b82845260208085019360051b8301019181831161024c5760208101935b838510610f6a57505050505090565b843567ffffffffffffffff811161024c57820160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261024c5760405191610fb6836104b9565b602082013567ffffffffffffffff811161024c57856020610fd99285010161067f565b835260408201359267ffffffffffffffff841161024c57606083611004886020809881980101610639565b8584015201356040820152815201940193610f5b565b5f5b83811061102b5750505f910152565b818101518382015260200161101c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936110778151809281875287808801910161101a565b0116010190565b90926080926108e99594835260208301526040820152816060820152019061103b565b3461024c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c576110f0903690600401610f19565b602435906110fd8261022e565b6044359060643567ffffffffffffffff811161024c57611121903690600401610639565b6084359267ffffffffffffffff841161024c576109cd9461114961114f953690600401610639565b93612e0d565b906040949294519485948561107e565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff6004356111af8161022e565b165f526066602052602060405f2054604051908152f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043560ff811680910361024c57335f52606660205260405f20549080820180921161127057335f5260666020528160405f20558103908082116112705760408051928352602083019190915233917fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191819081015b0390a2005b612328565b3461024c577ffb7d0c5375fabc97c2f8b965867b65175296e925b60141a8283b3e91061341d26112a436610c1f565b906112c773ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000060cf54161760cf5573ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff000000000000000000000000000000000000000060d054161760d055610d4a6040519283928390929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b91936113e16108e99694956113d373ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e087019061103b565b90858203604087015261103b565b9460608401521660808201525f60a082015260c0818403910152610891565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760325415806114c7575b1561146957611445614330565b61144d614403565b906109cd611459612940565b604051938493309146918661137b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060335415611438565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b9080601f8301121561024c578135611538816107dc565b926115466040519485610583565b81845260208085019260051b82010192831161024c57602001905b82821061156e5750505090565b8135815260209182019101611561565b3461024c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c573660238201121561024c578060040135906115d9826107dc565b916115e76040519384610583565b8083526024602084019160051b8301019136831161024c57602401905b82821061163d576024358467ffffffffffffffff821161024c5761162f610018923690600401611521565b611637610267565b91612f22565b60208091833561164c8161022e565b815201910190611604565b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c57610a166116ab6020923690600401610f19565b6131eb565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60d05416604051908152f35b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c576004356117a58161022e565b60243567ffffffffffffffff811161024c573660238201121561024c5780600401359167ffffffffffffffff831161024c57366024848401011161024c5760245f9392838594604051938493018337810184815203915af46118056133aa565b9061184a6040519283927f1934afc80000000000000000000000000000000000000000000000000000000084521515600484015260406024840152604483019061103b565b0390fd5b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261024c5760043567ffffffffffffffff811161024c5760040182601f8201121561024c5780359267ffffffffffffffff841161024c576020808301928560051b01011161024c579190565b3461024c576118ce3661184e565b905f5b8281106118da57005b806118eb610a9f60019386866133d9565b016118d1565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57335f52606660205260405f2054600181018082116112705761126b7fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac191335f5260666020528060405f205560405191829133958360209093929193604081019481520152565b3461024c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760206004356119c28161022e565b73ffffffffffffffffffffffffffffffffffffffff60243591165f526066825260405f205414604051908152f35b3461024c576119fe3661184e565b90611a2173ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b5f5b828110611a2c57005b80611a3a6001928585613419565b355f5260cd60205281611a6360405f205460801c6fffffffffffffffffffffffffffffffff1690565b14611aea57611ab3611a88611a79838787613419565b355f5260cd60205260405f2090565b7001000000000000000000000000000000006fffffffffffffffffffffffffffffffff825416179055565b611abe818585613419565b357f7e764b5c87bad409a763c11635251284e519d7bbd042eef277b3529e212c25465f80a25b01611a23565b611ae4565b600b111561024c57565b3461024c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5760043567ffffffffffffffff811161024c573660238201121561024c578060040135611b53816107dc565b91611b616040519384610583565b8183526024602084019260051b8201019036821161024c5760248101925b828410611bcb578460243567ffffffffffffffff811161024c576109cd91611bae611bbb923690600401611521565b6044359060643592613456565b6040519081529081906020820190565b833567ffffffffffffffff811161024c5782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc833603011261024c5760405191611c18836104da565b6024810135611c268161022e565b8352604481013560208401526064810135611c408161022e565b60408401526084810135611c538161022e565b606084015260a481013567ffffffffffffffff811161024c5760249101019060808236031261024c5760405192611c89846104f6565b8235611c9481611aef565b84526020830135611ca48161022e565b602085015260408301359367ffffffffffffffff851161024c57606060209594611cd2879636908301610639565b60408401520135611ce28161025d565b60608201526080820152815201930192611b7f565b3461024c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461024c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024c5773ffffffffffffffffffffffffffffffffffffffff600435611d988161022e565b611da6825f54163314611e05565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb555f80f35b3461024c57611de23661184e565b905f5b828110611dee57005b80611dff610ec360019386866133d9565b01611de5565b15611e0c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b611e8c73ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b73ffffffffffffffffffffffffffffffffffffffff8116908115801590611f61575b156103e157611f349173ffffffffffffffffffffffffffffffffffffffff805f5416167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a373ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55565b61025b7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155565b505f611eae565b15611f6f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20626164207369676e617475726500000000000000000000000000006044820152fd5b90916fffffffffffffffffffffffffffffffff611fe983612897565b93845f5260cd60205260405f20938280806020604051986120098a610512565b5498828a16998a825260801c9182910152169616951680155f14612068575061205e612059610100938861205460c086015173ffffffffffffffffffffffffffffffffffffffff1690565b613575565b611f68565b0151935b93921690565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91500193612062565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156120ce5760200190565b612094565b80518210156120ce5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f205490811561211257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20666565206e6f7420736574000000000000000000000000000000006044820152fd5b356108e98161022e565b1561218157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a204163636573732064656e69656400000000000000000000000000006044820152fd5b156121e657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20696e76616c6964206e6f6e636500000000000000000000000000006044820152fd5b9081602091031261024c575190565b6040513d5f823e3d90fd5b1561226557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20696e76616c696420657870697279000000000000000000000000006044820152fd5b156122ca57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4f503a20616c726561647920657869737400000000000000000000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b906001820180921161127057565b9190820180921161127057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600411156123a757565b612370565b9060048210156123a75752565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561024c57016020813591019167ffffffffffffffff821161024c57813603831361024c57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6101a06125696108e9936020845280356020850152602081013560408501526040810135606085015261248961247f606083016105f2565b60808601906123ac565b6124b561249860808301610250565b73ffffffffffffffffffffffffffffffffffffffff1660a0860152565b6124e16124c460a08301610250565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152565b61250d6124f060c08301610250565b73ffffffffffffffffffffffffffffffffffffffff1660e0860152565b61253a61251c60e08301610250565b73ffffffffffffffffffffffffffffffffffffffff16610100860152565b6101008101356101208501526101208101356101408501526101408101356101608501526101608101906123b9565b919092610180808201520191612409565b6125e760c082016125aa61258d82612170565b73ffffffffffffffffffffffffffffffffffffffff16331461217a565b6125df6125bb604085013592612170565b73ffffffffffffffffffffffffffffffffffffffff165f52606660205260405f2090565b5411156121df565b602081013580421090816126e6575b506126009061225e565b7fdc3f8d38b05347fcb135fa64908d456029c6fcb974c0b823d45e1424df6ef0d56126e1612631610af8368561067f565b926126696fffffffffffffffffffffffffffffffff61266261265b875f5260cd60205260405f2090565b5460801c90565b16156122c3565b6126d561268261267d610100840135612355565b613680565b612694865f5260cd60205260405f2090565b906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b60405191829182612447565b0390a2565b6004915060206127176126fe6126fe60a08701612170565b73ffffffffffffffffffffffffffffffffffffffff1690565b604051938480927fe184c9be0000000000000000000000000000000000000000000000000000000082525afa90811561278e57612600925f9261275d575b5010906125f6565b61278091925060203d602011612787575b6127788183610583565b810190612244565b905f612755565b503d61276e565b612253565b61018090939291936101406101a08201957f22742a2f8610a2d0e945db84f408aacc9d3081f99974bc30b023966fa2fd593183528051602084015260208101516040840152604081015160608401526127f4606082015160808501906123ac565b608081015173ffffffffffffffffffffffffffffffffffffffff1660a084015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c084015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e084015260e081015173ffffffffffffffffffffffffffffffffffffffff166101008401526101008101516101208401526101208101518284015201516101608201520152565b6108e9905f6101406040516128ab8161052e565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152015261290c61293861016083015160208151910120604051928391602083019586612793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610583565b5190206136ac565b6040519061294f602083610583565b5f808352366020840137565b90612965826107dc565b6129726040519182610583565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06129a082946107dc565b0190602036910137565b8051916129b68361295b565b926129c08161295b565b925f5b8281106129cf57505050565b806129dc600192846120d3565b515f5260cd6020526fffffffffffffffffffffffffffffffff60405f20612a4c612a3783602060405194612a0f86610512565b54948286169586825260801c918291015216926fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b612a56848a6120d3565b5216612a6282896120d3565b52016129c3565b15612a7057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b612b0560ff60015460a81c166136ed565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905560408051612b3c8282610583565b601b81527f50656e646c65204c696d6974204f726465722050726f746f636f6c00000000006020820152612b7282519283610583565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152612bb660ff60015460a81c16612bb1816136ed565b6136ed565b80519067ffffffffffffffff82116104d557612bdc82612bd76034546142df565b614697565b602090601f8311600114612c655792612c368361025b979694612c3e94612c55975f92612c5a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b603455614736565b612c475f603255565b612c505f603355565b613525565b611e6a565b015190505f80612c04565b60345f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691907f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1925f5b818110612d19575093612c3e93612c5596936001938361025b9b9a9810612ce2575b505050811b01603455614736565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080612cd4565b92936020600181928786015181550195019301612cb2565b610af8612d5091612d4960c082013561258d8161022e565b369061067f565b805f5260cd602052600160405f205460801c14612da357612d7c611a88825f5260cd60205260405f2090565b337f35ab4a1a0e9bec7fd7ae164679b9cc00e6568e4db238d8055a75b1862f62ec2e5f80a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a20616c72656164792066696c6c6564000000000000000000000000006044820152fd5b60048210156123a75752565b939092612e1a9085613af8565b91612e2485613d91565b845115612ed257612e7c6060612e39876120c1565b5151015194612e478661239d565b612e4f6105d4565b96612e5a8789612e01565b602088015273ffffffffffffffffffffffffffffffffffffffff166040870152565b6060850152608084015260a0830152612e948161239d565b8015908115612ebe575b5015612eb557612ead906141a8565b929391929091565b612ead9061405c565b60029150612ecb8161239d565b145f612e9e565b50915050612ee09150614a6c565b5f9182918291565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161127057565b9190820391821161127057565b9091612f4673ffffffffffffffffffffffffffffffffffffffff5f54163314611e05565b815190612f55845183146130bc565b5f5b828110612f9857505050907fc3db6554492d97a6a5438d341beeab3232f4f79acc844de8e881ccf16330d31f91612f9360405192839283613186565b0390a1565b612fa281866120d3565b51158015906130b5575b156130315780612fd166ad566553da1bc3612fc9600194896120d3565b511115613121565b612fdb81876120d3565b5161302a613006612fec84896120d3565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff165f5260cc60205260405f2090565b5501612f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4f503a207a65726f20666565206d75737420626520616c6c6f77656420657860448201527f706c696369746c790000000000000000000000000000000000000000000000006064820152fd5b5081612fac565b156130c357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206c656e677468206d69736d617463680000000000000000000000006044820152fd5b1561312857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4f503a2066656520746f6f20686967680000000000000000000000000000006044820152fd5b9291604084019360408152825180955260206060820193015f955b8087106131bd5750506108e99394506020818403910152610891565b909360208060019273ffffffffffffffffffffffffffffffffffffffff8851168152019501960195906131a1565b60405160208101918160408101916020855280518093526060820192602060608260051b8501019201935f905b828210613259575050506132539250037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610583565b51902090565b91936020847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082936001959703018552875190604080613394613384610160865160608752805160608801528881015160808801528481015160a08801526132c9606082015160c08901906123ac565b608081015173ffffffffffffffffffffffffffffffffffffffff1660e088015260a081015173ffffffffffffffffffffffffffffffffffffffff1661010088015260c081015173ffffffffffffffffffffffffffffffffffffffff1661012088015260e081015173ffffffffffffffffffffffffffffffffffffffff16610140880152610100810151828801526101208101516101808801526101408101516101a088015201516101806101c08701526101e086019061103b565b868601518582038887015261103b565b9301519101529601920192018593919492613218565b3d156133d4573d906133bb826105ff565b916133c96040519384610583565b82523d5f602084013e565b606090565b91908110156120ce5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818136030182121561024c570190565b91908110156120ce5760051b0190565b80516020909101905f5b8181106134405750505090565b8251845260209384019390920191600101613433565b9390613462855161295b565b925f5b8651811015613495578061348461347e6001938a6120d3565b51614498565b61348e82886120d3565b5201613465565b50919450916108e99361290c612938926040516134ba8161290c602082018095613429565b519020946040516134d38161290c602082018095613429565b519020916040519485936020850197889094939260809260a08301967f2207225b55a9b1d5083cb62224dd5d8b2a6c965776a0f526e7fd237fcb04902084526020840152604083015260608201520152565b73ffffffffffffffffffffffffffffffffffffffff90613549825f54163314611e05565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060cb54161760cb55565b906135808382614601565b60058195929510156123a75715938461365d575b5083156135a2575b50505090565b5f93509061290c6135f385949360405192839160208301957f1626ba7e000000000000000000000000000000000000000000000000000000008752602484015260406044840152606483019061103b565b51915afa6135ff6133aa565b8161364f575b81613614575b505f808061359c565b905060208180518101031261024c57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f61360b565b905060208151101590613605565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f613594565b6fffffffffffffffffffffffffffffffff811161024c576fffffffffffffffffffffffffffffffff1690565b6042906136b7614636565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b156136f457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b81601f8201121561024c57805161378e816105ff565b9261379c6040519485610583565b8184526020828401011161024c576108e9916020808501910161101a565b91909160408184031261024c57805192602082015167ffffffffffffffff811161024c576108e99201613778565b156137ef57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20696e76616c69642076657273696f6e0000000000000000000000006044820152fd5b81601f8201121561024c57805190613864826107dc565b926138726040519485610583565b82845260208085019360051b8301019181831161024c5760208101935b83851061389e57505050505090565b845167ffffffffffffffff811161024c5782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838603011261024c57604051916138eb836104da565b60208101516138f98161022e565b83526040810151602084015260608101516139138161022e565b604084015260808101516139268161022e565b606084015260a081015167ffffffffffffffff811161024c5760209101019060808286031261024c576040519261395c846104f6565b825161396781611aef565b845260208301516139778161022e565b602085015260408301519367ffffffffffffffff851161024c576060846139a389602098899801613778565b604084015201516139b38161025d565b6060820152608082015281520194019361388f565b9080601f8301121561024c5781516139df816107dc565b926139ed6040519485610583565b81845260208085019260051b82010192831161024c57602001905b828210613a155750505090565b8151815260209182019101613a08565b60208183031261024c5780519067ffffffffffffffff821161024c570160c08183031261024c57613a546105d4565b91815167ffffffffffffffff811161024c5781613a7291840161384d565b8352602082015167ffffffffffffffff811161024c5781613a949184016139c8565b60208401526040820151604084015260608201516060840152608082015167ffffffffffffffff811161024c5781613acd918401613778565b608084015260a082015167ffffffffffffffff811161024c57613af09201613778565b60a082015290565b9190604051613b068161054b565b604051613b1281610567565b60608152606060208201525f60408201525f606082015260606080820152606060a08201528152809382519081613b4a575b50505050565b613b806001613b71613b6a87602080613b8898613bc79b010191016137ba565b92146137e8565b60208082518301019101613a25565b8093526131eb565b60cf5473ffffffffffffffffffffffffffffffffffffffff1690613bc160d05473ffffffffffffffffffffffffffffffffffffffff1690565b92614998565b5f808080613b44565b15613bd757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4f503a20656d707479206261746368000000000000000000000000000000006044820152fd5b15613c3c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a205059206578706972656400000000000000000000000000000000006044820152fd5b15613ca157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4f503a20696e76616c6964206f72646572696e6700000000000000000000006044820152fd5b15613d0657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d69736d61746368207479706573000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112705760010190565b805190613d9f821515613bd0565b613dca60a0613dad836120c1565b5151015173ffffffffffffffffffffffffffffffffffffffff1690565b9173ffffffffffffffffffffffffffffffffffffffff6060613deb846120c1565b5151015193613df98561239d565b16926040517fe184c9be000000000000000000000000000000000000000000000000000000008152602081600481885afa801561278e57613e47915f91613fd8575b50949291944210613c35565b5f935f925b828410613e5a575050505052565b90919294613e6886866120d3565b515186158015613f79575b613e7c90613c9a565b836060820151613e8b8161239d565b613e948261239d565b613e9d8161239d565b1480613f35575b613ead90613cff565b602081015142109081613f01575b5015613ef857613eed600191613ed188886120d3565b51613edc82896120d3565b52613ee781886120d3565b50613d64565b955b01929190613e4c565b94600190613eef565b9050613f2c6125bb60c0604084015193015173ffffffffffffffffffffffffffffffffffffffff1690565b5411155f613ebb565b50613ead8373ffffffffffffffffffffffffffffffffffffffff613f7060a085015173ffffffffffffffffffffffffffffffffffffffff1690565b16149050613ea4565b50613e7c8773ffffffffffffffffffffffffffffffffffffffff613fcd6126fe6080613dad613fc7613fc1838a015173ffffffffffffffffffffffffffffffffffffffff1690565b96612ee8565b8d6120d3565b911610159050613e73565b613ff1915060203d602011612787576127788183610583565b5f613e3b565b15613ffe57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4f503a206d617854616b696e672065786365656465640000000000000000006044820152fd5b602081019161406b8351614bc6565b614086879495939692975188614080816120e7565b91614e1b565b80519560208201519561409f6040840197885190612363565b9651978789819b839d6140b860608b0151851115613ff7565b60018a516140c58161239d565b6140ce8161239d565b036141a05750975b8451604082015173ffffffffffffffffffffffffffffffffffffffff1699608089019a8b519173ffffffffffffffffffffffffffffffffffffffff169261411c93614f10565b608001519161412a93614b06565b9661414d90303373ffffffffffffffffffffffffffffffffffffffff8616614fb5565b805160a084015161415e91846150a4565b918860cb546141809073ffffffffffffffffffffffffffffffffffffffff1690565b6141899261534e565b51935160c08301519260e001519361025b95615478565b9050976140d6565b90602082019081516141b990614bc6565b959285949291945160a0850151516141d191836155d3565b968651866141de816120e7565b906141e892614e1b565b9081519860408301998a516141fc91612f15565b9860208401519a5198898c9b809d60608c015181111561421b90613ff7565b60408c015161424290839073ffffffffffffffffffffffffffffffffffffffff168b61534e565b8260808d01519161425293614b06565b995161425d8161239d565b6142668161239d565b155f14976142c39261025b996142d75750965b6142a484519860a08901998a519173ffffffffffffffffffffffffffffffffffffffff339116615782565b60cb5473ffffffffffffffffffffffffffffffffffffffff169061534e565b5193519160e060c085015194015194615478565b905096614279565b90600182811c92168015614326575b60208310146142f957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916142ee565b604051905f8260345491614343836142df565b80835292600181169081156143c65750600114614367575b61025b92500383610583565b5060345f90815290917f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c15b8183106143aa57505090602061025b9282010161435b565b6020919350806001915483858901015201910190918492614392565b6020925061025b9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010161435b565b604051905f8260355491614416836142df565b80835292600181169081156143c657506001146144395761025b92500383610583565b5060355f90815290917fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d5b81831061447c57505090602061025b9282010161435b565b6020919350806001915483858901015201910190918492614464565b73ffffffffffffffffffffffffffffffffffffffff8151169060208101519073ffffffffffffffffffffffffffffffffffffffff60408201511691608073ffffffffffffffffffffffffffffffffffffffff606084015116920151805192600b8410156123a757613253938273ffffffffffffffffffffffffffffffffffffffff602061290c950151169060606040820151602081519101209101511515906040519261457060208501957f92c327568280269b9f5ff13cc39573423140669d42c04f868a3459f4ff7c221d87526040860190615827565b6060840152608083015260a082015260a0815261458e60c082610583565b51902090604051958694602086019889919373ffffffffffffffffffffffffffffffffffffffff60a09481939897968260c087019a7fcc513f3680a104600c308518f4e6313dfbea1485c225b7599773fc742e8a1bf6885216602087015260408601521660608401521660808201520152565b9060418151145f1461462d5761462991602082015190606060408401519301515f1a90615834565b9091565b50505f90600290565b61463e6158bc565b614646615907565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261325360c082610583565b601f81116146a3575050565b60345f5260205f20906020601f840160051c830193106146dd575b601f0160051c01905b8181106146d2575050565b5f81556001016146c7565b90915081906146be565b601f82116146f457505050565b5f5260205f20906020601f840160051c8301931061472c575b601f0160051c01905b818110614721575050565b5f8155600101614716565b909150819061470d565b90815167ffffffffffffffff81116104d55761475e816147576035546142df565b60356146e7565b602092601f82116001146147b0576147ab929382915f92612c5a5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b603555565b60355f527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216937fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d915f5b868110614851575083600195961061481a575b505050811b01603555565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f808061480f565b919260206001819286850151815501940192016147fc565b1561487057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4c4f503a206d696e74537920706172616d73206d69736d6174636800000000006044820152fd5b156148d557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20626164206d696e74537920736967310000000000000000000000006044820152fd5b1561493a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a20626164206d696e74537920736967320000000000000000000000006044820152fd5b929091604084018051421015614a0e5784614a016149fc6149ef60a094614a09986149cc606061025b9c0191825114614869565b855151916149e16020880193845151146130bc565b865192519051915192613456565b9485608085015191613575565b6148ce565b015191613575565b614933565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4f503a206d696e7453792065787069726564000000000000000000000000006044820152fd5b906060918051614a795750565b614ab79192505f90604051809381927feb3a7d470000000000000000000000000000000000000000000000000000000083528480806004860161107e565b038183335af190811561278e575f91614ace575090565b90503d805f833e614adf8183610583565b810160208282031261024c57815167ffffffffffffffff811161024c576108e99201613778565b83516060959490614b175750505050565b5f93949550614b549060405195869485947feb3a7d470000000000000000000000000000000000000000000000000000000086526004860161107e565b038183335af190811561278e575f91614b73575b50905f808080613b44565b90503d805f833e614b848183610583565b810160208282031261024c57815167ffffffffffffffff811161024c57614bab9201613778565b5f614b68565b9081602091031261024c57516108e98161022e565b90815191614bd38361295b565b925f5b818110614cd057505060a0613dad614bed926120c1565b73ffffffffffffffffffffffffffffffffffffffff8116926040517fafd27bf5000000000000000000000000000000000000000000000000000000008152602081600481885afa90811561278e576004916020915f91614cb3575b5095604051928380927fd94073d40000000000000000000000000000000000000000000000000000000082525afa90811561278e575f91614c87575092565b614ca9915060203d602011614cac575b614ca18183610583565b810190614bb1565b92565b503d614c97565b614cca9150823d8411614cac57614ca18183610583565b5f614c48565b8060406001614ce08194876120d3565b51614dbb614d21614d5e614cfa8451602086015190611fcd565b93919790950194614d1a614d0f82885161592d565b978880930301613680565b9301613680565b91614d45614d2d6105e3565b6fffffffffffffffffffffffffffffffff9094168452565b6fffffffffffffffffffffffffffffffff166020830152565b614d70855f5260cd60205260405f2090565b81516020929092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b52614dc682886120d3565b5201614bd6565b60405190610100820182811067ffffffffffffffff8211176104d557604052606060e0835f81525f60208201525f60408201525f838201528260808201528260a08201528260c08201520152565b919073ffffffffffffffffffffffffffffffffffffffff90614e3b614dcd565b501691604051927fe184c9be000000000000000000000000000000000000000000000000000000008452602084600481845afa801561278e57614e8b6020915f968791614ef3575b504290612f15565b916004604051809781937f1d52edc40000000000000000000000000000000000000000000000000000000083525af191821561278e576108e9945f93614ed2575b506159a4565b614eec91935060203d602011612787576127788183610583565b915f614ecc565b614f0a9150833d8511612787576127788183610583565b5f614e83565b909392918451925f5b848110614f295750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60c0614f4d6001948b6120d3565b515101511673ffffffffffffffffffffffffffffffffffffffff851614614fb057614faa73ffffffffffffffffffffffffffffffffffffffff60c0614f92848c6120d3565b515101511685614fa284876120d3565b519188615b53565b01614f19565b614faa565b92919082614fc35750505050565b613bc793615b53565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561127057565b8181029291811591840414171561127057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561503a570490565b615003565b1561504657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4f503a206661696c20736166650000000000000000000000000000000000006044820152fd5b81519193926150b28361295b565b945f5f935b8582106150c657505050505050565b9091936150dc6080613dad85889b97999b6120d3565b905f5b89821080615330575b156151115761510561510b916150fe848b6120d3565b5190612363565b91613d64565b906150df565b9096949895939181156153285773ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff851681146152d457600161515e858b612f15565b036151ee575061518b915061517860e0613dad85886120d3565b908461518485896120d3565b5192615c97565b615195828a6120d3565b525b8581106151aa57505b84909493946150b7565b806151e86151ba600193876120d3565b516151e16151c8848d6120d3565b51916101406151d7868a6120d3565b515101519061613c565b111561503f565b01615197565b6151fa83838730615c97565b92845b8c888a8d8410615214575050505050505050615197565b83928589859361522485876120d3565b51516080015173ffffffffffffffffffffffffffffffffffffffff169461524a916120d3565b519061525591614ff0565b9061525f91615030565b61526985836120d3565b52878473ffffffffffffffffffffffffffffffffffffffff841689141560e0613dad6001996152b2986152ab966152a5956152b8575b506120d3565b926120d3565b519161534e565b016151fd565b6152ce908a6152c7858c6120d3565b519161607e565b8e61529f565b5050505b8581106152e557506151a0565b8061530c6152fa60e0613dad600195886120d3565b61530483886120d3565b51908561534e565b61531681866120d3565b51615321828b6120d3565b52016152d8565b5050506151a0565b506153496153436080613dad858b6120d3565b84615bba565b6150e8565b82158015615459575b6154545773ffffffffffffffffffffffffffffffffffffffff16806153ed57505f80809381935af16153876133aa565b501561538f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261025b9161544f606483610583565b6163f4565b505050565b503073ffffffffffffffffffffffffffffffffffffffff831614615357565b91939490948551955f5b878110615493575050505050505050565b80878782808080808c8c8c8c6154a985856120d3565b5151976154b5916120d3565b519860608801519a6154c68c61239d565b60a089015173ffffffffffffffffffffffffffffffffffffffff1660809099015173ffffffffffffffffffffffffffffffffffffffff1697615507916120d3565b5195615512916120d3565b519a61551d916120d3565b5196615528916120d3565b5191615533916120d3565b515160c0015173ffffffffffffffffffffffffffffffffffffffff16906155598861239d565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101949094528301989098526060820194909452608081019690965291821660a08601523360c086015216927f338aa396bce529256f46f1d51f463cc5be80195004e47cf0a1527507d38404479060e090a4600101615482565b9291908051916155e28361295b565b945f905f925b8583106155f757505050505050565b61560a6080613dad8588999b9a986120d3565b935f5b89821080615752575b15615686576156606156809161564b8a60406156418761563b60c0613dad83876120d3565b936120d3565b510151908a616153565b6040615657858c6120d3565b51015190612363565b91604061566d828b6120d3565b51015161567a828c6120d3565b52613d64565b9061560d565b919390969597989473ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821614801561574a575b615742576156db90855184602088015192876161ef565b905b8781106156f2575050505b84919492946155e8565b808061572d896151e16040615709600197846120d3565b5101516101406151d76157258b6157208c86614ff0565b615030565b9687956120d3565b6040615739838b6120d3565b510152016156dd565b5050506156e8565b5082156156c4565b506157626080613dad848b6120d3565b73ffffffffffffffffffffffffffffffffffffffff808816911614615616565b909193928451925f5b84811061579b5750505050509050565b8073ffffffffffffffffffffffffffffffffffffffff60e06157bf6001948b6120d3565b515101511673ffffffffffffffffffffffffffffffffffffffff8416146158225761581c73ffffffffffffffffffffffffffffffffffffffff60e0615804848c6120d3565b515101511661581383876120d3565b51908588615b53565b0161578b565b61581c565b90600b8210156123a75752565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116158b1576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa1561278e575f5173ffffffffffffffffffffffffffffffffffffffff8116156158a957905f90565b505f90600190565b505050505f90600390565b6158c4614330565b80519081156158d4576020012090565b505060325480156158e25790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61590f614403565b805190811561591f576020012090565b505060335480156158e25790565b908082101561593a575090565b905090565b1561594657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4c4f503a2063616e27742073776170203020616d6f756e7400000000000000006044820152fd5b9391926159af614dcd565b9385858151946159be8661295b565b90608083019182526159cf8761295b565b9160a0840192835287615a2a615a2584615a1f6060615a0d615a006159f38861295b565b9760c08d0198895261295b565b9b60e08c019c8d526120c1565b51510151615a1a8161239d565b616363565b9a616a52565b6163ea565b60608601986040870196602001915f5b8c8110615a535750505050505050505050505050909150565b8f908f8d8d838e8e8e8e8e8e8e8e8e615a6f60019f8b906120d3565b51916040830197885115615b3f57615b369e615b26615b1e615b2e9f8f9a8f615b01615b269f615b1e9f8f9a8f918c615b269f96615b1e9f615aec8f9591849c859b99615afb94615ae58f899d90615ad1615afb9c6101208d945101516163a9565b9451615ade8383516120d3565b52516120d3565b5190617366565b92919a909651975193516120d3565b526120d3565b52615b18615b108388516120d3565b51151561593f565b516120d3565b518251612363565b9052516120d3565b519051612363565b8d525b01615a3a565b505050505050505050505050505050615b39565b90919273ffffffffffffffffffffffffffffffffffffffff61025b9481604051957f23b872dd00000000000000000000000000000000000000000000000000000000602088015216602486015216604484015260648301526064825261544f608483610583565b73ffffffffffffffffffffffffffffffffffffffff9081169116818114918215615c33575b8215615bea57505090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614915081615c2d575090565b90501590565b8092501580615c43575b91615bdf565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168114615c3d565b9081602091031261024c57516108e98161025d565b73ffffffffffffffffffffffffffffffffffffffff831694938515808015615f78575b15615ebc5715615ea05773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000935b6040517f784367d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152911691602082602481865afa94851561278e57615dd7956020935f91615e73575b5015615e6b5750859283915b5f6040518098819582947f769f8e5d000000000000000000000000000000000000000000000000000000008452306004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b03925af192831561278e575f93615e4a575b508284819773ffffffffffffffffffffffffffffffffffffffff841603615e39575b5050503073ffffffffffffffffffffffffffffffffffffffff821603615e3057505050565b61025b9261534e565b615e429261607e565b5f8284615e0b565b615e6491935060203d602011612787576127788183610583565b915f615de9565b928391615d6b565b615e939150843d8611615e99575b615e8b8183610583565b810190615c82565b5f615d5f565b503d615e81565b73ffffffffffffffffffffffffffffffffffffffff5f93615cfc565b50615f499495505f73ffffffffffffffffffffffffffffffffffffffff6020959493604051978896879586937f769f8e5d0000000000000000000000000000000000000000000000000000000085526004850173ffffffffffffffffffffffffffffffffffffffff60809295945f948260a085019816845260208401521660408201528260608201520152565b0393165af190811561278e575f91615f5f575090565b6108e9915060203d602011612787576127788183610583565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168714615cba565b73ffffffffffffffffffffffffffffffffffffffff168061602c57505f3b1561024c575f600491604051928380927fd0e30db0000000000000000000000000000000000000000000000000000000008252845af1801561278e576160185750565b806160265f61025b93610583565b80610afd565b803b1561024c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f908290818381602481015b03925af1801561278e576160185750565b73ffffffffffffffffffffffffffffffffffffffff1690816160f65773ffffffffffffffffffffffffffffffffffffffff915016803b1561024c575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561278e576160185750565b50803b1561024c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092525f9082908183816024810161606d565b670de0b6b3a76400009161614f91614ff0565b0490565b90919073ffffffffffffffffffffffffffffffffffffffff16806161da57509050340361617c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b816161e457505050565b61025b923091615b53565b949293915f5b85518110156163535773ffffffffffffffffffffffffffffffffffffffff61621d82886120d3565b51511673ffffffffffffffffffffffffffffffffffffffff841614616244576001016161f5565b73ffffffffffffffffffffffffffffffffffffffff602095976162768361626f5f956163259b6120d3565b51976120d3565b519361629161628c606060808a01510151151590565b616516565b6162b66162ae828a8a01976162a9895183111561657b565b614ff0565b865190615030565b946162c28615156165e0565b526162ee7f00000000000000000000000000000000000000000000000000000000000000008096616a92565b604051978896879586937f2e071dc60000000000000000000000000000000000000000000000000000000085523060048601616645565b0393165af190811561278e575f9161633b575090565b6108e9915060203d8111612787576127788183610583565b5092949091506108e99350616742565b60048110156123a757806163775750600190565b6163808161239d565b6001810361638e5750600290565b8061639a60029261239d565b036163a457600390565b600490565b906163b391614ff0565b6301e1338090047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161024c576163ea90616ce2565b5f811261024c5790565b9073ffffffffffffffffffffffffffffffffffffffff61646292165f8060405193616420604086610583565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af161645c6133aa565b9161726d565b80519081159182156164fc575b50501561647857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b61650f9250602080918301019101615c82565b5f8061646f565b1561651d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4f503a206e656564207363616c6500000000000000000000000000000000006044820152fd5b1561658257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4f503a206f6e6c79207363616c6520646f776e0000000000000000000000006044820152fd5b156165e757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4f503a207a65726f207363616c65644d696e537900000000000000000000006044820152fd5b939173ffffffffffffffffffffffffffffffffffffffff908160809593168652166020850152604084015281606084015273ffffffffffffffffffffffffffffffffffffffff81511682840152602081015160a084015273ffffffffffffffffffffffffffffffffffffffff60408201511660c084015273ffffffffffffffffffffffffffffffffffffffff60608201511660e084015201519060a06101008201526166f661012082018351615827565b73ffffffffffffffffffffffffffffffffffffffff6020830151166101408201526101806060616737604085015160806101608601526101a085019061103b565b930151151591015290565b7f0000000000000000000000000000000000000000000000000000000000000000929173ffffffffffffffffffffffffffffffffffffffff8082169085161480616852575b9083615f49956020959493616840575b50506167a38282616a92565b73ffffffffffffffffffffffffffffffffffffffff811661683a57825b73ffffffffffffffffffffffffffffffffffffffff6040518097819682957f20e8c5650000000000000000000000000000000000000000000000000000000084523060048501606091949373ffffffffffffffffffffffffffffffffffffffff5f9481608085019816845216602083015260408201520152565b5f6167c0565b61684a9250615fb7565b5f825f616797565b506040517ffa5a4f0600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201529291906020848060248101038173ffffffffffffffffffffffffffffffffffffffff86165afa93841561278e57615f499560209585925f916168e1575b50159293945095509350616787565b6168f89150873d8911615e9957615e8b8183610583565b5f6168d2565b9293917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000082019180831161127057670de0b6b3a76400006169426169489387614ff0565b04614ff0565b811561503a57819004937ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101908111611270578161698a61614f9286614ff0565b0493614fcc565b6169a090949394929192614fcc565b91801561503a576169b2920490616c59565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101908111611270576169f0670de0b6b3a76400009184614ff0565b04908290565b929391670de0b6b3a76400009182616942616a119387614ff0565b04927ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000810181811161127057616a479084614ff0565b811561503a57049190565b6301e1338091616a6191614ff0565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161024c576108e990616ce2565b9073ffffffffffffffffffffffffffffffffffffffff82168015615454576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015290602090829060449082905afa90811561278e575f91616c3a575b506b7fffffffffffffffffffffff11616b2a575050565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff831660248301525f6044830181905291829190616b8a816064810161290c565b519082865af1616b986133aa565b81616c0b575b5015616bad5761025b916171a2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b8051801592508215616c20575b50505f616b9e565b616c339250602080918301019101615c82565b5f80616c18565b616c53915060203d602011612787576127788183610583565b5f616b13565b9061503090614fcc565b15616c6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b801561503a576ec097ce7bc90715b34b9f10000000000590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008112158061718f575b616d1590616c63565b5f811261717b576108e9906806f05b59d3b20000008112617124577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000001616eed6064770195e54c5dd42177f53a27172fa9ec630262827000000000925b0268056bc75e2d631000009068ad78ebc5ac620000008112156170eb575b6856bc75e2d6310000008112156170a1575b682b5e3af16b18800000811215617059575b6815af1d78b58c400000811215617011575b680ad78ebc5ac6200000811215616fca575b68056bc75e2d63100000811215616f83575b6802b5e3af16b1880000811215616f3c575b68015af1d78b58c40000811215616ef5575b600268056bc75e2d631000008280020505600368056bc75e2d631000008383020505600468056bc75e2d631000008483020505600568056bc75e2d631000008583020505600668056bc75e2d631000008683020505600768056bc75e2d63100000878302050590600868056bc75e2d63100000888402050592600968056bc75e2d6310000089860205059468056bc75e2d63100000600a8a88028290050597600b68056bc75e2d631000008c8b02050599600c68056bc75e2d631000008d8d0205059b0101010101010101010101010268056bc75e2d63100000900590565b026064900590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000616f369201920268056bc75e2d63100000900590565b90616e0e565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000616f7d9201920268056bc75e2d63100000900590565b90616dfc565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000616fc49201920268056bc75e2d63100000900590565b90616dea565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000061700b9201920268056bc75e2d63100000900590565b90616dd8565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000006170539201920268056bc75e2d63100000900590565b90616dc6565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000061709b9201920268056bc75e2d63100000900590565b90616db4565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000006170e59201920268056bc75e2d63100000900590565b90616da2565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001616d90565b6803782dace9d9000000811261716e577ffffffffffffffffffffffffffffffffffffffffffffffffc87d253162700000001616eed60646b1425982cf597cd205cef738092616d72565b616eed6064600192616d72565b617186905f03616ce2565b6108e990616cc8565b5068070c1cc73b00c80000811315616d0c565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201525f928392918390617224816064810161290c565b51925af16172306133aa565b8161723e575b5015616bad57565b8051801592508215617253575b50505f617236565b6172669250602080918301019101615c82565b5f8061724b565b919290156172e85750815115617281575090565b3b1561728a5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156172fb5750805190602001fd5b61184a906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061103b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b9392919093806004146173ae57806003146173a4578060021461739a5760010361733957617393936169f6565b9192909190565b5061739393616991565b50617393936168fe565b50907ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008295939495019482861161127057856173e991614ff0565b91801561503a576173fb920490616c59565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00008101818111611270576174309084614ff0565b811561503a570492670de0b6b3a7640000840293808504670de0b6b3a7640000149015171561127057801561503a5761746c8161572085614fcc565b929304919056fea2646970667358221220f5726cd2e960db838bff0ba4a4a3bcda8fd729bb148f839d6b5f756f30946f0a64736f6c634300081e0033",
1320
1582
  "linkReferences": {},
1321
1583
  "deployedLinkReferences": {}
1322
1584
  }