@latticexyz/world-modules 2.0.0-march-19-skystrife-playtest-f0a343b1 → 2.0.0-next-17-awakening-9c07ab3a2

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 (379) hide show
  1. package/dist/mud.config.d.ts +256 -0
  2. package/out/AccessControl.sol/AccessControl.json +1 -1
  3. package/out/AccessControlLib.sol/AccessControlLib.json +1 -1
  4. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json +55 -0
  5. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json.d.ts +55 -0
  6. package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
  7. package/out/AddressArray.sol/AddressArray.json +1 -1
  8. package/out/Allowances.sol/Allowances.json +1 -1
  9. package/out/ArrayLib.sol/ArrayLib.json +1 -1
  10. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json +16 -0
  11. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json.d.ts +16 -0
  12. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
  13. package/out/Balances.sol/Balances.json +1 -1
  14. package/out/Base.sol/CommonBase.json +1 -1
  15. package/out/Base.sol/ScriptBase.json +1 -1
  16. package/out/Base.sol/TestBase.json +1 -1
  17. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json +5 -0
  18. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json.d.ts +5 -0
  19. package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
  20. package/out/Bool.sol/Bool.json +1 -1
  21. package/out/Bytes.sol/Bytes.json +1 -1
  22. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +1 -1
  23. package/out/CallboundDelegations.sol/CallboundDelegations.json +1 -1
  24. package/out/DecodeSlice.sol/DecodeSlice.json +1 -1
  25. package/out/Delegation.sol/Delegation.json +1 -1
  26. package/out/DelegationControl.sol/DelegationControl.json +1 -1
  27. package/out/DelegationControlMock.sol/DelegationControlMock.json +1 -1
  28. package/out/ERC165Checker.sol/ERC165Checker.json +1 -0
  29. package/out/ERC20.t.sol/ERC20Test.json +1 -1
  30. package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
  31. package/out/ERC20Module.sol/ERC20Module.abi.json +120 -20
  32. package/out/ERC20Module.sol/ERC20Module.abi.json.d.ts +120 -20
  33. package/out/ERC20Module.sol/ERC20Module.json +1 -1
  34. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json +117 -4
  35. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json.d.ts +117 -4
  36. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.json +1 -1
  37. package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
  38. package/out/ERC20System.sol/ERC20System.json +1 -1
  39. package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
  40. package/out/ERC721.t.sol/ERC721Test.abi.json +1 -1
  41. package/out/ERC721.t.sol/ERC721Test.abi.json.d.ts +1 -1
  42. package/out/ERC721.t.sol/ERC721Test.json +1 -1
  43. package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
  44. package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
  45. package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
  46. package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
  47. package/out/ERC721Metadata.sol/ERC721Metadata.json +1 -1
  48. package/out/ERC721Module.sol/ERC721Module.abi.json +120 -20
  49. package/out/ERC721Module.sol/ERC721Module.abi.json.d.ts +120 -20
  50. package/out/ERC721Module.sol/ERC721Module.json +1 -1
  51. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json +117 -4
  52. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json.d.ts +117 -4
  53. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.json +1 -1
  54. package/out/ERC721Registry.sol/ERC721Registry.json +1 -1
  55. package/out/ERC721System.sol/ERC721System.json +1 -1
  56. package/out/EchoSubscriber.sol/EchoSubscriber.json +1 -1
  57. package/out/EncodeArray.sol/EncodeArray.json +1 -1
  58. package/out/FieldLayout.sol/FieldLayoutInstance.json +1 -1
  59. package/out/FieldLayout.sol/FieldLayoutLib.abi.json +69 -4
  60. package/out/FieldLayout.sol/FieldLayoutLib.abi.json.d.ts +69 -4
  61. package/out/FieldLayout.sol/FieldLayoutLib.json +1 -1
  62. package/out/FieldLayoutEncodeHelper.sol/FieldLayoutEncodeHelper.json +1 -1
  63. package/out/FunctionSelectors.sol/FunctionSelectors.json +1 -1
  64. package/out/FunctionSignatures.sol/FunctionSignatures.json +1 -1
  65. package/out/GasReporter.sol/GasReporter.json +1 -1
  66. package/out/Hook.sol/HookInstance.json +1 -1
  67. package/out/Hook.sol/HookLib.json +1 -1
  68. package/out/Hooks.sol/Hooks.json +1 -1
  69. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.abi.json +13 -0
  70. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.abi.json.d.ts +13 -0
  71. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +1 -1
  72. package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +1 -1
  73. package/out/IBaseWorld.sol/IBaseWorld.abi.json +64 -5
  74. package/out/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +64 -5
  75. package/out/IBaseWorld.sol/IBaseWorld.json +1 -1
  76. package/out/IBatchCallSystem.sol/IBatchCallSystem.json +1 -1
  77. package/out/IDelegationControl.sol/IDelegationControl.json +1 -1
  78. package/out/IERC165.sol/IERC165.json +1 -0
  79. package/out/IERC20.sol/IERC20.json +1 -1
  80. package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
  81. package/out/IERC20Events.sol/IERC20Events.json +1 -1
  82. package/out/IERC20Mintable.sol/IERC20Mintable.json +1 -1
  83. package/out/IERC20System.sol/IERC20System.json +1 -1
  84. package/out/IERC721.sol/IERC721.json +1 -1
  85. package/out/IERC721Errors.sol/IERC721Errors.json +1 -1
  86. package/out/IERC721Events.sol/IERC721Events.json +1 -1
  87. package/out/IERC721Metadata.sol/IERC721Metadata.json +1 -1
  88. package/out/IERC721Mintable.sol/IERC721Mintable.json +1 -1
  89. package/out/IERC721Receiver.sol/IERC721Receiver.json +1 -1
  90. package/out/IModule.sol/IModule.abi.json +4 -17
  91. package/out/IModule.sol/IModule.abi.json.d.ts +4 -17
  92. package/out/IModule.sol/IModule.json +1 -1
  93. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.abi.json +1 -1
  94. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.abi.json.d.ts +1 -1
  95. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +1 -1
  96. package/out/IMulticall3.sol/IMulticall3.json +1 -1
  97. package/out/IPuppetFactorySystem.sol/IPuppetFactorySystem.json +1 -1
  98. package/out/IRegistrationSystem.sol/IRegistrationSystem.abi.json +1 -0
  99. package/out/IRegistrationSystem.sol/IRegistrationSystem.json +1 -0
  100. package/out/IStore.sol/IStore.abi.json +51 -3
  101. package/out/IStore.sol/IStore.abi.json.d.ts +51 -3
  102. package/out/IStore.sol/IStore.json +1 -1
  103. package/out/IStoreData.sol/IStoreData.json +1 -1
  104. package/out/IStoreErrors.sol/IStoreErrors.abi.json +51 -3
  105. package/out/IStoreErrors.sol/IStoreErrors.abi.json.d.ts +51 -3
  106. package/out/IStoreErrors.sol/IStoreErrors.json +1 -1
  107. package/out/IStoreEvents.sol/IStoreEvents.json +1 -1
  108. package/out/IStoreHook.sol/IStoreHook.json +1 -1
  109. package/out/IStoreRead.sol/IStoreRead.json +1 -1
  110. package/out/IStoreRegistration.sol/IStoreRegistration.json +1 -1
  111. package/out/IStoreWrite.sol/IStoreWrite.json +1 -1
  112. package/out/ISystemHook.sol/ISystemHook.json +1 -1
  113. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +1 -1
  114. package/out/IWorldErrors.sol/IWorldErrors.abi.json +11 -0
  115. package/out/IWorldErrors.sol/IWorldErrors.abi.json.d.ts +11 -0
  116. package/out/IWorldErrors.sol/IWorldErrors.json +1 -1
  117. package/out/IWorldKernel.sol/IWorldCall.json +1 -1
  118. package/out/IWorldKernel.sol/IWorldKernel.abi.json +13 -2
  119. package/out/IWorldKernel.sol/IWorldKernel.abi.json.d.ts +13 -2
  120. package/out/IWorldKernel.sol/IWorldKernel.json +1 -1
  121. package/out/IWorldKernel.sol/IWorldModuleInstallation.abi.json +1 -1
  122. package/out/IWorldKernel.sol/IWorldModuleInstallation.abi.json.d.ts +1 -1
  123. package/out/IWorldKernel.sol/IWorldModuleInstallation.json +1 -1
  124. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json +27 -1
  125. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json.d.ts +27 -1
  126. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +1 -1
  127. package/out/{CoreModule.sol/CoreModule.abi.json → InitModule.sol/InitModule.abi.json} +145 -19
  128. package/out/{CoreModule.sol/CoreModule.abi.json.d.ts → InitModule.sol/InitModule.abi.json.d.ts} +145 -19
  129. package/out/InitModule.sol/InitModule.json +1 -0
  130. package/out/InitModuleAddress.sol/InitModuleAddress.abi.json +1 -0
  131. package/out/InitModuleAddress.sol/InitModuleAddress.json +1 -0
  132. package/out/InstalledModules.sol/InstalledModules.json +1 -1
  133. package/out/KeysInTable.sol/KeysInTable.json +1 -1
  134. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json +16 -0
  135. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json.d.ts +16 -0
  136. package/out/KeysInTableHook.sol/KeysInTableHook.json +1 -1
  137. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json +3 -16
  138. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json.d.ts +3 -16
  139. package/out/KeysInTableModule.sol/KeysInTableModule.json +1 -1
  140. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json +39 -6
  141. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json.d.ts +39 -6
  142. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
  143. package/out/KeysWithValue.sol/KeysWithValue.json +1 -1
  144. package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1 -1
  145. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json +3 -16
  146. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json.d.ts +3 -16
  147. package/out/KeysWithValueModule.sol/KeysWithValueModule.json +1 -1
  148. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json +39 -6
  149. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json.d.ts +39 -6
  150. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
  151. package/out/LimitedCallContext.sol/LimitedCallContext.abi.json +7 -0
  152. package/out/LimitedCallContext.sol/LimitedCallContext.abi.json.d.ts +7 -0
  153. package/out/LimitedCallContext.sol/LimitedCallContext.json +1 -0
  154. package/out/Memory.sol/Memory.json +1 -1
  155. package/out/Module.sol/Module.abi.json +4 -17
  156. package/out/Module.sol/Module.abi.json.d.ts +4 -17
  157. package/out/Module.sol/Module.json +1 -1
  158. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json +6 -1
  159. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json.d.ts +6 -1
  160. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
  161. package/out/NamespaceDelegationControl.sol/NamespaceDelegationControl.json +1 -1
  162. package/out/NamespaceOwner.sol/NamespaceOwner.json +1 -1
  163. package/out/OperatorApproval.sol/OperatorApproval.json +1 -1
  164. package/out/Owners.sol/Owners.json +1 -1
  165. package/out/PackedCounter.sol/PackedCounterInstance.json +1 -1
  166. package/out/PackedCounter.sol/PackedCounterLib.json +1 -1
  167. package/out/Puppet.sol/Puppet.json +1 -1
  168. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.json +1 -1
  169. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.json +1 -1
  170. package/out/PuppetMaster.sol/PuppetMaster.json +1 -1
  171. package/out/PuppetModule.sol/PuppetModule.abi.json +119 -19
  172. package/out/PuppetModule.sol/PuppetModule.abi.json.d.ts +119 -19
  173. package/out/PuppetModule.sol/PuppetModule.json +1 -1
  174. package/out/PuppetModule.t.sol/PuppetModuleTest.abi.json +14 -0
  175. package/out/PuppetModule.t.sol/PuppetModuleTest.abi.json.d.ts +14 -0
  176. package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
  177. package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
  178. package/out/PuppetRegistry.sol/PuppetRegistry.json +1 -1
  179. package/out/{CoreSystem.sol/CoreSystem.abi.json → RegistrationSystem.sol/RegistrationSystem.abi.json} +154 -150
  180. package/out/{CoreSystem.sol/CoreSystem.abi.json.d.ts → RegistrationSystem.sol/RegistrationSystem.abi.json.d.ts} +154 -150
  181. package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -0
  182. package/out/ResourceAccess.sol/ResourceAccess.json +1 -1
  183. package/out/ResourceId.sol/ResourceIdInstance.json +1 -1
  184. package/out/ResourceId.sol/ResourceIdLib.json +1 -1
  185. package/out/ResourceIds.sol/ResourceIds.json +1 -1
  186. package/out/RevertSubscriber.sol/RevertSubscriber.json +1 -1
  187. package/out/Schema.sol/SchemaInstance.json +1 -1
  188. package/out/Schema.sol/SchemaLib.json +1 -1
  189. package/out/SchemaEncodeHelper.sol/SchemaEncodeHelper.json +1 -1
  190. package/out/Slice.sol/SliceInstance.json +1 -1
  191. package/out/Slice.sol/SliceLib.json +1 -1
  192. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json +119 -19
  193. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json.d.ts +119 -19
  194. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +1 -1
  195. package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
  196. package/out/StdAssertions.sol/StdAssertions.json +1 -1
  197. package/out/StdChains.sol/StdChains.json +1 -1
  198. package/out/StdCheats.sol/StdCheats.json +1 -1
  199. package/out/StdCheats.sol/StdCheatsSafe.json +1 -1
  200. package/out/StdError.sol/stdError.json +1 -1
  201. package/out/StdInvariant.sol/StdInvariant.json +1 -1
  202. package/out/StdJson.sol/stdJson.json +1 -1
  203. package/out/StdMath.sol/stdMath.json +1 -1
  204. package/out/StdStorage.sol/stdStorage.json +1 -1
  205. package/out/StdStorage.sol/stdStorageSafe.json +1 -1
  206. package/out/StdStyle.sol/StdStyle.json +1 -1
  207. package/out/StdUtils.sol/StdUtils.json +1 -1
  208. package/out/Storage.sol/Storage.json +1 -1
  209. package/out/StoreCore.sol/StoreCore.json +1 -1
  210. package/out/StoreCore.sol/StoreCoreInternal.json +1 -1
  211. package/out/StoreData.sol/StoreData.abi.json +16 -0
  212. package/out/StoreData.sol/StoreData.abi.json.d.ts +16 -0
  213. package/out/StoreData.sol/StoreData.json +1 -1
  214. package/out/StoreHook.sol/StoreHook.json +1 -1
  215. package/out/StoreHooks.sol/StoreHooks.json +1 -1
  216. package/out/StoreRead.sol/StoreRead.abi.json +16 -0
  217. package/out/StoreRead.sol/StoreRead.abi.json.d.ts +16 -0
  218. package/out/StoreRead.sol/StoreRead.json +1 -1
  219. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json +149 -4
  220. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json.d.ts +149 -4
  221. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
  222. package/out/StoreSwitch.sol/StoreSwitch.json +1 -1
  223. package/out/System.sol/System.json +1 -1
  224. package/out/SystemCall.sol/SystemCall.json +1 -1
  225. package/out/SystemHook.sol/SystemHook.json +1 -1
  226. package/out/SystemHooks.sol/SystemHooks.json +1 -1
  227. package/out/SystemRegistry.sol/SystemRegistry.json +1 -1
  228. package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
  229. package/out/SystemSwitch.t.sol/EchoSystem.abi.json +98 -1
  230. package/out/SystemSwitch.t.sol/EchoSystem.abi.json.d.ts +98 -1
  231. package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
  232. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json +59 -15
  233. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json.d.ts +59 -15
  234. package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
  235. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.json +1 -1
  236. package/out/SystemboundDelegations.sol/SystemboundDelegations.json +1 -1
  237. package/out/Systems.sol/Systems.json +1 -1
  238. package/out/Tables.sol/Tables.json +1 -1
  239. package/out/Test.sol/Test.json +1 -1
  240. package/out/TightCoder.sol/TightCoder.json +1 -1
  241. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +1 -1
  242. package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1 -1
  243. package/out/TokenApproval.sol/TokenApproval.json +1 -1
  244. package/out/TokenURI.sol/TokenURI.json +1 -1
  245. package/out/TotalSupply.sol/TotalSupply.json +1 -1
  246. package/out/TwoFields.sol/TwoFields.json +1 -1
  247. package/out/UniqueEntity.sol/UniqueEntity.json +1 -1
  248. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json +121 -21
  249. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json.d.ts +121 -21
  250. package/out/UniqueEntityModule.sol/UniqueEntityModule.json +1 -1
  251. package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
  252. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json +68 -0
  253. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json.d.ts +68 -0
  254. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
  255. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +1 -1
  256. package/out/UsedKeysIndex.sol/UsedKeysIndex.json +1 -1
  257. package/out/UserDelegationControl.sol/UserDelegationControl.json +1 -1
  258. package/out/Vm.sol/Vm.json +1 -1
  259. package/out/Vm.sol/VmSafe.json +1 -1
  260. package/out/World.sol/World.abi.json +29 -2
  261. package/out/World.sol/World.abi.json.d.ts +29 -2
  262. package/out/World.sol/World.json +1 -1
  263. package/out/World.t.sol/EchoSystemHook.json +1 -1
  264. package/out/World.t.sol/IWorldTestSystem.abi.json +1 -1
  265. package/out/World.t.sol/IWorldTestSystem.abi.json.d.ts +1 -1
  266. package/out/World.t.sol/IWorldTestSystem.json +1 -1
  267. package/out/World.t.sol/PayableFallbackSystem.json +1 -1
  268. package/out/World.t.sol/RevertSystemHook.json +1 -1
  269. package/out/World.t.sol/WorldTest.abi.json +74 -6
  270. package/out/World.t.sol/WorldTest.abi.json.d.ts +74 -6
  271. package/out/World.t.sol/WorldTest.json +1 -1
  272. package/out/World.t.sol/WorldTestSystem.json +1 -1
  273. package/out/WorldContext.sol/WorldContextConsumer.json +1 -1
  274. package/out/WorldContext.sol/WorldContextConsumerLib.json +1 -1
  275. package/out/WorldContext.sol/WorldContextProviderLib.json +1 -1
  276. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json +43 -1
  277. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json.d.ts +43 -1
  278. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
  279. package/out/WorldResourceId.sol/WorldResourceIdInstance.json +1 -1
  280. package/out/WorldResourceId.sol/WorldResourceIdLib.json +1 -1
  281. package/out/console.sol/console.json +1 -1
  282. package/out/console2.sol/console2.json +1 -1
  283. package/out/constants.sol/LayoutOffsets.json +1 -1
  284. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json +105 -7
  285. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +105 -7
  286. package/out/interfaces/IBaseWorld.sol/IBaseWorld.json +1 -1
  287. package/out/query.t.sol/QueryTest.abi.json +39 -6
  288. package/out/query.t.sol/QueryTest.abi.json.d.ts +39 -6
  289. package/out/query.t.sol/QueryTest.json +1 -1
  290. package/out/safeconsole.sol/safeconsole.json +1 -1
  291. package/out/src/IERC165.sol/IERC165.json +1 -1
  292. package/out/tables/Balances.sol/Balances.json +1 -1
  293. package/out/test.sol/DSTest.json +1 -1
  294. package/package.json +9 -9
  295. package/src/index.sol +1 -1
  296. package/src/interfaces/IBaseWorld.sol +1 -1
  297. package/src/interfaces/IERC20System.sol +1 -1
  298. package/src/interfaces/IPuppetFactorySystem.sol +1 -1
  299. package/src/modules/erc20-puppet/ERC20Module.sol +18 -25
  300. package/src/modules/erc20-puppet/ERC20System.sol +1 -1
  301. package/src/modules/erc20-puppet/IERC20.sol +1 -1
  302. package/src/modules/erc20-puppet/IERC20Errors.sol +1 -1
  303. package/src/modules/erc20-puppet/IERC20Events.sol +1 -1
  304. package/src/modules/erc20-puppet/IERC20Mintable.sol +1 -1
  305. package/src/modules/erc20-puppet/constants.sol +1 -2
  306. package/src/modules/erc20-puppet/registerERC20.sol +1 -1
  307. package/src/modules/erc20-puppet/tables/Allowances.sol +2 -3
  308. package/src/modules/erc20-puppet/tables/ERC20Metadata.sol +2 -3
  309. package/src/modules/erc20-puppet/tables/ERC20Registry.sol +2 -3
  310. package/src/modules/erc20-puppet/tables/TotalSupply.sol +2 -3
  311. package/src/modules/erc20-puppet/utils.sol +1 -1
  312. package/src/modules/erc721-puppet/ERC721Module.sol +18 -25
  313. package/src/modules/erc721-puppet/ERC721System.sol +1 -1
  314. package/src/modules/erc721-puppet/IERC721.sol +1 -1
  315. package/src/modules/erc721-puppet/IERC721Errors.sol +1 -1
  316. package/src/modules/erc721-puppet/IERC721Events.sol +1 -1
  317. package/src/modules/erc721-puppet/IERC721Metadata.sol +1 -1
  318. package/src/modules/erc721-puppet/IERC721Mintable.sol +1 -1
  319. package/src/modules/erc721-puppet/IERC721Receiver.sol +1 -1
  320. package/src/modules/erc721-puppet/constants.sol +1 -2
  321. package/src/modules/erc721-puppet/registerERC721.sol +1 -1
  322. package/src/modules/erc721-puppet/tables/ERC721Metadata.sol +2 -3
  323. package/src/modules/erc721-puppet/tables/ERC721Registry.sol +2 -3
  324. package/src/modules/erc721-puppet/tables/OperatorApproval.sol +2 -3
  325. package/src/modules/erc721-puppet/tables/Owners.sol +2 -3
  326. package/src/modules/erc721-puppet/tables/TokenApproval.sol +2 -3
  327. package/src/modules/erc721-puppet/tables/TokenURI.sol +2 -3
  328. package/src/modules/erc721-puppet/utils.sol +1 -1
  329. package/src/modules/keysintable/KeysInTableHook.sol +1 -1
  330. package/src/modules/keysintable/KeysInTableModule.sol +4 -10
  331. package/src/modules/keysintable/constants.sol +1 -1
  332. package/src/modules/keysintable/getKeysInTable.sol +1 -1
  333. package/src/modules/keysintable/hasKey.sol +1 -1
  334. package/src/modules/keysintable/query.sol +1 -1
  335. package/src/modules/keysintable/tables/KeysInTable.sol +4 -6
  336. package/src/modules/keysintable/tables/UsedKeysIndex.sol +4 -6
  337. package/src/modules/keyswithvalue/KeysWithValueHook.sol +1 -1
  338. package/src/modules/keyswithvalue/KeysWithValueModule.sol +19 -14
  339. package/src/modules/keyswithvalue/constants.sol +1 -1
  340. package/src/modules/keyswithvalue/getKeysWithValue.sol +1 -1
  341. package/src/modules/keyswithvalue/getTargetTableId.sol +1 -1
  342. package/src/modules/keyswithvalue/tables/KeysWithValue.sol +2 -3
  343. package/src/modules/puppet/Puppet.sol +1 -1
  344. package/src/modules/puppet/PuppetDelegationControl.sol +1 -1
  345. package/src/modules/puppet/PuppetFactorySystem.sol +1 -1
  346. package/src/modules/puppet/PuppetMaster.sol +1 -1
  347. package/src/modules/puppet/PuppetModule.sol +24 -9
  348. package/src/modules/puppet/constants.sol +4 -3
  349. package/src/modules/puppet/createPuppet.sol +1 -1
  350. package/src/modules/puppet/tables/PuppetRegistry.sol +2 -3
  351. package/src/modules/puppet/utils.sol +1 -1
  352. package/src/modules/std-delegations/CallboundDelegationControl.sol +1 -1
  353. package/src/modules/std-delegations/StandardDelegationsModule.sol +2 -6
  354. package/src/modules/std-delegations/SystemboundDelegationControl.sol +1 -1
  355. package/src/modules/std-delegations/TimeboundDelegationControl.sol +1 -1
  356. package/src/modules/std-delegations/constants.sol +1 -3
  357. package/src/modules/std-delegations/tables/CallboundDelegations.sol +4 -6
  358. package/src/modules/std-delegations/tables/SystemboundDelegations.sol +4 -6
  359. package/src/modules/std-delegations/tables/TimeboundDelegations.sol +4 -6
  360. package/src/modules/tokens/tables/Balances.sol +2 -3
  361. package/src/modules/uniqueentity/UniqueEntityModule.sol +16 -15
  362. package/src/modules/uniqueentity/UniqueEntitySystem.sol +1 -1
  363. package/src/modules/uniqueentity/constants.sol +3 -3
  364. package/src/modules/uniqueentity/getUniqueEntity.sol +2 -3
  365. package/src/modules/uniqueentity/tables/UniqueEntity.sol +2 -3
  366. package/src/modules/utils/ArrayLib.sol +2 -2
  367. package/src/utils/AccessControlLib.sol +1 -1
  368. package/src/utils/SystemSwitch.sol +7 -10
  369. package/out/CoreModule.sol/CoreModule.json +0 -1
  370. package/out/CoreSystem.sol/CoreSystem.json +0 -1
  371. package/out/ICoreSystem.sol/ICoreSystem.json +0 -1
  372. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json +0 -15
  373. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.abi.json.d.ts +0 -15
  374. package/out/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +0 -1
  375. package/out/world/src/IERC165.sol/IERC165.json +0 -1
  376. package/src/interfaces/IUniqueEntitySystem.sol +0 -7
  377. /package/out/{ICoreSystem.sol/ICoreSystem.abi.json → ERC165Checker.sol/ERC165Checker.abi.json} +0 -0
  378. /package/out/{world/src/IERC165.sol → IERC165.sol}/IERC165.abi.json +0 -0
  379. /package/out/{world/src/IERC165.sol → IERC165.sol}/IERC165.abi.json.d.ts +0 -0
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testApprove","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurnInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInfiniteApproveTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMetadata","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintOverMaxUintReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c5534801561003157600080fd5b506202348580620000436000396000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633f7286f411620001c457806366d9a9a0116200018f57806366d9a9a014620002f457806370557298146200030d57806378cdebf914620003175780637a715085146200032157600080fd5b80633f7286f414620002bf57806348186a7f14620002c95780635ad7ef9214620002e05780635babb75814620002ea57600080fd5b80631ed7831c11620002055780631ed7831c146200027257806337e816d314620002945780633dc6c95514620002ab5780633e5e3c2314620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b62000245620002583660046200599c565b62000772565b6200024562000ad2565b6200024562000e92565b6200027c62001064565b6040516200028b9190620059d2565b60405180910390f35b62000245620002a53660046200599c565b620010c8565b62000245620014e2565b6200027c620016be565b6200027c62001720565b62000245620002da36600462005a21565b62001782565b6200024562001e66565b6200024562002097565b620002fe620020ec565b6040516200028b919062005a7d565b62000245620021f4565b62000245620025f3565b62000245620026f4565b620002456200033c3660046200599c565b620029db565b6200034c62002cb9565b6040516200028b919062005ba0565b620002fe62002d93565b6200024562002e92565b620002456200038036600462005c06565b6200308c565b6200034c62003356565b6200039a62003430565b60405190151581526020016200028b565b62000245620003bc3660046200599c565b6200357c565b620002456200388d565b6200024562003b11565b6200027c62003de0565b62000245620003f13660046200599c565b62003e42565b620002456200040836600462005c06565b62004142565b620002456200432e565b62000245620044f9565b6000546200039a9060ff1681565b620002456200044136600462005c06565b6200463a565b60405162000455906200594c565b604051809103906000f08015801562000472573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163c4d66de890620004be906200595a565b604051809103906000f080158015620004db573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200053657600080fd5b505af11580156200054b573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250638da798da9150620005729062005968565b604051809103906000f0801580156200058f573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620005da91906024810162005c49565b600060405180830381600087803b158015620005f557600080fd5b505af11580156200060a573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506200066e9050565b62000738601f60009054906101000a90046001600160a01b03167f6d794552433230000000000000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525081525062004724565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620007c857600080fd5b505afa158015620007dd573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200082f57600080fd5b505afa15801562000844573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200089757600080fd5b505af1158015620008ac573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200091357600080fd5b505af115801562000928573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820184905290911690639dc29fac90604401600060405180830381600087803b158015620009d557600080fd5b505af1158015620009ea573d6000803e3d6000fd5b5050505062000a7e602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a6c919062005c6d565b62000a78838562005c9d565b6200494e565b6021546040516370a0823160e01b81526001600160a01b03858116600483015262000acd9216906370a08231906024015b602060405180830381865afa15801562000a46573d6000803e3d6000fd5b505050565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b15801562000b2957600080fd5b505af115801562000b3e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000b9857600080fd5b505af115801562000bad573d6000803e3d6000fd5b505060215460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562000c04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c2a919062005cb3565b506021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000cbe9216906323b872dd906064015b6020604051808303816000875af115801562000c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb8919062005cb3565b62004a60565b602154604080516318160ddd60e01b8152905162000d40926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d31919062005c6d565b670de0b6b3a76400006200494e565b602154604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000dc392169063dd62ed3e90604401602060405180830381865afa15801562000d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dba919062005c6d565b6000196200494e565b6021546040516370a0823160e01b81526001600160a01b03838116600483015262000e409216906370a08231906024015b602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062005c6d565b60006200494e565b6021546040516370a0823160e01b815261beef600482015262000e8f916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000d0b573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000ef557600080fd5b505af115801562000f0a573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000f8f6040518060400160405280600781526020017f617070726f76650000000000000000000000000000000000000000000000000081525062004ad8565b60215460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001011919062005cb3565b90506200101d62004dac565b620010288162004a60565b602154604051636eb1769f60e11b815230600482015261beef602482015262000e8f916001600160a01b03169063dd62ed3e9060440162000e71565b6060600d805480602002602001604051908101604052809291908181526020018280548015620010be57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200109f575b5050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200111e57600080fd5b505afa15801562001133573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200118657600080fd5b505afa1580156200119b573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620011ec57600080fd5b505afa15801562001201573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820186905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200125757600080fd5b505af11580156200126c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620012c657600080fd5b505af1158015620012db573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562001331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001357919062005cb3565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620014259160040162005cde565b600060405180830381600087803b1580156200144057600080fd5b505af115801562001455573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620014b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014db919062005cb3565b5050505050565b6021546040516340c10f1960e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200153657600080fd5b505af11580156200154b573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001609919060040162005cde565b600060405180830381600087803b1580156200162457600080fd5b505af115801562001639573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af115801562001698573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8f919062005cb3565b6060600f805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620017d857600080fd5b505afa158015620017ed573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200184757600080fd5b505afa1580156200185c573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620018b657600080fd5b505afa158015620018cb573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200191d57600080fd5b505afa15801562001932573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0388811660048301526024820186905290911692506340c10f199150604401600060405180830381600087803b1580156200198557600080fd5b505af11580156200199a573d6000803e3d6000fd5b50506021546040516370a0823160e01b81526001600160a01b03888116600483015262001a1c945090911691506370a08231906024015b602060405180830381865afa158015620019ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a15919062005c6d565b826200494e565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a7257600080fd5b505af115801562001a87573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af115801562001adf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b05919062005cb3565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001b6957600080fd5b505af115801562001b7e573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001bc891815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2657600080fd5b505af115801562001c3b573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001c86945090911691506323b872dd9060640162000c72565b602154604080516318160ddd60e01b8152905162001cd3926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015620019ef573d6000803e3d6000fd5b600019820362001d6657602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001d6092169063dd62ed3e90604401602060405180830381865afa15801562001d33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d59919062005c6d565b836200494e565b62001da4565b602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001da492169063dd62ed3e9060440162000aaf565b826001600160a01b0316846001600160a01b03160362001dfa576021546040516370a0823160e01b81526001600160a01b03868116600483015262001df49216906370a0823190602401620019d1565b620014db565b6021546040516370a0823160e01b81526001600160a01b03868116600483015262001e309216906370a082319060240162000df4565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620014db9216906370a0823190602401620019d1565b602154604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001f32926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001ecc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ef6919081019062005cf3565b6040518060400160405280600581526020017f546f6b656e0000000000000000000000000000000000000000000000000000008152506200503c565b602154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001ffe926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fc2919081019062005cf3565b6040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152506200503c565b602154604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162002095926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562002064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208a919062005dac565b60ff1660126200494e565b565b602154620020b0906001600160a01b0316151562004a60565b62002095620020e57f6e736d79455243323000000000000000000000000000000000000000000000006200518c565b6200518c565b30620052a1565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200217e5790505b5050505050815250508152602001906001019062002110565b50505050905090565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200224b57600080fd5b505af115801562002260573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002352919062005cb3565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620023b657600080fd5b505af1158015620023cb573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620024596040518060400160405280600c81526020017f7472616e7366657246726f6d000000000000000000000000000000000000000081525062004ad8565b6021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620024bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024e3919062005cb3565b9050620024ef62004dac565b620024fa8162004a60565b602154604080516318160ddd60e01b8152905162002547926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b602154604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526200258392169063dd62ed3e9060440162000df4565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025b99216906370a082319060240162000df4565b6021546040516370a0823160e01b815261beef6004820152620025ef916001600160a01b0316906370a082319060240162000e71565b5050565b6000620026bf601f60009054906101000a90046001600160a01b03167f616e6f74686572455243323000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525081525062004724565b9050620026d76001600160a01b038216151562004a60565b60215462000e8f906001600160a01b038381169116141562004a60565b6021546040516340c10f1960e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200274b57600080fd5b505af115801562002760573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620027ba57600080fd5b505af1158015620027cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200282c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002852919062005cb3565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200291e9160040162005cde565b600060405180830381600087803b1580156200293957600080fd5b505af11580156200294e573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620029b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ef919062005cb3565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002a3157600080fd5b505afa15801562002a46573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002a9957600080fd5b505afa15801562002aae573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002aff57600080fd5b505afa15801562002b14573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820187905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b15801562002b6a57600080fd5b505af115801562002b7f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002bd957600080fd5b505af115801562002bee573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002c44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c6a919062005cb3565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620013b1565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620021eb57838290600052602060002001805462002cff9062005dd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002d2d9062005dd1565b801562002d7e5780601f1062002d525761010080835404028352916020019162002d7e565b820191906000526020600020905b81548152906001019060200180831162002d6057829003601f168201915b50505050508152602001906001019062002cdd565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002e7957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002e255790505b5050505050815250508152602001906001019062002db7565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002ef557600080fd5b505af115801562002f0a573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002f906040518060400160405280600481526020017f6d696e740000000000000000000000000000000000000000000000000000000081525062004ad8565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562002fe657600080fd5b505af115801562002ffb573d6000803e3d6000fd5b505050506200300962004dac565b602154604080516318160ddd60e01b8152905162003056926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b6021546040516370a0823160e01b815261beef600482015262002095916001600160a01b0316906370a082319060240162000e71565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620030e257600080fd5b505afa158015620030f7573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200314857600080fd5b505af11580156200315d573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620031c457600080fd5b505af1158015620031d9573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360215460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490526200325a92169063a9059cbb9060440162000c72565b602154604080516318160ddd60e01b81529051620032a7926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015620019ef573d6000803e3d6000fd5b6001600160a01b0382163003620032ec576021546040516370a0823160e01b8152306004820152620025ef916001600160a01b0316906370a0823190602401620019d1565b6021546040516370a0823160e01b815230600482015262003320916001600160a01b0316906370a082319060240162000df4565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025ef9216906370a0823190602401620019d1565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5783829060005260206000200180546200339c9062005dd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620033ca9062005dd1565b80156200341b5780601f10620033ef576101008083540402835291602001916200341b565b820191906000526020600020905b815481529060010190602001808311620033fd57829003601f168201915b5050505050815260200190600101906200337a565b60008054610100900460ff1615620034515750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620035775760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620034f9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005e0d565b60408051601f1981840301815290829052620035159162005e57565b6000604051808303816000865af19150503d806000811462003554576040519150601f19603f3d011682016040523d82523d6000602084013e62003559565b606091505b509150508080602001905181019062003573919062005cb3565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620035d257600080fd5b505afa158015620035e7573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200363a57600080fd5b505afa1580156200364f573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620036a057600080fd5b505afa158015620036b5573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200370857600080fd5b505af11580156200371d573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620037d3919060040162005cde565b600060405180830381600087803b158015620037ee57600080fd5b505af115801562003803573d6000803e3d6000fd5b50506021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018690529091169250639dc29fac9150604401600060405180830381600087803b1580156200386f57600080fd5b505af115801562003884573d6000803e3d6000fd5b50505050505050565b6021546040516340c10f1960e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015620038e157600080fd5b505af1158015620038f6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200395d57600080fd5b505af115801562003972573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620039f76040518060400160405280600881526020017f7472616e7366657200000000000000000000000000000000000000000000000081525062004ad8565b60215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af115801562003a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a79919062005cb3565b905062003a8562004dac565b62003a908162004a60565b602154604080516318160ddd60e01b8152905162003add926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b6021546040516370a0823160e01b815230600482015262000e40916001600160a01b0316906370a082319060240162000df4565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562003b6757600080fd5b505af115801562003b7c573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003be357600080fd5b505af115801562003bf8573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362003c7e6040518060400160405280600481526020017f6275726e0000000000000000000000000000000000000000000000000000000081525062004ad8565b6021546040517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801562003ced57600080fd5b505af115801562003d02573d6000803e3d6000fd5b5050505062003d1062004dac565b602154604080516318160ddd60e01b8152905162003d92926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d83919062005c6d565b67016345785d8a00006200494e565b6021546040516370a0823160e01b815261beef600482015262002095916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003d5d573d6000803e3d6000fd5b6060600c805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003e9857600080fd5b505afa15801562003ead573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003f0057600080fd5b505afa15801562003f15573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003f6657600080fd5b505afa15801562003f7b573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018690526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b15801562003fcc57600080fd5b505af115801562003fe1573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200408e919060040162005cde565b600060405180830381600087803b158015620040a957600080fd5b505af1158015620040be573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562004116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200413c919062005cb3565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200419857600080fd5b505afa158015620041ad573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200421457600080fd5b505af115801562004229573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b158015620042bd57600080fd5b505af1158015620042d2573d6000803e3d6000fd5b5050505062003320602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019ef573d6000803e3d6000fd5b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200438557600080fd5b505af11580156200439a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620043f457600080fd5b505af115801562004409573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200448c919062005cb3565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b20000000000000000000000000000000000000000000000000000000090608401620028aa565b6021546040516340c10f1960e01b815230600482015260001960248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200454757600080fd5b505af11580156200455c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620045bf57600080fd5b505af1158015620045d4573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152600160248201526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200462557600080fd5b505af11580156200413c573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200469057600080fd5b505afa158015620046a5573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620046e89450909116915063095ea7b39060440162000c72565b602154604051636eb1769f60e11b81523060048201526001600160a01b038481166024830152620025ef92169063dd62ed3e90604401620019d1565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d7075707065740000000000000000000000000000000000000000602282015260009081906200479a90603001604051602081830303815290604052620020df9062005e75565b90506001600160a01b038116620047da57604051620047b99062005976565b604051809103906000f080158015620047d6573d6000803e3d6000fd5b5090505b846001600160a01b0316638da798da828686604051602001620047ff92919062005e9a565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200482d92919062005c49565b600060405180830381600087803b1580156200484857600080fd5b505af11580156200485d573d6000803e3d6000fd5b5050604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152620049459350019050604051602081830303815290604052620048f89062005e75565b601086901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e7300000000000000000000000000000000000000000000000000000000000017620053b3565b95945050505050565b808214620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620049dc9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004a15919062005f15565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004a4e919062005f61565b60405180910390a1620025ef62005437565b8062000e8f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004ac69060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000e8f62005437565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004b7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ba0919062005cb3565b62004ba85750565b601b805462004bb79062005dd1565b9050600014601b60405160200162004bd0919062006038565b6040516020818303038152906040529062004c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c1a919062005cde565b60405180910390fd5b50601d8160405162004c36919062005e57565b9081526020016040518091039020546000148160405160200162004c5b9190620060bf565b6040516020818303038152906040529062004ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c1a919062005cde565b50601b62004cb482826200617f565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004d1457600080fd5b505af115801562004d29573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004d9757600080fd5b505af1158015620014db573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e7a919062005cb3565b62004e825750565b600060a082601c5462004e96919062005c9d565b62004ea2919062005c9d565b62004eaf9060016200624c565b90506000811162004f1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162004c1a565b80601d601b60405162004f31919062006262565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162004f80601b8262006270565b506200501e601b805462004f949062005dd1565b80601f016020809104026020016040519081016040528092919081815260200182805462004fc29062005dd1565b8015620050135780601f1062004fe75761010080835404028352916020019162005013565b820191906000526020600020905b81548152906001019060200180831162004ff557829003601f168201915b50505050506200557e565b604080516020810190915260008152601b9062000acd90826200617f565b806040516020016200504f919062005e57565b604051602081830303815290604052805190602001208260405160200162005078919062005e57565b6040516020818303038152906040528051906020012014620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200511a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162005153919062006352565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a4e9190620063a4565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620051c857620051c8620063e2565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009062005296906200526d9062005e75565b8360007e1401001400000000000000000000000000000000000000000000000000000062005681565b60601c949350505050565b806001600160a01b0316826001600160a01b031614620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620053419060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200537a9190620063f8565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004a4e91906200644d565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620053ef57620053ef620063e2565b60209081029190910101526000620054298583837e1401001400000000000000000000000000000000000000000000000000000062005681565b60601c925050505b92915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620055505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620054eb929160200162005e0d565b60408051601f1981840301815290829052620055079162005e57565b6000604051808303816000865af19150503d806000811462005546576040519150601f19603f3d011682016040523d82523d6000602084013e6200554b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62000e8f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d84604051620055c6919062005e57565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620056109160040190815260200190565b600060405180830381865afa1580156200562e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005658919081019062005cf3565b826040516020016200566c9291906200648b565b60405160208183030381529060405262005751565b6000806200568e620057c6565b9050306001600160a01b03821603620056b857620056af8686868662005801565b91505062005749565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906200570590899089908990899060040162006510565b602060405180830381865afa15801562005723573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056af919062005c6d565b949350505050565b62000e8f8160405160240162005768919062005cde565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262005834565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168062003577573391505090565b60006200494562005813868662005855565b60ff858116601b0360080285901c166200582e8587620058ad565b620058f6565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600082826040516020016200586c9291906200656d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015620058ee57620058d760ff601b83900360080287901c16836200624c565b915080620058e581620065aa565b915050620058b2565b509392505050565b60006020821062005920576020820484019350602082816200591c576200591c620065c7565b0691505b508254600882021b602082900380841115620058ee576001850154600882021c82179150509392505050565b61532780620065de83390190565b61a8a5806200b90583390190565b61554580620161aa83390190565b617d8a806201b6ef83390190565b80356001600160a01b03811681146200357757600080fd5b600080600060608486031215620059b257600080fd5b620059bd8462005984565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101562005a155783516001600160a01b031683529284019291840191600101620059ee565b50909695505050505050565b600080600080600060a0868803121562005a3a57600080fd5b62005a458662005984565b945062005a556020870162005984565b935062005a656040870162005984565b94979396509394606081013594506080013592915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005b3d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005b275783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005ae3565b50978a0197955050509187019160010162005aa5565b50919998505050505050505050565b60005b8381101562005b6957818101518382015260200162005b4f565b50506000910152565b6000815180845262005b8c81602086016020860162005b4c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005bf957603f1988860301845262005be685835162005b72565b9450928501929085019060010162005bc7565b5092979650505050505050565b6000806040838503121562005c1a57600080fd5b62005c258362005984565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038316815260406020820152600062005749604083018462005b72565b60006020828403121562005c8057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111562005431576200543162005c87565b60006020828403121562005cc657600080fd5b8151801515811462005cd757600080fd5b9392505050565b60208152600062005cd7602083018462005b72565b60006020828403121562005d0657600080fd5b815167ffffffffffffffff8082111562005d1f57600080fd5b818401915084601f83011262005d3457600080fd5b81518181111562005d495762005d4962005c33565b604051601f8201601f19908116603f0116810190838211818310171562005d745762005d7462005c33565b8160405282815287602084870101111562005d8e57600080fd5b62005da183602083016020880162005b4c565b979650505050505050565b60006020828403121562005dbf57600080fd5b815160ff8116811462005cd757600080fd5b600181811c9082168062005de657607f821691505b60208210810362005e0757634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005e4981600485016020870162005b4c565b919091016004019392505050565b6000825162005e6b81846020870162005b4c565b9190910192915050565b8051602080830151919081101562005e075760001960209190910360031b1b16919050565b7fffffffffffffffffffffffffffff000000000000000000000000000000000000831681526040602082015260ff82511660408201526000602083015160608084015262005eec60a084018262005b72565b90506040840151603f1984830301608085015262005f0b828262005b72565b9695505050505050565b60408152600062005f5360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005f5360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6000815462005fae8162005dd1565b6001828116801562005fc9576001811462005ffd576200602e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841687528215158302870194506200602e565b8560005260208060002060005b85811015620060255781548a8201529084019082016200600a565b50505082870194505b5050505092915050565b7f676173207265706f727420220000000000000000000000000000000000000000815260006200606c600c83018462005f9f565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f727420220000000000000000000000000000000000000000815260008251620060f981600c85016020870162005b4c565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f82111562000acd57600081815260208120601f850160051c81016020861015620061565750805b601f850160051c820191505b81811015620061775782815560010162006162565b505050505050565b815167ffffffffffffffff8111156200619c576200619c62005c33565b620061b481620061ad845462005dd1565b846200612d565b602080601f831160018114620061ec5760008415620061d35750858301515b600019600386901b1c1916600185901b17855562006177565b600085815260208120601f198616915b828110156200621d57888601518255948401946001909101908401620061fc565b50858210156200623c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111562005431576200543162005c87565b600062005cd7828462005f9f565b8181036200627c575050565b62006288825462005dd1565b67ffffffffffffffff811115620062a357620062a362005c33565b620062b481620061ad845462005dd1565b6000601f821160018114620062eb5760008315620062d25750848201545b600019600385901b1c1916600184901b178455620014db565b600085815260209020601f19841690600086815260209020845b8381101562006327578286015482556001958601959091019060200162006305565b50858310156200623c5793015460001960f8600387901b161c19169092555050600190811b01905550565b6040815260006200639060408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b828103602084015262005749818562005b72565b6040815260006200639060408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6040815260006200643660408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200643660408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620064c581600c85016020880162005b4c565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200650481600d84016020880162005b4c565b01600d01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015620065535784518352938301939183019160010162006535565b505060ff9690961660408501525050506060015292915050565b82815260006020808301845182860160005b828110156200659d578151845292840192908401906001016200657f565b5091979650505050505050565b60006000198203620065c057620065c062005c87565b5060010190565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a260805161523f620000e86000396000818161036f0152611396015261523f6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b602082015260006022820181905260308201819052916102189101604051602081830303815290604052610213906143fe565b610731565b60408051616e7360f01b602082015260006022820181905260308201529192506102649101604051602081830303815290604052610255906143fe565b61025f348461443b565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c93660046144ab565b610a71565b6040516103a59190614561565b3480156103e757600080fd5b506102646103f63660046145b6565b610ab4565b34801561040757600080fd5b506102646104163660046145b6565b610b67565b34801561042757600080fd5b506103ce610436366004614643565b610c12565b34801561044757600080fd5b506102646104563660046146a1565b610c5c565b34801561046757600080fd5b5061026461047636600461474e565b610d45565b34801561048757600080fd5b5061026461049636600461474e565b610dfb565b3480156104a757600080fd5b506104bb6104b63660046147e4565b610ea8565b6040519081526020016103a5565b6103ce6104d73660046148b4565b610eb9565b3480156104e857600080fd5b506104fc6104f73660046148fb565b610ef5565b6040516103a59392919061494e565b34801561051757600080fd5b506103ce6105263660046149f9565b610f4a565b34801561053757600080fd5b50610264610546366004614a62565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614ac3565b610fce565b34801561059d57600080fd5b506104bb6105ac3660046144ab565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614b1c565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614b7b565b61117b565b3480156105fd57600080fd5b5061026461060c366004614bd2565b611188565b34801561061d57600080fd5b5061026461062c366004614c0c565b611204565b34801561063d57600080fd5b5061026461064c366004614c9b565b6112af565b34801561065d57600080fd5b5061026461066c366004614d28565b61135d565b34801561067d57600080fd5b506104fc61068c366004614a62565b6114d8565b34801561069d57600080fd5b506103ce6106ac366004614643565b61152a565b3480156106bd57600080fd5b506104bb6106cc3660046147e4565b61156b565b3480156106dd57600080fd5b506102646106ec3660046144ab565b611576565b3480156106fd57600080fd5b506104bb61070c3660046147e4565b6115f6565b34801561071d57600080fd5b5061026461072c3660046145b6565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df906143fe565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b1906143fe565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd906143fe565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0a92505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d1d565b905061103c8186338787611def565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d1d565b90506110718187338888611def565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ec4565b90506110cc8188338989611def565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f5e565b6000610807848484611fa6565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f0906143fe565b33611fbc565b611200828261200d565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211f92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a92508991899089908190840183828082843760009201919091525061237892505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f5906143fe565b612390565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d5b565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250c565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d590829061200d565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262192505050565b92509250925093509350939050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612647915050565b6000610eb38261265d565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d19050565b5050505050565b6000610eb38261272a565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275092505050565b6000610c536116bb868661278b565b60ff858116601b0360080285901c166116d485876127e1565b612824565b6115ef85856116e884876127e1565b8561211f565b60606000606060006116ff85612875565b905061170c878783612898565b93506000611719866128d1565b905080156117eb5761172b888861290e565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f6147fd565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612921565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782826000876129a1565b6117d1818561443b565b9350505080806117e090614d86565b915050611783565b50505b505093509350939050565b60008061180285612a70565b90969095509350505050565b60006060600061181d86612a85565b905060005b81518110156118fa57600082828151811061183f5761183f614d45565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5390919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614da5565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614dcd565b915050611822565b5061190787858888612b71565b909350915060005b81518110156119e757600082828151811061192c5761192c614d45565b602002602001015190506119586002826affffffffffffffffffffff1916612b5390919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614da5565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614dcd565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8c565b8360ff161015611a2257611a1b85858585612c9e565b9050610807565b611a1b8585611a3085612c8c565b611a3a9087614de7565b611ae1565b611a498282612ccb565b61120057611a5682612390565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d5b565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab2858561290e565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d0e565b6060610807611af1858585612921565b611b1484611aff888861290e565b9060ff166028026038011c64ffffffffff1690565b6000613124565b6115ef8585858585611b2c8b611b74565b613147565b611b3a81612c8c565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8c565b611b6e9087614de7565b85612750565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc906143fe565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c35906143fe565b84613442565b60206000612824565b60606000611c52878761290e565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614e00565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612921565b9050611cfd81611cf78888614e00565b88613124565b9998505050505050505050565b6112008282611d1885611b74565b61345e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d6257611d62614d45565b602002602001018181525050826001600160a01b031660001b81600181518110611d8e57611d8e614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611dfa8661371e565b15611e0757506001610c53565b85611e1457506000610c53565b600080611e908660008a8a8989604051602401611e3393929190614da5565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b71565b9150915081611ea457600092505050610c53565b80806020019051810190611eb89190614e13565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611efd57611efd614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6a83612c8c565b90508060ff168460ff161015611f925760ff848116601b0360080284901c165b915050610807565b611f8a8686611fa18488614de7565b613799565b6000610807848484611fb788611b74565b611f5e565b6001600160a01b038116611ff6616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176137a9565b6001600160a01b03161461120057611a5682612390565b612037827f79f50b5b0000000000000000000000000000000000000000000000000000000061384e565b6120ac336000848460405160240161204f9190614561565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613974565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121129190614e35565b8251602084012084613985565b600061212b858561278b565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161216193929190614eb2565b60405180910390a2613a3160f11b857fffff000000000000000000000000000000000000000000000000000000000000161461219d5750611aa0565b60006121a886613ac5565b905060005b81518110156122875760008282815181106121ca576121ca614d45565b602002602001015190506121f66004826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612274576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612241908b908b908b908b90600401614ee5565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b505050505b508061227f81614dcd565b9150506121ad565b5061229b828565ffffffffffff1685613b60565b60005b8151811015610df25760008282815181106122bb576122bb614d45565b602002602001015190506122e76008826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612365576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612332908b908b908b908b90600401614ee5565b600060405180830381600087803b15801561234c57600080fd5b505af1158015612360573d6000803e3d6000fd5b505050505b508061237081614dcd565b91505061229e565b610b5f86868686868661238b8d8d61290e565b612d0e565b606081601081901b60006123a383613b70565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156123f6577fffffffffffffffffffffffffffff0000000000000000000000000000000000008316612418565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156124465782612468565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255857612558614d45565b602002602001018181525050828160018151811061257857612578614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261591015b6040516020818303038152906040526125ed906143fe565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263a858561263588611b74565b6116ee565b9250925092509250925092565b606061080784848461265888611b74565b6119fa565b600061266882613b87565b905061267382613c40565b6126cc57818260405160200161268b91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614f1e565b919050565b60006126dd858561290e565b905060006126fa828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127138764ffffffffff8716614e00565b604080516000815260208101909152889088612d0e565b600061273582613d22565b9050806126cc57818260405160200161268b91815260200190565b600061275c858561290e565b90506000612779828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d0e565b600082826040516020016127a0929190614f37565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281c5761280860ff601b83900360080287901c168361443b565b91508061281481614dcd565b9150506127e6565b509392505050565b60006020821061284a5760208204840193506020828161284657612846614f72565b0691505b508254600882021b60208290038084111561281c576001850154600882021c82179150509392505050565b6000600861288560026020614e00565b61288f9190614f88565b9190911c919050565b6060816000036128b75750604080516020810190915260008152610a3d565b60006128c3858561278b565b9050610c5381846000613124565b600060086001806128e460026020614e00565b6128ee9190614e00565b6128f89190614e00565b6129029190614f88565b8260ff911c1692915050565b6000610a3d61291d8484613ddb565b5490565b60008383604051602001612936929190614f37565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8115612a2a57602082106129cb576020820484019350602082816129c7576129c7614f72565b0691505b8115612a2a5760208290036000818510156129ef5750600019600885021c196129fa565b50600019600882021c195b8554600885021b811984511682821617845250818511612a1b575050611aa0565b50600194909401939283900392015b5b60208310612a4c5783548152600190930192601f1990920191602001612a2b565b8215611aa0576000600019600885021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612abf57612abf614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3c91015b604051602081830303815290604052612b34906143fe565b836000611ae1565b9050610807612b4e8260008451613e31565b613ec1565b60008160ff1682612b648560581c90565b1660ff1614905092915050565b60006060600080612b8186613ed2565b90925090506001600160a01b038216612bd25785612b9e87612390565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614f1e565b80612be157612be18689611a3f565b8615612c2d577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1a82610731565b9050612c2a8261025f8b8461443b565b50505b6000612c398760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7157612c6c88888488613fb6565b612c7d565b612c7d8888848861402e565b90999098509650505050505050565b6000600860016128ee60026020614e00565b6060610c53612cad868661278b565b60ff858116601b0360080285901c16612cc685876127e1565b613124565b6000612cfe616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361408f565b80610a3d5750610a3d838361408f565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9857613a3160f11b8788604051602001612d5691815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f9f565b6000612db3828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcc9190614e00565b612dd6919061443b565b9050808214158015612df8575081612dee8688614fe0565b64ffffffffff1614155b15612e48576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e99576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea6848984614161565b905064ffffffffff871660005b8960ff168160ff161015612ee657612eda868260ff166028026038011c64ffffffffff1690565b90910190600101612eb3565b508a7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48b838a868b604051612f1f959493929190615005565b60405180910390a2506000612f338b613ac5565b905060005b8151811015613008576000828281518110612f5557612f55614d45565b60200260200101519050612f816010826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612ff557606081901c6001600160a01b03166355eb5a288e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612fc2979695949392919061504b565b600060405180830381600087803b158015612fdc57600080fd5b505af1158015612ff0573d6000803e3d6000fd5b505050505b508061300081614dcd565b915050612f38565b5082841461302157600061301c8c8c613ddb565b839055505b600061302e8c8c8c612921565b9050613042818a64ffffffffff1689613b60565b5060005b815181101561311657600082828151811061306357613063614d45565b6020026020010151905061308f6020826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561310357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d0979695949392919061504b565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b505050505b508061310e81614dcd565b915050613046565b505050505050505050505050565b60405160208101601f19603f858401011660405283825261281c858585846129a1565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161317d94939291906150a9565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603610b5f5760006131be87613ac5565b905060005b81518110156132a15760008282815181106131e0576131e0614d45565b6020026020010151905061320c6001826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561328e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061325b908c908c908c908c908c908c906004016150e8565b600060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050505b508061329981614dcd565b9150506131c3565b5060006132ae888861278b565b905060006020870190506132c6826000838a5161422f565b60006132d1856128d1565b11156133555760006132e38a8a613ddb565b878155905060208601915060008060005b6132fd886128d1565b8160ff161015613350576133128d8d83612921565b925061332d8a8260ff166028026038011c64ffffffffff1690565b915061333c836000878561422f565b613346828661443b565b94506001016132f4565b505050505b60005b835181101561343657600084828151811061337557613375614d45565b602002602001015190506133a16002826affffffffffffffffffffff1916612b5390919063ffffffff16565b15613423576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906133f0908e908e908e908e908e908e906004016150e8565b600060405180830381600087803b15801561340a57600080fd5b505af115801561341e573d6000803e3d6000fd5b505050505b508061342e81614dcd565b915050613358565b50505050505050505050565b60408051602081018490529081018290526000906060016127a0565b827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161348e9190615141565b60405180910390a2613a3160f11b837fffff00000000000000000000000000000000000000000000000000000000000016146134c957505050565b60006134d484613ac5565b905060005b81518110156135b15760008282815181106134f6576134f6614d45565b602002602001015190506135226040826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561359e576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061356b90899089908990600401615154565b600060405180830381600087803b15801561358557600080fd5b505af1158015613599573d6000803e3d6000fd5b505050505b50806135a981614dcd565b9150506134d9565b5060006135be858561278b565b90506136178160006135cf86612875565b67ffffffffffffffff8111156135e7576135e76147fd565b6040519080825280601f01601f191660200182016040528015613611576020820181803683370190505b50613b60565b6000613622846128d1565b11156136435760006136348686613ddb565b90506136418160206142ef565b505b60005b8251811015610b5f57600083828151811061366357613663614d45565b6020026020010151905061368f6080826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561370b576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906136d8908a908a908a90600401615154565b600060405180830381600087803b1580156136f257600080fd5b505af1158015613706573d6000803e3d6000fd5b505050505b508061371681614dcd565b915050613646565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052613791906143fe565b909114919050565b600061080782611aff868661290e565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106137e2576137e2614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e6572000000000000000000000000000000000000603083015260009161384391016125d5565b60601c949350505050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081526001600160e01b0319821660048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa9250505080156138d1575060408051601f3d908101601f191682019092526138ce91810190614e13565b60015b613922576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b806108fc576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526001600160e01b031983166024820152604401610290565b6060600080610a558787878761402e565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139cd576139cd614d45565b60200260200101818152505082816001815181106139ed576139ed614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a59906143fe565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613aff57613aff614d45565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3c9101612b1c565b6108fc838360208401845161422f565b6000613b7e6070601061443b565b9190911b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bc057613bc0614d45565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c18906143fe565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c7957613c79614d45565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d1691015b604051602081830303815290604052613cee906143fe565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613d5b57613d5b614d45565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613db3906143fe565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613df0929190614f37565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613e44575083518211155b613e80578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102909392919061517d565b60208401613e8e848261443b565b90506000613e9c8585614e00565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d836015600061432c565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f0c57613f0c614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d73000000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009081908190613fa590613f7f906143fe565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836143a7565b60006060836001600160a01b03166000613fd18589896143b3565b604051613fde91906151a2565b60006040518083038185875af1925050503d806000811461401b576040519150601f19603f3d011682016040523d82523d6000602084013e614020565b606091505b509097909650945050505050565b60006060836001600160a01b03166140478488886143b3565b60405161405491906151a2565b600060405180830381855af49150503d806000811461401b576040519150601f19603f3d011682016040523d82523d6000602084013e614020565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106140c8576140c8614d45565b602002602001018181525050826001600160a01b031660001b816001815181106140f4576140f4614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141559101613cd6565b9050610c538160f81c90565b600064ffffffffff8211156141a5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106141d757808503820191506141df565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156142a957602083106142595760208304840193506020838161425557614255614f72565b0692505b82156142a95760208390036000600019600884021c1990506008850281811c91508451811c905081198754168282161787555081831161429a575050611aa0565b50600194909401939182019190035b5b602081106142cb5781518455600190930192602090910190601f19016142aa565b8015611aa0576000600019600883021c198554845182169119161785555050505050565b600060206142fe83601f61443b565b61430891906151be565b614312908461443b565b90505b808310156108fc5760008355600183019250614315565b6060600061433a8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161436057614360614f72565b04905060405193506020840160208202810160405281855260005b8281101561439b578451871c82529387019360209091019060010161437b565b50505050509392505050565b600080611802856143e2565b60608383836040516020016143ca939291906151e0565b60405160208183030381529060405290509392505050565b6020810151603482015160609190911c9060009060f81c612a7e565b8051602080830151919081101561441f576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb3614425565b60008083601f84011261446057600080fd5b50813567ffffffffffffffff81111561447857600080fd5b6020830191508360208260051b850101111561449357600080fd5b9250929050565b803560ff811681146126cc57600080fd5b6000806000806000608086880312156144c357600080fd5b85359450602086013567ffffffffffffffff8111156144e157600080fd5b6144ed8882890161444e565b909550935061450090506040870161449a565b949793965091946060013592915050565b60005b8381101561452c578181015183820152602001614514565b50506000910152565b6000815180845261454d816020860160208601614511565b601f01601f19169290920160200192915050565b602081526000610a3d6020830184614535565b60008083601f84011261458657600080fd5b50813567ffffffffffffffff81111561459e57600080fd5b60208301915083602082850101111561449357600080fd5b600080600080600080608087890312156145cf57600080fd5b86359550602087013567ffffffffffffffff808211156145ee57600080fd5b6145fa8a838b0161444e565b909750955085915061460e60408a0161449a565b9450606089013591508082111561462457600080fd5b5061463189828a01614574565b979a9699509497509295939492505050565b6000806000806060858703121561465957600080fd5b84359350602085013567ffffffffffffffff81111561467757600080fd5b6146838782880161444e565b909450925061469690506040860161449a565b905092959194509250565b60008060008060008060008060a0898b0312156146bd57600080fd5b88359750602089013567ffffffffffffffff808211156146dc57600080fd5b6146e88c838d0161444e565b909950975060408b013591508082111561470157600080fd5b61470d8c838d01614574565b909750955060608b0135945060808b013591508082111561472d57600080fd5b5061473a8b828c01614574565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561476957600080fd5b87359650602088013567ffffffffffffffff8082111561478857600080fd5b6147948b838c0161444e565b90985096508691506147a860408b0161449a565b955060608a01359150808211156147be57600080fd5b506147cb8a828b01614574565b989b979a50959894979596608090950135949350505050565b6000602082840312156147f657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561483c5761483c6147fd565b604052919050565b600082601f83011261485557600080fd5b813567ffffffffffffffff81111561486f5761486f6147fd565b6148826020601f19601f84011601614813565b81815284602083860101111561489757600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156148c757600080fd5b82359150602083013567ffffffffffffffff8111156148e557600080fd5b6148f185828601614844565b9150509250929050565b6000806000806060858703121561491157600080fd5b84359350602085013567ffffffffffffffff81111561492f57600080fd5b61493b8782880161444e565b9598909750949560400135949350505050565b6060815260006149616060830186614535565b8460208401528281036040840152610a678185614535565b600082601f83011261498a57600080fd5b8135602067ffffffffffffffff8211156149a6576149a66147fd565b8160051b6149b5828201614813565b92835284810182019282810190878511156149cf57600080fd5b83870192505b848310156149ee578235825291830191908301906149d5565b979650505050505050565b600080600080600060a08688031215614a1157600080fd5b85359450602086013567ffffffffffffffff811115614a2f57600080fd5b614a3b88828901614979565b945050614a4a6040870161449a565b94979396509394606081013594506080013592915050565b600080600060408486031215614a7757600080fd5b83359250602084013567ffffffffffffffff811115614a9557600080fd5b614aa18682870161444e565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614ad857600080fd5b8335614ae381614aae565b925060208401359150604084013567ffffffffffffffff811115614b0657600080fd5b614b1286828701614844565b9150509250925092565b60008060008060808587031215614b3257600080fd5b84359350602085013567ffffffffffffffff811115614b5057600080fd5b614b5c87828801614979565b935050614b6b6040860161449a565b9396929550929360600135925050565b600080600060608486031215614b9057600080fd5b83359250602084013567ffffffffffffffff811115614bae57600080fd5b614bba86828701614979565b925050614bc96040850161449a565b90509250925092565b60008060408385031215614be557600080fd5b8235614bf081614aae565b9150602083013567ffffffffffffffff8111156148e557600080fd5b60008060008060008060808789031215614c2557600080fd5b86359550602087013567ffffffffffffffff80821115614c4457600080fd5b614c508a838b0161444e565b90975095506040890135915065ffffffffffff82168214614c7057600080fd5b9093506060880135908082111561462457600080fd5b803564ffffffffff811681146126cc57600080fd5b60008060008060008060008060c0898b031215614cb757600080fd5b88359750602089013567ffffffffffffffff80821115614cd657600080fd5b614ce28c838d0161444e565b9099509750879150614cf660408c0161449a565b9650614d0460608c01614c86565b9550614d1260808c01614c86565b945060a08b013591508082111561472d57600080fd5b600060208284031215614d3a57600080fd5b8135610a3d81614aae565b634e487b7160e01b600052603260045260246000fd5b604081526000614d6e6040830185614535565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d9c57614d9c614425565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c536060830184614535565b60006000198203614de057614de0614425565b5060010190565b60ff8281168282160390811115610eb357610eb3614425565b81810381811115610eb357610eb3614425565b600060208284031215614e2557600080fd5b81518015158114610a3d57600080fd5b600060208284031215614e4757600080fd5b81517fffffffffffffffffffffffffffffffff0000000000000000000000000000000081168114610a3d57600080fd5b600081518084526020808501945080840160005b83811015614ea757815187529582019590820190600101614e8b565b509495945050505050565b606081526000614ec56060830186614e77565b65ffffffffffff851660208401528281036040840152610a678185614535565b848152608060208201526000614efe6080830186614e77565b65ffffffffffff8516604084015282810360608401526149ee8185614535565b8281526040602082015260006108076040830184614535565b82815260006020808301845182860160005b82811015614f6557815184529284019290840190600101614f49565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb3614425565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c536060830184614535565b64ffffffffff818116838216019080821115614ffe57614ffe614425565b5092915050565b60a08152600061501860a0830188614e77565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb88185614535565b87815260e06020820152600061506460e0830189614e77565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261509b8185614535565b9a9950505050505050505050565b6080815260006150bc6080830187614e77565b82810360208401526150ce8187614535565b905084604084015282810360608401526149ee8185614535565b86815260c06020820152600061510160c0830188614e77565b82810360408401526151138188614535565b9050856060840152828103608084015261512d8186614535565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614e77565b83815260606020820152600061516d6060830185614e77565b9050826040830152949350505050565b6060815260006151906060830186614535565b60208301949094525060400152919050565b600082516151b4818460208701614511565b9190910192915050565b6000826151db57634e487b7160e01b600052601260045260246000fd5b500490565b600084516151f2818460208901614511565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b615ff480620048b183390190565b608051614829620000886000396000818161052a01528181610585015261095c01526148296000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004613fed565b610148565b60405190151581526020015b60405180910390f35b6100b26101e1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614045565b6101f0565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614045565b610222565b6100b261023d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101eb610247565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022a610279565b6102326104c3565b61023a610611565b50565b60006101eb610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102765750335b90565b610281610a9c565b610289610ab4565b610291610b59565b610299610be1565b6102a1610c81565b6102a9610d09565b6102b1610d89565b6102b9610e11565b6102c1610eb1565b6102c9610f51565b6102d161100a565b6102d96110a8565b60408051616e7360f01b6020820152600060228201819052603082015261031b91015b604051602081830303815290604052610314906140f6565b6001611130565b60408051616e7360f01b6020820152600060228201819052603082015261036391015b604051602081830303815290604052610356906140f6565b61035e6101e1565b611215565b60408051616e7360f01b602082015260006022820181905260308201526103ad91015b60405160208183030381529060405261039e906140f6565b6103a66101e1565b6001611323565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526103db91016102fc565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610409910161033e565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104379101610386565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261046591016102fc565b60408051616e7360f01b6020820152641ddbdc9b1960da1b602282015260006030820152610493910161033e565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104c19101610386565b565b61023a6104ce6101e1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f636f7265000000000000000000000000000000000000000000000000000000006030830152917f00000000000000000000000000000000000000000000000000000000000000009101604051602081830303815290604052610563906140f6565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526113f5565b60006040518061026001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147fb60229139815260200160405180606001604052806033815260200161479f6033913981526020016040518060600160405280603181526020016146946031913981526020016040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d290000000081525081526020016040518060600160405280602881526020016147206028913981526020016040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c6279746573290000000081525081526020016040518060600160405280604081526020016145df6040913981526020016040518060600160405280602881526020016146c56028913981526020016040518060600160405280602481526020016145bb6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d65737061636528627974657333322900000000000081525081526020016040518060600160405280602981526020016147d26029913981526020016040518060600160405280602581526020016147486025913981526020016040518060600160405280602481526020016146706024913981526020016040518060600160405280602881526020016146486028913981526020016040518060600160405280603381526020016146ed60339139815260200160405180606001604052806029815260200161461f60299139815260200160405180606001604052806032815260200161476d603291399052905060005b6013811015610a4c57610a396109006101e1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f636f7265000000000000000000000000000000000000000000000000000000006030830152917f00000000000000000000000000000000000000000000000000000000000000009101604051602081830303815290604052610995906140f6565b8686601381106109a7576109a761411a565b60200201518787601381106109be576109be61411a565b6020020151805190602001206040516024016109dc93929190614180565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d6118000000000000000000000000000000000000000000000000000000001790526113f5565b5080610a44816141e1565b9150506108ec565b5050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610a97573391505090565b919050565b610aa4611422565b610aac6114c2565b6104c1611560565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610b14906140f6565b7e14010014000000000000000000000000000000000000000000000000000000610b3c6115e8565b610b44611660565b610b4c61169a565b610b5461171f565b611796565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e63657300000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610bb9906140f6565b630100080160dd1b610bc96115e8565b610bd161186a565b610bd961169a565b610b546118a4565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526104c19101604051602081830303815290604052610c41906140f6565b7e14010014000000000000000000000000000000000000000000000000000000610c6961191b565b610c71611660565b610c7961199a565b610b54611a64565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f0000000000000000000000000000000060308201526104c19101604051602081830303815290604052610ce1906140f6565b630100080160dd1b610cf1611adb565b610cf96115e8565b610d01611b5a565b610b54611c24565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c656761740000000000000000000000000000000060308201526104c19101604051602081830303815290604052610d69906140f6565b630100080160dd1b610d796115e8565b610d816115e8565b610d0161169a565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610de9906140f6565b630101000160d81b610df9611c9b565b610e01611cd5565b610e09611d0f565b610b54611dd9565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d730000000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610e71906140f6565b7e15020014010000000000000000000000000000000000000000000000000000610e996115e8565b610ea1611e50565b610ea9611ecf565b610b54611f46565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201526104c19101604051602081830303815290604052610f11906140f6565b7e24020020040000000000000000000000000000000000000000000000000000610f39612010565b610f4161204a565b610f496120c9565b610b54612140565b604080517f6f740000000000000000000000000000000000000000000000000000000000006020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201526104c19101604051602081830303815290604052610fcc906140f6565b7c0100000000000000000000000000000000000000000000000000000000610ff2612010565b610ffa61220a565b6110026120c9565b610b54612244565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526104c1910160405160208183030381529060405261106a906140f6565b7c01000000000000000000000000000000000000000000000000000000006110906115e8565b6110986122bb565b6110a0611ecf565b610b546122f5565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d526567697374727900000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611108906140f6565b630100080160dd1b611118611660565b6111206115e8565b61112861236c565b610b54611ecf565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106111665761116661411a565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261121091015b6040516020818303038152906040526111d8906140f6565b826000856040516020016111f391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b6123e3565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061124b5761124b61411a565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052611210906112b7906140f6565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006123e3565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106113585761135861411a565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106113915761139161411a565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526113ef91016111c0565b50505050565b6060600080611406878787876123ff565b91509150816114185761141881612480565b9695505050505050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611482906140f6565b7e600302202020000000000000000000000000000000000000000000000000006114aa6115e8565b6114b2612488565b6114ba6125d7565b610b5461264e565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611522906140f6565b7c01000000000000000000000000000000000000000000000000000000006115486115e8565b6115506122bb565b6115586125d7565b610b54612816565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201526104c191016040516020818303038152906040526115c0906140f6565b630101000160d81b6115d06115e8565b6115d8611cd5565b6115e061288d565b610b54612904565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106116225761162261411a565b602002602001019060c581111561163b5761163b6141fb565b908160c581111561164e5761164e6141fb565b90525061165a8161297b565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816116b15790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816117365790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60006117a0610a50565b90503073ffffffffffffffffffffffffffffffffffffffff8216036117d2576117cd878787878787612b3f565b611861565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f499061182e908a908a908a908a908a908a90600401614269565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816118bb5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050604f816000815181106119555761195561411a565b602002602001019060c581111561196e5761196e6141fb565b908160c5811115611981576119816141fb565b81525050605f816001815181106116225761162261411a565b6040805160028082526060828101909352816020015b60608152602001906001900390816119b05790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611a1057611a1061411a565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611a7b5790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611b1557611b1561411a565b602002602001019060c5811115611b2e57611b2e6141fb565b908160c5811115611b4157611b416141fb565b815250506061816001815181106116225761162261411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611b705790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611bd057611bd061411a565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611c3b5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611b1557611b1561411a565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106116225761162261411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611d255790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611d8557611d8561411a565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611df05790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611e8a57611e8a61411a565b602002602001019060c5811115611ea357611ea36141fb565b908160c5811115611eb657611eb66141fb565b815250506060816001815181106116225761162261411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ee65790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611f5c5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611fbc57611fbc61411a565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106116225761162261411a565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106120845761208461411a565b602002602001019060c581111561209d5761209d6141fb565b908160c58111156120b0576120b06141fb565b815250506043816001815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816120e05790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160028082526060828101909352816020015b60608152602001906001900390816121565790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106121b6576121b661411a565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106117115761171161411a565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161225b5790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161230c5790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816123835790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6123f885856123f28487612e34565b85612e77565b5050505050565b600060608373ffffffffffffffffffffffffffffffffffffffff166124258488886130d0565b60405161243291906142b3565b600060405180830381855af49150503d806000811461246d576040519150601f19603f3d011682016040523d82523d6000602084013e612472565b606091505b509097909650945050505050565b805160208201fd5b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106124c3576124c361411a565b602002602001019060c58111156124dc576124dc6141fb565b908160c58111156124ef576124ef6141fb565b81525050605f816001815181106125085761250861411a565b602002602001019060c5811115612521576125216141fb565b908160c5811115612534576125346141fb565b81525050605f8160028151811061254d5761254d61411a565b602002602001019060c5811115612566576125666141fb565b908160c5811115612579576125796141fb565b8152505060c4816003815181106125925761259261411a565b602002602001019060c58111156125ab576125ab6141fb565b908160c58111156125be576125be6141fb565b8152505060c4816004815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816125ee5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600580825260c08201909252606091816020015b60608152602001906001900390816126665790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106126c6576126c661411a565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061271a5761271a61411a565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d610000000000000000000000000000000000000000008152508160028151811061276e5761276e61411a565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106127c2576127c261411a565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106117115761171161411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161282d5790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816128a45790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161291b5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6000601c825111156129ae578151604051635318beb960e01b81526004016129a591815260200190565b60405180910390fd5b60008080805b8551811015612a895760006129f28783815181106129d4576129d461411a565b602002602001015160c58111156129ed576129ed6141fb565b6130ff565b905080600003612a0757600190920191612a3f565b8215612a3f576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612a6057612a6061411a565b602002602001015160c5811115612a7957612a796141fb565b901b9490941793506001016129b4565b506005811115612aaf57604051635318beb960e01b8152600481018290526024016129a5565b84518190036008612ac2600260206142cf565b612acc91906142e2565b83901b939093179260086001612ae4600260206142cf565b612aee91906142cf565b612af891906142e2565b81901b93909317926008600180612b11600260206142cf565b612b1b91906142cf565b612b2591906142cf565b612b2f91906142e2565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612bb857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612c1957613a3160f11b8687604051602001612bd791815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526129a59392916004016142f9565b612c2485600061315f565b612c2f8460016132e1565b612c3a8360006132e1565b60e084901c60e885901c0160ff16825114612c9a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b60e085901c60e886901c0160ff16815114612cfa5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612d725760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b612d7b86613488565b15612dd5578586604051602001612d9491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526129a5929160040161433a565b612e218686868686604051602001612ded9190614353565b60405160208183030381529060405286604051602001612e0d9190614353565b604051602081830303815290604052613554565b612e2c866001611130565b505050505050565b600080805b8360ff16811015612e6f57612e5b60ff601b83900360080287901c1683614366565b915080612e67816141e1565b915050612e39565b509392505050565b6000612e838585613658565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051612eb9939291906143b4565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614612ef557506113ef565b6000612f00866136ae565b905060005b8151811015612fdf576000828281518110612f2257612f2261411a565b60200260200101519050612f4e6004826affffffffffffffffffffff191661377690919063ffffffff16565b15612fcc576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612f99908b908b908b908b906004016143e7565b600060405180830381600087803b158015612fb357600080fd5b505af1158015612fc7573d6000803e3d6000fd5b505050505b5080612fd7816141e1565b915050612f05565b50612ff3828565ffffffffffff1685613794565b60005b81518110156118615760008282815181106130135761301361411a565b6020026020010151905061303f6008826affffffffffffffffffffff191661377690919063ffffffff16565b156130bd576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061308a908b908b908b908b906004016143e7565b600060405180830381600087803b1580156130a457600080fd5b505af11580156130b8573d6000803e3d6000fd5b505050505b50806130c8816141e1565b915050612ff6565b60608383836040516020016130e79392919061442b565b60405160208183030381529060405290509392505050565b6000808260c5811115613114576131146141fb565b60ff169050606181101561312e57601f1660010192915050565b60618360c5811115613142576131426141fb565b036131505750601492915050565b50600092915050565b50919050565b8015801561316b575081155b156131a5576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016129a5565b60006131b0836137a4565b905060058111156131f0576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016129a5565b60006131fb846137e1565b905060006132098383614366565b9050601c811115613249576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016129a5565b60005b82811015612e2c5760ff601b82900360080287901c16600081900361329d576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156132d8576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161324c565b801580156132ed575081155b1561330e57604051635318beb960e01b8152600060048201526024016129a5565b6000613319836137a4565b9050600581111561334057604051635318beb960e01b8152600481018290526024016129a5565b600061334b846137e1565b905060006133598383614366565b9050601c81111561338057604051635318beb960e01b8152600481018290526024016129a5565b60008060005b838110156134415760006133ae61339d8a846137f3565b60c58111156129ed576129ed6141fb565b11156133f8578481106133ed576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191613439565b84811015613432576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613386565b5083821461346557604051635318beb960e01b8152600481018390526024016129a5565b84811461186157604051635318beb960e01b8152600481018290526024016129a5565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106134c1576134c161411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905260009061354090613530906140f6565b836000630101000160d81b61381b565b905061354c8160f81c90565b949350505050565b6000613561868686613851565b9050600061356f8484613873565b9050600061357d8585613890565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106135b7576135b761411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261364c90613623906140f6565b828686867e600302202020000000000000000000000000000000000000000000000000006138bc565b50505050505050505050565b6000828260405160200161366d92919061447d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106136e8576136e861411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061375f90613757906140f6565b836000613bab565b905061354c6137718260008451613be5565b613c75565b60008160ff16826137878560581c90565b1660ff1614905092915050565b6112108383602084018451613c86565b600060086001806137b7600260206142cf565b6137c191906142cf565b6137cb91906142cf565b6137d591906142e2565b8260ff911c1692915050565b6000600860016137c1600260206142cf565b6000601b8290036008028360ff911c1660c5811115613814576138146141fb565b9392505050565b600061384861382a8686613658565b60ff858116601b0360080285901c166138438587612e34565b613d46565b95945050505050565b60408051602081018590529081018390526060818101839052906080016130e7565b8151815160009181810160389190911b1760609190911b17613814565b606082826040516020016138a59291906144b8565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516138f294939291906144e7565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603612e2c576000613933876136ae565b905060005b8151811015613a165760008282815181106139555761395561411a565b602002602001015190506139816001826affffffffffffffffffffff191661377690919063ffffffff16565b15613a03576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906139d0908c908c908c908c908c908c90600401614526565b600060405180830381600087803b1580156139ea57600080fd5b505af11580156139fe573d6000803e3d6000fd5b505050505b5080613a0e816141e1565b915050613938565b506000613a238888613658565b90506000602087019050613a3b826000838a51613c86565b6000613a46856137a4565b1115613aca576000613a588a8a613d97565b878155905060208601915060008060005b613a72886137a4565b8160ff161015613ac557613a878d8d83613ded565b9250613aa28a8260ff166028026038011c64ffffffffff1690565b9150613ab18360008785613c86565b613abb8286614366565b9450600101613a69565b505050505b60005b835181101561364c576000848281518110613aea57613aea61411a565b60200260200101519050613b166002826affffffffffffffffffffff191661377690919063ffffffff16565b15613b98576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613b65908e908e908e908e908e908e90600401614526565b600060405180830381600087803b158015613b7f57600080fd5b505af1158015613b93573d6000803e3d6000fd5b505050505b5080613ba3816141e1565b915050613acd565b606061354c613bbb858585613ded565b613bde84613bc98888613e6d565b9060ff166028026038011c64ffffffffff1690565b6000613e80565b6000818311158015613bf8575083518211155b613c34578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016129a59392919061457f565b60208401613c428482614366565b90506000613c5085856142cf565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006138148360156000613ea3565b8215613d005760208310613cb057602083048401935060208381613cac57613cac6145a4565b0692505b8215613d005760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311613cf15750506113ef565b50600194909401939182019190035b5b60208110613d225781518455600190930192602090910190601f1901613d01565b80156113ef576000600019600883021c198554845182169119161785555050505050565b600060208210613d6c57602082048401935060208281613d6857613d686145a4565b0691505b508254600882021b602082900380841115612e6f576001850154600882021c82179150509392505050565b60008282604051602001613dac92919061447d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e0292919061447d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613814613e7c8484613d97565b5490565b60405160208101601f19603f8584010116604052838252612e6f85858584613f1e565b60606000613eb18560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613ed757613ed76145a4565b04905060405193506020840160208202810160405281855260005b82811015613f12578451871c825293870193602090910190600101613ef2565b50505050509392505050565b8115613fa75760208210613f4857602082048401935060208281613f4457613f446145a4565b0691505b8115613fa7576020829003600081851015613f6c5750600019600885021c19613f77565b50600019600882021c195b8554600885021b811984511682821617845250818511613f985750506113ef565b50600194909401939283900392015b5b60208310613fc95783548152600190930192601f1990920191602001613fa8565b82156113ef576000600019600885021c198251865482169119161782525050505050565b600060208284031215613fff57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461381457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561405757600080fd5b813567ffffffffffffffff8082111561406f57600080fd5b818401915084601f83011261408357600080fd5b8135818111156140955761409561402f565b604051601f8201601f19908116603f011681019083821181831017156140bd576140bd61402f565b816040528281528760208487010111156140d657600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156131595760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561414b578181015183820152602001614133565b50506000910152565b6000815180845261416c816020860160208601614130565b601f01601f19169290920160200192915050565b8381526060602082015260006141996060830185614154565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036141f4576141f46141cb565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561425c57601f1986840301895261424a838351614154565b9884019892509083019060010161422e565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061429460c0830185614211565b82810360a08401526142a68185614211565b9998505050505050505050565b600082516142c5818460208701614130565b9190910192915050565b818103818111156101db576101db6141cb565b80820281158282048414176101db576101db6141cb565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006138486060830184614154565b82815260406020820152600061354c6040830184614154565b6020815260006138146020830184614211565b808201808211156101db576101db6141cb565b600081518084526020808501945080840160005b838110156143a95781518752958201959082019060010161438d565b509495945050505050565b6060815260006143c76060830186614379565b65ffffffffffff8516602084015282810360408401526114188185614154565b8481526080602082015260006144006080830186614379565b65ffffffffffff8516604084015282810360608401526144208185614154565b979650505050505050565b6000845161443d818460208901614130565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b82815260006020808301845182860160005b828110156144ab5781518452928401929084019060010161448f565b5091979650505050505050565b600083516144ca818460208801614130565b8351908301906144de818360208801614130565b01949350505050565b6080815260006144fa6080830187614379565b828103602084015261450c8187614154565b905084604084015282810360608401526144208185614154565b86815260c06020820152600061453f60c0830188614379565b82810360408401526145518188614154565b9050856060840152828103608084015261456b8186614154565b9150508260a0830152979650505050505050565b6060815260006145926060830186614154565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a608060405234801561001057600080fd5b50615fd380620000216000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063742d6118116100e3578063bfdfaff71161008c578063d5f8337f11610066578063d5f8337f14610358578063e1af802c1461036b578063ef5d6bbb1461037357600080fd5b8063bfdfaff71461031f578063c9c85a6014610332578063ce5e8dd91461034557600080fd5b80638fc8cf7e116100bd5780638fc8cf7e146102d9578063a92813ad146102f9578063b29e40891461030c57600080fd5b8063742d6118146102a05780638d53b208146102b35780638da798da146102c657600080fd5b806326d981021161014557806345afd1991161011f57806345afd1991461026757806345ec93541461027a578063530f4b601461028d57600080fd5b806326d98102146102155780633350b6a91461024157806340554c3a1461025457600080fd5b80630ba51f49116101765780630ba51f49146101cf578063119df25f146101e25780631d2257ba1461020257600080fd5b806301ffc9a71461019257806305609129146101ba575b600080fd5b6101a56101a03660046151bf565b610386565b60405190151581526020015b60405180910390f35b6101cd6101c83660046151ef565b6103ef565b005b6101cd6101dd36600461526b565b61040e565b6101ea610626565b6040516001600160a01b0390911681526020016101b1565b6101cd6102103660046153c6565b610635565b61022861022336600461541f565b6106b6565b6040516001600160e01b031990911681526020016101b1565b6101cd61024f366004615474565b6107ae565b6101cd6102623660046151ef565b610975565b6101cd6102753660046154b6565b61098d565b604051601f1936013581526020016101b1565b6101cd61029b3660046154ff565b610a68565b6102286102ae36600461553d565b610aa9565b6101cd6102c13660046151ef565b610b64565b6101cd6102d436600461558b565b610b7a565b6102ec6102e73660046155c5565b610c93565b6040516101b1919061564b565b6101cd6103073660046151ef565b610e9b565b6101cd61031a3660046156ad565b610f0f565b6101cd61032d3660046156c6565b610fb3565b6101cd610340366004615700565b61107e565b6102ec6103533660046155c5565b611127565b6101cd6103663660046154ff565b6112f1565b6101ea611358565b6101cd6103813660046151ef565b611362565b60006001600160e01b031982167fb42128800000000000000000000000000000000000000000000000000000000014806103e957506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610400826103fb610626565b611389565b61040a828261140f565b5050565b60006104198961145c565b6fffffffffffffffffffffffffffffffff191603610478578761043b89611473565b6040517fe4ac069e00000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b60405180910390fd5b7dffffffffffffffffffffffffffff000000000000000000000000000000008816616e7360f01b176104a98161159f565b6105ef576040805161737960f01b60208201526000602282018190527f636f72650000000000000000000000000000000000000000000000000000000060308301529161050e910160405160208183030381529060405261050990615745565b611689565b509050600080826001600160a01b03168460405160240161053191815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb29e408900000000000000000000000000000000000000000000000000000000179052516105949190615769565b600060405180830381855af49150503d80600081146105cf576040519150601f19603f3d011682016040523d82523d6000602084013e6105d4565b606091505b5091509150816105e7576105e78161177a565b5050506105fb565b6105fb816103fb610626565b61061b8989898961060c898b615785565b610616888a615785565b611782565b505050505050505050565b6000610630611a3f565b905090565b610647610640610626565b8484611a71565b61065082611b9b565b801561065d575060008151115b156106b157600061066d83611689565b50905061069a817faea79dd000000000000000000000000000000000000000000000000000000000611bb7565b6106ae6106a5610626565b84846000611cdd565b50505b505050565b60006106c4836103fb610626565b60006106ed6106d38560101b90565b71ffffffffffffffffffffffffffffffffffff1916611d0a565b905060006107026106fd8661145c565b611d0a565b9050600082828660405160200161071b93929190615809565b604051602081830303815290604052905080805190602001209350600061074185611d9a565b90508015610787576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b03198616600482015260240161046f565b85516020870120610799868983611e89565b6107a38684611f91565b505050505092915050565b61737960f01b836001600160f01b031916146108095761737960f01b836107d485611473565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161046f9392919061587f565b610833827fb421288000000000000000000000000000000000000000000000000000000000611bb7565b600061083e8461145c565b6fffffffffffffffffffffffffffffffff191603610860578261043b84611473565b600061086b836120b2565b9050801580159061087c5750838114155b156108be576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161046f565b7dffffffffffffffffffffffffffff000000000000000000000000000000008416616e7360f01b176108ef8161159f565b610901576108fc81610f0f565b61090d565b61090d816103fb610626565b600061091886612194565b90506001600160a01b03811615610941576109328161226f565b61093c8282612343565b61094c565b61094c866001612436565b61095786868661252e565b610961858761260e565b61096d828660016126ae565b505050505050565b610981826103fb610626565b61040a828260016126ae565b61099e83610999610626565b61276d565b60006109a984612784565b9050808211156109ef576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161046f565b610a02846109fd84846158be565b61281e565b600080846001600160a01b03168460405160006040518083038185875af1925050503d8060008114610a50576040519150601f19603f3d011682016040523d82523d6000602084013e610a55565b606091505b50915091508161096d5761096d8161177a565b610a92827f198cf0cd00000000000000000000000000000000000000000000000000000000611bb7565b610a9e836103fb610626565b6106b18383836128b2565b60408051616e7360f01b60208201526000602282018190526030820181905291610aee9101604051602081830303815290604052610ae690615745565b6103fb610626565b50815160208301206000610b0182611d9a565b90508015610b47576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b03198316600482015260240161046f565b610b52828685611e89565b610b5c8285611f91565b509392505050565b610b70826103fb610626565b61040a8282612343565b610ba4827f79f50b5b00000000000000000000000000000000000000000000000000000000611bb7565b610c20610baf610626565b60008484604051602401610bc391906158d1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052612913565b5061040a826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8691906158e4565b8251602084012084612924565b60606000610c9f611358565b90508267ffffffffffffffff811115610cba57610cba615301565b604051908082528060200260200182016040528015610ced57816020015b6060815260200190600190039081610cd85790505b50915060005b83811015610e93576000806001600160a01b0384168063894ecc58898987818110610d2057610d20615917565b9050602002810190610d32919061592d565b610d40906020810190615961565b8a8a88818110610d5257610d52615917565b9050602002810190610d64919061592d565b602001358b8b89818110610d7a57610d7a615917565b9050602002810190610d8c919061592d565b610d9a90604081019061597e565b604051602401610dad9493929190615a0e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b939093179092529051610dfa9250615769565b600060405180830381855af49150503d8060008114610e35576040519150601f19603f3d011682016040523d82523d6000602084013e610e3a565b606091505b509150915081610e4d57610e4d8161177a565b80806020019051810190610e619190615a37565b858481518110610e7357610e73615917565b602002602001018190525050508080610e8b90615aa5565b915050610cf3565b505092915050565b610ea7826103fb610626565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261040a91015b604051602081830303815290604052610f0890615745565b8383612a57565b616e7360f01b816001600160f01b03191614610f3557616e7360f01b816107d483611473565b610f3e8161159f565b15610f815780610f4d82611473565b6040517f0dc28f6a00000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b610f8c816001612436565b610f9d81610f98610626565b612b7e565b610fb081610fa9610626565b60016126ae565b50565b616e7360f01b836001600160f01b03191614610fd957616e7360f01b836107d485611473565b610fe282611b9b565b611018576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611024836103fb610626565b600061102f83611689565b50905061105c817faea79dd000000000000000000000000000000000000000000000000000000000611bb7565b6110668484612c12565b815115611078576106ae6106a5610626565b50505050565b616e7360f01b826001600160f01b031916146110a457616e7360f01b826107d484611473565b6110b083610999610626565b60006110bb84612784565b905080821115611101576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161046f565b61110f846109fd84846158be565b611078838361111d86612784565b6109fd9190615abf565b60606000611133611358565b90508267ffffffffffffffff81111561114e5761114e615301565b60405190808252806020026020018201604052801561118157816020015b606081526020019060019003908161116c5790505b50915060005b83811015610e93576000806001600160a01b03841680633ae7af088989878181106111b4576111b4615917565b90506020028101906111c69190615ad2565b358a8a888181106111d9576111d9615917565b90506020028101906111eb9190615ad2565b6111f990602081019061597e565b60405160240161120b93929190615b06565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516112589250615769565b600060405180830381855af49150503d8060008114611293576040519150601f19603f3d011682016040523d82523d6000602084013e611298565b606091505b5091509150816112ab576112ab8161177a565b808060200190518101906112bf9190615a37565b8584815181106112d1576112d1615917565b6020026020010181905250505080806112e990615aa5565b915050611187565b61131b827f55f0760f00000000000000000000000000000000000000000000000000000000611bb7565b611327836103fb610626565b6106b1836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612ca6565b6000610630612d95565b61136e826103fb610626565b6113788282612b7e565b61098182611384610626565b612343565b6001600160a01b0381166113c3616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617612dd4565b6001600160a01b03161461040a576113da82611473565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161046f929190615b20565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261040a9101610ef0565b600061146a60706010615abf565b9190911b919050565b606081601081901b60006114868361145c565b90508271ffffffffffffffffffffffffffffffffffff198316156114bf5771ffffffffffffffffffffffffffffffffffff1983166114e1565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6fffffffffffffffffffffffffffffffff198316156115005782611522565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160f01b031990931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190526fffffffffffffffffffffffffffffffff19928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106115d8576115d8615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161167591015b60405160208183030381529060405261164d90615745565b8360007e01010001000000000000000000000000000000000000000000000000000000612ea0565b90506116818160f81c90565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116c3576116c3615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061175c9061173690615745565b857e15020014010000000000000000000000000000000000000000000000000000612ed6565b92509250925061176d838383612fde565b9550955050505050915091565b805160208201fd5b613a3160f11b866001600160f01b031916148015906117cb57507f6f74000000000000000000000000000000000000000000000000000000000000866001600160f01b03191614155b1561182c57613a3160f11b86876040516020016117ea91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261046f93929160040161587f565b611837856000613004565b611842846001613186565b61184d836000613186565b60e084901c60e885901c0160ff168251146118ad5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b60e085901c60e886901c0160ff1681511461190d5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146119855760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b61198e8661159f565b156119e85785866040516020016119a791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261046f929160040161572c565b611a348686868686604051602001611a009190615b4b565b60405160208183030381529060405286604051602001611a209190615b4b565b604051602081830303815290604052613332565b61096d866001612436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c80611a6e5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611ab257611ab2615917565b602002602001018181525050826001600160a01b031660001b81600181518110611ade57611ade615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f00000000000000000000000000000000603083015261107891015b604051602081830303815290604052611b5090615745565b82600085604051602001611b6691815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000613436565b600081151580156103e95750611bb08261344b565b1592915050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081526001600160e01b0319821660048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa925050508015611c3a575060408051601f3d908101601f19168201909252611c3791810190615ba0565b60015b611c8b576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b03198216602482015260440161046f565b806106b1576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526001600160e01b03198316602482015260440161046f565b6060600080611cee878787876134ab565b9150915081611d0057611d008161177a565b9695505050505050565b606060005b6010811015611d6a576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611d6a5780611d6281615aa5565b915050611d0f565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280611681565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611df257611df2615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f72000000000000000000000000000000006030820152815180820390930183528101905260009061168190611e6190615745565b8360007e24020020040000000000000000000000000000000000000000000000000000612ea0565b6000611e95838361368f565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611ef357611ef3615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052611f8890611f5f90615745565b828686867e240200200400000000000000000000000000000000000000000000000000006136ce565b50505050505050565b60606000611f9e836139a5565b90506000611fab846139b5565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061200457612004615917565b602090810291909101810191909152604080517f6f7400000000000000000000000000000000000000000000000000000000000081840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e61747572000000000000000000000000000000006030820152815180820390930183528101905261096d9061208b90615745565b828686867c01000000000000000000000000000000000000000000000000000000006136ce565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106120f7576120f7615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d5265676973747279000000000000000000000000000000000000603083015260009161168191015b60405160208183030381529060405261216c90615745565b8360007e20010020000000000000000000000000000000000000000000000000000000612ea0565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121cd576121cd615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122649061223c90615745565b8360007e15020014010000000000000000000000000000000000000000000000000000612ea0565b60601c949350505050565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106122b1576122b1615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261040a9061231d90615745565b827e200100200000000000000000000000000000000000000000000000000000006139de565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061237857612378615917565b602002602001018181525050816001600160a01b031660001b816001815181106123a4576123a4615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526106b19061241090615745565b827e010100010000000000000000000000000000000000000000000000000000006139de565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061246c5761246c615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f7572636549647300000000000000000000000000000000000000000060308301526106b191015b6040516020818303038152906040526124de90615745565b826000856040516020016124f991151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000613436565b600061253a8383613c86565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050868160008151811061257957612579615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611f88906125e590615745565b828686867e150200140100000000000000000000000000000000000000000000000000006136ce565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b8160008151811061265057612650615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526106b19101611b38565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106126e3576126e3615917565b602002602001018181525050826001600160a01b031660001b8160018151811061270f5761270f615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261107891016124c6565b6127778282613cb6565b61040a576113da82611473565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106127bd576127bd615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916116819101612154565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061285457612854615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526106b19101611b38565b613a3160f11b836001600160f01b031916146128e257613a3160f11b83846040516020016117ea91815260200190565b6106b1836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613d00565b6060600080611cee87878787613d94565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061296c5761296c615917565b602002602001018181525050828160018151811061298c5761298c615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015261107891015b6040516020818303038152906040526129fe90615745565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000613436565b6000612a638484613e0c565b90506000815167ffffffffffffffff811115612a8157612a81615301565b604051908082528060200260200182016040528015612aaa578160200160208202803683370190505b5090506000805b8351811015612b6f57846001600160a01b0316612af5858381518110612ad957612ad9615917565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614612b6757838181518110612b1557612b15615917565b6020026020010151838381518110612b2f57612b2f615917565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101612ab1565b5080825261096d868684613e77565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612bb457612bb4615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526106b191016129e6565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612c4857612c48615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c656761740000000000000000000000000000000060308301526106b19101611b38565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612cdc57612cdc615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308301526106b191015b604051602081830303815290604052612d4e90615745565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613ece565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680612dcf573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612e0d57612e0d615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009061226490612e7c90615745565b8360007e140100140000000000000000000000000000000000000000000000000000005b6000612ecd612eaf8686613f74565b60ff858116601b0360080285901c16612ec88587613fca565b614005565b95945050505050565b6060600060606000612ee785614056565b9050612ef4878783614079565b93506000612f01866140b2565b90508015612fd357612f1388886140ef565b935066ffffffffffffff841667ffffffffffffffff811115612f3757612f37615301565b6040519080825280601f01601f191660200182016040528015612f61576020820181803683370190505b5092506020830160005b828160ff161015612fd0576000612f838b8b84614102565b90506000612fa0888460ff166028026038011c64ffffffffff1690565b9050612faf8282600087614182565b612fb98185615abf565b935050508080612fc890615bbd565b915050612f6b565b50505b505093509350939050565b60208301516034840151600091829160609190911c9060f81c5b90969095509350505050565b80158015613010575081155b1561304a576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526000600482015260240161046f565b6000613055836140b2565b90506005811115613095576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526004810182905260240161046f565b60006130a084614251565b905060006130ae8383615abf565b9050601c8111156130ee576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526004810182905260240161046f565b60005b8281101561096d5760ff601b82900360080287901c166000819003613142576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561317d576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016130f1565b80158015613192575081155b156131b357604051635318beb960e01b81526000600482015260240161046f565b60006131be836140b2565b905060058111156131e557604051635318beb960e01b81526004810182905260240161046f565b60006131f084614251565b905060006131fe8383615abf565b9050601c81111561322557604051635318beb960e01b81526004810182905260240161046f565b60008060005b838110156132eb5760006132586132428a84614263565b60c581111561325357613253615bdc565b614284565b11156132a257848110613297576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916132e3565b848110156132dc576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b60010161322b565b5083821461330f57604051635318beb960e01b81526004810183905260240161046f565b848114611f8857604051635318beb960e01b81526004810182905260240161046f565b600061333f8686866142e4565b9050600061334d848461431a565b9050600061335b8585614337565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061339557613395615917565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261342a9061340190615745565b828686867e600302202020000000000000000000000000000000000000000000000000006136ce565b50505050505050505050565b6106ae85856134458487613fca565b8561434c565b6040805161737960f01b60208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526134a390615745565b909114919050565b6000606060006134ba8661458d565b905060005b81518110156135975760008282815181106134dc576134dc615917565b602002602001015190506135086001826affffffffffffffffffffff191661465690919063ffffffff16565b15613584576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190613551908c908c908c90600401615bf2565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b505050505b508061358f81615aa5565b9150506134bf565b506135a487858888614674565b909350915060005b81518110156136845760008282815181106135c9576135c9615917565b602002602001015190506135f56002826affffffffffffffffffffff191661465690919063ffffffff16565b15613671576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f999061363e908c908c908c90600401615bf2565b600060405180830381600087803b15801561365857600080fd5b505af115801561366c573d6000803e3d6000fd5b505050505b508061367c81615aa5565b9150506135ac565b505094509492505050565b606082826040516020016136b79291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516137049493929190615c55565b60405180910390a2613a3160f11b866001600160f01b0319160361096d57600061372d87614782565b905060005b815181101561381057600082828151811061374f5761374f615917565b6020026020010151905061377b6001826affffffffffffffffffffff191661465690919063ffffffff16565b156137fd576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906137ca908c908c908c908c908c908c90600401615c9f565b600060405180830381600087803b1580156137e457600080fd5b505af11580156137f8573d6000803e3d6000fd5b505050505b508061380881615aa5565b915050613732565b50600061381d8888613f74565b90506000602087019050613835826000838a5161481d565b6000613840856140b2565b11156138c45760006138528a8a6148dd565b878155905060208601915060008060005b61386c886140b2565b8160ff1610156138bf576138818d8d83614102565b925061389c8a8260ff166028026038011c64ffffffffff1690565b91506138ab836000878561481d565b6138b58286615abf565b9450600101613863565b505050505b60005b835181101561342a5760008482815181106138e4576138e4615917565b602002602001015190506139106002826affffffffffffffffffffff191661465690919063ffffffff16565b15613992576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061395f908e908e908e908e908e908e90600401615c9f565b600060405180830381600087803b15801561397957600080fd5b505af115801561398d573d6000803e3d6000fd5b505050505b508061399d81615aa5565b9150506138c7565b60006103e98251603881901b1790565b6060816040516020016139c89190615769565b6040516020818303038152906040529050919050565b827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613a0e9190615cf8565b60405180910390a2613a3160f11b836001600160f01b03191614613a3157505050565b6000613a3c84614782565b905060005b8151811015613b19576000828281518110613a5e57613a5e615917565b60200260200101519050613a8a6040826affffffffffffffffffffff191661465690919063ffffffff16565b15613b06576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590613ad390899089908990600401615d0b565b600060405180830381600087803b158015613aed57600080fd5b505af1158015613b01573d6000803e3d6000fd5b505050505b5080613b1181615aa5565b915050613a41565b506000613b268585613f74565b9050613b7f816000613b3786614056565b67ffffffffffffffff811115613b4f57613b4f615301565b6040519080825280601f01601f191660200182016040528015613b79576020820181803683370190505b50614933565b6000613b8a846140b2565b1115613bab576000613b9c86866148dd565b9050613ba9816020614943565b505b60005b825181101561096d576000838281518110613bcb57613bcb615917565b60200260200101519050613bf76080826affffffffffffffffffffff191661465690919063ffffffff16565b15613c73576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613c40908a908a908a90600401615d0b565b600060405180830381600087803b158015613c5a57600080fd5b505af1158015613c6e573d6000803e3d6000fd5b505050505b5080613c7e81615aa5565b915050613bae565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b6034830152906035016136b7565b6000613ce9616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783614980565b80613cf95750613cf98383614980565b9392505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613d3657613d36615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526106b19101612d36565b60006060836001600160a01b03166000613daf858989614a52565b604051613dbc9190615769565b60006040518083038185875af1925050503d8060008114613df9576040519150601f19603f3d011682016040523d82523d6000602084013e613dfe565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613e4657613e46615917565b6020026020010181815250506000613e6085836000614a69565b9050612ecd613e728260008451614aa3565b614b33565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613ead57613ead615917565b60200260200101818152505061107884826000613ec986614b44565b614b54565b6000613ed8612d95565b9050306001600160a01b03821603613efb57613ef685858585614b8f565b6106ae565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f326290613f46908890889088908890600401615d34565b600060405180830381600087803b158015613f6057600080fd5b505af115801561061b573d6000803e3d6000fd5b60008282604051602001613f89929190615d68565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610b5c57613ff160ff601b83900360080287901c1683615abf565b915080613ffd81615aa5565b915050613fcf565b60006020821061402b5760208204840193506020828161402757614027615da3565b0691505b508254600882021b602082900380841115610b5c576001850154600882021c82179150509392505050565b60006008614066600260206158be565b6140709190615db9565b9190911c919050565b6060816000036140985750604080516020810190915260008152613cf9565b60006140a48585613f74565b9050612ecd81846000614bca565b600060086001806140c5600260206158be565b6140cf91906158be565b6140d991906158be565b6140e39190615db9565b8260ff911c1692915050565b6000613cf96140fe84846148dd565b5490565b60008383604051602001614117929190615d68565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b811561420b57602082106141ac576020820484019350602082816141a8576141a8615da3565b0691505b811561420b5760208290036000818510156141d05750600019600885021c196141db565b50600019600882021c195b8554600885021b8119845116828216178452508185116141fc575050611078565b50600194909401939283900392015b5b6020831061422d5783548152600190930192601f199092019160200161420c565b8215611078576000600019600885021c198251865482169119161782525050505050565b6000600860016140cf600260206158be565b6000601b8290036008028360ff911c1660c5811115613cf957613cf9615bdc565b6000808260c581111561429957614299615bdc565b60ff16905060618110156142b357601f1660010192915050565b60618360c58111156142c7576142c7615bdc565b036142d55750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b17613cf9565b606082826040516020016136b7929190615dd0565b60006143588585613f74565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161438e93929190615dff565b60405180910390a2613a3160f11b856001600160f01b031916146143b25750611078565b60006143bd86614782565b905060005b815181101561449c5760008282815181106143df576143df615917565b6020026020010151905061440b6004826affffffffffffffffffffff191661465690919063ffffffff16565b15614489576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90614456908b908b908b908b90600401615e32565b600060405180830381600087803b15801561447057600080fd5b505af1158015614484573d6000803e3d6000fd5b505050505b508061449481615aa5565b9150506143c2565b506144b0828565ffffffffffff1685614933565b60005b8151811015611f885760008282815181106144d0576144d0615917565b602002602001015190506144fc6008826affffffffffffffffffffff191661465690919063ffffffff16565b1561457a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190614547908b908b908b908b90600401615e32565b600060405180830381600087803b15801561456157600080fd5b505af1158015614575573d6000803e3d6000fd5b505050505b508061458581615aa5565b9150506144b3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106145c7576145c7615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015260009161464491015b60405160208183030381529060405261463c90615745565b836000614a69565b9050611681613e728260008451614aa3565b60008160ff16826146678560581c90565b1660ff1614905092915050565b6000606060008061468486611689565b90925090506001600160a01b0382166146d557856146a187611473565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b806146e4576146e4868961276d565b8615614730577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b17600061471d82612784565b905061472d826109fd8b84615abf565b50505b600061473c8760101b90565b71ffffffffffffffffffffffffffffffffffff1916146147675761476288888488613d94565b614773565b61477388888488614bed565b90999098509650505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106147bc576147bc615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526000916146449101614624565b821561489757602083106148475760208304840193506020838161484357614843615da3565b0692505b82156148975760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311614888575050611078565b50600194909401939182019190035b5b602081106148b95781518455600190930192602090910190601f1901614898565b8015611078576000600019600883021c198554845182169119161785555050505050565b600082826040516020016148f2929190615d68565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6106b1838360208401845161481d565b6000602061495283601f615abf565b61495c9190615e6b565b6149669084615abf565b90505b808310156106b15760008355600183019250614969565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149b9576149b9615917565b602002602001018181525050826001600160a01b031660001b816001815181106149e5576149e5615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a469101611635565b9050612ecd8160f81c90565b606083838360405160200161430293929190615e8d565b6060611681614a79858585614102565b614a9c84614a8788886140ef565b9060ff166028026038011c64ffffffffff1690565b6000614bca565b6000818311158015614ab6575083518211155b614af2578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161046f93929190615ecc565b60208401614b008482615abf565b90506000614b0e85856158be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613cf98360156000614c4e565b606081613cf98160156000614cc9565b6000614b6085856140ef565b90506000614b7d828560ff166028026038011c64ffffffffff1690565b905061096d8686866000858888614d1d565b6000614b9b85856140ef565b90506000614bb8828560ff166028026038011c64ffffffffff1690565b905061096d8686868460008888614d1d565b60405160208101601f19603f8584010116604052838252610b5c85858584614182565b60006060836001600160a01b0316614c06848888614a52565b604051614c139190615769565b600060405180830381855af49150503d8060008114613df9576040519150601f19603f3d011682016040523d82523d6000602084013e613dfe565b60606000614c5c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614c8257614c82615da3565b04905060405193506020840160208202810160405281855260005b82811015614cbd578451871c825293870193602090910190600101614c9d565b50505050509392505050565b82516060906000614cda8583615db9565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614cbd578051871b83529187019160019190910190602001614cfc565b613a3160f11b876001600160f01b03191614614d4d57613a3160f11b87886040516020016117ea91815260200190565b6000614d68828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683614d8191906158be565b614d8b9190615abf565b9050808214158015614dad575081614da38688615ef1565b64ffffffffff1614155b15614dfd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff808816600483015280871660248301528316604482015260640161046f565b818664ffffffffff161115614e4e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff8716602482015260440161046f565b6000614e5b8489846150d9565b905064ffffffffff871660005b8960ff168160ff161015614e9b57614e8f868260ff166028026038011c64ffffffffff1690565b90910190600101614e68565b508a7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48b838a868b604051614ed4959493929190615f16565b60405180910390a2506000614ee88b614782565b905060005b8151811015614fbd576000828281518110614f0a57614f0a615917565b60200260200101519050614f366010826affffffffffffffffffffff191661465690919063ffffffff16565b15614faa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614f779796959493929190615f68565b600060405180830381600087803b158015614f9157600080fd5b505af1158015614fa5573d6000803e3d6000fd5b505050505b5080614fb581615aa5565b915050614eed565b50828414614fd6576000614fd18c8c6148dd565b839055505b6000614fe38c8c8c614102565b9050614ff7818a64ffffffffff1689614933565b5060005b81518110156150cb57600082828151811061501857615018615917565b602002602001015190506150446020826affffffffffffffffffffff191661465690919063ffffffff16565b156150b857606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016150859796959493929190615f68565b600060405180830381600087803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505050505b50806150c381615aa5565b915050614ffb565b505050505050505050505050565b600064ffffffffff82111561511d576040517f476705880000000000000000000000000000000000000000000000000000000081526004810183905260240161046f565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061514f5780850382019150615157565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b80356001600160e01b031981168114612dcf57600080fd5b6000602082840312156151d157600080fd5b613cf9826151a7565b6001600160a01b0381168114610fb057600080fd5b6000806040838503121561520257600080fd5b823591506020830135615214816151da565b809150509250929050565b60008083601f84011261523157600080fd5b50813567ffffffffffffffff81111561524957600080fd5b6020830191508360208260051b850101111561526457600080fd5b9250929050565b60008060008060008060008060c0898b03121561528757600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff808211156152bb57600080fd5b6152c78c838d0161521f565b909650945060a08b01359150808211156152e057600080fd5b506152ed8b828c0161521f565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561534057615340615301565b604052919050565b600067ffffffffffffffff82111561536257615362615301565b50601f01601f191660200190565b600082601f83011261538157600080fd5b813561539461538f82615348565b615317565b8181528460208386010111156153a957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156153db57600080fd5b83356153e6816151da565b925060208401359150604084013567ffffffffffffffff81111561540957600080fd5b61541586828701615370565b9150509250925092565b6000806040838503121561543257600080fd5b82359150602083013567ffffffffffffffff81111561545057600080fd5b61545c85828601615370565b9150509250929050565b8015158114610fb057600080fd5b60008060006060848603121561548957600080fd5b83359250602084013561549b816151da565b915060408401356154ab81615466565b809150509250925092565b6000806000606084860312156154cb57600080fd5b8335925060208401356154dd816151da565b929592945050506040919091013590565b803560ff81168114612dcf57600080fd5b60008060006060848603121561551457600080fd5b833592506020840135615526816151da565b9150615534604085016154ee565b90509250925092565b60008060006060848603121561555257600080fd5b83359250602084013567ffffffffffffffff81111561557057600080fd5b61557c86828701615370565b925050615534604085016151a7565b6000806040838503121561559e57600080fd5b82356155a9816151da565b9150602083013567ffffffffffffffff81111561545057600080fd5b600080602083850312156155d857600080fd5b823567ffffffffffffffff8111156155ef57600080fd5b612ff88582860161521f565b60005b838110156156165781810151838201526020016155fe565b50506000910152565b600081518084526156378160208601602086016155fb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156156a057603f1988860301845261568e85835161561f565b94509285019290850190600101615672565b5092979650505050505050565b6000602082840312156156bf57600080fd5b5035919050565b6000806000606084860312156156db57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561540957600080fd5b60008060006060848603121561571557600080fd5b505081359360208301359350604090920135919050565b828152604060208201526000611681604083018461561f565b805160208083015191908110156142de5760001960209190910360031b1b16919050565b6000825161577b8184602087016155fb565b9190910192915050565b600067ffffffffffffffff808411156157a0576157a0615301565b8360051b60206157b1818301615317565b8681529185019181810190368411156157c957600080fd5b865b848110156157fd578035868111156157e35760008081fd5b6157ef36828b01615370565b8452509183019183016157cb565b50979650505050505050565b6000845161581b8184602089016155fb565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551615857816001850160208a016155fb565b600192019182015283516158728160028401602088016155fb565b0160020195945050505050565b6001600160f01b031984168152826020820152606060408201526000612ecd606083018461561f565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e9576103e96158a8565b602081526000613cf9602083018461561f565b6000602082840312156158f657600080fd5b81516fffffffffffffffffffffffffffffffff1981168114613cf957600080fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261577b57600080fd5b60006020828403121561597357600080fd5b8135613cf9816151da565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126159b357600080fd5b83018035915067ffffffffffffffff8211156159ce57600080fd5b60200191503681900382131561526457600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0385168152836020820152606060408201526000611d006060830184866159e3565b600060208284031215615a4957600080fd5b815167ffffffffffffffff811115615a6057600080fd5b8201601f81018413615a7157600080fd5b8051615a7f61538f82615348565b818152856020838501011115615a9457600080fd5b612ecd8260208301602086016155fb565b60006000198203615ab857615ab86158a8565b5060010190565b808201808211156103e9576103e96158a8565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261577b57600080fd5b838152604060208201526000612ecd6040830184866159e3565b604081526000615b33604083018561561f565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156156a057603f19888603018452615b8e85835161561f565b94509285019290850190600101615b72565b600060208284031215615bb257600080fd5b8151613cf981615466565b600060ff821660ff8103615bd357615bd36158a8565b60010192915050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152826020820152606060408201526000612ecd606083018461561f565b600081518084526020808501945080840160005b83811015615c4a57815187529582019590820190600101615c2e565b509495945050505050565b608081526000615c686080830187615c1a565b8281036020840152615c7a818761561f565b90508460408401528281036060840152615c94818561561f565b979650505050505050565b86815260c060208201526000615cb860c0830188615c1a565b8281036040840152615cca818861561f565b90508560608401528281036080840152615ce4818661561f565b9150508260a0830152979650505050505050565b602081526000613cf96020830184615c1a565b838152606060208201526000615d246060830185615c1a565b9050826040830152949350505050565b848152608060208201526000615d4d6080830186615c1a565b60ff851660408401528281036060840152615c94818561561f565b82815260006020808301845182860160005b82811015615d9657815184529284019290840190600101615d7a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176103e9576103e96158a8565b60008351615de28184602088016155fb565b835190830190615df68183602088016155fb565b01949350505050565b606081526000615e126060830186615c1a565b65ffffffffffff851660208401528281036040840152611d00818561561f565b848152608060208201526000615e4b6080830186615c1a565b65ffffffffffff851660408401528281036060840152615c94818561561f565b600082615e8857634e487b7160e01b600052601260045260246000fd5b500490565b60008451615e9f8184602089016155fb565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615edf606083018661561f565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615f0f57615f0f6158a8565b5092915050565b60a081526000615f2960a0830188615c1a565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152615f5c818561561f565b98975050505050505050565b87815260e060208201526000615f8160e0830189615c1a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c0840152615fb8818561561f565b9a995050505050505050505056fea164736f6c6343000815000a60c0604052604051620000129062000088565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a9062000096565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0523480156200008157600080fd5b50620000a4565b61087d806200277383390190565b6125558062002ff083390190565b60805160a0516126a2620000d1600039600061032e01526000818161047001526105ef01526126a26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec9354146101035780637c5b033514610116578063e1af802c1461012957600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461216b565b610131565b60405190151581526020015b60405180910390f35b6100b26101ca565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046121c3565b6101d9565b005b604051651c1d5c1c195d60d21b81526020016100a1565b604051601f1936013581526020016100a1565b6100ea6101243660046121c3565b6104d5565b6100b26106c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d46106ce565b905090565b60006101e36106c4565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925061024d91015b60405160208183030381529060405261024890612274565b610700565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f466163746f727900000000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff831691633350b6a991016040516020818303038152906040526102e390612274565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561037757600080fd5b505af115801561038b573d6000803e3d6000fd5b5050604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff85169350633350b6a992500160405160208183030381529060405261042590612274565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b60006104df6106c4565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f507570706574526567697374727900000000000000000000000000000000000060308201529192506105309101610230565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e000000000000000000000000000000000000000000006030820152600091829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105cd90612274565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161066b92506122bc565b600060405180830381855af49150503d80600081146106a6576040519150601f19603f3d011682016040523d82523d6000602084013e6106ab565b606091505b5091509150816106be576106be8161074c565b50505050565b60006101d4610754565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106fd5750335b90565b610749817e1401001400000000000000000000000000000000000000000000000000000061072c6107a0565b610734610818565b61073c610852565b6107446108d7565b610937565b50565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061079b573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106107da576107da6122d8565b602002602001019060c58111156107f3576107f36122ee565b908160c5811115610806576108066122ee565b90525061081281610a0b565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106107da576107da6122d8565b604080516001808252818301909252606091816020015b60608152602001906001900390816108695790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106108c9576108c96122d8565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816108ee579050509050604051806040016040528060068152602001651c1d5c1c195d60d21b815250816000815181106108c9576108c96122d8565b6000610941610754565b90503073ffffffffffffffffffffffffffffffffffffffff8216036109735761096e878787878787610bcf565b610a02565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f49906109cf908a908a908a908a908a908a90600401612385565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b505050505b50505050505050565b6000601c82511115610a3e578151604051635318beb960e01b8152600401610a3591815260200190565b60405180910390fd5b60008080805b8551811015610b19576000610a82878381518110610a6457610a646122d8565b602002602001015160c5811115610a7d57610a7d6122ee565b610ebc565b905080600003610a9757600190920191610acf565b8215610acf576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610af057610af06122d8565b602002602001015160c5811115610b0957610b096122ee565b901b949094179350600101610a44565b506005811115610b3f57604051635318beb960e01b815260048101829052602401610a35565b84518190036008610b52600260206123e5565b610b5c91906123f8565b83901b939093179260086001610b74600260206123e5565b610b7e91906123e5565b610b8891906123f8565b81901b93909317926008600180610ba1600260206123e5565b610bab91906123e5565b610bb591906123e5565b610bbf91906123f8565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610c4857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610ca957613a3160f11b8687604051602001610c6791815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610a3593929160040161240f565b610cb4856000610f1c565b610cbf84600161109e565b610cca83600061109e565b60e084901c60e885901c0160ff16825114610d2a5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b60e085901c60e886901c0160ff16815114610d8a5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610e025760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b610e0b86611245565b15610e65578586604051602001610e2491815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610a359291600401612450565b610eb18686868686604051602001610e7d9190612469565b60405160208183030381529060405286604051602001610e9d9190612469565b604051602081830303815290604052611329565b6104cd866001611449565b6000808260c5811115610ed157610ed16122ee565b60ff1690506061811015610eeb57601f1660010192915050565b60618360c5811115610eff57610eff6122ee565b03610f0d5750601492915050565b50600092915050565b50919050565b80158015610f28575081155b15610f62576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260006004820152602401610a35565b6000610f6d83611540565b90506005811115610fad576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260048101829052602401610a35565b6000610fb88461157d565b90506000610fc6838361247c565b9050601c811115611006576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260048101829052602401610a35565b60005b828110156104cd5760ff601b82900360080287901c16600081900361105a576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611095576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611009565b801580156110aa575081155b156110cb57604051635318beb960e01b815260006004820152602401610a35565b60006110d683611540565b905060058111156110fd57604051635318beb960e01b815260048101829052602401610a35565b60006111088461157d565b90506000611116838361247c565b9050601c81111561113d57604051635318beb960e01b815260048101829052602401610a35565b60008060005b838110156111fe57600061116b61115a8a8461158f565b60c5811115610a7d57610a7d6122ee565b11156111b5578481106111aa576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916111f6565b848110156111ef576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101611143565b5083821461122257604051635318beb960e01b815260048101839052602401610a35565b848114610a0257604051635318beb960e01b815260048101829052602401610a35565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061127e5761127e6122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611315906112ed90612274565b8360007e010100010000000000000000000000000000000000000000000000000000006115b7565b90506113218160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061136084846115ed565b9050600061136e858561160a565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106113a8576113a86122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261143d9061141490612274565b828686867e60030220202000000000000000000000000000000000000000000000000000611636565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061147f5761147f6122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261153b906114eb90612274565b8260008560405160200161150691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611925565b505050565b60006008600180611553600260206123e5565b61155d91906123e5565b61156791906123e5565b61157191906123f8565b8260ff911c1692915050565b60006008600161155d600260206123e5565b6000601b8290036008028360ff911c1660c58111156115b0576115b06122ee565b9392505050565b60006115e46115c68686611941565b60ff858116601b0360080285901c166115df8587611997565b6119da565b95945050505050565b8151815160009181810160389190911b1760609190911b176115b0565b6060828260405160200161161f92919061248f565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161166c94939291906124f9565b60405180910390a2613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016036104cd5760006116ad87611a2b565b905060005b81518110156117905760008282815181106116cf576116cf6122d8565b602002602001015190506116fb6001826affffffffffffffffffffff1916611af390919063ffffffff16565b1561177d576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061174a908c908c908c908c908c908c90600401612543565b600060405180830381600087803b15801561176457600080fd5b505af1158015611778573d6000803e3d6000fd5b505050505b50806117888161259c565b9150506116b2565b50600061179d8888611941565b905060006020870190506117b5826000838a51611b11565b60006117c085611540565b11156118445760006117d28a8a611bd1565b878155905060208601915060008060005b6117ec88611540565b8160ff16101561183f576118018d8d83611c27565b925061181c8a8260ff166028026038011c64ffffffffff1690565b915061182b8360008785611b11565b611835828661247c565b94506001016117e3565b505050505b60005b835181101561143d576000848281518110611864576118646122d8565b602002602001015190506118906002826affffffffffffffffffffff1916611af390919063ffffffff16565b15611912576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906118df908e908e908e908e908e908e90600401612543565b600060405180830381600087803b1580156118f957600080fd5b505af115801561190d573d6000803e3d6000fd5b505050505b508061191d8161259c565b915050611847565b61193a85856119348487611997565b85611ca7565b5050505050565b600082826040516020016119569291906125b6565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156119d2576119be60ff601b83900360080287901c168361247c565b9150806119ca8161259c565b91505061199c565b509392505050565b600060208210611a00576020820484019350602082816119fc576119fc6125e4565b0691505b508254600882021b6020829003808411156119d2576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a6557611a656122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611adc90611ad490612274565b836000611f00565b9050611321611aee8260008451611f3a565b611fca565b60008160ff1682611b048560581c90565b1660ff1614905092915050565b8215611b8b5760208310611b3b57602083048401935060208381611b3757611b376125e4565b0692505b8215611b8b5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611b7c5750506106be565b50600194909401939182019190035b5b60208110611bad5781518455600190930192602090910190601f1901611b8c565b80156106be576000600019600883021c198554845182169119161785555050505050565b60008282604051602001611be69291906125b6565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611c3c9291906125b6565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000611cb38585611941565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051611ce9939291906125fa565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614611d2557506106be565b6000611d3086611a2b565b905060005b8151811015611e0f576000828281518110611d5257611d526122d8565b60200260200101519050611d7e6004826affffffffffffffffffffff1916611af390919063ffffffff16565b15611dfc576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90611dc9908b908b908b908b90600401612637565b600060405180830381600087803b158015611de357600080fd5b505af1158015611df7573d6000803e3d6000fd5b505050505b5080611e078161259c565b915050611d35565b50611e23828565ffffffffffff1685611fdb565b60005b8151811015610a02576000828281518110611e4357611e436122d8565b60200260200101519050611e6f6008826affffffffffffffffffffff1916611af390919063ffffffff16565b15611eed576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611eba908b908b908b908b90600401612637565b600060405180830381600087803b158015611ed457600080fd5b505af1158015611ee8573d6000803e3d6000fd5b505050505b5080611ef88161259c565b915050611e26565b6060611321611f10858585611c27565b611f3384611f1e8888611feb565b9060ff166028026038011c64ffffffffff1690565b6000611ffe565b6000818311158015611f4d575083518211155b611f89578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610a3593929190612670565b60208401611f97848261247c565b90506000611fa585856123e5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006115b08360156000612021565b61153b8383602084018451611b11565b60006115b0611ffa8484611bd1565b5490565b60405160208101601f19603f85840101166040528382526119d28585858461209c565b6060600061202f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612055576120556125e4565b04905060405193506020840160208202810160405281855260005b82811015612090578451871c825293870193602090910190600101612070565b50505050509392505050565b811561212557602082106120c6576020820484019350602082816120c2576120c26125e4565b0691505b81156121255760208290036000818510156120ea5750600019600885021c196120f5565b50600019600882021c195b8554600885021b8119845116828216178452508185116121165750506106be565b50600194909401939283900392015b5b602083106121475783548152600190930192601f1990920191602001612126565b82156106be576000600019600885021c198251865482169119161782525050505050565b60006020828403121561217d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146115b057600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156121d557600080fd5b813567ffffffffffffffff808211156121ed57600080fd5b818401915084601f83011261220157600080fd5b813581811115612213576122136121ad565b604051601f8201601f19908116603f0116810190838211818310171561223b5761223b6121ad565b8160405282815287602084870101111561225457600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015610f165760001960209190910360031b1b16919050565b60005b838110156122b357818101518382015260200161229b565b50506000910152565b600082516122ce818460208701612298565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845261231c816020860160208601612298565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015612378578284038952612366848351612304565b9885019893509084019060010161234e565b5091979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006123b060c0830185612330565b82810360a08401526123c28185612330565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101c4576101c46123cf565b80820281158282048414176101c4576101c46123cf565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006115e46060830184612304565b8281526040602082015260006113216040830184612304565b6020815260006115b06020830184612330565b808201808211156101c4576101c46123cf565b600083516124a1818460208801612298565b8351908301906124b5818360208801612298565b01949350505050565b600081518084526020808501945080840160005b838110156124ee578151875295820195908201906001016124d2565b509495945050505050565b60808152600061250c60808301876124be565b828103602084015261251e8187612304565b905084604084015282810360608401526125388185612304565b979650505050505050565b86815260c06020820152600061255c60c08301886124be565b828103604084015261256e8188612304565b905085606084015282810360808401526125888186612304565b9150508260a0830152979650505050505050565b600060001982036125af576125af6123cf565b5060010190565b82815260006020808301845182860160005b82811015612378578151845292840192908401906001016125c8565b634e487b7160e01b600052601260045260246000fd5b60608152600061260d60608301866124be565b65ffffffffffff85166020840152828103604084015261262d8185612304565b9695505050505050565b84815260806020820152600061265060808301866124be565b65ffffffffffff8516604084015282810360608401526125388185612304565b6060815260006126836060830186612304565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061085d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80631a86b550116100505780631a86b550146100c157806345ec9354146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a3660046105c6565b6100ef565b60405190151581526020015b60405180910390f35b61009c6101d4565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b61007f6100cf366004610625565b6101e3565b604051601f19360135815260200161008b565b61009c6102c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faea79dd000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb421288000000000000000000000000000000000000000000000000000000000145b806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6102cc565b905090565b6000806101ee6101d4565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925073ffffffffffffffffffffffffffffffffffffffff8316916102a2910160405160208183030381529060405261029c9061070b565b866102fe565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b60006101de61037b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061033757610337610732565b6020908102919091010152600061036f8583837e140100140000000000000000000000000000000000000000000000000000006103c7565b60601c95945050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806103c2573391505090565b919050565b6000806103d261037b565b90503073ffffffffffffffffffffffffffffffffffffffff821603610405576103fd868686866104a6565b91505061049e565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061045d908990899089908990600401610748565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906107a3565b949350505050565b60006104d36104b586866104dc565b60ff858116601b0360080285901c166104ce8587610532565b610575565b95945050505050565b600082826040516020016104f19291906107bc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561056d5761055960ff601b83900360080287901c168361080d565b91508061056581610820565b915050610537565b509392505050565b60006020821061059b576020820484019350602082816105975761059761083a565b0691505b508254600882021b60208290038084111561056d576001850154600882021c82179150509392505050565b6000602082840312156105d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561063a57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461065e57600080fd5b925060208401359150604084013567ffffffffffffffff8082111561068257600080fd5b818601915086601f83011261069657600080fd5b8135818111156106a8576106a861060f565b604051601f8201601f19908116603f011681019083821181831017156106d0576106d061060f565b816040528281528960208487010111156106e957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8051602080830151919081101561072c576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156107895784518352938301939183019160010161076d565b505060ff9690961660408501525050506060015292915050565b6000602082840312156107b557600080fd5b5051919050565b82815260006020808301845182860160005b828110156107ea578151845292840192908401906001016107ce565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ce576101ce6107f7565b60006000198203610833576108336107f7565b5060010190565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50612535806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063b9eb8bfb146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461117b565b6100ef565b60405190151581526020015b60405180910390f35b61009c610188565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c6100e23660046111bd565b610197565b61009c610285565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb421288000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061019261028f565b905090565b60006101aa826101a5610188565b6102c1565b6101b2610285565b826040516101bf9061116e565b73ffffffffffffffffffffffffffffffffffffffff90921682526020820152604001604051809103906000f0801580156101fd573d6000803e3d6000fd5b5060408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f507570706574526567697374727900000000000000000000000000000000000060308201529192506102809101604051602081830303815290604052610279906111d6565b8383610389565b919050565b6000610192610449565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102be5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166103237f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610490565b73ffffffffffffffffffffffffffffffffffffffff16146103855761034782610583565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161037c929190611243565b60405180910390fd5b5050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106103bf576103bf61127b565b602002602001018181525050610443848260008560405160200161040e919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006106ff565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610280573391505090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104c9576104c961127b565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009061057890610550906111d6565b8360007e140100140000000000000000000000000000000000000000000000000000006107cf565b60601c949350505050565b606081601081901b6000610596836108ae565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156105e9577fffffffffffffffffffffffffffff000000000000000000000000000000000000831661060b565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000831615610639578261065b565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6000610709610449565b90503073ffffffffffffffffffffffffffffffffffffffff82160361073a5761073586868686866108c5565b6107c7565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae09061079490899089908990899089906004016112e5565b600060405180830381600087803b1580156107ae57600080fd5b505af11580156107c2573d6000803e3d6000fd5b505050505b505050505050565b6000806107da610449565b90503073ffffffffffffffffffffffffffffffffffffffff82160361080d57610805868686866108e1565b9150506108a6565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061086590899089908990899060040161132c565b602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610805919061135b565b949350505050565b60006108bc607060106113a3565b9190911b919050565b6108da85856108d48487610917565b8561095a565b5050505050565b600061090e6108f08686610bbc565b60ff858116601b0360080285901c166109098587610917565b610c12565b95945050505050565b600080805b8360ff168110156109525761093e60ff601b83900360080287901c16836113a3565b91508061094a816113b6565b91505061091c565b509392505050565b60006109668585610bbc565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161099c939291906113d0565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146109d85750610443565b60006109e386610c63565b905060005b8151811015610ac2576000828281518110610a0557610a0561127b565b60200260200101519050610a316004826affffffffffffffffffffff1916610d4390919063ffffffff16565b15610aaf576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610a7c908b908b908b908b9060040161140d565b600060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b505050505b5080610aba816113b6565b9150506109e8565b50610ad6828565ffffffffffff1685610d61565b60005b8151811015610bb3576000828281518110610af657610af661127b565b60200260200101519050610b226008826affffffffffffffffffffff1916610d4390919063ffffffff16565b15610ba0576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610b6d908b908b908b908b9060040161140d565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050505b5080610bab816113b6565b915050610ad9565b50505050505050565b60008282604051602001610bd1929190611451565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c3857602082048401935060208281610c3457610c3461148c565b0691505b508254600882021b602082900380841115610952576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c9d57610c9d61127b565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d2c90610d24906111d6565b836000610d76565b90506108a6610d3e8260008451610db0565b610e40565b60008160ff1682610d548560581c90565b1660ff1614905092915050565b610d718383602084018451610e58565b505050565b60606108a6610d86858585610f18565b610da984610d948888610f98565b9060ff166028026038011c64ffffffffff1690565b6000610fab565b6000818311158015610dc3575083518211155b610dff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161037c939291906114bb565b60208401610e0d84826113a3565b90506000610e1b85856114e0565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e518360156000610fce565b9392505050565b8215610ed25760208310610e8257602083048401935060208381610e7e57610e7e61148c565b0692505b8215610ed25760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311610ec3575050610443565b50600194909401939182019190035b5b60208110610ef45781518455600190930192602090910190601f1901610ed3565b8015610443576000600019600883021c198554845182169119161785555050505050565b60008383604051602001610f2d929190611451565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610e51610fa78484611049565b5490565b60405160208101601f19603f85840101166040528382526109528585858461109f565b60606000610fdc8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110025761100261148c565b04905060405193506020840160208202810160405281855260005b8281101561103d578451871c82529387019360209091019060010161101d565b50505050509392505050565b6000828260405160200161105e929190611451565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b811561112857602082106110c9576020820484019350602082816110c5576110c561148c565b0691505b81156111285760208290036000818510156110ed5750600019600885021c196110f8565b50600019600882021c195b8554600885021b811984511682821617845250818511611119575050610443565b50600194909401939283900392015b5b6020831061114a5783548152600190930192601f1990920191602001611129565b8215610443576000600019600885021c198251865482169119161782525050505050565b611035806114f483390190565b60006020828403121561118d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5157600080fd5b6000602082840312156111cf57600080fd5b5035919050565b805160208083015191908110156111f7576000198160200360031b1b821691505b50919050565b6000815180845260005b8181101561122357602081850181015186830182015201611207565b506000602082860101526020601f19601f83011685010191505092915050565b60408152600061125660408301856111fd565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b838110156112da578151875295820195908201906001016112be565b509495945050505050565b85815260a0602082015260006112fe60a08301876112aa565b60ff86166040840152828103606084015261131981866111fd565b9150508260808301529695505050505050565b84815260806020820152600061134560808301866112aa565b60ff949094166040830152506060015292915050565b60006020828403121561136d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561018257610182611374565b600060001982036113c9576113c9611374565b5060010190565b6060815260006113e360608301866112aa565b65ffffffffffff85166020840152828103604084015261140381856111fd565b9695505050505050565b84815260806020820152600061142660808301866112aa565b65ffffffffffff85166040840152828103606084015261144681856111fd565b979650505050505050565b82815260006020808301845182860160005b8281101561147f57815184529284019290840190600101611463565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006114ce60608301866111fd565b60208301949094525060400152919050565b818103818111156101825761018261137456fe60c060405234801561001057600080fd5b5060405161103538038061103583398101604081905261002f9161007c565b6001600160a01b038216608081905260a08290527f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b031916909117905550506100b6565b6000806040838503121561008f57600080fd5b82516001600160a01b03811681146100a657600080fd5b6020939093015192949293505050565b60805160a051610f326101036000396000818160e1015281816101b401528181610239015281816102b70152818161032e01526103a101526000818160b201526101630152610f326000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c9a34acd11610050578063c9a34acd146101f9578063d72a26651461020c578063e2ed58bd1461021f57610072565b806330b67baa1461015e57806339f898bc146101af57806366c93bdb146101e4575b6040517f894ecc5800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063894ecc589061010d9033907f00000000000000000000000000000000000000000000000000000000000000009086903690600401610a5c565b6000604051808303816000875af115801561012c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101549190810190610b88565b9050805160208201f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a6565b6101f76101f2366004610c16565b610232565b005b6101f7610207366004610c7a565b6102b0565b6101f761021a366004610cd4565b610327565b6101f761022d366004610d1b565b61039a565b600061025d7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461029d576040516398d49b0360e01b81523360048201526024015b60405180910390fd5b82848688855160208701a4505050505050565b60006102db7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610316576040516398d49b0360e01b8152336004820152602401610294565b828486845160208601a35050505050565b60006103527f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461038d576040516398d49b0360e01b8152336004820152602401610294565b82825160208401a1505050565b60006103c57f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610400576040516398d49b0360e01b8152336004820152602401610294565b8284835160208501a250505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061044957610449610d6b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d73000000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009081908190610515906104ef90610d81565b857e1502001401000000000000000000000000000000000000000000000000000061053a565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606060006060600061054a610624565b90503073ffffffffffffffffffffffffffffffffffffffff82160361058057610574878787610670565b9350935093505061061b565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906105d6908a908a908a90600401610da8565b600060405180830381865afa1580156105f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105749190810190610dff565b93509350939050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066b573391505090565b919050565b606060006060600061068185610778565b905061068e87878361079b565b9350600061069b866107df565b9050801561076d576106ad888861081c565b935066ffffffffffffff841667ffffffffffffffff8111156106d1576106d1610aaf565b6040519080825280601f01601f1916602001820160405280156106fb576020820181803683370190505b5092506020830160005b828160ff16101561076a57600061071d8b8b84610838565b9050600061073a888460ff166028026038011c64ffffffffff1690565b905061074982826000876108b8565b6107538185610e78565b93505050808061076290610e8b565b915050610705565b50505b505093509350939050565b6000600861078860026020610eaa565b6107929190610ebd565b9190911c919050565b6060816000036107ba57506040805160208101909152600081526107d8565b60006107c68585610985565b90506107d4818460006109db565b9150505b9392505050565b600060086001806107f260026020610eaa565b6107fc9190610eaa565b6108069190610eaa565b6108109190610ebd565b8260ff911c1692915050565b600061082f61082b8484610a06565b5490565b90505b92915050565b6000838360405160200161084d929190610ed4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b811561094157602082106108e2576020820484019350602082816108de576108de610f0f565b0691505b81156109415760208290036000818510156109065750600019600885021c19610911565b50600019600882021c195b8554600885021b81198451168282161784525081851161093257505061097f565b50600194909401939283900392015b5b602083106109635783548152600190930192601f1990920191602001610942565b821561097f5780518454600019600886021c9182169119161781525b50505050565b6000828260405160200161099a929190610ed4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f85840101166040528382526109fe858585846108b8565b509392505050565b60008282604051602001610a1b929190610ed4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610aee57610aee610aaf565b604052919050565b600067ffffffffffffffff821115610b1057610b10610aaf565b50601f01601f191660200190565b600082601f830112610b2f57600080fd5b8151610b42610b3d82610af6565b610ac5565b81815260208581848701011115610b5857600080fd5b60005b83811015610b76578581018201518382018301528101610b5b565b50600092820101919091529392505050565b600060208284031215610b9a57600080fd5b815167ffffffffffffffff811115610bb157600080fd5b610bbd84828501610b1e565b949350505050565b600082601f830112610bd657600080fd5b8135610be4610b3d82610af6565b818152846020838601011115610bf957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610c2e57600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115610c6157600080fd5b610c6d88828901610bc5565b9150509295509295909350565b60008060008060808587031215610c9057600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115610cbc57600080fd5b610cc887828801610bc5565b91505092959194509250565b60008060408385031215610ce757600080fd5b82359150602083013567ffffffffffffffff811115610d0557600080fd5b610d1185828601610bc5565b9150509250929050565b600080600060608486031215610d3057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610d5557600080fd5b610d6186828701610bc5565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015610da2576000198160200360031b1b821691505b50919050565b6000606082018583526020606081850152818651808452608086019150828801935060005b81811015610de957845183529383019391830191600101610dcd565b5050809350505050826040830152949350505050565b600080600060608486031215610e1457600080fd5b835167ffffffffffffffff80821115610e2c57600080fd5b610e3887838801610b1e565b9450602086015193506040860151915080821115610e5557600080fd5b50610d6186828701610b1e565b634e487b7160e01b600052601160045260246000fd5b8082018082111561083257610832610e62565b600060ff821660ff8103610ea157610ea1610e62565b60010192915050565b8181038181111561083257610832610e62565b808202811582820484141761083257610832610e62565b82815260006020808301845182860160005b82811015610f0257815184529284019290840190600101610ee6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000aa164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b6148c180620034c983390190565b60805161344f6200007a600039600061034a015261344f6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100df57806345ec93541461010d5780637c5b033514610120578063e1af802c1461013357600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100ca575b600080fd5b610095610090366004612c1b565b61013b565b60405190151581526020015b60405180910390f35b6100b26101d4565b6040516001600160a01b0390911681526020016100a1565b6100dd6100d8366004612cf5565b6101e3565b005b6040517f65726332302d707570706574000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100dd61012e366004612cf5565b6106a0565b6100b26106d2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6106dc565b905090565b60006001600160a01b031661021f7f65726332302d7075707065740000000000000000000000000000000000000000838051906020012061070e565b6001600160a01b03161461025f576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080828060200190518101906102769190612de9565b90925090507f9a8d9ccdcfd28f8a8f8f9a8c000000000000000000000000000000000000000071ffffffffffffffffffffffffffffffffffff19831601610305576040517f0f31c63c00000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19831660048201526024015b60405180910390fd5b61030d610835565b60006103176106d2565b6040516001600160a01b03828116602483015271ffffffffffffffffffffffffffffffffffff19861660448301529192507f00000000000000000000000000000000000000000000000000000000000000009091169060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f472466c200000000000000000000000000000000000000000000000000000000179052516103d39190612ec1565b600060405180830381855af49150503d806000811461040e576040519150601f19603f3d011682016040523d82523d6000602084013e610413565b606091505b505050610428610422846108c5565b836108f7565b600061043384610999565b9050600061044183836109e6565b90507f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601087901c16176001600160a01b03841663ef5d6bbb826104a26101d4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610597935001905060405160208183030381529060405261059290612edd565b610cb6565b6106185760408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610618910160405160208183030381529060405261061390612edd565b610d9a565b60408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610697910160405160208183030381529060405261069090612edd565b8284610de6565b50505050505050565b6040517fb6622fc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101de610ea6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061070b5750335b90565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061075a5761075a612f01565b602002602001018181525050828160018151811061077a5761077a612f01565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015281518082039093018352810190526000906108299061080190612edd565b8360007e14010014000000000000000000000000000000000000000000000000000000610ee5565b60601c95945050505050565b6040805160008082526020820190925261086090651c1d5c1c195d60d21b908051906020012061070e565b6001600160a01b0316036108c357604051651c1d5c1c195d60d21b602082015260300160408051601f19818403018152908290527f217ef9250000000000000000000000000000000000000000000000000000000082526102fc91600401612f43565b565b60006101ce613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610fa2565b600061094682600001516040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b9050600061095c83602001518460400151611029565b9050600061097284602001518560400151611046565b6040805160008152602081019091529091506109918682868686611072565b505050505050565b60006101ce7f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d000000000000000000000000000000000000000000610fa2565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526000916001600160a01b03851691633ae7af089101604051602081830303815290604052610a7290612edd565b6040516024810186905260440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb9eb8bfb00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152610b0f929190600401612f56565b6000604051808303816000875af1158015610b2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b569190810190612f6f565b806020019051810190610b699190612fb8565b90506001600160a01b03831663bfdfaff77f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015201604051602081830303815290604052610c3590612edd565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16909152610c7e92919060248101612fe1565b600060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505092915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610cef57610cef612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d8690610d5e90612edd565b8360007e01010001000000000000000000000000000000000000000000000000000000610ee5565b9050610d928160f81c90565b949350505050565b610de3817e14010014000000000000000000000000000000000000000000000000000000610dc6611127565b610dce61119f565b610dd66111d9565b610dde61125e565b6112d5565b50565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610e1c57610e1c612f01565b602002602001018181525050610ea08482600085604051602001610e6b919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061138e565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610ee0573391505090565b919050565b600080610ef0610ea6565b9050306001600160a01b03821603610f1657610f0e86868686611404565b915050610d92565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610f6190899089908990899060040161303b565b602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061306a565b6000610fb060706010613099565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790505b9392505050565b8151815160009181810160389190911b1760609190911b17611022565b6060828260405160200161105b9291906130ac565b604051602081830303815290604052905092915050565b600061107c610ea6565b9050306001600160a01b038216036110a05761109b868686868661143a565b610991565b6040517f298314fb0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063298314fb906110ed90899089908990899089906004016130db565b600060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b50505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811061116157611161612f01565b602002602001019060c581111561117a5761117a61312c565b908160c581111561118d5761118d61312c565b90525061119981611457565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061116157611161612f01565b604080516001808252818301909252606091816020015b60608152602001906001900390816111f05790505090506040518060400160405280600b81526020017f6e616d65737061636549640000000000000000000000000000000000000000008152508160008151811061125057611250612f01565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816112755790505090506040518060400160405280600c81526020017f746f6b656e4164647265737300000000000000000000000000000000000000008152508160008151811061125057611250612f01565b60006112df610ea6565b9050306001600160a01b03821603611304576112ff878787878787611612565b610697565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990611353908a908a908a908a908a908a90600401613197565b600060405180830381600087803b15801561136d57600080fd5b505af1158015611381573d6000803e3d6000fd5b5050505050505050505050565b6000611398610ea6565b9050306001600160a01b038216036113b75761109b86868686866118ff565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906110ed90899089908990899089906004016131e1565b60006114316114138686611914565b60ff858116601b0360080285901c1661142c858761196a565b6119ad565b95945050505050565b611450858585858561144b8b6119fe565b611afc565b5050505050565b6000601c82511115611481578151604051635318beb960e01b81526004016102fc91815260200190565b60008080805b855181101561155c5760006114c58783815181106114a7576114a7612f01565b602002602001015160c58111156114c0576114c061312c565b611deb565b9050806000036114da57600190920191611512565b8215611512576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061153357611533612f01565b602002602001015160c581111561154c5761154c61312c565b901b949094179350600101611487565b50600581111561158257604051635318beb960e01b8152600481018290526024016102fc565b8451819003600861159560026020613228565b61159f919061323b565b83901b9390931792600860016115b760026020613228565b6115c19190613228565b6115cb919061323b565b81901b939093179260086001806115e460026020613228565b6115ee9190613228565b6115f89190613228565b611602919061323b565b9190911b92909217949350505050565b613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000161480159061168b57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156116ec57613a3160f11b86876040516020016116aa91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102fc939291600401613252565b6116f7856000611e4b565b611702846001611fcd565b61170d836000611fcd565b60e084901c60e885901c0160ff1682511461176d5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b60e085901c60e886901c0160ff168151146117cd5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146118455760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b61184e86612174565b156118a857858660405160200161186791815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526102fc9291600401612f56565b6118f486868686866040516020016118c09190613293565b604051602081830303815290604052866040516020016118e09190613293565b604051602081830303815290604052612244565b610991866001612358565b611450858561190e848761196a565b8561244f565b600082826040516020016119299291906132a6565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156119a55761199160ff601b83900360080287901c1683613099565b91508061199d816132d4565b91505061196f565b509392505050565b6000602082106119d3576020820484019350602082816119cf576119cf6132ee565b0691505b508254600882021b6020829003808411156119a5576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052611a5d90612edd565b8203611a8957507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101ce91611af39101604051602081830303815290604052611aed90612edd565b846126a8565b602060006119ad565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b329493929190613304565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603610991576000611b73876126c4565b905060005b8151811015611c56576000828281518110611b9557611b95612f01565b60200260200101519050611bc16001826affffffffffffffffffffff191661278c90919063ffffffff16565b15611c43576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c10908c908c908c908c908c908c9060040161334e565b600060405180830381600087803b158015611c2a57600080fd5b505af1158015611c3e573d6000803e3d6000fd5b505050505b5080611c4e816132d4565b915050611b78565b506000611c638888611914565b90506000602087019050611c7b826000838a516127aa565b6000611c868561286a565b1115611d0a576000611c988a8a6128a7565b878155905060208601915060008060005b611cb28861286a565b8160ff161015611d0557611cc78d8d836128fd565b9250611ce28a8260ff166028026038011c64ffffffffff1690565b9150611cf183600087856127aa565b611cfb8286613099565b9450600101611ca9565b505050505b60005b835181101561111b576000848281518110611d2a57611d2a612f01565b60200260200101519050611d566002826affffffffffffffffffffff191661278c90919063ffffffff16565b15611dd8576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611da5908e908e908e908e908e908e9060040161334e565b600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b505050505b5080611de3816132d4565b915050611d0d565b6000808260c5811115611e0057611e0061312c565b60ff1690506061811015611e1a57601f1660010192915050565b60618360c5811115611e2e57611e2e61312c565b03611e3c5750601492915050565b50600092915050565b50919050565b80158015611e57575081155b15611e91576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016102fc565b6000611e9c8361286a565b90506005811115611edc576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016102fc565b6000611ee78461297d565b90506000611ef58383613099565b9050601c811115611f35576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016102fc565b60005b828110156109915760ff601b82900360080287901c166000819003611f89576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611fc4576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611f38565b80158015611fd9575081155b15611ffa57604051635318beb960e01b8152600060048201526024016102fc565b60006120058361286a565b9050600581111561202c57604051635318beb960e01b8152600481018290526024016102fc565b60006120378461297d565b905060006120458383613099565b9050601c81111561206c57604051635318beb960e01b8152600481018290526024016102fc565b60008060005b8381101561212d57600061209a6120898a8461298f565b60c58111156114c0576114c061312c565b11156120e4578481106120d9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612125565b8481101561211e576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101612072565b5083821461215157604051635318beb960e01b8152600481018390526024016102fc565b84811461069757604051635318beb960e01b8152600481018290526024016102fc565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121ad576121ad612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d869061221c90612edd565b8360007e01010001000000000000000000000000000000000000000000000000000000611404565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061227b8484611029565b905060006122898585611046565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106122c3576122c3612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261111b9061232f90612edd565b828686867e60030220202000000000000000000000000000000000000000000000000000611afc565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238e5761238e612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261244a906123fa90612edd565b8260008560405160200161241591151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118ff565b505050565b600061245b8585611914565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051612491939291906133a7565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146124cd5750610ea0565b60006124d8866126c4565b905060005b81518110156125b75760008282815181106124fa576124fa612f01565b602002602001015190506125266004826affffffffffffffffffffff191661278c90919063ffffffff16565b156125a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612571908b908b908b908b906004016133e4565b600060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050505b50806125af816132d4565b9150506124dd565b506125cb828565ffffffffffff16856129b0565b60005b81518110156106975760008282815181106125eb576125eb612f01565b602002602001015190506126176008826affffffffffffffffffffff191661278c90919063ffffffff16565b15612695576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612662908b908b908b908b906004016133e4565b600060405180830381600087803b15801561267c57600080fd5b505af1158015612690573d6000803e3d6000fd5b505050505b50806126a0816132d4565b9150506125ce565b6040805160208101849052908101829052600090606001611929565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106126fe576126fe612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906127759061276d90612edd565b8360006129c0565b9050610d9261278782600084516129fa565b612a8a565b60008160ff168261279d8560581c90565b1660ff1614905092915050565b821561282457602083106127d4576020830484019350602083816127d0576127d06132ee565b0692505b82156128245760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311612815575050610ea0565b50600194909401939182019190035b5b602081106128465781518455600190930192602090910190601f1901612825565b8015610ea0576000600019600883021c198554845182169119161785555050505050565b6000600860018061287d60026020613228565b6128879190613228565b6128919190613228565b61289b919061323b565b8260ff911c1692915050565b600082826040516020016128bc9291906132a6565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016129129291906132a6565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008600161288760026020613228565b6000601b8290036008028360ff911c1660c58111156110225761102261312c565b61244a83836020840184516127aa565b6060610d926129d08585856128fd565b6129f3846129de8888612a9b565b9060ff166028026038011c64ffffffffff1690565b6000612aae565b6000818311158015612a0d575083518211155b612a49578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102fc9392919061341d565b60208401612a578482613099565b90506000612a658585613228565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110228360156000612ad1565b6000611022612aaa84846128a7565b5490565b60405160208101601f19603f85840101166040528382526119a585858584612b4c565b60606000612adf8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612b0557612b056132ee565b04905060405193506020840160208202810160405281855260005b82811015612b40578451871c825293870193602090910190600101612b20565b50505050509392505050565b8115612bd55760208210612b7657602082048401935060208281612b7257612b726132ee565b0691505b8115612bd5576020829003600081851015612b9a5750600019600885021c19612ba5565b50600019600882021c195b8554600885021b811984511682821617845250818511612bc6575050610ea0565b50600194909401939283900392015b5b60208310612bf75783548152600190930192601f1990920191602001612bd6565b8215610ea0576000600019600885021c198251865482169119161782525050505050565b600060208284031215612c2d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461102257600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612c9657612c96612c5d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612cc557612cc5612c5d565b604052919050565b600067ffffffffffffffff821115612ce757612ce7612c5d565b50601f01601f191660200190565b600060208284031215612d0757600080fd5b813567ffffffffffffffff811115612d1e57600080fd5b8201601f81018413612d2f57600080fd5b8035612d42612d3d82612ccd565b612c9c565b818152856020838501011115612d5757600080fd5b81602084016020830137600091810160200191909152949350505050565b60005b83811015612d90578181015183820152602001612d78565b50506000910152565b6000612da7612d3d84612ccd565b9050828152838383011115612dbb57600080fd5b611022836020830184612d75565b600082601f830112612dda57600080fd5b61102283835160208501612d99565b60008060408385031215612dfc57600080fd5b825171ffffffffffffffffffffffffffffffffffff1981168114612e1f57600080fd5b602084015190925067ffffffffffffffff80821115612e3d57600080fd5b9084019060608287031215612e5157600080fd5b612e59612c73565b825160ff81168114612e6a57600080fd5b8152602083015182811115612e7e57600080fd5b612e8a88828601612dc9565b602083015250604083015182811115612ea257600080fd5b612eae88828601612dc9565b6040830152508093505050509250929050565b60008251612ed3818460208701612d75565b9190910192915050565b80516020808301519190811015611e455760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60008151808452612f2f816020860160208601612d75565b601f01601f19169290920160200192915050565b6020815260006110226020830184612f17565b828152604060208201526000610d926040830184612f17565b600060208284031215612f8157600080fd5b815167ffffffffffffffff811115612f9857600080fd5b8201601f81018413612fa957600080fd5b610d9284825160208401612d99565b600060208284031215612fca57600080fd5b81516001600160a01b038116811461102257600080fd5b8381528260208201526060604082015260006114316060830184612f17565b600081518084526020808501945080840160005b8381101561303057815187529582019590820190600101613014565b509495945050505050565b8481526080602082015260006130546080830186613000565b60ff949094166040830152506060015292915050565b60006020828403121561307c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ce576101ce613083565b600083516130be818460208801612d75565b8351908301906130d2818360208801612d75565b01949350505050565b85815260a0602082015260006130f460a0830187613000565b82810360408401526131068187612f17565b905084606084015282810360808401526131208185612f17565b98975050505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b8581101561318a578284038952613178848351612f17565b98850198935090840190600101613160565b5091979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006131c260c0830185613142565b82810360a08401526131d48185613142565b9998505050505050505050565b85815260a0602082015260006131fa60a0830187613000565b60ff8616604084015282810360608401526132158186612f17565b9150508260808301529695505050505050565b818103818111156101ce576101ce613083565b80820281158282048414176101ce576101ce613083565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006114316060830184612f17565b6020815260006110226020830184613142565b82815260006020808301845182860160005b8281101561318a578151845292840192908401906001016132b8565b600060001982036132e7576132e7613083565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6080815260006133176080830187613000565b82810360208401526133298187612f17565b905084604084015282810360608401526133438185612f17565b979650505050505050565b86815260c06020820152600061336760c0830188613000565b82810360408401526133798188612f17565b905085606084015282810360808401526133938186612f17565b9150508260a0830152979650505050505050565b6060815260006133ba6060830186613000565b65ffffffffffff8516602084015282810360408401526133da8185612f17565b9695505050505050565b8481526080602082015260006133fd6080830186613000565b65ffffffffffff8516604084015282810360608401526133438185612f17565b6060815260006134306060830186612f17565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506148a1806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063472466c214610030575b600080fd5b61004361003e366004612140565b610045565b005b61005661005182610155565b61018d565b610067610062826101d9565b61020b565b61007861007382610247565b610279565b8173ffffffffffffffffffffffffffffffffffffffff16633350b6a961009d836102bd565b6040516100a990612133565b604051809103906000f0801580156100c5573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff16602482015260016044820152606401600060405180830381600087803b15801561013957600080fd5b505af115801561014d573d6000803e3d6000fd5b505050505050565b6000610187613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610306565b92915050565b6101d6817e200100200000000000000000000000000000000000000000000000000000006101b961038d565b6101c161044a565b6101c9610484565b6101d161055c565b6105d3565b50565b6000610187613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610306565b6101d6817e200100200000000000000000000000000000000000000000000000000000006102376106a7565b61023f61044a565b6101c96106e1565b6000610187613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610306565b6101d6817e010102010000000000000000000000000000000000000000000000000000006102a5610758565b6102ad610771565b6102b5610836565b6101d1610869565b60006101877f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d0000000000000000000000000000000000000000005b6000610314607060106121cd565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106103c7576103c76121e0565b602002602001019060c58111156103e0576103e06121f6565b908160c58111156103f3576103f36121f6565b8152505060618160018151811061040c5761040c6121e0565b602002602001019060c5811115610425576104256121f6565b908160c5811115610438576104386121f6565b90525061044481610989565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061040c5761040c6121e0565b6040805160028082526060828101909352816020015b606081526020019060019003908161049a5790505090506040518060400160405280600781526020017f6163636f756e7400000000000000000000000000000000000000000000000000815250816000815181106104fa576104fa6121e0565b60200260200101819052506040518060400160405280600781526020017f7370656e646572000000000000000000000000000000000000000000000000008152508160018151811061054e5761054e6121e0565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816105735790505090506040518060400160405280600581526020017f76616c75650000000000000000000000000000000000000000000000000000008152508160008151811061054e5761054e6121e0565b60006105dd610b4d565b90503073ffffffffffffffffffffffffffffffffffffffff82160361060f5761060a878787878787610b99565b61069e565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f499061066b908a908a908a908a908a908a906004016122b4565b600060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050505b50505050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061040c5761040c6121e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816106f85790505090506040518060400160405280600781526020017f6163636f756e74000000000000000000000000000000000000000000000000008152508160008151811061054e5761054e6121e0565b6040805160008082526020820190925261044481610989565b60408051600380825260808201909252600091829190602082016060803683370190505090506000816000815181106107ac576107ac6121e0565b602002602001019060c58111156107c5576107c56121f6565b908160c58111156107d8576107d86121f6565b8152505060c5816001815181106107f1576107f16121e0565b602002602001019060c581111561080a5761080a6121f6565b908160c581111561081d5761081d6121f6565b8152505060c58160028151811061040c5761040c6121e0565b60408051600080825260208201909252606091610863565b606081526020019060019003908161084e5790505b50905090565b60408051600380825260808201909252606091816020015b60608152602001906001900390816108815790505090506040518060400160405280600881526020017f646563696d616c73000000000000000000000000000000000000000000000000815250816000815181106108e1576108e16121e0565b60200260200101819052506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600181518110610935576109356121e0565b60200260200101819052506040518060400160405280600681526020017f73796d626f6c00000000000000000000000000000000000000000000000000008152508160028151811061054e5761054e6121e0565b6000601c825111156109bc578151604051635318beb960e01b81526004016109b391815260200190565b60405180910390fd5b60008080805b8551811015610a97576000610a008783815181106109e2576109e26121e0565b602002602001015160c58111156109fb576109fb6121f6565b610e86565b905080600003610a1557600190920191610a4d565b8215610a4d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610a6e57610a6e6121e0565b602002602001015160c5811115610a8757610a876121f6565b901b9490941793506001016109c2565b506005811115610abd57604051635318beb960e01b8152600481018290526024016109b3565b84518190036008610ad0600260206122fe565b610ada9190612311565b83901b939093179260086001610af2600260206122fe565b610afc91906122fe565b610b069190612311565b81901b93909317926008600180610b1f600260206122fe565b610b2991906122fe565b610b3391906122fe565b610b3d9190612311565b9190911b92909217949350505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610b94573391505090565b919050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610c1257507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610c7357613a3160f11b8687604051602001610c3191815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109b3939291600401612328565b610c7e856000610ee6565b610c89846001611068565b610c94836000611068565b60e084901c60e885901c0160ff16825114610cf45760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b60e085901c60e886901c0160ff16815114610d545760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610dcc5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b610dd58661120f565b15610e2f578586604051602001610dee91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109b39291600401612369565b610e7b8686868686604051602001610e479190612382565b60405160208183030381529060405286604051602001610e679190612382565b6040516020818303038152906040526112f3565b61014d866001611413565b6000808260c5811115610e9b57610e9b6121f6565b60ff1690506061811015610eb557601f1660010192915050565b60618360c5811115610ec957610ec96121f6565b03610ed75750601492915050565b50600092915050565b50919050565b80158015610ef2575081155b15610f2c576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016109b3565b6000610f378361150a565b90506005811115610f77576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016109b3565b6000610f8284611547565b90506000610f9083836121cd565b9050601c811115610fd0576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016109b3565b60005b8281101561014d5760ff601b82900360080287901c166000819003611024576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561105f576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101610fd3565b80158015611074575081155b1561109557604051635318beb960e01b8152600060048201526024016109b3565b60006110a08361150a565b905060058111156110c757604051635318beb960e01b8152600481018290526024016109b3565b60006110d284611547565b905060006110e083836121cd565b9050601c81111561110757604051635318beb960e01b8152600481018290526024016109b3565b60008060005b838110156111c85760006111356111248a84611559565b60c58111156109fb576109fb6121f6565b111561117f57848110611174576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916111c0565b848110156111b9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b60010161110d565b508382146111ec57604051635318beb960e01b8152600481018390526024016109b3565b84811461069e57604051635318beb960e01b8152600481018290526024016109b3565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611248576112486121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112df906112b790612395565b8360007e01010001000000000000000000000000000000000000000000000000000000611581565b90506112eb8160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061132a84846115b7565b9050600061133885856115d4565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611372576113726121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611407906113de90612395565b828686867e60030220202000000000000000000000000000000000000000000000000000611600565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611449576114496121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611505906114b590612395565b826000856040516020016114d091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118ef565b505050565b6000600860018061151d600260206122fe565b61152791906122fe565b61153191906122fe565b61153b9190612311565b8260ff911c1692915050565b600060086001611527600260206122fe565b6000601b8290036008028360ff911c1660c581111561157a5761157a6121f6565b9392505050565b60006115ae611590868661190b565b60ff858116601b0360080285901c166115a98587611961565b6119a4565b95945050505050565b8151815160009181810160389190911b1760609190911b1761157a565b606082826040516020016115e99291906123b9565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516116369493929190612423565b60405180910390a2613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000160361014d576000611677876119f5565b905060005b815181101561175a576000828281518110611699576116996121e0565b602002602001015190506116c56001826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611747576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611714908c908c908c908c908c908c9060040161246d565b600060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050505b5080611752816124c6565b91505061167c565b506000611767888861190b565b9050600060208701905061177f826000838a51611adb565b600061178a8561150a565b111561180e57600061179c8a8a611b99565b878155905060208601915060008060005b6117b68861150a565b8160ff161015611809576117cb8d8d83611bef565b92506117e68a8260ff166028026038011c64ffffffffff1690565b91506117f58360008785611adb565b6117ff82866121cd565b94506001016117ad565b505050505b60005b835181101561140757600084828151811061182e5761182e6121e0565b6020026020010151905061185a6002826affffffffffffffffffffff1916611abd90919063ffffffff16565b156118dc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906118a9908e908e908e908e908e908e9060040161246d565b600060405180830381600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b505050505b50806118e7816124c6565b915050611811565b61190485856118fe8487611961565b85611c6f565b5050505050565b600082826040516020016119209291906124e0565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561199c5761198860ff601b83900360080287901c16836121cd565b915080611994816124c6565b915050611966565b509392505050565b6000602082106119ca576020820484019350602082816119c6576119c661251b565b0691505b508254600882021b60208290038084111561199c576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a2f57611a2f6121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611aa690611a9e90612395565b836000611ec8565b90506112eb611ab88260008451611f02565b611f92565b60008160ff1682611ace8560581c90565b1660ff1614905092915050565b8215611b555760208310611b0557602083048401935060208381611b0157611b0161251b565b0692505b8215611b555760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611b46575050611b93565b50600194909401939182019190035b5b60208110611b775781518455600190930192602090910190601f1901611b56565b8015611b935783548251600019600884021c9182169119161784555b50505050565b60008282604051602001611bae9291906124e0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611c049291906124e0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000611c7b858561190b565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051611cb193929190612531565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614611ced5750611b93565b6000611cf8866119f5565b905060005b8151811015611dd7576000828281518110611d1a57611d1a6121e0565b60200260200101519050611d466004826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611dc4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90611d91908b908b908b908b9060040161256e565b600060405180830381600087803b158015611dab57600080fd5b505af1158015611dbf573d6000803e3d6000fd5b505050505b5080611dcf816124c6565b915050611cfd565b50611deb828565ffffffffffff1685611fa3565b60005b815181101561069e576000828281518110611e0b57611e0b6121e0565b60200260200101519050611e376008826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611eb5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611e82908b908b908b908b9060040161256e565b600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050505b5080611ec0816124c6565b915050611dee565b60606112eb611ed8858585611bef565b611efb84611ee68888611fb3565b9060ff166028026038011c64ffffffffff1690565b6000611fc6565b6000818311158015611f15575083518211155b611f51578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109b3939291906125a7565b60208401611f5f84826121cd565b90506000611f6d85856122fe565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061157a8360156000611fe9565b6115058383602084018451611adb565b600061157a611fc28484611b99565b5490565b60405160208101601f19603f858401011660405283825261199c85858584612064565b60606000611ff78560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161201d5761201d61251b565b04905060405193506020840160208202810160405281855260005b82811015612058578451871c825293870193602090910190600101612038565b50505050509392505050565b81156120ed576020821061208e5760208204840193506020828161208a5761208a61251b565b0691505b81156120ed5760208290036000818510156120b25750600019600885021c196120bd565b50600019600882021c195b8554600885021b8119845116828216178452508185116120de575050611b93565b50600194909401939283900392015b5b6020831061210f5783548152600190930192601f19909201916020016120ee565b8215611b93576000600019600885021c198251865482169119161782525050505050565b6122c8806125cd83390190565b6000806040838503121561215357600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461217757600080fd5b915060208301357fffffffffffffffffffffffffffff000000000000000000000000000000000000811681146121ac57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610187576101876121b7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b8381101561222757818101518382015260200161220f565b50506000910152565b6000815180845261224881602086016020860161220c565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156122a757601f19868403018952612295838351612230565b98840198925090830190600101612279565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006122df60c083018561225c565b82810360a08401526122f1818561225c565b9998505050505050505050565b81810381811115610187576101876121b7565b8082028115828204841417610187576101876121b7565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006115ae6060830184612230565b8281526040602082015260006112eb6040830184612230565b60208152600061157a602083018461225c565b80516020808301519190811015610ee05760001960209190910360031b1b16919050565b600083516123cb81846020880161220c565b8351908301906123df81836020880161220c565b01949350505050565b600081518084526020808501945080840160005b83811015612418578151875295820195908201906001016123fc565b509495945050505050565b60808152600061243660808301876123e8565b82810360208401526124488187612230565b905084604084015282810360608401526124628185612230565b979650505050505050565b86815260c06020820152600061248660c08301886123e8565b82810360408401526124988188612230565b905085606084015282810360808401526124b28186612230565b9150508260a0830152979650505050505050565b600060001982036124d9576124d96121b7565b5060010190565b82815260006020808301845182860160005b8281101561250e578151845292840192908401906001016124f2565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60608152600061254460608301866123e8565b65ffffffffffff8516602084015282810360408401526125648185612230565b9695505050505050565b84815260806020820152600061258760808301866123e8565b65ffffffffffff8516604084015282810360608401526124628185612230565b6060815260006125ba6060830186612230565b6020830194909452506040015291905056fe608060405234801561001057600080fd5b506122a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063dd62ed3e1461020e578063e1af802c1461022157600080fd5b806340c10f19146101ad57806345ec9354146101c257806370a08231146101cd57806395d89b41146101e057600080fd5b8063119df25f116100d3578063119df25f1461014a57806318160ddd1461016a57806323b872dd14610180578063313ce5671461019357600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063095ea7b314610137575b600080fd5b61010d610108366004611dad565b610229565b60405190151581526020015b60405180910390f35b61012a6102c2565b6040516101199190611e3f565b61010d610145366004611e69565b6102e1565b610152610303565b6040516001600160a01b039091168152602001610119565b61017261030d565b604051908152602001610119565b61010d61018e366004611e93565b610327565b61019b610357565b60405160ff9091168152602001610119565b6101c06101bb366004611e69565b61036c565b005b36601f190135610172565b6101726101db366004611ecf565b6103cc565b61012a6103e7565b6101c06101f6366004611e69565b6103fc565b61010d610209366004611e69565b610453565b61017261021c366004611eea565b61046b565b610152610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb42128800000000000000000000000000000000000000000000000000000000014806102bc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60606102dc6102d76102d2610491565b6104af565b6104e1565b905090565b6000806102ec610303565b90506102f9818585610507565b5060019392505050565b60006102dc610665565b60006102dc61032261031d610491565b610697565b6106c9565b600080610332610303565b905061033f8582856106ee565b61034a858585610776565b60019150505b9392505050565b60006102dc6103676102d2610491565b61080c565b610374610854565b6001600160a01b0382166103bc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103c86000838361086f565b5050565b60006102bc6103e16103dc610491565b610a37565b83610a69565b60606102dc6103f76102d2610491565b610ad7565b610404610854565b6001600160a01b038216610447576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6103c88260008361086f565b60008061045e610303565b90506102f9818585610776565b600061035061048061047b610491565b610af6565b8484610b28565b60006102dc610bc3565b60008061049d30610c02565b90506104a98160101b90565b91505090565b60006102bc613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610cde565b604080516000808252602082019092526060916104ff848383610d65565b949350505050565b6001600160a01b03831661054a576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b03821661058d576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6105a361059b61047b610491565b848484610e2c565b6105ab610ee3565b6001600160a01b031663c9a34acd7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256105ea866001600160a01b031690565b6001600160a01b0386166040805160208101889052016040516020818303038152906040526040518563ffffffff1660e01b815260040161062e9493929190611f33565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106945750335b90565b60006102bc613a3160f11b837f546f74616c537570706c79000000000000000000000000000000000000000000610cde565b6040805160008082526020820190925260006104ff848383630100080160dd1b610fbe565b60006107056106fe61047b610491565b8585610b28565b905060001981146107705781811015610763576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103b3565b6107708484848403610507565b50505050565b6001600160a01b0383166107b9576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b0382166107fc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b61080783838361086f565b505050565b6040805160008082526020820190925260006108498483837e01010201000000000000000000000000000000000000000000000000000000610fbe565b60f81c949350505050565b61086d61086030610c02565b610868610303565b61107b565b565b6000610879610491565b9050600061088682610697565b9050600061089383610a37565b90506001600160a01b0386166108c5576108c082856108b1856106c9565b6108bb9190611f6e565b61111c565b610935565b60006108d18288610a69565b905084811015610926576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101829052604481018690526064016103b3565b6109338288878403611143565b505b6001600160a01b03851661095c576109578285610951856106c9565b0361111c565b610972565b61097281868661096c858a610a69565b01611143565b61097a610ee3565b6001600160a01b031663c9a34acd7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109b9896001600160a01b031690565b6001600160a01b03891660408051602081018b9052016040516020818303038152906040526040518563ffffffff1660e01b81526004016109fd9493929190611f33565b600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b50505050505050505050565b60006102bc613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610cde565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610aae57610aae611f81565b60209081029190910101526000610ace858383630100080160dd1b610fbe565b95945050505050565b604080516000808252602082019092526060916104ff84836001610d65565b60006102bc613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610cde565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610b6d57610b6d611f81565b602002602001018181525050826001600160a01b031660001b81600181518110610b9957610b99611f81565b60209081029190910101526000610bb9868383630100080160dd1b610fbe565b9695505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610bfd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610c4757610c47611f81565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526000906104ff90610cce90611f97565b836000630100080160dd1b610fbe565b6000610cec60706010611f6e565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60606000610d71610bc3565b9050306001600160a01b03821603610d9657610d8e8585856111ab565b915050610350565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610ddf90889088908890600401611ff9565b600060405180830381865afa158015610dfc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d8e9190810190612025565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610e6d57610e6d611f81565b602002602001018181525050826001600160a01b031660001b81600181518110610e9957610e99611f81565b602002602001018181525050610edc8582600085604051602001610ebf91815260200190565b60408051601f19818403018152919052630100080160dd1b6111e5565b5050505050565b600080610eef30610c02565b60408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f50757070657452656769737472790000000000000000000000000000000000006030820152919250600091610f739101604051602081830303815290604052610f6d90611f97565b83611268565b90506001600160a01b0381166102bc576040517f9434f7e1000000000000000000000000000000000000000000000000000000008152306004820152602481018390526044016103b3565b600080610fc9610bc3565b9050306001600160a01b03821603610fef57610fe7868686866112e5565b9150506104ff565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061103a9089908990899089906004016120d2565b602060405180830381865afa158015611057573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612101565b6001600160a01b0381166110d07f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617611312565b6001600160a01b0316146103c8576110e782611405565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103b392919061211a565b60408051600080825260208201835291810183905290610807908490839060608201610ebf565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b8160008151811061118557611185611f81565b6020026020010181815250506107708482600085604051602001610ebf91815260200190565b60606104ff6111bb858585611581565b6111de846111c98888611601565b9060ff166028026038011c64ffffffffff1690565b6000611614565b60006111ef610bc3565b9050306001600160a01b038216036112135761120e8686868686611637565b611260565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906109fd9089908990899089908990600401612145565b505050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106112a1576112a1611f81565b602090810291909101015260006112d98583837e14010014000000000000000000000000000000000000000000000000000000610fbe565b60601c95945050505050565b6000610ace6112f4868661164c565b60ff858116601b0360080285901c1661130d85876116a2565b6116dd565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061134b5761134b611f81565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906113fa906113d290611f97565b8360007e14010014000000000000000000000000000000000000000000000000000000610fbe565b60601c949350505050565b606081601081901b60006114188361172e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561146b577fffffffffffffffffffffffffffff000000000000000000000000000000000000831661148d565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156114bb57826114dd565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6000838360405160200161159692919061218c565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006103506116108484611745565b5490565b60405160208101601f19603f8584010116604052838252610e248585858461179b565b610edc858561164684876116a2565b8561186a565b6000828260405160200161166192919061218c565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610e24576116c960ff601b83900360080287901c1683611f6e565b9150806116d5816121c7565b9150506116a7565b600060208210611703576020820484019350602082816116ff576116ff6121e1565b0691505b508254600882021b602082900380841115610e24576001850154600882021c82179150509392505050565b600061173c60706010611f6e565b9190911b919050565b6000828260405160200161175a92919061218c565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b811561182457602082106117c5576020820484019350602082816117c1576117c16121e1565b0691505b81156118245760208290036000818510156117e95750600019600885021c196117f4565b50600019600882021c195b8554600885021b811984511682821617845250818511611815575050610770565b50600194909401939283900392015b5b602083106118465783548152600190930192601f1990920191602001611825565b8215610770576000600019600885021c198251865482169119161782525050505050565b6000611876858561164c565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8585856040516118ac939291906121f7565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146118e85750610770565b60006118f386611ac3565b905060005b81518110156119d257600082828151811061191557611915611f81565b602002602001015190506119416004826affffffffffffffffffffff1916611ba390919063ffffffff16565b156119bf576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061198c908b908b908b908b9060040161222a565b600060405180830381600087803b1580156119a657600080fd5b505af11580156119ba573d6000803e3d6000fd5b505050505b50806119ca816121c7565b9150506118f8565b506119e6828565ffffffffffff1685611bc1565b60005b815181101561065c576000828281518110611a0657611a06611f81565b60200260200101519050611a326008826affffffffffffffffffffff1916611ba390919063ffffffff16565b15611ab0576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611a7d908b908b908b908b9060040161222a565b600060405180830381600087803b158015611a9757600080fd5b505af1158015611aab573d6000803e3d6000fd5b505050505b5080611abb816121c7565b9150506119e9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611afd57611afd611f81565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611b8c90611b8490611f97565b8360006111ab565b90506104ff611b9e8260008451611bd1565b611c61565b60008160ff1682611bb48560581c90565b1660ff1614905092915050565b6108078383602084018451611c72565b6000818311158015611be4575083518211155b611c20578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103b393929190612263565b60208401611c2e8482611f6e565b90506000611c3c8585612288565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103508360156000611d32565b8215611cec5760208310611c9c57602083048401935060208381611c9857611c986121e1565b0692505b8215611cec5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611cdd575050610770565b50600194909401939182019190035b5b60208110611d0e5781518455600190930192602090910190601f1901611ced565b8015610770576000600019600883021c198554845182169119161785555050505050565b60606000611d408560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611d6657611d666121e1565b04905060405193506020840160208202810160405281855260005b82811015611da1578451871c825293870193602090910190600101611d81565b50505050509392505050565b600060208284031215611dbf57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035057600080fd5b60005b83811015611e0a578181015183820152602001611df2565b50506000910152565b60008151808452611e2b816020860160208601611def565b601f01601f19169290920160200192915050565b6020815260006103506020830184611e13565b80356001600160a01b0381168114610bfd57600080fd5b60008060408385031215611e7c57600080fd5b611e8583611e52565b946020939093013593505050565b600080600060608486031215611ea857600080fd5b611eb184611e52565b9250611ebf60208501611e52565b9150604084013590509250925092565b600060208284031215611ee157600080fd5b61035082611e52565b60008060408385031215611efd57600080fd5b611f0683611e52565b9150611f1460208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b848152836020820152826040820152608060608201526000610bb96080830184611e13565b634e487b7160e01b600052601160045260246000fd5b808201808211156102bc576102bc611f58565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611fb8576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b83811015611fee57815187529582019590820190600101611fd2565b509495945050505050565b8381526060602082015260006120126060830185611fbe565b905060ff83166040830152949350505050565b60006020828403121561203757600080fd5b815167ffffffffffffffff8082111561204f57600080fd5b818401915084601f83011261206357600080fd5b81518181111561207557612075611f1d565b604051601f8201601f19908116603f0116810190838211818310171561209d5761209d611f1d565b816040528281528760208487010111156120b657600080fd5b6120c7836020830160208801611def565b979650505050505050565b8481526080602082015260006120eb6080830186611fbe565b60ff949094166040830152506060015292915050565b60006020828403121561211357600080fd5b5051919050565b60408152600061212d6040830185611e13565b90506001600160a01b03831660208301529392505050565b85815260a06020820152600061215e60a0830187611fbe565b60ff8616604084015282810360608401526121798186611e13565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156121ba5781518452928401929084019060010161219e565b5091979650505050505050565b600060001982036121da576121da611f58565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061220a6060830186611fbe565b65ffffffffffff851660208401528281036040840152610bb98185611e13565b8481526080602082015260006122436080830186611fbe565b65ffffffffffff8516604084015282810360608401526120c78185611e13565b6060815260006122766060830186611e13565b60208301949094525060400152919050565b818103818111156102bc576102bc611f5856fea164736f6c6343000815000aa164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1479:9437:192:-:0;;;1572:26:99;;;1594:4;-1:-1:-1;;1572:26:99;;;;;;;;3126:44:102;;;;;;;;;;;228:9:0;186:51;;1479:9437:192;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633f7286f411620001c457806366d9a9a0116200018f57806366d9a9a014620002f457806370557298146200030d57806378cdebf914620003175780637a715085146200032157600080fd5b80633f7286f414620002bf57806348186a7f14620002c95780635ad7ef9214620002e05780635babb75814620002ea57600080fd5b80631ed7831c11620002055780631ed7831c146200027257806337e816d314620002945780633dc6c95514620002ab5780633e5e3c2314620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b62000245620002583660046200599c565b62000772565b6200024562000ad2565b6200024562000e92565b6200027c62001064565b6040516200028b9190620059d2565b60405180910390f35b62000245620002a53660046200599c565b620010c8565b62000245620014e2565b6200027c620016be565b6200027c62001720565b62000245620002da36600462005a21565b62001782565b6200024562001e66565b6200024562002097565b620002fe620020ec565b6040516200028b919062005a7d565b62000245620021f4565b62000245620025f3565b62000245620026f4565b620002456200033c3660046200599c565b620029db565b6200034c62002cb9565b6040516200028b919062005ba0565b620002fe62002d93565b6200024562002e92565b620002456200038036600462005c06565b6200308c565b6200034c62003356565b6200039a62003430565b60405190151581526020016200028b565b62000245620003bc3660046200599c565b6200357c565b620002456200388d565b6200024562003b11565b6200027c62003de0565b62000245620003f13660046200599c565b62003e42565b620002456200040836600462005c06565b62004142565b620002456200432e565b62000245620044f9565b6000546200039a9060ff1681565b620002456200044136600462005c06565b6200463a565b60405162000455906200594c565b604051809103906000f08015801562000472573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163c4d66de890620004be906200595a565b604051809103906000f080158015620004db573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200053657600080fd5b505af11580156200054b573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250638da798da9150620005729062005968565b604051809103906000f0801580156200058f573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620005da91906024810162005c49565b600060405180830381600087803b158015620005f557600080fd5b505af11580156200060a573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055506200066e9050565b62000738601f60009054906101000a90046001600160a01b03167f6d794552433230000000000000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525081525062004724565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620007c857600080fd5b505afa158015620007dd573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200082f57600080fd5b505afa15801562000844573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200089757600080fd5b505af1158015620008ac573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200091357600080fd5b505af115801562000928573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820184905290911690639dc29fac90604401600060405180830381600087803b158015620009d557600080fd5b505af1158015620009ea573d6000803e3d6000fd5b5050505062000a7e602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a6c919062005c6d565b62000a78838562005c9d565b6200494e565b6021546040516370a0823160e01b81526001600160a01b03858116600483015262000acd9216906370a08231906024015b602060405180830381865afa15801562000a46573d6000803e3d6000fd5b505050565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b15801562000b2957600080fd5b505af115801562000b3e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000b9857600080fd5b505af115801562000bad573d6000803e3d6000fd5b505060215460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562000c04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c2a919062005cb3565b506021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000cbe9216906323b872dd906064015b6020604051808303816000875af115801562000c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb8919062005cb3565b62004a60565b602154604080516318160ddd60e01b8152905162000d40926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d31919062005c6d565b670de0b6b3a76400006200494e565b602154604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000dc392169063dd62ed3e90604401602060405180830381865afa15801562000d94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dba919062005c6d565b6000196200494e565b6021546040516370a0823160e01b81526001600160a01b03838116600483015262000e409216906370a08231906024015b602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062005c6d565b60006200494e565b6021546040516370a0823160e01b815261beef600482015262000e8f916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000d0b573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000ef557600080fd5b505af115801562000f0a573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000f8f6040518060400160405280600781526020017f617070726f76650000000000000000000000000000000000000000000000000081525062004ad8565b60215460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001011919062005cb3565b90506200101d62004dac565b620010288162004a60565b602154604051636eb1769f60e11b815230600482015261beef602482015262000e8f916001600160a01b03169063dd62ed3e9060440162000e71565b6060600d805480602002602001604051908101604052809291908181526020018280548015620010be57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200109f575b5050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200111e57600080fd5b505afa15801562001133573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200118657600080fd5b505afa1580156200119b573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620011ec57600080fd5b505afa15801562001201573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820186905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200125757600080fd5b505af11580156200126c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620012c657600080fd5b505af1158015620012db573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562001331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001357919062005cb3565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620014259160040162005cde565b600060405180830381600087803b1580156200144057600080fd5b505af115801562001455573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620014b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014db919062005cb3565b5050505050565b6021546040516340c10f1960e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200153657600080fd5b505af11580156200154b573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001609919060040162005cde565b600060405180830381600087803b1580156200162457600080fd5b505af115801562001639573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af115801562001698573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8f919062005cb3565b6060600f805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620017d857600080fd5b505afa158015620017ed573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200184757600080fd5b505afa1580156200185c573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620018b657600080fd5b505afa158015620018cb573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200191d57600080fd5b505afa15801562001932573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0388811660048301526024820186905290911692506340c10f199150604401600060405180830381600087803b1580156200198557600080fd5b505af11580156200199a573d6000803e3d6000fd5b50506021546040516370a0823160e01b81526001600160a01b03888116600483015262001a1c945090911691506370a08231906024015b602060405180830381865afa158015620019ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a15919062005c6d565b826200494e565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a7257600080fd5b505af115801562001a87573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af115801562001adf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b05919062005cb3565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001b6957600080fd5b505af115801562001b7e573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001bc891815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2657600080fd5b505af115801562001c3b573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001c86945090911691506323b872dd9060640162000c72565b602154604080516318160ddd60e01b8152905162001cd3926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015620019ef573d6000803e3d6000fd5b600019820362001d6657602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001d6092169063dd62ed3e90604401602060405180830381865afa15801562001d33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d59919062005c6d565b836200494e565b62001da4565b602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001da492169063dd62ed3e9060440162000aaf565b826001600160a01b0316846001600160a01b03160362001dfa576021546040516370a0823160e01b81526001600160a01b03868116600483015262001df49216906370a0823190602401620019d1565b620014db565b6021546040516370a0823160e01b81526001600160a01b03868116600483015262001e309216906370a082319060240162000df4565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620014db9216906370a0823190602401620019d1565b602154604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001f32926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001ecc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ef6919081019062005cf3565b6040518060400160405280600581526020017f546f6b656e0000000000000000000000000000000000000000000000000000008152506200503c565b602154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001ffe926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fc2919081019062005cf3565b6040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152506200503c565b602154604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162002095926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562002064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200208a919062005dac565b60ff1660126200494e565b565b602154620020b0906001600160a01b0316151562004a60565b62002095620020e57f6e736d79455243323000000000000000000000000000000000000000000000006200518c565b6200518c565b30620052a1565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200217e5790505b5050505050815250508152602001906001019062002110565b50505050905090565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200224b57600080fd5b505af115801562002260573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002352919062005cb3565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620023b657600080fd5b505af1158015620023cb573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620024596040518060400160405280600c81526020017f7472616e7366657246726f6d000000000000000000000000000000000000000081525062004ad8565b6021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620024bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024e3919062005cb3565b9050620024ef62004dac565b620024fa8162004a60565b602154604080516318160ddd60e01b8152905162002547926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b602154604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526200258392169063dd62ed3e9060440162000df4565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025b99216906370a082319060240162000df4565b6021546040516370a0823160e01b815261beef6004820152620025ef916001600160a01b0316906370a082319060240162000e71565b5050565b6000620026bf601f60009054906101000a90046001600160a01b03167f616e6f74686572455243323000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525081525062004724565b9050620026d76001600160a01b038216151562004a60565b60215462000e8f906001600160a01b038381169116141562004a60565b6021546040516340c10f1960e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200274b57600080fd5b505af115801562002760573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620027ba57600080fd5b505af1158015620027cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200282c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002852919062005cb3565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200291e9160040162005cde565b600060405180830381600087803b1580156200293957600080fd5b505af11580156200294e573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620029b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ef919062005cb3565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002a3157600080fd5b505afa15801562002a46573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002a9957600080fd5b505afa15801562002aae573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002aff57600080fd5b505afa15801562002b14573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820187905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b15801562002b6a57600080fd5b505af115801562002b7f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002bd957600080fd5b505af115801562002bee573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002c44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c6a919062005cb3565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620013b1565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620021eb57838290600052602060002001805462002cff9062005dd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002d2d9062005dd1565b801562002d7e5780601f1062002d525761010080835404028352916020019162002d7e565b820191906000526020600020905b81548152906001019060200180831162002d6057829003601f168201915b50505050508152602001906001019062002cdd565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002e7957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002e255790505b5050505050815250508152602001906001019062002db7565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002ef557600080fd5b505af115801562002f0a573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002f906040518060400160405280600481526020017f6d696e740000000000000000000000000000000000000000000000000000000081525062004ad8565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562002fe657600080fd5b505af115801562002ffb573d6000803e3d6000fd5b505050506200300962004dac565b602154604080516318160ddd60e01b8152905162003056926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b6021546040516370a0823160e01b815261beef600482015262002095916001600160a01b0316906370a082319060240162000e71565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620030e257600080fd5b505afa158015620030f7573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200314857600080fd5b505af11580156200315d573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620031c457600080fd5b505af1158015620031d9573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360215460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490526200325a92169063a9059cbb9060440162000c72565b602154604080516318160ddd60e01b81529051620032a7926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015620019ef573d6000803e3d6000fd5b6001600160a01b0382163003620032ec576021546040516370a0823160e01b8152306004820152620025ef916001600160a01b0316906370a0823190602401620019d1565b6021546040516370a0823160e01b815230600482015262003320916001600160a01b0316906370a082319060240162000df4565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025ef9216906370a0823190602401620019d1565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620021eb5783829060005260206000200180546200339c9062005dd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620033ca9062005dd1565b80156200341b5780601f10620033ef576101008083540402835291602001916200341b565b820191906000526020600020905b815481529060010190602001808311620033fd57829003601f168201915b5050505050815260200190600101906200337a565b60008054610100900460ff1615620034515750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620035775760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620034f9917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005e0d565b60408051601f1981840301815290829052620035159162005e57565b6000604051808303816000865af19150503d806000811462003554576040519150601f19603f3d011682016040523d82523d6000602084013e62003559565b606091505b509150508080602001905181019062003573919062005cb3565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620035d257600080fd5b505afa158015620035e7573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200363a57600080fd5b505afa1580156200364f573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620036a057600080fd5b505afa158015620036b5573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200370857600080fd5b505af11580156200371d573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620037d3919060040162005cde565b600060405180830381600087803b158015620037ee57600080fd5b505af115801562003803573d6000803e3d6000fd5b50506021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018690529091169250639dc29fac9150604401600060405180830381600087803b1580156200386f57600080fd5b505af115801562003884573d6000803e3d6000fd5b50505050505050565b6021546040516340c10f1960e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015620038e157600080fd5b505af1158015620038f6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200395d57600080fd5b505af115801562003972573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620039f76040518060400160405280600881526020017f7472616e7366657200000000000000000000000000000000000000000000000081525062004ad8565b60215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af115801562003a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a79919062005cb3565b905062003a8562004dac565b62003a908162004a60565b602154604080516318160ddd60e01b8152905162003add926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000d0b573d6000803e3d6000fd5b6021546040516370a0823160e01b815230600482015262000e40916001600160a01b0316906370a082319060240162000df4565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562003b6757600080fd5b505af115801562003b7c573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003be357600080fd5b505af115801562003bf8573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362003c7e6040518060400160405280600481526020017f6275726e0000000000000000000000000000000000000000000000000000000081525062004ad8565b6021546040517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801562003ced57600080fd5b505af115801562003d02573d6000803e3d6000fd5b5050505062003d1062004dac565b602154604080516318160ddd60e01b8152905162003d92926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d83919062005c6d565b67016345785d8a00006200494e565b6021546040516370a0823160e01b815261beef600482015262002095916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003d5d573d6000803e3d6000fd5b6060600c805480602002602001604051908101604052809291908181526020018280548015620010be576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200109f575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003e9857600080fd5b505afa15801562003ead573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003f0057600080fd5b505afa15801562003f15573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003f6657600080fd5b505afa15801562003f7b573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018690526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b15801562003fcc57600080fd5b505af115801562003fe1573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200408e919060040162005cde565b600060405180830381600087803b158015620040a957600080fd5b505af1158015620040be573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562004116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200413c919062005cb3565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200419857600080fd5b505afa158015620041ad573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200421457600080fd5b505af115801562004229573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b158015620042bd57600080fd5b505af1158015620042d2573d6000803e3d6000fd5b5050505062003320602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019ef573d6000803e3d6000fd5b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200438557600080fd5b505af11580156200439a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620043f457600080fd5b505af115801562004409573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200448c919062005cb3565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b20000000000000000000000000000000000000000000000000000000090608401620028aa565b6021546040516340c10f1960e01b815230600482015260001960248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200454757600080fd5b505af11580156200455c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620045bf57600080fd5b505af1158015620045d4573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152600160248201526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200462557600080fd5b505af11580156200413c573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200469057600080fd5b505afa158015620046a5573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620046e89450909116915063095ea7b39060440162000c72565b602154604051636eb1769f60e11b81523060048201526001600160a01b038481166024830152620025ef92169063dd62ed3e90604401620019d1565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d7075707065740000000000000000000000000000000000000000602282015260009081906200479a90603001604051602081830303815290604052620020df9062005e75565b90506001600160a01b038116620047da57604051620047b99062005976565b604051809103906000f080158015620047d6573d6000803e3d6000fd5b5090505b846001600160a01b0316638da798da828686604051602001620047ff92919062005e9a565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200482d92919062005c49565b600060405180830381600087803b1580156200484857600080fd5b505af11580156200485d573d6000803e3d6000fd5b5050604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152620049459350019050604051602081830303815290604052620048f89062005e75565b601086901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e7300000000000000000000000000000000000000000000000000000000000017620053b3565b95945050505050565b808214620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620049dc9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004a15919062005f15565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004a4e919062005f61565b60405180910390a1620025ef62005437565b8062000e8f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004ac69060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000e8f62005437565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004b7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ba0919062005cb3565b62004ba85750565b601b805462004bb79062005dd1565b9050600014601b60405160200162004bd0919062006038565b6040516020818303038152906040529062004c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c1a919062005cde565b60405180910390fd5b50601d8160405162004c36919062005e57565b9081526020016040518091039020546000148160405160200162004c5b9190620060bf565b6040516020818303038152906040529062004ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c1a919062005cde565b50601b62004cb482826200617f565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004d1457600080fd5b505af115801562004d29573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004d9757600080fd5b505af1158015620014db573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e7a919062005cb3565b62004e825750565b600060a082601c5462004e96919062005c9d565b62004ea2919062005c9d565b62004eaf9060016200624c565b90506000811162004f1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162004c1a565b80601d601b60405162004f31919062006262565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162004f80601b8262006270565b506200501e601b805462004f949062005dd1565b80601f016020809104026020016040519081016040528092919081815260200182805462004fc29062005dd1565b8015620050135780601f1062004fe75761010080835404028352916020019162005013565b820191906000526020600020905b81548152906001019060200180831162004ff557829003601f168201915b50505050506200557e565b604080516020810190915260008152601b9062000acd90826200617f565b806040516020016200504f919062005e57565b604051602081830303815290604052805190602001208260405160200162005078919062005e57565b6040516020818303038152906040528051906020012014620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200511a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162005153919062006352565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a4e9190620063a4565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620051c857620051c8620063e2565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009062005296906200526d9062005e75565b8360007e1401001400000000000000000000000000000000000000000000000000000062005681565b60601c949350505050565b806001600160a01b0316826001600160a01b031614620025ef577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620053419060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200537a9190620063f8565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004a4e91906200644d565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620053ef57620053ef620063e2565b60209081029190910101526000620054298583837e1401001400000000000000000000000000000000000000000000000000000062005681565b60601c925050505b92915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620055505760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620054eb929160200162005e0d565b60408051601f1981840301815290829052620055079162005e57565b6000604051808303816000865af19150503d806000811462005546576040519150601f19603f3d011682016040523d82523d6000602084013e6200554b565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62000e8f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d84604051620055c6919062005e57565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620056109160040190815260200190565b600060405180830381865afa1580156200562e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005658919081019062005cf3565b826040516020016200566c9291906200648b565b60405160208183030381529060405262005751565b6000806200568e620057c6565b9050306001600160a01b03821603620056b857620056af8686868662005801565b91505062005749565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906200570590899089908990899060040162006510565b602060405180830381865afa15801562005723573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056af919062005c6d565b949350505050565b62000e8f8160405160240162005768919062005cde565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262005834565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168062003577573391505090565b60006200494562005813868662005855565b60ff858116601b0360080285901c166200582e8587620058ad565b620058f6565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600082826040516020016200586c9291906200656d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015620058ee57620058d760ff601b83900360080287901c16836200624c565b915080620058e581620065aa565b915050620058b2565b509392505050565b60006020821062005920576020820484019350602082816200591c576200591c620065c7565b0691505b508254600882021b602082900380841115620058ee576001850154600882021c82179150509392505050565b61532780620065de83390190565b61a8a5806200b90583390190565b61554580620161aa83390190565b617d8a806201b6ef83390190565b80356001600160a01b03811681146200357757600080fd5b600080600060608486031215620059b257600080fd5b620059bd8462005984565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101562005a155783516001600160a01b031683529284019291840191600101620059ee565b50909695505050505050565b600080600080600060a0868803121562005a3a57600080fd5b62005a458662005984565b945062005a556020870162005984565b935062005a656040870162005984565b94979396509394606081013594506080013592915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005b3d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005b275783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005ae3565b50978a0197955050509187019160010162005aa5565b50919998505050505050505050565b60005b8381101562005b6957818101518382015260200162005b4f565b50506000910152565b6000815180845262005b8c81602086016020860162005b4c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005bf957603f1988860301845262005be685835162005b72565b9450928501929085019060010162005bc7565b5092979650505050505050565b6000806040838503121562005c1a57600080fd5b62005c258362005984565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038316815260406020820152600062005749604083018462005b72565b60006020828403121562005c8057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111562005431576200543162005c87565b60006020828403121562005cc657600080fd5b8151801515811462005cd757600080fd5b9392505050565b60208152600062005cd7602083018462005b72565b60006020828403121562005d0657600080fd5b815167ffffffffffffffff8082111562005d1f57600080fd5b818401915084601f83011262005d3457600080fd5b81518181111562005d495762005d4962005c33565b604051601f8201601f19908116603f0116810190838211818310171562005d745762005d7462005c33565b8160405282815287602084870101111562005d8e57600080fd5b62005da183602083016020880162005b4c565b979650505050505050565b60006020828403121562005dbf57600080fd5b815160ff8116811462005cd757600080fd5b600181811c9082168062005de657607f821691505b60208210810362005e0757634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005e4981600485016020870162005b4c565b919091016004019392505050565b6000825162005e6b81846020870162005b4c565b9190910192915050565b8051602080830151919081101562005e075760001960209190910360031b1b16919050565b7fffffffffffffffffffffffffffff000000000000000000000000000000000000831681526040602082015260ff82511660408201526000602083015160608084015262005eec60a084018262005b72565b90506040840151603f1984830301608085015262005f0b828262005b72565b9695505050505050565b60408152600062005f5360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b60408152600062005f5360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b6000815462005fae8162005dd1565b6001828116801562005fc9576001811462005ffd576200602e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841687528215158302870194506200602e565b8560005260208060002060005b85811015620060255781548a8201529084019082016200600a565b50505082870194505b5050505092915050565b7f676173207265706f727420220000000000000000000000000000000000000000815260006200606c600c83018462005f9f565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f727420220000000000000000000000000000000000000000815260008251620060f981600c85016020870162005b4c565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f82111562000acd57600081815260208120601f850160051c81016020861015620061565750805b601f850160051c820191505b81811015620061775782815560010162006162565b505050505050565b815167ffffffffffffffff8111156200619c576200619c62005c33565b620061b481620061ad845462005dd1565b846200612d565b602080601f831160018114620061ec5760008415620061d35750858301515b600019600386901b1c1916600185901b17855562006177565b600085815260208120601f198616915b828110156200621d57888601518255948401946001909101908401620061fc565b50858210156200623c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111562005431576200543162005c87565b600062005cd7828462005f9f565b8181036200627c575050565b62006288825462005dd1565b67ffffffffffffffff811115620062a357620062a362005c33565b620062b481620061ad845462005dd1565b6000601f821160018114620062eb5760008315620062d25750848201545b600019600385901b1c1916600184901b178455620014db565b600085815260209020601f19841690600086815260209020845b8381101562006327578286015482556001958601959091019060200162006305565b50858310156200623c5793015460001960f8600387901b161c19169092555050600190811b01905550565b6040815260006200639060408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b828103602084015262005749818562005b72565b6040815260006200639060408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6040815260006200643660408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200643660408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f474153205245504f52543a200000000000000000000000000000000000000000815260008351620064c581600c85016020880162005b4c565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200650481600d84016020880162005b4c565b01600d01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015620065535784518352938301939183019160010162006535565b505060ff9690961660408501525050506060015292915050565b82815260006020808301845182860160005b828110156200659d578151845292840192908401906001016200657f565b5091979650505050505050565b60006000198203620065c057620065c062005c87565b5060010190565b634e487b7160e01b600052601260045260246000fdfe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a260805161523f620000e86000396000818161036f0152611396015261523f6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b602082015260006022820181905260308201819052916102189101604051602081830303815290604052610213906143fe565b610731565b60408051616e7360f01b602082015260006022820181905260308201529192506102649101604051602081830303815290604052610255906143fe565b61025f348461443b565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c93660046144ab565b610a71565b6040516103a59190614561565b3480156103e757600080fd5b506102646103f63660046145b6565b610ab4565b34801561040757600080fd5b506102646104163660046145b6565b610b67565b34801561042757600080fd5b506103ce610436366004614643565b610c12565b34801561044757600080fd5b506102646104563660046146a1565b610c5c565b34801561046757600080fd5b5061026461047636600461474e565b610d45565b34801561048757600080fd5b5061026461049636600461474e565b610dfb565b3480156104a757600080fd5b506104bb6104b63660046147e4565b610ea8565b6040519081526020016103a5565b6103ce6104d73660046148b4565b610eb9565b3480156104e857600080fd5b506104fc6104f73660046148fb565b610ef5565b6040516103a59392919061494e565b34801561051757600080fd5b506103ce6105263660046149f9565b610f4a565b34801561053757600080fd5b50610264610546366004614a62565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614ac3565b610fce565b34801561059d57600080fd5b506104bb6105ac3660046144ab565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614b1c565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614b7b565b61117b565b3480156105fd57600080fd5b5061026461060c366004614bd2565b611188565b34801561061d57600080fd5b5061026461062c366004614c0c565b611204565b34801561063d57600080fd5b5061026461064c366004614c9b565b6112af565b34801561065d57600080fd5b5061026461066c366004614d28565b61135d565b34801561067d57600080fd5b506104fc61068c366004614a62565b6114d8565b34801561069d57600080fd5b506103ce6106ac366004614643565b61152a565b3480156106bd57600080fd5b506104bb6106cc3660046147e4565b61156b565b3480156106dd57600080fd5b506102646106ec3660046144ab565b611576565b3480156106fd57600080fd5b506104bb61070c3660046147e4565b6115f6565b34801561071d57600080fd5b5061026461072c3660046145b6565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df906143fe565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b1906143fe565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd906143fe565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0a92505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d1d565b905061103c8186338787611def565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d1d565b90506110718187338888611def565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ec4565b90506110cc8188338989611def565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f5e565b6000610807848484611fa6565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f0906143fe565b33611fbc565b611200828261200d565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211f92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a92508991899089908190840183828082843760009201919091525061237892505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f5906143fe565b612390565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d5b565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250c565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d590829061200d565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262192505050565b92509250925093509350939050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612647915050565b6000610eb38261265d565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d19050565b5050505050565b6000610eb38261272a565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275092505050565b6000610c536116bb868661278b565b60ff858116601b0360080285901c166116d485876127e1565b612824565b6115ef85856116e884876127e1565b8561211f565b60606000606060006116ff85612875565b905061170c878783612898565b93506000611719866128d1565b905080156117eb5761172b888861290e565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f6147fd565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612921565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782826000876129a1565b6117d1818561443b565b9350505080806117e090614d86565b915050611783565b50505b505093509350939050565b60008061180285612a70565b90969095509350505050565b60006060600061181d86612a85565b905060005b81518110156118fa57600082828151811061183f5761183f614d45565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5390919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614da5565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614dcd565b915050611822565b5061190787858888612b71565b909350915060005b81518110156119e757600082828151811061192c5761192c614d45565b602002602001015190506119586002826affffffffffffffffffffff1916612b5390919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614da5565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614dcd565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8c565b8360ff161015611a2257611a1b85858585612c9e565b9050610807565b611a1b8585611a3085612c8c565b611a3a9087614de7565b611ae1565b611a498282612ccb565b61120057611a5682612390565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614d5b565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab2858561290e565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d0e565b6060610807611af1858585612921565b611b1484611aff888861290e565b9060ff166028026038011c64ffffffffff1690565b6000613124565b6115ef8585858585611b2c8b611b74565b613147565b611b3a81612c8c565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8c565b611b6e9087614de7565b85612750565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc906143fe565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c35906143fe565b84613442565b60206000612824565b60606000611c52878761290e565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614e00565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612921565b9050611cfd81611cf78888614e00565b88613124565b9998505050505050505050565b6112008282611d1885611b74565b61345e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d6257611d62614d45565b602002602001018181525050826001600160a01b031660001b81600181518110611d8e57611d8e614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611dfa8661371e565b15611e0757506001610c53565b85611e1457506000610c53565b600080611e908660008a8a8989604051602401611e3393929190614da5565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b71565b9150915081611ea457600092505050610c53565b80806020019051810190611eb89190614e13565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611efd57611efd614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6a83612c8c565b90508060ff168460ff161015611f925760ff848116601b0360080284901c165b915050610807565b611f8a8686611fa18488614de7565b613799565b6000610807848484611fb788611b74565b611f5e565b6001600160a01b038116611ff6616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176137a9565b6001600160a01b03161461120057611a5682612390565b612037827f79f50b5b0000000000000000000000000000000000000000000000000000000061384e565b6120ac336000848460405160240161204f9190614561565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613974565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121129190614e35565b8251602084012084613985565b600061212b858561278b565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161216193929190614eb2565b60405180910390a2613a3160f11b857fffff000000000000000000000000000000000000000000000000000000000000161461219d5750611aa0565b60006121a886613ac5565b905060005b81518110156122875760008282815181106121ca576121ca614d45565b602002602001015190506121f66004826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612274576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612241908b908b908b908b90600401614ee5565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b505050505b508061227f81614dcd565b9150506121ad565b5061229b828565ffffffffffff1685613b60565b60005b8151811015610df25760008282815181106122bb576122bb614d45565b602002602001015190506122e76008826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612365576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612332908b908b908b908b90600401614ee5565b600060405180830381600087803b15801561234c57600080fd5b505af1158015612360573d6000803e3d6000fd5b505050505b508061237081614dcd565b91505061229e565b610b5f86868686868661238b8d8d61290e565b612d0e565b606081601081901b60006123a383613b70565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156123f6577fffffffffffffffffffffffffffff0000000000000000000000000000000000008316612418565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156124465782612468565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255857612558614d45565b602002602001018181525050828160018151811061257857612578614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261591015b6040516020818303038152906040526125ed906143fe565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263a858561263588611b74565b6116ee565b9250925092509250925092565b606061080784848461265888611b74565b6119fa565b600061266882613b87565b905061267382613c40565b6126cc57818260405160200161268b91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614f1e565b919050565b60006126dd858561290e565b905060006126fa828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127138764ffffffffff8716614e00565b604080516000815260208101909152889088612d0e565b600061273582613d22565b9050806126cc57818260405160200161268b91815260200190565b600061275c858561290e565b90506000612779828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d0e565b600082826040516020016127a0929190614f37565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281c5761280860ff601b83900360080287901c168361443b565b91508061281481614dcd565b9150506127e6565b509392505050565b60006020821061284a5760208204840193506020828161284657612846614f72565b0691505b508254600882021b60208290038084111561281c576001850154600882021c82179150509392505050565b6000600861288560026020614e00565b61288f9190614f88565b9190911c919050565b6060816000036128b75750604080516020810190915260008152610a3d565b60006128c3858561278b565b9050610c5381846000613124565b600060086001806128e460026020614e00565b6128ee9190614e00565b6128f89190614e00565b6129029190614f88565b8260ff911c1692915050565b6000610a3d61291d8484613ddb565b5490565b60008383604051602001612936929190614f37565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8115612a2a57602082106129cb576020820484019350602082816129c7576129c7614f72565b0691505b8115612a2a5760208290036000818510156129ef5750600019600885021c196129fa565b50600019600882021c195b8554600885021b811984511682821617845250818511612a1b575050611aa0565b50600194909401939283900392015b5b60208310612a4c5783548152600190930192601f1990920191602001612a2b565b8215611aa0576000600019600885021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612abf57612abf614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3c91015b604051602081830303815290604052612b34906143fe565b836000611ae1565b9050610807612b4e8260008451613e31565b613ec1565b60008160ff1682612b648560581c90565b1660ff1614905092915050565b60006060600080612b8186613ed2565b90925090506001600160a01b038216612bd25785612b9e87612390565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614f1e565b80612be157612be18689611a3f565b8615612c2d577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1a82610731565b9050612c2a8261025f8b8461443b565b50505b6000612c398760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7157612c6c88888488613fb6565b612c7d565b612c7d8888848861402e565b90999098509650505050505050565b6000600860016128ee60026020614e00565b6060610c53612cad868661278b565b60ff858116601b0360080285901c16612cc685876127e1565b613124565b6000612cfe616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361408f565b80610a3d5750610a3d838361408f565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9857613a3160f11b8788604051602001612d5691815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f9f565b6000612db3828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcc9190614e00565b612dd6919061443b565b9050808214158015612df8575081612dee8688614fe0565b64ffffffffff1614155b15612e48576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e99576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea6848984614161565b905064ffffffffff871660005b8960ff168160ff161015612ee657612eda868260ff166028026038011c64ffffffffff1690565b90910190600101612eb3565b508a7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48b838a868b604051612f1f959493929190615005565b60405180910390a2506000612f338b613ac5565b905060005b8151811015613008576000828281518110612f5557612f55614d45565b60200260200101519050612f816010826affffffffffffffffffffff1916612b5390919063ffffffff16565b15612ff557606081901c6001600160a01b03166355eb5a288e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612fc2979695949392919061504b565b600060405180830381600087803b158015612fdc57600080fd5b505af1158015612ff0573d6000803e3d6000fd5b505050505b508061300081614dcd565b915050612f38565b5082841461302157600061301c8c8c613ddb565b839055505b600061302e8c8c8c612921565b9050613042818a64ffffffffff1689613b60565b5060005b815181101561311657600082828151811061306357613063614d45565b6020026020010151905061308f6020826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561310357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d0979695949392919061504b565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b505050505b508061310e81614dcd565b915050613046565b505050505050505050505050565b60405160208101601f19603f858401011660405283825261281c858585846129a1565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161317d94939291906150a9565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603610b5f5760006131be87613ac5565b905060005b81518110156132a15760008282815181106131e0576131e0614d45565b6020026020010151905061320c6001826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561328e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061325b908c908c908c908c908c908c906004016150e8565b600060405180830381600087803b15801561327557600080fd5b505af1158015613289573d6000803e3d6000fd5b505050505b508061329981614dcd565b9150506131c3565b5060006132ae888861278b565b905060006020870190506132c6826000838a5161422f565b60006132d1856128d1565b11156133555760006132e38a8a613ddb565b878155905060208601915060008060005b6132fd886128d1565b8160ff161015613350576133128d8d83612921565b925061332d8a8260ff166028026038011c64ffffffffff1690565b915061333c836000878561422f565b613346828661443b565b94506001016132f4565b505050505b60005b835181101561343657600084828151811061337557613375614d45565b602002602001015190506133a16002826affffffffffffffffffffff1916612b5390919063ffffffff16565b15613423576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906133f0908e908e908e908e908e908e906004016150e8565b600060405180830381600087803b15801561340a57600080fd5b505af115801561341e573d6000803e3d6000fd5b505050505b508061342e81614dcd565b915050613358565b50505050505050505050565b60408051602081018490529081018290526000906060016127a0565b827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161348e9190615141565b60405180910390a2613a3160f11b837fffff00000000000000000000000000000000000000000000000000000000000016146134c957505050565b60006134d484613ac5565b905060005b81518110156135b15760008282815181106134f6576134f6614d45565b602002602001015190506135226040826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561359e576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061356b90899089908990600401615154565b600060405180830381600087803b15801561358557600080fd5b505af1158015613599573d6000803e3d6000fd5b505050505b50806135a981614dcd565b9150506134d9565b5060006135be858561278b565b90506136178160006135cf86612875565b67ffffffffffffffff8111156135e7576135e76147fd565b6040519080825280601f01601f191660200182016040528015613611576020820181803683370190505b50613b60565b6000613622846128d1565b11156136435760006136348686613ddb565b90506136418160206142ef565b505b60005b8251811015610b5f57600083828151811061366357613663614d45565b6020026020010151905061368f6080826affffffffffffffffffffff1916612b5390919063ffffffff16565b1561370b576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906136d8908a908a908a90600401615154565b600060405180830381600087803b1580156136f257600080fd5b505af1158015613706573d6000803e3d6000fd5b505050505b508061371681614dcd565b915050613646565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052613791906143fe565b909114919050565b600061080782611aff868661290e565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106137e2576137e2614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e6572000000000000000000000000000000000000603083015260009161384391016125d5565b60601c949350505050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081526001600160e01b0319821660048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa9250505080156138d1575060408051601f3d908101601f191682019092526138ce91810190614e13565b60015b613922576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b806108fc576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526001600160e01b031983166024820152604401610290565b6060600080610a558787878761402e565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139cd576139cd614d45565b60200260200101818152505082816001815181106139ed576139ed614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a59906143fe565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613aff57613aff614d45565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3c9101612b1c565b6108fc838360208401845161422f565b6000613b7e6070601061443b565b9190911b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bc057613bc0614d45565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c18906143fe565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c7957613c79614d45565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d1691015b604051602081830303815290604052613cee906143fe565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613d5b57613d5b614d45565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613db3906143fe565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613df0929190614f37565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613e44575083518211155b613e80578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102909392919061517d565b60208401613e8e848261443b565b90506000613e9c8585614e00565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d836015600061432c565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f0c57613f0c614d45565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d73000000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009081908190613fa590613f7f906143fe565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836143a7565b60006060836001600160a01b03166000613fd18589896143b3565b604051613fde91906151a2565b60006040518083038185875af1925050503d806000811461401b576040519150601f19603f3d011682016040523d82523d6000602084013e614020565b606091505b509097909650945050505050565b60006060836001600160a01b03166140478488886143b3565b60405161405491906151a2565b600060405180830381855af49150503d806000811461401b576040519150601f19603f3d011682016040523d82523d6000602084013e614020565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106140c8576140c8614d45565b602002602001018181525050826001600160a01b031660001b816001815181106140f4576140f4614d45565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141559101613cd6565b9050610c538160f81c90565b600064ffffffffff8211156141a5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106141d757808503820191506141df565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156142a957602083106142595760208304840193506020838161425557614255614f72565b0692505b82156142a95760208390036000600019600884021c1990506008850281811c91508451811c905081198754168282161787555081831161429a575050611aa0565b50600194909401939182019190035b5b602081106142cb5781518455600190930192602090910190601f19016142aa565b8015611aa0576000600019600883021c198554845182169119161785555050505050565b600060206142fe83601f61443b565b61430891906151be565b614312908461443b565b90505b808310156108fc5760008355600183019250614315565b6060600061433a8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161436057614360614f72565b04905060405193506020840160208202810160405281855260005b8281101561439b578451871c82529387019360209091019060010161437b565b50505050509392505050565b600080611802856143e2565b60608383836040516020016143ca939291906151e0565b60405160208183030381529060405290509392505050565b6020810151603482015160609190911c9060009060f81c612a7e565b8051602080830151919081101561441f576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb3614425565b60008083601f84011261446057600080fd5b50813567ffffffffffffffff81111561447857600080fd5b6020830191508360208260051b850101111561449357600080fd5b9250929050565b803560ff811681146126cc57600080fd5b6000806000806000608086880312156144c357600080fd5b85359450602086013567ffffffffffffffff8111156144e157600080fd5b6144ed8882890161444e565b909550935061450090506040870161449a565b949793965091946060013592915050565b60005b8381101561452c578181015183820152602001614514565b50506000910152565b6000815180845261454d816020860160208601614511565b601f01601f19169290920160200192915050565b602081526000610a3d6020830184614535565b60008083601f84011261458657600080fd5b50813567ffffffffffffffff81111561459e57600080fd5b60208301915083602082850101111561449357600080fd5b600080600080600080608087890312156145cf57600080fd5b86359550602087013567ffffffffffffffff808211156145ee57600080fd5b6145fa8a838b0161444e565b909750955085915061460e60408a0161449a565b9450606089013591508082111561462457600080fd5b5061463189828a01614574565b979a9699509497509295939492505050565b6000806000806060858703121561465957600080fd5b84359350602085013567ffffffffffffffff81111561467757600080fd5b6146838782880161444e565b909450925061469690506040860161449a565b905092959194509250565b60008060008060008060008060a0898b0312156146bd57600080fd5b88359750602089013567ffffffffffffffff808211156146dc57600080fd5b6146e88c838d0161444e565b909950975060408b013591508082111561470157600080fd5b61470d8c838d01614574565b909750955060608b0135945060808b013591508082111561472d57600080fd5b5061473a8b828c01614574565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561476957600080fd5b87359650602088013567ffffffffffffffff8082111561478857600080fd5b6147948b838c0161444e565b90985096508691506147a860408b0161449a565b955060608a01359150808211156147be57600080fd5b506147cb8a828b01614574565b989b979a50959894979596608090950135949350505050565b6000602082840312156147f657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561483c5761483c6147fd565b604052919050565b600082601f83011261485557600080fd5b813567ffffffffffffffff81111561486f5761486f6147fd565b6148826020601f19601f84011601614813565b81815284602083860101111561489757600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156148c757600080fd5b82359150602083013567ffffffffffffffff8111156148e557600080fd5b6148f185828601614844565b9150509250929050565b6000806000806060858703121561491157600080fd5b84359350602085013567ffffffffffffffff81111561492f57600080fd5b61493b8782880161444e565b9598909750949560400135949350505050565b6060815260006149616060830186614535565b8460208401528281036040840152610a678185614535565b600082601f83011261498a57600080fd5b8135602067ffffffffffffffff8211156149a6576149a66147fd565b8160051b6149b5828201614813565b92835284810182019282810190878511156149cf57600080fd5b83870192505b848310156149ee578235825291830191908301906149d5565b979650505050505050565b600080600080600060a08688031215614a1157600080fd5b85359450602086013567ffffffffffffffff811115614a2f57600080fd5b614a3b88828901614979565b945050614a4a6040870161449a565b94979396509394606081013594506080013592915050565b600080600060408486031215614a7757600080fd5b83359250602084013567ffffffffffffffff811115614a9557600080fd5b614aa18682870161444e565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614ad857600080fd5b8335614ae381614aae565b925060208401359150604084013567ffffffffffffffff811115614b0657600080fd5b614b1286828701614844565b9150509250925092565b60008060008060808587031215614b3257600080fd5b84359350602085013567ffffffffffffffff811115614b5057600080fd5b614b5c87828801614979565b935050614b6b6040860161449a565b9396929550929360600135925050565b600080600060608486031215614b9057600080fd5b83359250602084013567ffffffffffffffff811115614bae57600080fd5b614bba86828701614979565b925050614bc96040850161449a565b90509250925092565b60008060408385031215614be557600080fd5b8235614bf081614aae565b9150602083013567ffffffffffffffff8111156148e557600080fd5b60008060008060008060808789031215614c2557600080fd5b86359550602087013567ffffffffffffffff80821115614c4457600080fd5b614c508a838b0161444e565b90975095506040890135915065ffffffffffff82168214614c7057600080fd5b9093506060880135908082111561462457600080fd5b803564ffffffffff811681146126cc57600080fd5b60008060008060008060008060c0898b031215614cb757600080fd5b88359750602089013567ffffffffffffffff80821115614cd657600080fd5b614ce28c838d0161444e565b9099509750879150614cf660408c0161449a565b9650614d0460608c01614c86565b9550614d1260808c01614c86565b945060a08b013591508082111561472d57600080fd5b600060208284031215614d3a57600080fd5b8135610a3d81614aae565b634e487b7160e01b600052603260045260246000fd5b604081526000614d6e6040830185614535565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d9c57614d9c614425565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c536060830184614535565b60006000198203614de057614de0614425565b5060010190565b60ff8281168282160390811115610eb357610eb3614425565b81810381811115610eb357610eb3614425565b600060208284031215614e2557600080fd5b81518015158114610a3d57600080fd5b600060208284031215614e4757600080fd5b81517fffffffffffffffffffffffffffffffff0000000000000000000000000000000081168114610a3d57600080fd5b600081518084526020808501945080840160005b83811015614ea757815187529582019590820190600101614e8b565b509495945050505050565b606081526000614ec56060830186614e77565b65ffffffffffff851660208401528281036040840152610a678185614535565b848152608060208201526000614efe6080830186614e77565b65ffffffffffff8516604084015282810360608401526149ee8185614535565b8281526040602082015260006108076040830184614535565b82815260006020808301845182860160005b82811015614f6557815184529284019290840190600101614f49565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb3614425565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c536060830184614535565b64ffffffffff818116838216019080821115614ffe57614ffe614425565b5092915050565b60a08152600061501860a0830188614e77565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb88185614535565b87815260e06020820152600061506460e0830189614e77565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261509b8185614535565b9a9950505050505050505050565b6080815260006150bc6080830187614e77565b82810360208401526150ce8187614535565b905084604084015282810360608401526149ee8185614535565b86815260c06020820152600061510160c0830188614e77565b82810360408401526151138188614535565b9050856060840152828103608084015261512d8186614535565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614e77565b83815260606020820152600061516d6060830185614e77565b9050826040830152949350505050565b6060815260006151906060830186614535565b60208301949094525060400152919050565b600082516151b4818460208701614511565b9190910192915050565b6000826151db57634e487b7160e01b600052601260045260246000fd5b500490565b600084516151f2818460208901614511565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b615ff480620048b183390190565b608051614829620000886000396000818161052a01528181610585015261095c01526148296000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004613fed565b610148565b60405190151581526020015b60405180910390f35b6100b26101e1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614045565b6101f0565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614045565b610222565b6100b261023d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101eb610247565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022a610279565b6102326104c3565b61023a610611565b50565b60006101eb610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102765750335b90565b610281610a9c565b610289610ab4565b610291610b59565b610299610be1565b6102a1610c81565b6102a9610d09565b6102b1610d89565b6102b9610e11565b6102c1610eb1565b6102c9610f51565b6102d161100a565b6102d96110a8565b60408051616e7360f01b6020820152600060228201819052603082015261031b91015b604051602081830303815290604052610314906140f6565b6001611130565b60408051616e7360f01b6020820152600060228201819052603082015261036391015b604051602081830303815290604052610356906140f6565b61035e6101e1565b611215565b60408051616e7360f01b602082015260006022820181905260308201526103ad91015b60405160208183030381529060405261039e906140f6565b6103a66101e1565b6001611323565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526103db91016102fc565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610409910161033e565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104379101610386565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261046591016102fc565b60408051616e7360f01b6020820152641ddbdc9b1960da1b602282015260006030820152610493910161033e565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104c19101610386565b565b61023a6104ce6101e1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f636f7265000000000000000000000000000000000000000000000000000000006030830152917f00000000000000000000000000000000000000000000000000000000000000009101604051602081830303815290604052610563906140f6565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526113f5565b60006040518061026001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147fb60229139815260200160405180606001604052806033815260200161479f6033913981526020016040518060600160405280603181526020016146946031913981526020016040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d290000000081525081526020016040518060600160405280602881526020016147206028913981526020016040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c6279746573290000000081525081526020016040518060600160405280604081526020016145df6040913981526020016040518060600160405280602881526020016146c56028913981526020016040518060600160405280602481526020016145bb6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d65737061636528627974657333322900000000000081525081526020016040518060600160405280602981526020016147d26029913981526020016040518060600160405280602581526020016147486025913981526020016040518060600160405280602481526020016146706024913981526020016040518060600160405280602881526020016146486028913981526020016040518060600160405280603381526020016146ed60339139815260200160405180606001604052806029815260200161461f60299139815260200160405180606001604052806032815260200161476d603291399052905060005b6013811015610a4c57610a396109006101e1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f636f7265000000000000000000000000000000000000000000000000000000006030830152917f00000000000000000000000000000000000000000000000000000000000000009101604051602081830303815290604052610995906140f6565b8686601381106109a7576109a761411a565b60200201518787601381106109be576109be61411a565b6020020151805190602001206040516024016109dc93929190614180565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d6118000000000000000000000000000000000000000000000000000000001790526113f5565b5080610a44816141e1565b9150506108ec565b5050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610a97573391505090565b919050565b610aa4611422565b610aac6114c2565b6104c1611560565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610b14906140f6565b7e14010014000000000000000000000000000000000000000000000000000000610b3c6115e8565b610b44611660565b610b4c61169a565b610b5461171f565b611796565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e63657300000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610bb9906140f6565b630100080160dd1b610bc96115e8565b610bd161186a565b610bd961169a565b610b546118a4565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526104c19101604051602081830303815290604052610c41906140f6565b7e14010014000000000000000000000000000000000000000000000000000000610c6961191b565b610c71611660565b610c7961199a565b610b54611a64565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f0000000000000000000000000000000060308201526104c19101604051602081830303815290604052610ce1906140f6565b630100080160dd1b610cf1611adb565b610cf96115e8565b610d01611b5a565b610b54611c24565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c656761740000000000000000000000000000000060308201526104c19101604051602081830303815290604052610d69906140f6565b630100080160dd1b610d796115e8565b610d816115e8565b610d0161169a565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610de9906140f6565b630101000160d81b610df9611c9b565b610e01611cd5565b610e09611d0f565b610b54611dd9565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d730000000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052610e71906140f6565b7e15020014010000000000000000000000000000000000000000000000000000610e996115e8565b610ea1611e50565b610ea9611ecf565b610b54611f46565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201526104c19101604051602081830303815290604052610f11906140f6565b7e24020020040000000000000000000000000000000000000000000000000000610f39612010565b610f4161204a565b610f496120c9565b610b54612140565b604080517f6f740000000000000000000000000000000000000000000000000000000000006020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201526104c19101604051602081830303815290604052610fcc906140f6565b7c0100000000000000000000000000000000000000000000000000000000610ff2612010565b610ffa61220a565b6110026120c9565b610b54612244565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526104c1910160405160208183030381529060405261106a906140f6565b7c01000000000000000000000000000000000000000000000000000000006110906115e8565b6110986122bb565b6110a0611ecf565b610b546122f5565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d526567697374727900000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611108906140f6565b630100080160dd1b611118611660565b6111206115e8565b61112861236c565b610b54611ecf565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106111665761116661411a565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261121091015b6040516020818303038152906040526111d8906140f6565b826000856040516020016111f391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b6123e3565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061124b5761124b61411a565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052611210906112b7906140f6565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006123e3565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106113585761135861411a565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106113915761139161411a565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526113ef91016111c0565b50505050565b6060600080611406878787876123ff565b91509150816114185761141881612480565b9695505050505050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611482906140f6565b7e600302202020000000000000000000000000000000000000000000000000006114aa6115e8565b6114b2612488565b6114ba6125d7565b610b5461264e565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526104c19101604051602081830303815290604052611522906140f6565b7c01000000000000000000000000000000000000000000000000000000006115486115e8565b6115506122bb565b6115586125d7565b610b54612816565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201526104c191016040516020818303038152906040526115c0906140f6565b630101000160d81b6115d06115e8565b6115d8611cd5565b6115e061288d565b610b54612904565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106116225761162261411a565b602002602001019060c581111561163b5761163b6141fb565b908160c581111561164e5761164e6141fb565b90525061165a8161297b565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816116b15790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816117365790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60006117a0610a50565b90503073ffffffffffffffffffffffffffffffffffffffff8216036117d2576117cd878787878787612b3f565b611861565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f499061182e908a908a908a908a908a908a90600401614269565b600060405180830381600087803b15801561184857600080fd5b505af115801561185c573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816118bb5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050604f816000815181106119555761195561411a565b602002602001019060c581111561196e5761196e6141fb565b908160c5811115611981576119816141fb565b81525050605f816001815181106116225761162261411a565b6040805160028082526060828101909352816020015b60608152602001906001900390816119b05790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611a1057611a1061411a565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611a7b5790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611b1557611b1561411a565b602002602001019060c5811115611b2e57611b2e6141fb565b908160c5811115611b4157611b416141fb565b815250506061816001815181106116225761162261411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611b705790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611bd057611bd061411a565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611c3b5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611b1557611b1561411a565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106116225761162261411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611d255790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611d8557611d8561411a565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611df05790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611e8a57611e8a61411a565b602002602001019060c5811115611ea357611ea36141fb565b908160c5811115611eb657611eb66141fb565b815250506060816001815181106116225761162261411a565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ee65790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160028082526060828101909352816020015b6060815260200190600190039081611f5c5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611fbc57611fbc61411a565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106117115761171161411a565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106116225761162261411a565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106120845761208461411a565b602002602001019060c581111561209d5761209d6141fb565b908160c58111156120b0576120b06141fb565b815250506043816001815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816120e05790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160028082526060828101909352816020015b60608152602001906001900390816121565790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106121b6576121b661411a565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106117115761171161411a565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161225b5790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106117115761171161411a565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106116225761162261411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161230c5790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816123835790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6123f885856123f28487612e34565b85612e77565b5050505050565b600060608373ffffffffffffffffffffffffffffffffffffffff166124258488886130d0565b60405161243291906142b3565b600060405180830381855af49150503d806000811461246d576040519150601f19603f3d011682016040523d82523d6000602084013e612472565b606091505b509097909650945050505050565b805160208201fd5b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106124c3576124c361411a565b602002602001019060c58111156124dc576124dc6141fb565b908160c58111156124ef576124ef6141fb565b81525050605f816001815181106125085761250861411a565b602002602001019060c5811115612521576125216141fb565b908160c5811115612534576125346141fb565b81525050605f8160028151811061254d5761254d61411a565b602002602001019060c5811115612566576125666141fb565b908160c5811115612579576125796141fb565b8152505060c4816003815181106125925761259261411a565b602002602001019060c58111156125ab576125ab6141fb565b908160c58111156125be576125be6141fb565b8152505060c4816004815181106116225761162261411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816125ee5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b60408051600580825260c08201909252606091816020015b60608152602001906001900390816126665790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106126c6576126c661411a565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061271a5761271a61411a565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d610000000000000000000000000000000000000000008152508160028151811061276e5761276e61411a565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106127c2576127c261411a565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106117115761171161411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161282d5790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b60608152602001906001900390816128a45790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b604080516001808252818301909252606091816020015b606081526020019060019003908161291b5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106117115761171161411a565b6000601c825111156129ae578151604051635318beb960e01b81526004016129a591815260200190565b60405180910390fd5b60008080805b8551811015612a895760006129f28783815181106129d4576129d461411a565b602002602001015160c58111156129ed576129ed6141fb565b6130ff565b905080600003612a0757600190920191612a3f565b8215612a3f576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612a6057612a6061411a565b602002602001015160c5811115612a7957612a796141fb565b901b9490941793506001016129b4565b506005811115612aaf57604051635318beb960e01b8152600481018290526024016129a5565b84518190036008612ac2600260206142cf565b612acc91906142e2565b83901b939093179260086001612ae4600260206142cf565b612aee91906142cf565b612af891906142e2565b81901b93909317926008600180612b11600260206142cf565b612b1b91906142cf565b612b2591906142cf565b612b2f91906142e2565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612bb857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612c1957613a3160f11b8687604051602001612bd791815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526129a59392916004016142f9565b612c2485600061315f565b612c2f8460016132e1565b612c3a8360006132e1565b60e084901c60e885901c0160ff16825114612c9a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b60e085901c60e886901c0160ff16815114612cfa5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612d725760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016129a5565b612d7b86613488565b15612dd5578586604051602001612d9491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526129a5929160040161433a565b612e218686868686604051602001612ded9190614353565b60405160208183030381529060405286604051602001612e0d9190614353565b604051602081830303815290604052613554565b612e2c866001611130565b505050505050565b600080805b8360ff16811015612e6f57612e5b60ff601b83900360080287901c1683614366565b915080612e67816141e1565b915050612e39565b509392505050565b6000612e838585613658565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051612eb9939291906143b4565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614612ef557506113ef565b6000612f00866136ae565b905060005b8151811015612fdf576000828281518110612f2257612f2261411a565b60200260200101519050612f4e6004826affffffffffffffffffffff191661377690919063ffffffff16565b15612fcc576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612f99908b908b908b908b906004016143e7565b600060405180830381600087803b158015612fb357600080fd5b505af1158015612fc7573d6000803e3d6000fd5b505050505b5080612fd7816141e1565b915050612f05565b50612ff3828565ffffffffffff1685613794565b60005b81518110156118615760008282815181106130135761301361411a565b6020026020010151905061303f6008826affffffffffffffffffffff191661377690919063ffffffff16565b156130bd576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061308a908b908b908b908b906004016143e7565b600060405180830381600087803b1580156130a457600080fd5b505af11580156130b8573d6000803e3d6000fd5b505050505b50806130c8816141e1565b915050612ff6565b60608383836040516020016130e79392919061442b565b60405160208183030381529060405290509392505050565b6000808260c5811115613114576131146141fb565b60ff169050606181101561312e57601f1660010192915050565b60618360c5811115613142576131426141fb565b036131505750601492915050565b50600092915050565b50919050565b8015801561316b575081155b156131a5576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016129a5565b60006131b0836137a4565b905060058111156131f0576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016129a5565b60006131fb846137e1565b905060006132098383614366565b9050601c811115613249576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016129a5565b60005b82811015612e2c5760ff601b82900360080287901c16600081900361329d576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156132d8576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161324c565b801580156132ed575081155b1561330e57604051635318beb960e01b8152600060048201526024016129a5565b6000613319836137a4565b9050600581111561334057604051635318beb960e01b8152600481018290526024016129a5565b600061334b846137e1565b905060006133598383614366565b9050601c81111561338057604051635318beb960e01b8152600481018290526024016129a5565b60008060005b838110156134415760006133ae61339d8a846137f3565b60c58111156129ed576129ed6141fb565b11156133f8578481106133ed576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191613439565b84811015613432576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613386565b5083821461346557604051635318beb960e01b8152600481018390526024016129a5565b84811461186157604051635318beb960e01b8152600481018290526024016129a5565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106134c1576134c161411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905260009061354090613530906140f6565b836000630101000160d81b61381b565b905061354c8160f81c90565b949350505050565b6000613561868686613851565b9050600061356f8484613873565b9050600061357d8585613890565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106135b7576135b761411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261364c90613623906140f6565b828686867e600302202020000000000000000000000000000000000000000000000000006138bc565b50505050505050505050565b6000828260405160200161366d92919061447d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106136e8576136e861411a565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061375f90613757906140f6565b836000613bab565b905061354c6137718260008451613be5565b613c75565b60008160ff16826137878560581c90565b1660ff1614905092915050565b6112108383602084018451613c86565b600060086001806137b7600260206142cf565b6137c191906142cf565b6137cb91906142cf565b6137d591906142e2565b8260ff911c1692915050565b6000600860016137c1600260206142cf565b6000601b8290036008028360ff911c1660c5811115613814576138146141fb565b9392505050565b600061384861382a8686613658565b60ff858116601b0360080285901c166138438587612e34565b613d46565b95945050505050565b60408051602081018590529081018390526060818101839052906080016130e7565b8151815160009181810160389190911b1760609190911b17613814565b606082826040516020016138a59291906144b8565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516138f294939291906144e7565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603612e2c576000613933876136ae565b905060005b8151811015613a165760008282815181106139555761395561411a565b602002602001015190506139816001826affffffffffffffffffffff191661377690919063ffffffff16565b15613a03576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906139d0908c908c908c908c908c908c90600401614526565b600060405180830381600087803b1580156139ea57600080fd5b505af11580156139fe573d6000803e3d6000fd5b505050505b5080613a0e816141e1565b915050613938565b506000613a238888613658565b90506000602087019050613a3b826000838a51613c86565b6000613a46856137a4565b1115613aca576000613a588a8a613d97565b878155905060208601915060008060005b613a72886137a4565b8160ff161015613ac557613a878d8d83613ded565b9250613aa28a8260ff166028026038011c64ffffffffff1690565b9150613ab18360008785613c86565b613abb8286614366565b9450600101613a69565b505050505b60005b835181101561364c576000848281518110613aea57613aea61411a565b60200260200101519050613b166002826affffffffffffffffffffff191661377690919063ffffffff16565b15613b98576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613b65908e908e908e908e908e908e90600401614526565b600060405180830381600087803b158015613b7f57600080fd5b505af1158015613b93573d6000803e3d6000fd5b505050505b5080613ba3816141e1565b915050613acd565b606061354c613bbb858585613ded565b613bde84613bc98888613e6d565b9060ff166028026038011c64ffffffffff1690565b6000613e80565b6000818311158015613bf8575083518211155b613c34578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016129a59392919061457f565b60208401613c428482614366565b90506000613c5085856142cf565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006138148360156000613ea3565b8215613d005760208310613cb057602083048401935060208381613cac57613cac6145a4565b0692505b8215613d005760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311613cf15750506113ef565b50600194909401939182019190035b5b60208110613d225781518455600190930192602090910190601f1901613d01565b80156113ef576000600019600883021c198554845182169119161785555050505050565b600060208210613d6c57602082048401935060208281613d6857613d686145a4565b0691505b508254600882021b602082900380841115612e6f576001850154600882021c82179150509392505050565b60008282604051602001613dac92919061447d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e0292919061447d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613814613e7c8484613d97565b5490565b60405160208101601f19603f8584010116604052838252612e6f85858584613f1e565b60606000613eb18560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613ed757613ed76145a4565b04905060405193506020840160208202810160405281855260005b82811015613f12578451871c825293870193602090910190600101613ef2565b50505050509392505050565b8115613fa75760208210613f4857602082048401935060208281613f4457613f446145a4565b0691505b8115613fa7576020829003600081851015613f6c5750600019600885021c19613f77565b50600019600882021c195b8554600885021b811984511682821617845250818511613f985750506113ef565b50600194909401939283900392015b5b60208310613fc95783548152600190930192601f1990920191602001613fa8565b82156113ef576000600019600885021c198251865482169119161782525050505050565b600060208284031215613fff57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461381457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561405757600080fd5b813567ffffffffffffffff8082111561406f57600080fd5b818401915084601f83011261408357600080fd5b8135818111156140955761409561402f565b604051601f8201601f19908116603f011681019083821181831017156140bd576140bd61402f565b816040528281528760208487010111156140d657600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156131595760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561414b578181015183820152602001614133565b50506000910152565b6000815180845261416c816020860160208601614130565b601f01601f19169290920160200192915050565b8381526060602082015260006141996060830185614154565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036141f4576141f46141cb565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561425c57601f1986840301895261424a838351614154565b9884019892509083019060010161422e565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061429460c0830185614211565b82810360a08401526142a68185614211565b9998505050505050505050565b600082516142c5818460208701614130565b9190910192915050565b818103818111156101db576101db6141cb565b80820281158282048414176101db576101db6141cb565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006138486060830184614154565b82815260406020820152600061354c6040830184614154565b6020815260006138146020830184614211565b808201808211156101db576101db6141cb565b600081518084526020808501945080840160005b838110156143a95781518752958201959082019060010161438d565b509495945050505050565b6060815260006143c76060830186614379565b65ffffffffffff8516602084015282810360408401526114188185614154565b8481526080602082015260006144006080830186614379565b65ffffffffffff8516604084015282810360608401526144208185614154565b979650505050505050565b6000845161443d818460208901614130565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b82815260006020808301845182860160005b828110156144ab5781518452928401929084019060010161448f565b5091979650505050505050565b600083516144ca818460208801614130565b8351908301906144de818360208801614130565b01949350505050565b6080815260006144fa6080830187614379565b828103602084015261450c8187614154565b905084604084015282810360608401526144208185614154565b86815260c06020820152600061453f60c0830188614379565b82810360408401526145518188614154565b9050856060840152828103608084015261456b8186614154565b9150508260a0830152979650505050505050565b6060815260006145926060830186614154565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a608060405234801561001057600080fd5b50615fd380620000216000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063742d6118116100e3578063bfdfaff71161008c578063d5f8337f11610066578063d5f8337f14610358578063e1af802c1461036b578063ef5d6bbb1461037357600080fd5b8063bfdfaff71461031f578063c9c85a6014610332578063ce5e8dd91461034557600080fd5b80638fc8cf7e116100bd5780638fc8cf7e146102d9578063a92813ad146102f9578063b29e40891461030c57600080fd5b8063742d6118146102a05780638d53b208146102b35780638da798da146102c657600080fd5b806326d981021161014557806345afd1991161011f57806345afd1991461026757806345ec93541461027a578063530f4b601461028d57600080fd5b806326d98102146102155780633350b6a91461024157806340554c3a1461025457600080fd5b80630ba51f49116101765780630ba51f49146101cf578063119df25f146101e25780631d2257ba1461020257600080fd5b806301ffc9a71461019257806305609129146101ba575b600080fd5b6101a56101a03660046151bf565b610386565b60405190151581526020015b60405180910390f35b6101cd6101c83660046151ef565b6103ef565b005b6101cd6101dd36600461526b565b61040e565b6101ea610626565b6040516001600160a01b0390911681526020016101b1565b6101cd6102103660046153c6565b610635565b61022861022336600461541f565b6106b6565b6040516001600160e01b031990911681526020016101b1565b6101cd61024f366004615474565b6107ae565b6101cd6102623660046151ef565b610975565b6101cd6102753660046154b6565b61098d565b604051601f1936013581526020016101b1565b6101cd61029b3660046154ff565b610a68565b6102286102ae36600461553d565b610aa9565b6101cd6102c13660046151ef565b610b64565b6101cd6102d436600461558b565b610b7a565b6102ec6102e73660046155c5565b610c93565b6040516101b1919061564b565b6101cd6103073660046151ef565b610e9b565b6101cd61031a3660046156ad565b610f0f565b6101cd61032d3660046156c6565b610fb3565b6101cd610340366004615700565b61107e565b6102ec6103533660046155c5565b611127565b6101cd6103663660046154ff565b6112f1565b6101ea611358565b6101cd6103813660046151ef565b611362565b60006001600160e01b031982167fb42128800000000000000000000000000000000000000000000000000000000014806103e957506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610400826103fb610626565b611389565b61040a828261140f565b5050565b60006104198961145c565b6fffffffffffffffffffffffffffffffff191603610478578761043b89611473565b6040517fe4ac069e00000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b60405180910390fd5b7dffffffffffffffffffffffffffff000000000000000000000000000000008816616e7360f01b176104a98161159f565b6105ef576040805161737960f01b60208201526000602282018190527f636f72650000000000000000000000000000000000000000000000000000000060308301529161050e910160405160208183030381529060405261050990615745565b611689565b509050600080826001600160a01b03168460405160240161053191815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb29e408900000000000000000000000000000000000000000000000000000000179052516105949190615769565b600060405180830381855af49150503d80600081146105cf576040519150601f19603f3d011682016040523d82523d6000602084013e6105d4565b606091505b5091509150816105e7576105e78161177a565b5050506105fb565b6105fb816103fb610626565b61061b8989898961060c898b615785565b610616888a615785565b611782565b505050505050505050565b6000610630611a3f565b905090565b610647610640610626565b8484611a71565b61065082611b9b565b801561065d575060008151115b156106b157600061066d83611689565b50905061069a817faea79dd000000000000000000000000000000000000000000000000000000000611bb7565b6106ae6106a5610626565b84846000611cdd565b50505b505050565b60006106c4836103fb610626565b60006106ed6106d38560101b90565b71ffffffffffffffffffffffffffffffffffff1916611d0a565b905060006107026106fd8661145c565b611d0a565b9050600082828660405160200161071b93929190615809565b604051602081830303815290604052905080805190602001209350600061074185611d9a565b90508015610787576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b03198616600482015260240161046f565b85516020870120610799868983611e89565b6107a38684611f91565b505050505092915050565b61737960f01b836001600160f01b031916146108095761737960f01b836107d485611473565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161046f9392919061587f565b610833827fb421288000000000000000000000000000000000000000000000000000000000611bb7565b600061083e8461145c565b6fffffffffffffffffffffffffffffffff191603610860578261043b84611473565b600061086b836120b2565b9050801580159061087c5750838114155b156108be576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161046f565b7dffffffffffffffffffffffffffff000000000000000000000000000000008416616e7360f01b176108ef8161159f565b610901576108fc81610f0f565b61090d565b61090d816103fb610626565b600061091886612194565b90506001600160a01b03811615610941576109328161226f565b61093c8282612343565b61094c565b61094c866001612436565b61095786868661252e565b610961858761260e565b61096d828660016126ae565b505050505050565b610981826103fb610626565b61040a828260016126ae565b61099e83610999610626565b61276d565b60006109a984612784565b9050808211156109ef576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161046f565b610a02846109fd84846158be565b61281e565b600080846001600160a01b03168460405160006040518083038185875af1925050503d8060008114610a50576040519150601f19603f3d011682016040523d82523d6000602084013e610a55565b606091505b50915091508161096d5761096d8161177a565b610a92827f198cf0cd00000000000000000000000000000000000000000000000000000000611bb7565b610a9e836103fb610626565b6106b18383836128b2565b60408051616e7360f01b60208201526000602282018190526030820181905291610aee9101604051602081830303815290604052610ae690615745565b6103fb610626565b50815160208301206000610b0182611d9a565b90508015610b47576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b03198316600482015260240161046f565b610b52828685611e89565b610b5c8285611f91565b509392505050565b610b70826103fb610626565b61040a8282612343565b610ba4827f79f50b5b00000000000000000000000000000000000000000000000000000000611bb7565b610c20610baf610626565b60008484604051602401610bc391906158d1565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052612913565b5061040a826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8691906158e4565b8251602084012084612924565b60606000610c9f611358565b90508267ffffffffffffffff811115610cba57610cba615301565b604051908082528060200260200182016040528015610ced57816020015b6060815260200190600190039081610cd85790505b50915060005b83811015610e93576000806001600160a01b0384168063894ecc58898987818110610d2057610d20615917565b9050602002810190610d32919061592d565b610d40906020810190615961565b8a8a88818110610d5257610d52615917565b9050602002810190610d64919061592d565b602001358b8b89818110610d7a57610d7a615917565b9050602002810190610d8c919061592d565b610d9a90604081019061597e565b604051602401610dad9493929190615a0e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b939093179092529051610dfa9250615769565b600060405180830381855af49150503d8060008114610e35576040519150601f19603f3d011682016040523d82523d6000602084013e610e3a565b606091505b509150915081610e4d57610e4d8161177a565b80806020019051810190610e619190615a37565b858481518110610e7357610e73615917565b602002602001018190525050508080610e8b90615aa5565b915050610cf3565b505092915050565b610ea7826103fb610626565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261040a91015b604051602081830303815290604052610f0890615745565b8383612a57565b616e7360f01b816001600160f01b03191614610f3557616e7360f01b816107d483611473565b610f3e8161159f565b15610f815780610f4d82611473565b6040517f0dc28f6a00000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b610f8c816001612436565b610f9d81610f98610626565b612b7e565b610fb081610fa9610626565b60016126ae565b50565b616e7360f01b836001600160f01b03191614610fd957616e7360f01b836107d485611473565b610fe282611b9b565b611018576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611024836103fb610626565b600061102f83611689565b50905061105c817faea79dd000000000000000000000000000000000000000000000000000000000611bb7565b6110668484612c12565b815115611078576106ae6106a5610626565b50505050565b616e7360f01b826001600160f01b031916146110a457616e7360f01b826107d484611473565b6110b083610999610626565b60006110bb84612784565b905080821115611101576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161046f565b61110f846109fd84846158be565b611078838361111d86612784565b6109fd9190615abf565b60606000611133611358565b90508267ffffffffffffffff81111561114e5761114e615301565b60405190808252806020026020018201604052801561118157816020015b606081526020019060019003908161116c5790505b50915060005b83811015610e93576000806001600160a01b03841680633ae7af088989878181106111b4576111b4615917565b90506020028101906111c69190615ad2565b358a8a888181106111d9576111d9615917565b90506020028101906111eb9190615ad2565b6111f990602081019061597e565b60405160240161120b93929190615b06565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516112589250615769565b600060405180830381855af49150503d8060008114611293576040519150601f19603f3d011682016040523d82523d6000602084013e611298565b606091505b5091509150816112ab576112ab8161177a565b808060200190518101906112bf9190615a37565b8584815181106112d1576112d1615917565b6020026020010181905250505080806112e990615aa5565b915050611187565b61131b827f55f0760f00000000000000000000000000000000000000000000000000000000611bb7565b611327836103fb610626565b6106b1836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612ca6565b6000610630612d95565b61136e826103fb610626565b6113788282612b7e565b61098182611384610626565b612343565b6001600160a01b0381166113c3616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617612dd4565b6001600160a01b03161461040a576113da82611473565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161046f929190615b20565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261040a9101610ef0565b600061146a60706010615abf565b9190911b919050565b606081601081901b60006114868361145c565b90508271ffffffffffffffffffffffffffffffffffff198316156114bf5771ffffffffffffffffffffffffffffffffffff1983166114e1565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6fffffffffffffffffffffffffffffffff198316156115005782611522565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516001600160f01b031990931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190526fffffffffffffffffffffffffffffffff19928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106115d8576115d8615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161167591015b60405160208183030381529060405261164d90615745565b8360007e01010001000000000000000000000000000000000000000000000000000000612ea0565b90506116818160f81c90565b949350505050565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106116c3576116c3615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061175c9061173690615745565b857e15020014010000000000000000000000000000000000000000000000000000612ed6565b92509250925061176d838383612fde565b9550955050505050915091565b805160208201fd5b613a3160f11b866001600160f01b031916148015906117cb57507f6f74000000000000000000000000000000000000000000000000000000000000866001600160f01b03191614155b1561182c57613a3160f11b86876040516020016117ea91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261046f93929160040161587f565b611837856000613004565b611842846001613186565b61184d836000613186565b60e084901c60e885901c0160ff168251146118ad5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b60e085901c60e886901c0160ff1681511461190d5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146119855760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161046f565b61198e8661159f565b156119e85785866040516020016119a791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261046f929160040161572c565b611a348686868686604051602001611a009190615b4b565b60405160208183030381529060405286604051602001611a209190615b4b565b604051602081830303815290604052613332565b61096d866001612436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c80611a6e5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611ab257611ab2615917565b602002602001018181525050826001600160a01b031660001b81600181518110611ade57611ade615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f00000000000000000000000000000000603083015261107891015b604051602081830303815290604052611b5090615745565b82600085604051602001611b6691815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000613436565b600081151580156103e95750611bb08261344b565b1592915050565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081526001600160e01b0319821660048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa925050508015611c3a575060408051601f3d908101601f19168201909252611c3791810190615ba0565b60015b611c8b576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b03198216602482015260440161046f565b806106b1576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526001600160e01b03198316602482015260440161046f565b6060600080611cee878787876134ab565b9150915081611d0057611d008161177a565b9695505050505050565b606060005b6010811015611d6a576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611d6a5780611d6281615aa5565b915050611d0f565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280611681565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611df257611df2615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f72000000000000000000000000000000006030820152815180820390930183528101905260009061168190611e6190615745565b8360007e24020020040000000000000000000000000000000000000000000000000000612ea0565b6000611e95838361368f565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611ef357611ef3615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052611f8890611f5f90615745565b828686867e240200200400000000000000000000000000000000000000000000000000006136ce565b50505050505050565b60606000611f9e836139a5565b90506000611fab846139b5565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061200457612004615917565b602090810291909101810191909152604080517f6f7400000000000000000000000000000000000000000000000000000000000081840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e61747572000000000000000000000000000000006030820152815180820390930183528101905261096d9061208b90615745565b828686867c01000000000000000000000000000000000000000000000000000000006136ce565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106120f7576120f7615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d5265676973747279000000000000000000000000000000000000603083015260009161168191015b60405160208183030381529060405261216c90615745565b8360007e20010020000000000000000000000000000000000000000000000000000000612ea0565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121cd576121cd615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122649061223c90615745565b8360007e15020014010000000000000000000000000000000000000000000000000000612ea0565b60601c949350505050565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106122b1576122b1615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d52656769737472790000000000000000000000000000000000006030820152815180820390930183528101905261040a9061231d90615745565b827e200100200000000000000000000000000000000000000000000000000000006139de565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061237857612378615917565b602002602001018181525050816001600160a01b031660001b816001815181106123a4576123a4615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526106b19061241090615745565b827e010100010000000000000000000000000000000000000000000000000000006139de565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061246c5761246c615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f7572636549647300000000000000000000000000000000000000000060308301526106b191015b6040516020818303038152906040526124de90615745565b826000856040516020016124f991151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000613436565b600061253a8383613c86565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050868160008151811061257957612579615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d730000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611f88906125e590615745565b828686867e150200140100000000000000000000000000000000000000000000000000006136ce565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b8160008151811061265057612650615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526106b19101611b38565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106126e3576126e3615917565b602002602001018181525050826001600160a01b031660001b8160018151811061270f5761270f615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261107891016124c6565b6127778282613cb6565b61040a576113da82611473565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106127bd576127bd615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916116819101612154565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061285457612854615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526106b19101611b38565b613a3160f11b836001600160f01b031916146128e257613a3160f11b83846040516020016117ea91815260200190565b6106b1836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613d00565b6060600080611cee87878787613d94565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061296c5761296c615917565b602002602001018181525050828160018151811061298c5761298c615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015261107891015b6040516020818303038152906040526129fe90615745565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000613436565b6000612a638484613e0c565b90506000815167ffffffffffffffff811115612a8157612a81615301565b604051908082528060200260200182016040528015612aaa578160200160208202803683370190505b5090506000805b8351811015612b6f57846001600160a01b0316612af5858381518110612ad957612ad9615917565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614612b6757838181518110612b1557612b15615917565b6020026020010151838381518110612b2f57612b2f615917565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101612ab1565b5080825261096d868684613e77565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612bb457612bb4615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526106b191016129e6565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612c4857612c48615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c656761740000000000000000000000000000000060308301526106b19101611b38565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612cdc57612cdc615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308301526106b191015b604051602081830303815290604052612d4e90615745565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613ece565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680612dcf573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110612e0d57612e0d615917565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009061226490612e7c90615745565b8360007e140100140000000000000000000000000000000000000000000000000000005b6000612ecd612eaf8686613f74565b60ff858116601b0360080285901c16612ec88587613fca565b614005565b95945050505050565b6060600060606000612ee785614056565b9050612ef4878783614079565b93506000612f01866140b2565b90508015612fd357612f1388886140ef565b935066ffffffffffffff841667ffffffffffffffff811115612f3757612f37615301565b6040519080825280601f01601f191660200182016040528015612f61576020820181803683370190505b5092506020830160005b828160ff161015612fd0576000612f838b8b84614102565b90506000612fa0888460ff166028026038011c64ffffffffff1690565b9050612faf8282600087614182565b612fb98185615abf565b935050508080612fc890615bbd565b915050612f6b565b50505b505093509350939050565b60208301516034840151600091829160609190911c9060f81c5b90969095509350505050565b80158015613010575081155b1561304a576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526000600482015260240161046f565b6000613055836140b2565b90506005811115613095576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526004810182905260240161046f565b60006130a084614251565b905060006130ae8383615abf565b9050601c8111156130ee576040517f97e36a0a0000000000000000000000000000000000000000000000000000000081526004810182905260240161046f565b60005b8281101561096d5760ff601b82900360080287901c166000819003613142576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561317d576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016130f1565b80158015613192575081155b156131b357604051635318beb960e01b81526000600482015260240161046f565b60006131be836140b2565b905060058111156131e557604051635318beb960e01b81526004810182905260240161046f565b60006131f084614251565b905060006131fe8383615abf565b9050601c81111561322557604051635318beb960e01b81526004810182905260240161046f565b60008060005b838110156132eb5760006132586132428a84614263565b60c581111561325357613253615bdc565b614284565b11156132a257848110613297576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916132e3565b848110156132dc576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b60010161322b565b5083821461330f57604051635318beb960e01b81526004810183905260240161046f565b848114611f8857604051635318beb960e01b81526004810182905260240161046f565b600061333f8686866142e4565b9050600061334d848461431a565b9050600061335b8585614337565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061339557613395615917565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261342a9061340190615745565b828686867e600302202020000000000000000000000000000000000000000000000000006136ce565b50505050505050505050565b6106ae85856134458487613fca565b8561434c565b6040805161737960f01b60208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526134a390615745565b909114919050565b6000606060006134ba8661458d565b905060005b81518110156135975760008282815181106134dc576134dc615917565b602002602001015190506135086001826affffffffffffffffffffff191661465690919063ffffffff16565b15613584576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190613551908c908c908c90600401615bf2565b600060405180830381600087803b15801561356b57600080fd5b505af115801561357f573d6000803e3d6000fd5b505050505b508061358f81615aa5565b9150506134bf565b506135a487858888614674565b909350915060005b81518110156136845760008282815181106135c9576135c9615917565b602002602001015190506135f56002826affffffffffffffffffffff191661465690919063ffffffff16565b15613671576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f999061363e908c908c908c90600401615bf2565b600060405180830381600087803b15801561365857600080fd5b505af115801561366c573d6000803e3d6000fd5b505050505b508061367c81615aa5565b9150506135ac565b505094509492505050565b606082826040516020016136b79291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516137049493929190615c55565b60405180910390a2613a3160f11b866001600160f01b0319160361096d57600061372d87614782565b905060005b815181101561381057600082828151811061374f5761374f615917565b6020026020010151905061377b6001826affffffffffffffffffffff191661465690919063ffffffff16565b156137fd576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906137ca908c908c908c908c908c908c90600401615c9f565b600060405180830381600087803b1580156137e457600080fd5b505af11580156137f8573d6000803e3d6000fd5b505050505b508061380881615aa5565b915050613732565b50600061381d8888613f74565b90506000602087019050613835826000838a5161481d565b6000613840856140b2565b11156138c45760006138528a8a6148dd565b878155905060208601915060008060005b61386c886140b2565b8160ff1610156138bf576138818d8d83614102565b925061389c8a8260ff166028026038011c64ffffffffff1690565b91506138ab836000878561481d565b6138b58286615abf565b9450600101613863565b505050505b60005b835181101561342a5760008482815181106138e4576138e4615917565b602002602001015190506139106002826affffffffffffffffffffff191661465690919063ffffffff16565b15613992576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061395f908e908e908e908e908e908e90600401615c9f565b600060405180830381600087803b15801561397957600080fd5b505af115801561398d573d6000803e3d6000fd5b505050505b508061399d81615aa5565b9150506138c7565b60006103e98251603881901b1790565b6060816040516020016139c89190615769565b6040516020818303038152906040529050919050565b827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613a0e9190615cf8565b60405180910390a2613a3160f11b836001600160f01b03191614613a3157505050565b6000613a3c84614782565b905060005b8151811015613b19576000828281518110613a5e57613a5e615917565b60200260200101519050613a8a6040826affffffffffffffffffffff191661465690919063ffffffff16565b15613b06576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590613ad390899089908990600401615d0b565b600060405180830381600087803b158015613aed57600080fd5b505af1158015613b01573d6000803e3d6000fd5b505050505b5080613b1181615aa5565b915050613a41565b506000613b268585613f74565b9050613b7f816000613b3786614056565b67ffffffffffffffff811115613b4f57613b4f615301565b6040519080825280601f01601f191660200182016040528015613b79576020820181803683370190505b50614933565b6000613b8a846140b2565b1115613bab576000613b9c86866148dd565b9050613ba9816020614943565b505b60005b825181101561096d576000838281518110613bcb57613bcb615917565b60200260200101519050613bf76080826affffffffffffffffffffff191661465690919063ffffffff16565b15613c73576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613c40908a908a908a90600401615d0b565b600060405180830381600087803b158015613c5a57600080fd5b505af1158015613c6e573d6000803e3d6000fd5b505050505b5080613c7e81615aa5565b915050613bae565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b6034830152906035016136b7565b6000613ce9616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783614980565b80613cf95750613cf98383614980565b9392505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613d3657613d36615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526106b19101612d36565b60006060836001600160a01b03166000613daf858989614a52565b604051613dbc9190615769565b60006040518083038185875af1925050503d8060008114613df9576040519150601f19603f3d011682016040523d82523d6000602084013e613dfe565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613e4657613e46615917565b6020026020010181815250506000613e6085836000614a69565b9050612ecd613e728260008451614aa3565b614b33565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613ead57613ead615917565b60200260200101818152505061107884826000613ec986614b44565b614b54565b6000613ed8612d95565b9050306001600160a01b03821603613efb57613ef685858585614b8f565b6106ae565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f326290613f46908890889088908890600401615d34565b600060405180830381600087803b158015613f6057600080fd5b505af115801561061b573d6000803e3d6000fd5b60008282604051602001613f89929190615d68565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610b5c57613ff160ff601b83900360080287901c1683615abf565b915080613ffd81615aa5565b915050613fcf565b60006020821061402b5760208204840193506020828161402757614027615da3565b0691505b508254600882021b602082900380841115610b5c576001850154600882021c82179150509392505050565b60006008614066600260206158be565b6140709190615db9565b9190911c919050565b6060816000036140985750604080516020810190915260008152613cf9565b60006140a48585613f74565b9050612ecd81846000614bca565b600060086001806140c5600260206158be565b6140cf91906158be565b6140d991906158be565b6140e39190615db9565b8260ff911c1692915050565b6000613cf96140fe84846148dd565b5490565b60008383604051602001614117929190615d68565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b811561420b57602082106141ac576020820484019350602082816141a8576141a8615da3565b0691505b811561420b5760208290036000818510156141d05750600019600885021c196141db565b50600019600882021c195b8554600885021b8119845116828216178452508185116141fc575050611078565b50600194909401939283900392015b5b6020831061422d5783548152600190930192601f199092019160200161420c565b8215611078576000600019600885021c198251865482169119161782525050505050565b6000600860016140cf600260206158be565b6000601b8290036008028360ff911c1660c5811115613cf957613cf9615bdc565b6000808260c581111561429957614299615bdc565b60ff16905060618110156142b357601f1660010192915050565b60618360c58111156142c7576142c7615bdc565b036142d55750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b17613cf9565b606082826040516020016136b7929190615dd0565b60006143588585613f74565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161438e93929190615dff565b60405180910390a2613a3160f11b856001600160f01b031916146143b25750611078565b60006143bd86614782565b905060005b815181101561449c5760008282815181106143df576143df615917565b6020026020010151905061440b6004826affffffffffffffffffffff191661465690919063ffffffff16565b15614489576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90614456908b908b908b908b90600401615e32565b600060405180830381600087803b15801561447057600080fd5b505af1158015614484573d6000803e3d6000fd5b505050505b508061449481615aa5565b9150506143c2565b506144b0828565ffffffffffff1685614933565b60005b8151811015611f885760008282815181106144d0576144d0615917565b602002602001015190506144fc6008826affffffffffffffffffffff191661465690919063ffffffff16565b1561457a576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190614547908b908b908b908b90600401615e32565b600060405180830381600087803b15801561456157600080fd5b505af1158015614575573d6000803e3d6000fd5b505050505b508061458581615aa5565b9150506144b3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106145c7576145c7615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015260009161464491015b60405160208183030381529060405261463c90615745565b836000614a69565b9050611681613e728260008451614aa3565b60008160ff16826146678560581c90565b1660ff1614905092915050565b6000606060008061468486611689565b90925090506001600160a01b0382166146d557856146a187611473565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161046f92919061572c565b806146e4576146e4868961276d565b8615614730577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b17600061471d82612784565b905061472d826109fd8b84615abf565b50505b600061473c8760101b90565b71ffffffffffffffffffffffffffffffffffff1916146147675761476288888488613d94565b614773565b61477388888488614bed565b90999098509650505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106147bc576147bc615917565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526000916146449101614624565b821561489757602083106148475760208304840193506020838161484357614843615da3565b0692505b82156148975760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311614888575050611078565b50600194909401939182019190035b5b602081106148b95781518455600190930192602090910190601f1901614898565b8015611078576000600019600883021c198554845182169119161785555050505050565b600082826040516020016148f2929190615d68565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6106b1838360208401845161481d565b6000602061495283601f615abf565b61495c9190615e6b565b6149669084615abf565b90505b808310156106b15760008355600183019250614969565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149b9576149b9615917565b602002602001018181525050826001600160a01b031660001b816001815181106149e5576149e5615917565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a469101611635565b9050612ecd8160f81c90565b606083838360405160200161430293929190615e8d565b6060611681614a79858585614102565b614a9c84614a8788886140ef565b9060ff166028026038011c64ffffffffff1690565b6000614bca565b6000818311158015614ab6575083518211155b614af2578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161046f93929190615ecc565b60208401614b008482615abf565b90506000614b0e85856158be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613cf98360156000614c4e565b606081613cf98160156000614cc9565b6000614b6085856140ef565b90506000614b7d828560ff166028026038011c64ffffffffff1690565b905061096d8686866000858888614d1d565b6000614b9b85856140ef565b90506000614bb8828560ff166028026038011c64ffffffffff1690565b905061096d8686868460008888614d1d565b60405160208101601f19603f8584010116604052838252610b5c85858584614182565b60006060836001600160a01b0316614c06848888614a52565b604051614c139190615769565b600060405180830381855af49150503d8060008114613df9576040519150601f19603f3d011682016040523d82523d6000602084013e613dfe565b60606000614c5c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614c8257614c82615da3565b04905060405193506020840160208202810160405281855260005b82811015614cbd578451871c825293870193602090910190600101614c9d565b50505050509392505050565b82516060906000614cda8583615db9565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614cbd578051871b83529187019160019190910190602001614cfc565b613a3160f11b876001600160f01b03191614614d4d57613a3160f11b87886040516020016117ea91815260200190565b6000614d68828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683614d8191906158be565b614d8b9190615abf565b9050808214158015614dad575081614da38688615ef1565b64ffffffffff1614155b15614dfd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff808816600483015280871660248301528316604482015260640161046f565b818664ffffffffff161115614e4e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff8716602482015260440161046f565b6000614e5b8489846150d9565b905064ffffffffff871660005b8960ff168160ff161015614e9b57614e8f868260ff166028026038011c64ffffffffff1690565b90910190600101614e68565b508a7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48b838a868b604051614ed4959493929190615f16565b60405180910390a2506000614ee88b614782565b905060005b8151811015614fbd576000828281518110614f0a57614f0a615917565b60200260200101519050614f366010826affffffffffffffffffffff191661465690919063ffffffff16565b15614faa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614f779796959493929190615f68565b600060405180830381600087803b158015614f9157600080fd5b505af1158015614fa5573d6000803e3d6000fd5b505050505b5080614fb581615aa5565b915050614eed565b50828414614fd6576000614fd18c8c6148dd565b839055505b6000614fe38c8c8c614102565b9050614ff7818a64ffffffffff1689614933565b5060005b81518110156150cb57600082828151811061501857615018615917565b602002602001015190506150446020826affffffffffffffffffffff191661465690919063ffffffff16565b156150b857606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016150859796959493929190615f68565b600060405180830381600087803b15801561509f57600080fd5b505af11580156150b3573d6000803e3d6000fd5b505050505b50806150c381615aa5565b915050614ffb565b505050505050505050505050565b600064ffffffffff82111561511d576040517f476705880000000000000000000000000000000000000000000000000000000081526004810183905260240161046f565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061514f5780850382019150615157565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b80356001600160e01b031981168114612dcf57600080fd5b6000602082840312156151d157600080fd5b613cf9826151a7565b6001600160a01b0381168114610fb057600080fd5b6000806040838503121561520257600080fd5b823591506020830135615214816151da565b809150509250929050565b60008083601f84011261523157600080fd5b50813567ffffffffffffffff81111561524957600080fd5b6020830191508360208260051b850101111561526457600080fd5b9250929050565b60008060008060008060008060c0898b03121561528757600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff808211156152bb57600080fd5b6152c78c838d0161521f565b909650945060a08b01359150808211156152e057600080fd5b506152ed8b828c0161521f565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561534057615340615301565b604052919050565b600067ffffffffffffffff82111561536257615362615301565b50601f01601f191660200190565b600082601f83011261538157600080fd5b813561539461538f82615348565b615317565b8181528460208386010111156153a957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156153db57600080fd5b83356153e6816151da565b925060208401359150604084013567ffffffffffffffff81111561540957600080fd5b61541586828701615370565b9150509250925092565b6000806040838503121561543257600080fd5b82359150602083013567ffffffffffffffff81111561545057600080fd5b61545c85828601615370565b9150509250929050565b8015158114610fb057600080fd5b60008060006060848603121561548957600080fd5b83359250602084013561549b816151da565b915060408401356154ab81615466565b809150509250925092565b6000806000606084860312156154cb57600080fd5b8335925060208401356154dd816151da565b929592945050506040919091013590565b803560ff81168114612dcf57600080fd5b60008060006060848603121561551457600080fd5b833592506020840135615526816151da565b9150615534604085016154ee565b90509250925092565b60008060006060848603121561555257600080fd5b83359250602084013567ffffffffffffffff81111561557057600080fd5b61557c86828701615370565b925050615534604085016151a7565b6000806040838503121561559e57600080fd5b82356155a9816151da565b9150602083013567ffffffffffffffff81111561545057600080fd5b600080602083850312156155d857600080fd5b823567ffffffffffffffff8111156155ef57600080fd5b612ff88582860161521f565b60005b838110156156165781810151838201526020016155fe565b50506000910152565b600081518084526156378160208601602086016155fb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156156a057603f1988860301845261568e85835161561f565b94509285019290850190600101615672565b5092979650505050505050565b6000602082840312156156bf57600080fd5b5035919050565b6000806000606084860312156156db57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561540957600080fd5b60008060006060848603121561571557600080fd5b505081359360208301359350604090920135919050565b828152604060208201526000611681604083018461561f565b805160208083015191908110156142de5760001960209190910360031b1b16919050565b6000825161577b8184602087016155fb565b9190910192915050565b600067ffffffffffffffff808411156157a0576157a0615301565b8360051b60206157b1818301615317565b8681529185019181810190368411156157c957600080fd5b865b848110156157fd578035868111156157e35760008081fd5b6157ef36828b01615370565b8452509183019183016157cb565b50979650505050505050565b6000845161581b8184602089016155fb565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551615857816001850160208a016155fb565b600192019182015283516158728160028401602088016155fb565b0160020195945050505050565b6001600160f01b031984168152826020820152606060408201526000612ecd606083018461561f565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e9576103e96158a8565b602081526000613cf9602083018461561f565b6000602082840312156158f657600080fd5b81516fffffffffffffffffffffffffffffffff1981168114613cf957600080fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261577b57600080fd5b60006020828403121561597357600080fd5b8135613cf9816151da565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126159b357600080fd5b83018035915067ffffffffffffffff8211156159ce57600080fd5b60200191503681900382131561526457600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b0385168152836020820152606060408201526000611d006060830184866159e3565b600060208284031215615a4957600080fd5b815167ffffffffffffffff811115615a6057600080fd5b8201601f81018413615a7157600080fd5b8051615a7f61538f82615348565b818152856020838501011115615a9457600080fd5b612ecd8260208301602086016155fb565b60006000198203615ab857615ab86158a8565b5060010190565b808201808211156103e9576103e96158a8565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261577b57600080fd5b838152604060208201526000612ecd6040830184866159e3565b604081526000615b33604083018561561f565b90506001600160a01b03831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156156a057603f19888603018452615b8e85835161561f565b94509285019290850190600101615b72565b600060208284031215615bb257600080fd5b8151613cf981615466565b600060ff821660ff8103615bd357615bd36158a8565b60010192915050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152826020820152606060408201526000612ecd606083018461561f565b600081518084526020808501945080840160005b83811015615c4a57815187529582019590820190600101615c2e565b509495945050505050565b608081526000615c686080830187615c1a565b8281036020840152615c7a818761561f565b90508460408401528281036060840152615c94818561561f565b979650505050505050565b86815260c060208201526000615cb860c0830188615c1a565b8281036040840152615cca818861561f565b90508560608401528281036080840152615ce4818661561f565b9150508260a0830152979650505050505050565b602081526000613cf96020830184615c1a565b838152606060208201526000615d246060830185615c1a565b9050826040830152949350505050565b848152608060208201526000615d4d6080830186615c1a565b60ff851660408401528281036060840152615c94818561561f565b82815260006020808301845182860160005b82811015615d9657815184529284019290840190600101615d7a565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176103e9576103e96158a8565b60008351615de28184602088016155fb565b835190830190615df68183602088016155fb565b01949350505050565b606081526000615e126060830186615c1a565b65ffffffffffff851660208401528281036040840152611d00818561561f565b848152608060208201526000615e4b6080830186615c1a565b65ffffffffffff851660408401528281036060840152615c94818561561f565b600082615e8857634e487b7160e01b600052601260045260246000fd5b500490565b60008451615e9f8184602089016155fb565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615edf606083018661561f565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615f0f57615f0f6158a8565b5092915050565b60a081526000615f2960a0830188615c1a565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152615f5c818561561f565b98975050505050505050565b87815260e060208201526000615f8160e0830189615c1a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c0840152615fb8818561561f565b9a995050505050505050505056fea164736f6c6343000815000a60c0604052604051620000129062000088565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a9062000096565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0523480156200008157600080fd5b50620000a4565b61087d806200277383390190565b6125558062002ff083390190565b60805160a0516126a2620000d1600039600061032e01526000818161047001526105ef01526126a26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec9354146101035780637c5b033514610116578063e1af802c1461012957600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461216b565b610131565b60405190151581526020015b60405180910390f35b6100b26101ca565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046121c3565b6101d9565b005b604051651c1d5c1c195d60d21b81526020016100a1565b604051601f1936013581526020016100a1565b6100ea6101243660046121c3565b6104d5565b6100b26106c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d46106ce565b905090565b60006101e36106c4565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925061024d91015b60405160208183030381529060405261024890612274565b610700565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f466163746f727900000000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff831691633350b6a991016040516020818303038152906040526102e390612274565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561037757600080fd5b505af115801561038b573d6000803e3d6000fd5b5050604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff85169350633350b6a992500160405160208183030381529060405261042590612274565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b1580156104b957600080fd5b505af11580156104cd573d6000803e3d6000fd5b505050505050565b60006104df6106c4565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f507570706574526567697374727900000000000000000000000000000000000060308201529192506105309101610230565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e000000000000000000000000000000000000000000006030820152600091829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105cd90612274565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161066b92506122bc565b600060405180830381855af49150503d80600081146106a6576040519150601f19603f3d011682016040523d82523d6000602084013e6106ab565b606091505b5091509150816106be576106be8161074c565b50505050565b60006101d4610754565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106fd5750335b90565b610749817e1401001400000000000000000000000000000000000000000000000000000061072c6107a0565b610734610818565b61073c610852565b6107446108d7565b610937565b50565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061079b573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106107da576107da6122d8565b602002602001019060c58111156107f3576107f36122ee565b908160c5811115610806576108066122ee565b90525061081281610a0b565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106107da576107da6122d8565b604080516001808252818301909252606091816020015b60608152602001906001900390816108695790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106108c9576108c96122d8565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816108ee579050509050604051806040016040528060068152602001651c1d5c1c195d60d21b815250816000815181106108c9576108c96122d8565b6000610941610754565b90503073ffffffffffffffffffffffffffffffffffffffff8216036109735761096e878787878787610bcf565b610a02565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f49906109cf908a908a908a908a908a908a90600401612385565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b505050505b50505050505050565b6000601c82511115610a3e578151604051635318beb960e01b8152600401610a3591815260200190565b60405180910390fd5b60008080805b8551811015610b19576000610a82878381518110610a6457610a646122d8565b602002602001015160c5811115610a7d57610a7d6122ee565b610ebc565b905080600003610a9757600190920191610acf565b8215610acf576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610af057610af06122d8565b602002602001015160c5811115610b0957610b096122ee565b901b949094179350600101610a44565b506005811115610b3f57604051635318beb960e01b815260048101829052602401610a35565b84518190036008610b52600260206123e5565b610b5c91906123f8565b83901b939093179260086001610b74600260206123e5565b610b7e91906123e5565b610b8891906123f8565b81901b93909317926008600180610ba1600260206123e5565b610bab91906123e5565b610bb591906123e5565b610bbf91906123f8565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610c4857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610ca957613a3160f11b8687604051602001610c6791815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610a3593929160040161240f565b610cb4856000610f1c565b610cbf84600161109e565b610cca83600061109e565b60e084901c60e885901c0160ff16825114610d2a5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b60e085901c60e886901c0160ff16815114610d8a5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610e025760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a35565b610e0b86611245565b15610e65578586604051602001610e2491815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610a359291600401612450565b610eb18686868686604051602001610e7d9190612469565b60405160208183030381529060405286604051602001610e9d9190612469565b604051602081830303815290604052611329565b6104cd866001611449565b6000808260c5811115610ed157610ed16122ee565b60ff1690506061811015610eeb57601f1660010192915050565b60618360c5811115610eff57610eff6122ee565b03610f0d5750601492915050565b50600092915050565b50919050565b80158015610f28575081155b15610f62576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260006004820152602401610a35565b6000610f6d83611540565b90506005811115610fad576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260048101829052602401610a35565b6000610fb88461157d565b90506000610fc6838361247c565b9050601c811115611006576040517f97e36a0a00000000000000000000000000000000000000000000000000000000815260048101829052602401610a35565b60005b828110156104cd5760ff601b82900360080287901c16600081900361105a576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611095576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611009565b801580156110aa575081155b156110cb57604051635318beb960e01b815260006004820152602401610a35565b60006110d683611540565b905060058111156110fd57604051635318beb960e01b815260048101829052602401610a35565b60006111088461157d565b90506000611116838361247c565b9050601c81111561113d57604051635318beb960e01b815260048101829052602401610a35565b60008060005b838110156111fe57600061116b61115a8a8461158f565b60c5811115610a7d57610a7d6122ee565b11156111b5578481106111aa576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916111f6565b848110156111ef576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101611143565b5083821461122257604051635318beb960e01b815260048101839052602401610a35565b848114610a0257604051635318beb960e01b815260048101829052602401610a35565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061127e5761127e6122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611315906112ed90612274565b8360007e010100010000000000000000000000000000000000000000000000000000006115b7565b90506113218160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061136084846115ed565b9050600061136e858561160a565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106113a8576113a86122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261143d9061141490612274565b828686867e60030220202000000000000000000000000000000000000000000000000000611636565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061147f5761147f6122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261153b906114eb90612274565b8260008560405160200161150691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611925565b505050565b60006008600180611553600260206123e5565b61155d91906123e5565b61156791906123e5565b61157191906123f8565b8260ff911c1692915050565b60006008600161155d600260206123e5565b6000601b8290036008028360ff911c1660c58111156115b0576115b06122ee565b9392505050565b60006115e46115c68686611941565b60ff858116601b0360080285901c166115df8587611997565b6119da565b95945050505050565b8151815160009181810160389190911b1760609190911b176115b0565b6060828260405160200161161f92919061248f565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161166c94939291906124f9565b60405180910390a2613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016036104cd5760006116ad87611a2b565b905060005b81518110156117905760008282815181106116cf576116cf6122d8565b602002602001015190506116fb6001826affffffffffffffffffffff1916611af390919063ffffffff16565b1561177d576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061174a908c908c908c908c908c908c90600401612543565b600060405180830381600087803b15801561176457600080fd5b505af1158015611778573d6000803e3d6000fd5b505050505b50806117888161259c565b9150506116b2565b50600061179d8888611941565b905060006020870190506117b5826000838a51611b11565b60006117c085611540565b11156118445760006117d28a8a611bd1565b878155905060208601915060008060005b6117ec88611540565b8160ff16101561183f576118018d8d83611c27565b925061181c8a8260ff166028026038011c64ffffffffff1690565b915061182b8360008785611b11565b611835828661247c565b94506001016117e3565b505050505b60005b835181101561143d576000848281518110611864576118646122d8565b602002602001015190506118906002826affffffffffffffffffffff1916611af390919063ffffffff16565b15611912576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906118df908e908e908e908e908e908e90600401612543565b600060405180830381600087803b1580156118f957600080fd5b505af115801561190d573d6000803e3d6000fd5b505050505b508061191d8161259c565b915050611847565b61193a85856119348487611997565b85611ca7565b5050505050565b600082826040516020016119569291906125b6565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156119d2576119be60ff601b83900360080287901c168361247c565b9150806119ca8161259c565b91505061199c565b509392505050565b600060208210611a00576020820484019350602082816119fc576119fc6125e4565b0691505b508254600882021b6020829003808411156119d2576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a6557611a656122d8565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611adc90611ad490612274565b836000611f00565b9050611321611aee8260008451611f3a565b611fca565b60008160ff1682611b048560581c90565b1660ff1614905092915050565b8215611b8b5760208310611b3b57602083048401935060208381611b3757611b376125e4565b0692505b8215611b8b5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611b7c5750506106be565b50600194909401939182019190035b5b60208110611bad5781518455600190930192602090910190601f1901611b8c565b80156106be576000600019600883021c198554845182169119161785555050505050565b60008282604051602001611be69291906125b6565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611c3c9291906125b6565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000611cb38585611941565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051611ce9939291906125fa565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614611d2557506106be565b6000611d3086611a2b565b905060005b8151811015611e0f576000828281518110611d5257611d526122d8565b60200260200101519050611d7e6004826affffffffffffffffffffff1916611af390919063ffffffff16565b15611dfc576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90611dc9908b908b908b908b90600401612637565b600060405180830381600087803b158015611de357600080fd5b505af1158015611df7573d6000803e3d6000fd5b505050505b5080611e078161259c565b915050611d35565b50611e23828565ffffffffffff1685611fdb565b60005b8151811015610a02576000828281518110611e4357611e436122d8565b60200260200101519050611e6f6008826affffffffffffffffffffff1916611af390919063ffffffff16565b15611eed576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611eba908b908b908b908b90600401612637565b600060405180830381600087803b158015611ed457600080fd5b505af1158015611ee8573d6000803e3d6000fd5b505050505b5080611ef88161259c565b915050611e26565b6060611321611f10858585611c27565b611f3384611f1e8888611feb565b9060ff166028026038011c64ffffffffff1690565b6000611ffe565b6000818311158015611f4d575083518211155b611f89578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610a3593929190612670565b60208401611f97848261247c565b90506000611fa585856123e5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006115b08360156000612021565b61153b8383602084018451611b11565b60006115b0611ffa8484611bd1565b5490565b60405160208101601f19603f85840101166040528382526119d28585858461209c565b6060600061202f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612055576120556125e4565b04905060405193506020840160208202810160405281855260005b82811015612090578451871c825293870193602090910190600101612070565b50505050509392505050565b811561212557602082106120c6576020820484019350602082816120c2576120c26125e4565b0691505b81156121255760208290036000818510156120ea5750600019600885021c196120f5565b50600019600882021c195b8554600885021b8119845116828216178452508185116121165750506106be565b50600194909401939283900392015b5b602083106121475783548152600190930192601f1990920191602001612126565b82156106be576000600019600885021c198251865482169119161782525050505050565b60006020828403121561217d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146115b057600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156121d557600080fd5b813567ffffffffffffffff808211156121ed57600080fd5b818401915084601f83011261220157600080fd5b813581811115612213576122136121ad565b604051601f8201601f19908116603f0116810190838211818310171561223b5761223b6121ad565b8160405282815287602084870101111561225457600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015610f165760001960209190910360031b1b16919050565b60005b838110156122b357818101518382015260200161229b565b50506000910152565b600082516122ce818460208701612298565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845261231c816020860160208601612298565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015612378578284038952612366848351612304565b9885019893509084019060010161234e565b5091979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006123b060c0830185612330565b82810360a08401526123c28185612330565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101c4576101c46123cf565b80820281158282048414176101c4576101c46123cf565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006115e46060830184612304565b8281526040602082015260006113216040830184612304565b6020815260006115b06020830184612330565b808201808211156101c4576101c46123cf565b600083516124a1818460208801612298565b8351908301906124b5818360208801612298565b01949350505050565b600081518084526020808501945080840160005b838110156124ee578151875295820195908201906001016124d2565b509495945050505050565b60808152600061250c60808301876124be565b828103602084015261251e8187612304565b905084604084015282810360608401526125388185612304565b979650505050505050565b86815260c06020820152600061255c60c08301886124be565b828103604084015261256e8188612304565b905085606084015282810360808401526125888186612304565b9150508260a0830152979650505050505050565b600060001982036125af576125af6123cf565b5060010190565b82815260006020808301845182860160005b82811015612378578151845292840192908401906001016125c8565b634e487b7160e01b600052601260045260246000fd5b60608152600061260d60608301866124be565b65ffffffffffff85166020840152828103604084015261262d8185612304565b9695505050505050565b84815260806020820152600061265060808301866124be565b65ffffffffffff8516604084015282810360608401526125388185612304565b6060815260006126836060830186612304565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061085d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80631a86b550116100505780631a86b550146100c157806345ec9354146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a3660046105c6565b6100ef565b60405190151581526020015b60405180910390f35b61009c6101d4565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b61007f6100cf366004610625565b6101e3565b604051601f19360135815260200161008b565b61009c6102c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faea79dd000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb421288000000000000000000000000000000000000000000000000000000000145b806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6102cc565b905090565b6000806101ee6101d4565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925073ffffffffffffffffffffffffffffffffffffffff8316916102a2910160405160208183030381529060405261029c9061070b565b866102fe565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b60006101de61037b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061033757610337610732565b6020908102919091010152600061036f8583837e140100140000000000000000000000000000000000000000000000000000006103c7565b60601c95945050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806103c2573391505090565b919050565b6000806103d261037b565b90503073ffffffffffffffffffffffffffffffffffffffff821603610405576103fd868686866104a6565b91505061049e565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061045d908990899089908990600401610748565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fd91906107a3565b949350505050565b60006104d36104b586866104dc565b60ff858116601b0360080285901c166104ce8587610532565b610575565b95945050505050565b600082826040516020016104f19291906107bc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561056d5761055960ff601b83900360080287901c168361080d565b91508061056581610820565b915050610537565b509392505050565b60006020821061059b576020820484019350602082816105975761059761083a565b0691505b508254600882021b60208290038084111561056d576001850154600882021c82179150509392505050565b6000602082840312156105d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561063a57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461065e57600080fd5b925060208401359150604084013567ffffffffffffffff8082111561068257600080fd5b818601915086601f83011261069657600080fd5b8135818111156106a8576106a861060f565b604051601f8201601f19908116603f011681019083821181831017156106d0576106d061060f565b816040528281528960208487010111156106e957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8051602080830151919081101561072c576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156107895784518352938301939183019160010161076d565b505060ff9690961660408501525050506060015292915050565b6000602082840312156107b557600080fd5b5051919050565b82815260006020808301845182860160005b828110156107ea578151845292840192908401906001016107ce565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ce576101ce6107f7565b60006000198203610833576108336107f7565b5060010190565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000a608060405234801561001057600080fd5b50612535806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063b9eb8bfb146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461117b565b6100ef565b60405190151581526020015b60405180910390f35b61009c610188565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c6100e23660046111bd565b610197565b61009c610285565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb421288000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061019261028f565b905090565b60006101aa826101a5610188565b6102c1565b6101b2610285565b826040516101bf9061116e565b73ffffffffffffffffffffffffffffffffffffffff90921682526020820152604001604051809103906000f0801580156101fd573d6000803e3d6000fd5b5060408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f507570706574526567697374727900000000000000000000000000000000000060308201529192506102809101604051602081830303815290604052610279906111d6565b8383610389565b919050565b6000610192610449565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102be5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166103237f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610490565b73ffffffffffffffffffffffffffffffffffffffff16146103855761034782610583565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161037c929190611243565b60405180910390fd5b5050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106103bf576103bf61127b565b602002602001018181525050610443848260008560405160200161040e919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006106ff565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610280573391505090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104c9576104c961127b565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905260009061057890610550906111d6565b8360007e140100140000000000000000000000000000000000000000000000000000006107cf565b60601c949350505050565b606081601081901b6000610596836108ae565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156105e9577fffffffffffffffffffffffffffff000000000000000000000000000000000000831661060b565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000831615610639578261065b565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6000610709610449565b90503073ffffffffffffffffffffffffffffffffffffffff82160361073a5761073586868686866108c5565b6107c7565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae09061079490899089908990899089906004016112e5565b600060405180830381600087803b1580156107ae57600080fd5b505af11580156107c2573d6000803e3d6000fd5b505050505b505050505050565b6000806107da610449565b90503073ffffffffffffffffffffffffffffffffffffffff82160361080d57610805868686866108e1565b9150506108a6565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061086590899089908990899060040161132c565b602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610805919061135b565b949350505050565b60006108bc607060106113a3565b9190911b919050565b6108da85856108d48487610917565b8561095a565b5050505050565b600061090e6108f08686610bbc565b60ff858116601b0360080285901c166109098587610917565b610c12565b95945050505050565b600080805b8360ff168110156109525761093e60ff601b83900360080287901c16836113a3565b91508061094a816113b6565b91505061091c565b509392505050565b60006109668585610bbc565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be85858560405161099c939291906113d0565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146109d85750610443565b60006109e386610c63565b905060005b8151811015610ac2576000828281518110610a0557610a0561127b565b60200260200101519050610a316004826affffffffffffffffffffff1916610d4390919063ffffffff16565b15610aaf576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610a7c908b908b908b908b9060040161140d565b600060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b505050505b5080610aba816113b6565b9150506109e8565b50610ad6828565ffffffffffff1685610d61565b60005b8151811015610bb3576000828281518110610af657610af661127b565b60200260200101519050610b226008826affffffffffffffffffffff1916610d4390919063ffffffff16565b15610ba0576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610b6d908b908b908b908b9060040161140d565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050505b5080610bab816113b6565b915050610ad9565b50505050505050565b60008282604051602001610bd1929190611451565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c3857602082048401935060208281610c3457610c3461148c565b0691505b508254600882021b602082900380841115610952576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c9d57610c9d61127b565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d2c90610d24906111d6565b836000610d76565b90506108a6610d3e8260008451610db0565b610e40565b60008160ff1682610d548560581c90565b1660ff1614905092915050565b610d718383602084018451610e58565b505050565b60606108a6610d86858585610f18565b610da984610d948888610f98565b9060ff166028026038011c64ffffffffff1690565b6000610fab565b6000818311158015610dc3575083518211155b610dff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161037c939291906114bb565b60208401610e0d84826113a3565b90506000610e1b85856114e0565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e518360156000610fce565b9392505050565b8215610ed25760208310610e8257602083048401935060208381610e7e57610e7e61148c565b0692505b8215610ed25760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311610ec3575050610443565b50600194909401939182019190035b5b60208110610ef45781518455600190930192602090910190601f1901610ed3565b8015610443576000600019600883021c198554845182169119161785555050505050565b60008383604051602001610f2d929190611451565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610e51610fa78484611049565b5490565b60405160208101601f19603f85840101166040528382526109528585858461109f565b60606000610fdc8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110025761100261148c565b04905060405193506020840160208202810160405281855260005b8281101561103d578451871c82529387019360209091019060010161101d565b50505050509392505050565b6000828260405160200161105e929190611451565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b811561112857602082106110c9576020820484019350602082816110c5576110c561148c565b0691505b81156111285760208290036000818510156110ed5750600019600885021c196110f8565b50600019600882021c195b8554600885021b811984511682821617845250818511611119575050610443565b50600194909401939283900392015b5b6020831061114a5783548152600190930192601f1990920191602001611129565b8215610443576000600019600885021c198251865482169119161782525050505050565b611035806114f483390190565b60006020828403121561118d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5157600080fd5b6000602082840312156111cf57600080fd5b5035919050565b805160208083015191908110156111f7576000198160200360031b1b821691505b50919050565b6000815180845260005b8181101561122357602081850181015186830182015201611207565b506000602082860101526020601f19601f83011685010191505092915050565b60408152600061125660408301856111fd565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b838110156112da578151875295820195908201906001016112be565b509495945050505050565b85815260a0602082015260006112fe60a08301876112aa565b60ff86166040840152828103606084015261131981866111fd565b9150508260808301529695505050505050565b84815260806020820152600061134560808301866112aa565b60ff949094166040830152506060015292915050565b60006020828403121561136d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561018257610182611374565b600060001982036113c9576113c9611374565b5060010190565b6060815260006113e360608301866112aa565b65ffffffffffff85166020840152828103604084015261140381856111fd565b9695505050505050565b84815260806020820152600061142660808301866112aa565b65ffffffffffff85166040840152828103606084015261144681856111fd565b979650505050505050565b82815260006020808301845182860160005b8281101561147f57815184529284019290840190600101611463565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006114ce60608301866111fd565b60208301949094525060400152919050565b818103818111156101825761018261137456fe60c060405234801561001057600080fd5b5060405161103538038061103583398101604081905261002f9161007c565b6001600160a01b038216608081905260a08290527f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b031916909117905550506100b6565b6000806040838503121561008f57600080fd5b82516001600160a01b03811681146100a657600080fd5b6020939093015192949293505050565b60805160a051610f326101036000396000818160e1015281816101b401528181610239015281816102b70152818161032e01526103a101526000818160b201526101630152610f326000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c9a34acd11610050578063c9a34acd146101f9578063d72a26651461020c578063e2ed58bd1461021f57610072565b806330b67baa1461015e57806339f898bc146101af57806366c93bdb146101e4575b6040517f894ecc5800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063894ecc589061010d9033907f00000000000000000000000000000000000000000000000000000000000000009086903690600401610a5c565b6000604051808303816000875af115801561012c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101549190810190610b88565b9050805160208201f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a6565b6101f76101f2366004610c16565b610232565b005b6101f7610207366004610c7a565b6102b0565b6101f761021a366004610cd4565b610327565b6101f761022d366004610d1b565b61039a565b600061025d7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461029d576040516398d49b0360e01b81523360048201526024015b60405180910390fd5b82848688855160208701a4505050505050565b60006102db7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610316576040516398d49b0360e01b8152336004820152602401610294565b828486845160208601a35050505050565b60006103527f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461038d576040516398d49b0360e01b8152336004820152602401610294565b82825160208401a1505050565b60006103c57f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610400576040516398d49b0360e01b8152336004820152602401610294565b8284835160208501a250505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061044957610449610d6b565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d73000000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009081908190610515906104ef90610d81565b857e1502001401000000000000000000000000000000000000000000000000000061053a565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b606060006060600061054a610624565b90503073ffffffffffffffffffffffffffffffffffffffff82160361058057610574878787610670565b9350935093505061061b565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd906105d6908a908a908a90600401610da8565b600060405180830381865afa1580156105f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105749190810190610dff565b93509350939050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066b573391505090565b919050565b606060006060600061068185610778565b905061068e87878361079b565b9350600061069b866107df565b9050801561076d576106ad888861081c565b935066ffffffffffffff841667ffffffffffffffff8111156106d1576106d1610aaf565b6040519080825280601f01601f1916602001820160405280156106fb576020820181803683370190505b5092506020830160005b828160ff16101561076a57600061071d8b8b84610838565b9050600061073a888460ff166028026038011c64ffffffffff1690565b905061074982826000876108b8565b6107538185610e78565b93505050808061076290610e8b565b915050610705565b50505b505093509350939050565b6000600861078860026020610eaa565b6107929190610ebd565b9190911c919050565b6060816000036107ba57506040805160208101909152600081526107d8565b60006107c68585610985565b90506107d4818460006109db565b9150505b9392505050565b600060086001806107f260026020610eaa565b6107fc9190610eaa565b6108069190610eaa565b6108109190610ebd565b8260ff911c1692915050565b600061082f61082b8484610a06565b5490565b90505b92915050565b6000838360405160200161084d929190610ed4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b811561094157602082106108e2576020820484019350602082816108de576108de610f0f565b0691505b81156109415760208290036000818510156109065750600019600885021c19610911565b50600019600882021c195b8554600885021b81198451168282161784525081851161093257505061097f565b50600194909401939283900392015b5b602083106109635783548152600190930192601f1990920191602001610942565b821561097f5780518454600019600886021c9182169119161781525b50505050565b6000828260405160200161099a929190610ed4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f85840101166040528382526109fe858585846108b8565b509392505050565b60008282604051602001610a1b929190610ed4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610aee57610aee610aaf565b604052919050565b600067ffffffffffffffff821115610b1057610b10610aaf565b50601f01601f191660200190565b600082601f830112610b2f57600080fd5b8151610b42610b3d82610af6565b610ac5565b81815260208581848701011115610b5857600080fd5b60005b83811015610b76578581018201518382018301528101610b5b565b50600092820101919091529392505050565b600060208284031215610b9a57600080fd5b815167ffffffffffffffff811115610bb157600080fd5b610bbd84828501610b1e565b949350505050565b600082601f830112610bd657600080fd5b8135610be4610b3d82610af6565b818152846020838601011115610bf957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610c2e57600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115610c6157600080fd5b610c6d88828901610bc5565b9150509295509295909350565b60008060008060808587031215610c9057600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115610cbc57600080fd5b610cc887828801610bc5565b91505092959194509250565b60008060408385031215610ce757600080fd5b82359150602083013567ffffffffffffffff811115610d0557600080fd5b610d1185828601610bc5565b9150509250929050565b600080600060608486031215610d3057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610d5557600080fd5b610d6186828701610bc5565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015610da2576000198160200360031b1b821691505b50919050565b6000606082018583526020606081850152818651808452608086019150828801935060005b81811015610de957845183529383019391830191600101610dcd565b5050809350505050826040830152949350505050565b600080600060608486031215610e1457600080fd5b835167ffffffffffffffff80821115610e2c57600080fd5b610e3887838801610b1e565b9450602086015193506040860151915080821115610e5557600080fd5b50610d6186828701610b1e565b634e487b7160e01b600052601160045260246000fd5b8082018082111561083257610832610e62565b600060ff821660ff8103610ea157610ea1610e62565b60010192915050565b8181038181111561083257610832610e62565b808202811582820484141761083257610832610e62565b82815260006020808301845182860160005b82811015610f0257815184529284019290840190600101610ee6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000815000aa164736f6c6343000815000a60a0604052604051620000129062000050565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080523480156200004957600080fd5b506200005e565b6148c180620034c983390190565b60805161344f6200007a600039600061034a015261344f6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100df57806345ec93541461010d5780637c5b033514610120578063e1af802c1461013357600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100ca575b600080fd5b610095610090366004612c1b565b61013b565b60405190151581526020015b60405180910390f35b6100b26101d4565b6040516001600160a01b0390911681526020016100a1565b6100dd6100d8366004612cf5565b6101e3565b005b6040517f65726332302d707570706574000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100dd61012e366004612cf5565b6106a0565b6100b26106d2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f79f50b5b0000000000000000000000000000000000000000000000000000000014806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6106dc565b905090565b60006001600160a01b031661021f7f65726332302d7075707065740000000000000000000000000000000000000000838051906020012061070e565b6001600160a01b03161461025f576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080828060200190518101906102769190612de9565b90925090507f9a8d9ccdcfd28f8a8f8f9a8c000000000000000000000000000000000000000071ffffffffffffffffffffffffffffffffffff19831601610305576040517f0f31c63c00000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19831660048201526024015b60405180910390fd5b61030d610835565b60006103176106d2565b6040516001600160a01b03828116602483015271ffffffffffffffffffffffffffffffffffff19861660448301529192507f00000000000000000000000000000000000000000000000000000000000000009091169060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f472466c200000000000000000000000000000000000000000000000000000000179052516103d39190612ec1565b600060405180830381855af49150503d806000811461040e576040519150601f19603f3d011682016040523d82523d6000602084013e610413565b606091505b505050610428610422846108c5565b836108f7565b600061043384610999565b9050600061044183836109e6565b90507f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601087901c16176001600160a01b03841663ef5d6bbb826104a26101d4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610597935001905060405160208183030381529060405261059290612edd565b610cb6565b6106185760408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610618910160405160208183030381529060405261061390612edd565b610d9a565b60408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610697910160405160208183030381529060405261069090612edd565b8284610de6565b50505050505050565b6040517fb6622fc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101de610ea6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061070b5750335b90565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061075a5761075a612f01565b602002602001018181525050828160018151811061077a5761077a612f01565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015281518082039093018352810190526000906108299061080190612edd565b8360007e14010014000000000000000000000000000000000000000000000000000000610ee5565b60601c95945050505050565b6040805160008082526020820190925261086090651c1d5c1c195d60d21b908051906020012061070e565b6001600160a01b0316036108c357604051651c1d5c1c195d60d21b602082015260300160408051601f19818403018152908290527f217ef9250000000000000000000000000000000000000000000000000000000082526102fc91600401612f43565b565b60006101ce613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610fa2565b600061094682600001516040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b9050600061095c83602001518460400151611029565b9050600061097284602001518560400151611046565b6040805160008152602081019091529091506109918682868686611072565b505050505050565b60006101ce7f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d000000000000000000000000000000000000000000610fa2565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526000916001600160a01b03851691633ae7af089101604051602081830303815290604052610a7290612edd565b6040516024810186905260440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb9eb8bfb00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152610b0f929190600401612f56565b6000604051808303816000875af1158015610b2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b569190810190612f6f565b806020019051810190610b699190612fb8565b90506001600160a01b03831663bfdfaff77f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617604080517f73790000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015201604051602081830303815290604052610c3590612edd565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16909152610c7e92919060248101612fe1565b600060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505092915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610cef57610cef612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d8690610d5e90612edd565b8360007e01010001000000000000000000000000000000000000000000000000000000610ee5565b9050610d928160f81c90565b949350505050565b610de3817e14010014000000000000000000000000000000000000000000000000000000610dc6611127565b610dce61119f565b610dd66111d9565b610dde61125e565b6112d5565b50565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610e1c57610e1c612f01565b602002602001018181525050610ea08482600085604051602001610e6b919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061138e565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610ee0573391505090565b919050565b600080610ef0610ea6565b9050306001600160a01b03821603610f1657610f0e86868686611404565b915050610d92565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610f6190899089908990899060040161303b565b602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061306a565b6000610fb060706010613099565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790505b9392505050565b8151815160009181810160389190911b1760609190911b17611022565b6060828260405160200161105b9291906130ac565b604051602081830303815290604052905092915050565b600061107c610ea6565b9050306001600160a01b038216036110a05761109b868686868661143a565b610991565b6040517f298314fb0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063298314fb906110ed90899089908990899089906004016130db565b600060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b50505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811061116157611161612f01565b602002602001019060c581111561117a5761117a61312c565b908160c581111561118d5761118d61312c565b90525061119981611457565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061116157611161612f01565b604080516001808252818301909252606091816020015b60608152602001906001900390816111f05790505090506040518060400160405280600b81526020017f6e616d65737061636549640000000000000000000000000000000000000000008152508160008151811061125057611250612f01565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816112755790505090506040518060400160405280600c81526020017f746f6b656e4164647265737300000000000000000000000000000000000000008152508160008151811061125057611250612f01565b60006112df610ea6565b9050306001600160a01b03821603611304576112ff878787878787611612565b610697565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990611353908a908a908a908a908a908a90600401613197565b600060405180830381600087803b15801561136d57600080fd5b505af1158015611381573d6000803e3d6000fd5b5050505050505050505050565b6000611398610ea6565b9050306001600160a01b038216036113b75761109b86868686866118ff565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906110ed90899089908990899089906004016131e1565b60006114316114138686611914565b60ff858116601b0360080285901c1661142c858761196a565b6119ad565b95945050505050565b611450858585858561144b8b6119fe565b611afc565b5050505050565b6000601c82511115611481578151604051635318beb960e01b81526004016102fc91815260200190565b60008080805b855181101561155c5760006114c58783815181106114a7576114a7612f01565b602002602001015160c58111156114c0576114c061312c565b611deb565b9050806000036114da57600190920191611512565b8215611512576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061153357611533612f01565b602002602001015160c581111561154c5761154c61312c565b901b949094179350600101611487565b50600581111561158257604051635318beb960e01b8152600481018290526024016102fc565b8451819003600861159560026020613228565b61159f919061323b565b83901b9390931792600860016115b760026020613228565b6115c19190613228565b6115cb919061323b565b81901b939093179260086001806115e460026020613228565b6115ee9190613228565b6115f89190613228565b611602919061323b565b9190911b92909217949350505050565b613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000161480159061168b57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156116ec57613a3160f11b86876040516020016116aa91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102fc939291600401613252565b6116f7856000611e4b565b611702846001611fcd565b61170d836000611fcd565b60e084901c60e885901c0160ff1682511461176d5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b60e085901c60e886901c0160ff168151146117cd5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146118455760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102fc565b61184e86612174565b156118a857858660405160200161186791815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526102fc9291600401612f56565b6118f486868686866040516020016118c09190613293565b604051602081830303815290604052866040516020016118e09190613293565b604051602081830303815290604052612244565b610991866001612358565b611450858561190e848761196a565b8561244f565b600082826040516020016119299291906132a6565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156119a55761199160ff601b83900360080287901c1683613099565b91508061199d816132d4565b91505061196f565b509392505050565b6000602082106119d3576020820484019350602082816119cf576119cf6132ee565b0691505b508254600882021b6020829003808411156119a5576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052611a5d90612edd565b8203611a8957507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101ce91611af39101604051602081830303815290604052611aed90612edd565b846126a8565b602060006119ad565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b329493929190613304565b60405180910390a2613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001603610991576000611b73876126c4565b905060005b8151811015611c56576000828281518110611b9557611b95612f01565b60200260200101519050611bc16001826affffffffffffffffffffff191661278c90919063ffffffff16565b15611c43576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c10908c908c908c908c908c908c9060040161334e565b600060405180830381600087803b158015611c2a57600080fd5b505af1158015611c3e573d6000803e3d6000fd5b505050505b5080611c4e816132d4565b915050611b78565b506000611c638888611914565b90506000602087019050611c7b826000838a516127aa565b6000611c868561286a565b1115611d0a576000611c988a8a6128a7565b878155905060208601915060008060005b611cb28861286a565b8160ff161015611d0557611cc78d8d836128fd565b9250611ce28a8260ff166028026038011c64ffffffffff1690565b9150611cf183600087856127aa565b611cfb8286613099565b9450600101611ca9565b505050505b60005b835181101561111b576000848281518110611d2a57611d2a612f01565b60200260200101519050611d566002826affffffffffffffffffffff191661278c90919063ffffffff16565b15611dd8576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611da5908e908e908e908e908e908e9060040161334e565b600060405180830381600087803b158015611dbf57600080fd5b505af1158015611dd3573d6000803e3d6000fd5b505050505b5080611de3816132d4565b915050611d0d565b6000808260c5811115611e0057611e0061312c565b60ff1690506061811015611e1a57601f1660010192915050565b60618360c5811115611e2e57611e2e61312c565b03611e3c5750601492915050565b50600092915050565b50919050565b80158015611e57575081155b15611e91576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016102fc565b6000611e9c8361286a565b90506005811115611edc576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016102fc565b6000611ee78461297d565b90506000611ef58383613099565b9050601c811115611f35576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016102fc565b60005b828110156109915760ff601b82900360080287901c166000819003611f89576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115611fc4576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611f38565b80158015611fd9575081155b15611ffa57604051635318beb960e01b8152600060048201526024016102fc565b60006120058361286a565b9050600581111561202c57604051635318beb960e01b8152600481018290526024016102fc565b60006120378461297d565b905060006120458383613099565b9050601c81111561206c57604051635318beb960e01b8152600481018290526024016102fc565b60008060005b8381101561212d57600061209a6120898a8461298f565b60c58111156114c0576114c061312c565b11156120e4578481106120d9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612125565b8481101561211e576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101612072565b5083821461215157604051635318beb960e01b8152600481018390526024016102fc565b84811461069757604051635318beb960e01b8152600481018290526024016102fc565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121ad576121ad612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090610d869061221c90612edd565b8360007e01010001000000000000000000000000000000000000000000000000000000611404565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061227b8484611029565b905060006122898585611046565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106122c3576122c3612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c657300000000000000000000000000000000000000000000000000006030820152815180820390930183528101905261111b9061232f90612edd565b828686867e60030220202000000000000000000000000000000000000000000000000000611afc565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238e5761238e612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f757263654964730000000000000000000000000000000000000000006030820152815180820390930183528101905261244a906123fa90612edd565b8260008560405160200161241591151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118ff565b505050565b600061245b8585611914565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051612491939291906133a7565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146124cd5750610ea0565b60006124d8866126c4565b905060005b81518110156125b75760008282815181106124fa576124fa612f01565b602002602001015190506125266004826affffffffffffffffffffff191661278c90919063ffffffff16565b156125a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612571908b908b908b908b906004016133e4565b600060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050505b50806125af816132d4565b9150506124dd565b506125cb828565ffffffffffff16856129b0565b60005b81518110156106975760008282815181106125eb576125eb612f01565b602002602001015190506126176008826affffffffffffffffffffff191661278c90919063ffffffff16565b15612695576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612662908b908b908b908b906004016133e4565b600060405180830381600087803b15801561267c57600080fd5b505af1158015612690573d6000803e3d6000fd5b505050505b50806126a0816132d4565b9150506125ce565b6040805160208101849052908101829052600090606001611929565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106126fe576126fe612f01565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906127759061276d90612edd565b8360006129c0565b9050610d9261278782600084516129fa565b612a8a565b60008160ff168261279d8560581c90565b1660ff1614905092915050565b821561282457602083106127d4576020830484019350602083816127d0576127d06132ee565b0692505b82156128245760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311612815575050610ea0565b50600194909401939182019190035b5b602081106128465781518455600190930192602090910190601f1901612825565b8015610ea0576000600019600883021c198554845182169119161785555050505050565b6000600860018061287d60026020613228565b6128879190613228565b6128919190613228565b61289b919061323b565b8260ff911c1692915050565b600082826040516020016128bc9291906132a6565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016129129291906132a6565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008600161288760026020613228565b6000601b8290036008028360ff911c1660c58111156110225761102261312c565b61244a83836020840184516127aa565b6060610d926129d08585856128fd565b6129f3846129de8888612a9b565b9060ff166028026038011c64ffffffffff1690565b6000612aae565b6000818311158015612a0d575083518211155b612a49578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102fc9392919061341d565b60208401612a578482613099565b90506000612a658585613228565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110228360156000612ad1565b6000611022612aaa84846128a7565b5490565b60405160208101601f19603f85840101166040528382526119a585858584612b4c565b60606000612adf8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612b0557612b056132ee565b04905060405193506020840160208202810160405281855260005b82811015612b40578451871c825293870193602090910190600101612b20565b50505050509392505050565b8115612bd55760208210612b7657602082048401935060208281612b7257612b726132ee565b0691505b8115612bd5576020829003600081851015612b9a5750600019600885021c19612ba5565b50600019600882021c195b8554600885021b811984511682821617845250818511612bc6575050610ea0565b50600194909401939283900392015b5b60208310612bf75783548152600190930192601f1990920191602001612bd6565b8215610ea0576000600019600885021c198251865482169119161782525050505050565b600060208284031215612c2d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461102257600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612c9657612c96612c5d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612cc557612cc5612c5d565b604052919050565b600067ffffffffffffffff821115612ce757612ce7612c5d565b50601f01601f191660200190565b600060208284031215612d0757600080fd5b813567ffffffffffffffff811115612d1e57600080fd5b8201601f81018413612d2f57600080fd5b8035612d42612d3d82612ccd565b612c9c565b818152856020838501011115612d5757600080fd5b81602084016020830137600091810160200191909152949350505050565b60005b83811015612d90578181015183820152602001612d78565b50506000910152565b6000612da7612d3d84612ccd565b9050828152838383011115612dbb57600080fd5b611022836020830184612d75565b600082601f830112612dda57600080fd5b61102283835160208501612d99565b60008060408385031215612dfc57600080fd5b825171ffffffffffffffffffffffffffffffffffff1981168114612e1f57600080fd5b602084015190925067ffffffffffffffff80821115612e3d57600080fd5b9084019060608287031215612e5157600080fd5b612e59612c73565b825160ff81168114612e6a57600080fd5b8152602083015182811115612e7e57600080fd5b612e8a88828601612dc9565b602083015250604083015182811115612ea257600080fd5b612eae88828601612dc9565b6040830152508093505050509250929050565b60008251612ed3818460208701612d75565b9190910192915050565b80516020808301519190811015611e455760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60008151808452612f2f816020860160208601612d75565b601f01601f19169290920160200192915050565b6020815260006110226020830184612f17565b828152604060208201526000610d926040830184612f17565b600060208284031215612f8157600080fd5b815167ffffffffffffffff811115612f9857600080fd5b8201601f81018413612fa957600080fd5b610d9284825160208401612d99565b600060208284031215612fca57600080fd5b81516001600160a01b038116811461102257600080fd5b8381528260208201526060604082015260006114316060830184612f17565b600081518084526020808501945080840160005b8381101561303057815187529582019590820190600101613014565b509495945050505050565b8481526080602082015260006130546080830186613000565b60ff949094166040830152506060015292915050565b60006020828403121561307c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ce576101ce613083565b600083516130be818460208801612d75565b8351908301906130d2818360208801612d75565b01949350505050565b85815260a0602082015260006130f460a0830187613000565b82810360408401526131068187612f17565b905084606084015282810360808401526131208185612f17565b98975050505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b8581101561318a578284038952613178848351612f17565b98850198935090840190600101613160565b5091979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006131c260c0830185613142565b82810360a08401526131d48185613142565b9998505050505050505050565b85815260a0602082015260006131fa60a0830187613000565b60ff8616604084015282810360608401526132158186612f17565b9150508260808301529695505050505050565b818103818111156101ce576101ce613083565b80820281158282048414176101ce576101ce613083565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006114316060830184612f17565b6020815260006110226020830184613142565b82815260006020808301845182860160005b8281101561318a578151845292840192908401906001016132b8565b600060001982036132e7576132e7613083565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6080815260006133176080830187613000565b82810360208401526133298187612f17565b905084604084015282810360608401526133438185612f17565b979650505050505050565b86815260c06020820152600061336760c0830188613000565b82810360408401526133798188612f17565b905085606084015282810360808401526133938186612f17565b9150508260a0830152979650505050505050565b6060815260006133ba6060830186613000565b65ffffffffffff8516602084015282810360408401526133da8185612f17565b9695505050505050565b8481526080602082015260006133fd6080830186613000565b65ffffffffffff8516604084015282810360608401526133438185612f17565b6060815260006134306060830186612f17565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506148a1806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063472466c214610030575b600080fd5b61004361003e366004612140565b610045565b005b61005661005182610155565b61018d565b610067610062826101d9565b61020b565b61007861007382610247565b610279565b8173ffffffffffffffffffffffffffffffffffffffff16633350b6a961009d836102bd565b6040516100a990612133565b604051809103906000f0801580156100c5573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff16602482015260016044820152606401600060405180830381600087803b15801561013957600080fd5b505af115801561014d573d6000803e3d6000fd5b505050505050565b6000610187613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610306565b92915050565b6101d6817e200100200000000000000000000000000000000000000000000000000000006101b961038d565b6101c161044a565b6101c9610484565b6101d161055c565b6105d3565b50565b6000610187613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610306565b6101d6817e200100200000000000000000000000000000000000000000000000000000006102376106a7565b61023f61044a565b6101c96106e1565b6000610187613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610306565b6101d6817e010102010000000000000000000000000000000000000000000000000000006102a5610758565b6102ad610771565b6102b5610836565b6101d1610869565b60006101877f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d0000000000000000000000000000000000000000005b6000610314607060106121cd565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106103c7576103c76121e0565b602002602001019060c58111156103e0576103e06121f6565b908160c58111156103f3576103f36121f6565b8152505060618160018151811061040c5761040c6121e0565b602002602001019060c5811115610425576104256121f6565b908160c5811115610438576104386121f6565b90525061044481610989565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061040c5761040c6121e0565b6040805160028082526060828101909352816020015b606081526020019060019003908161049a5790505090506040518060400160405280600781526020017f6163636f756e7400000000000000000000000000000000000000000000000000815250816000815181106104fa576104fa6121e0565b60200260200101819052506040518060400160405280600781526020017f7370656e646572000000000000000000000000000000000000000000000000008152508160018151811061054e5761054e6121e0565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816105735790505090506040518060400160405280600581526020017f76616c75650000000000000000000000000000000000000000000000000000008152508160008151811061054e5761054e6121e0565b60006105dd610b4d565b90503073ffffffffffffffffffffffffffffffffffffffff82160361060f5761060a878787878787610b99565b61069e565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f499061066b908a908a908a908a908a908a906004016122b4565b600060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050505b50505050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061040c5761040c6121e0565b604080516001808252818301909252606091816020015b60608152602001906001900390816106f85790505090506040518060400160405280600781526020017f6163636f756e74000000000000000000000000000000000000000000000000008152508160008151811061054e5761054e6121e0565b6040805160008082526020820190925261044481610989565b60408051600380825260808201909252600091829190602082016060803683370190505090506000816000815181106107ac576107ac6121e0565b602002602001019060c58111156107c5576107c56121f6565b908160c58111156107d8576107d86121f6565b8152505060c5816001815181106107f1576107f16121e0565b602002602001019060c581111561080a5761080a6121f6565b908160c581111561081d5761081d6121f6565b8152505060c58160028151811061040c5761040c6121e0565b60408051600080825260208201909252606091610863565b606081526020019060019003908161084e5790505b50905090565b60408051600380825260808201909252606091816020015b60608152602001906001900390816108815790505090506040518060400160405280600881526020017f646563696d616c73000000000000000000000000000000000000000000000000815250816000815181106108e1576108e16121e0565b60200260200101819052506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600181518110610935576109356121e0565b60200260200101819052506040518060400160405280600681526020017f73796d626f6c00000000000000000000000000000000000000000000000000008152508160028151811061054e5761054e6121e0565b6000601c825111156109bc578151604051635318beb960e01b81526004016109b391815260200190565b60405180910390fd5b60008080805b8551811015610a97576000610a008783815181106109e2576109e26121e0565b602002602001015160c58111156109fb576109fb6121f6565b610e86565b905080600003610a1557600190920191610a4d565b8215610a4d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610a6e57610a6e6121e0565b602002602001015160c5811115610a8757610a876121f6565b901b9490941793506001016109c2565b506005811115610abd57604051635318beb960e01b8152600481018290526024016109b3565b84518190036008610ad0600260206122fe565b610ada9190612311565b83901b939093179260086001610af2600260206122fe565b610afc91906122fe565b610b069190612311565b81901b93909317926008600180610b1f600260206122fe565b610b2991906122fe565b610b3391906122fe565b610b3d9190612311565b9190911b92909217949350505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610b94573391505090565b919050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610c1257507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610c7357613a3160f11b8687604051602001610c3191815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109b3939291600401612328565b610c7e856000610ee6565b610c89846001611068565b610c94836000611068565b60e084901c60e885901c0160ff16825114610cf45760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b60e085901c60e886901c0160ff16815114610d545760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610dcc5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109b3565b610dd58661120f565b15610e2f578586604051602001610dee91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109b39291600401612369565b610e7b8686868686604051602001610e479190612382565b60405160208183030381529060405286604051602001610e679190612382565b6040516020818303038152906040526112f3565b61014d866001611413565b6000808260c5811115610e9b57610e9b6121f6565b60ff1690506061811015610eb557601f1660010192915050565b60618360c5811115610ec957610ec96121f6565b03610ed75750601492915050565b50600092915050565b50919050565b80158015610ef2575081155b15610f2c576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600060048201526024016109b3565b6000610f378361150a565b90506005811115610f77576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016109b3565b6000610f8284611547565b90506000610f9083836121cd565b9050601c811115610fd0576040517f97e36a0a000000000000000000000000000000000000000000000000000000008152600481018290526024016109b3565b60005b8281101561014d5760ff601b82900360080287901c166000819003611024576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561105f576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101610fd3565b80158015611074575081155b1561109557604051635318beb960e01b8152600060048201526024016109b3565b60006110a08361150a565b905060058111156110c757604051635318beb960e01b8152600481018290526024016109b3565b60006110d284611547565b905060006110e083836121cd565b9050601c81111561110757604051635318beb960e01b8152600481018290526024016109b3565b60008060005b838110156111c85760006111356111248a84611559565b60c58111156109fb576109fb6121f6565b111561117f57848110611174576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916111c0565b848110156111b9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b60010161110d565b508382146111ec57604051635318beb960e01b8152600481018390526024016109b3565b84811461069e57604051635318beb960e01b8152600481018290526024016109b3565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611248576112486121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112df906112b790612395565b8360007e01010001000000000000000000000000000000000000000000000000000000611581565b90506112eb8160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061132a84846115b7565b9050600061133885856115d4565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611372576113726121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611407906113de90612395565b828686867e60030220202000000000000000000000000000000000000000000000000000611600565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611449576114496121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611505906114b590612395565b826000856040516020016114d091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118ef565b505050565b6000600860018061151d600260206122fe565b61152791906122fe565b61153191906122fe565b61153b9190612311565b8260ff911c1692915050565b600060086001611527600260206122fe565b6000601b8290036008028360ff911c1660c581111561157a5761157a6121f6565b9392505050565b60006115ae611590868661190b565b60ff858116601b0360080285901c166115a98587611961565b6119a4565b95945050505050565b8151815160009181810160389190911b1760609190911b1761157a565b606082826040516020016115e99291906123b9565b604051602081830303815290604052905092915050565b857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516116369493929190612423565b60405180910390a2613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000160361014d576000611677876119f5565b905060005b815181101561175a576000828281518110611699576116996121e0565b602002602001015190506116c56001826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611747576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611714908c908c908c908c908c908c9060040161246d565b600060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050505b5080611752816124c6565b91505061167c565b506000611767888861190b565b9050600060208701905061177f826000838a51611adb565b600061178a8561150a565b111561180e57600061179c8a8a611b99565b878155905060208601915060008060005b6117b68861150a565b8160ff161015611809576117cb8d8d83611bef565b92506117e68a8260ff166028026038011c64ffffffffff1690565b91506117f58360008785611adb565b6117ff82866121cd565b94506001016117ad565b505050505b60005b835181101561140757600084828151811061182e5761182e6121e0565b6020026020010151905061185a6002826affffffffffffffffffffff1916611abd90919063ffffffff16565b156118dc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906118a9908e908e908e908e908e908e9060040161246d565b600060405180830381600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b505050505b50806118e7816124c6565b915050611811565b61190485856118fe8487611961565b85611c6f565b5050505050565b600082826040516020016119209291906124e0565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561199c5761198860ff601b83900360080287901c16836121cd565b915080611994816124c6565b915050611966565b509392505050565b6000602082106119ca576020820484019350602082816119c6576119c661251b565b0691505b508254600882021b60208290038084111561199c576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a2f57611a2f6121e0565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611aa690611a9e90612395565b836000611ec8565b90506112eb611ab88260008451611f02565b611f92565b60008160ff1682611ace8560581c90565b1660ff1614905092915050565b8215611b555760208310611b0557602083048401935060208381611b0157611b0161251b565b0692505b8215611b555760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611b46575050611b93565b50600194909401939182019190035b5b60208110611b775781518455600190930192602090910190601f1901611b56565b8015611b935783548251600019600884021c9182169119161784555b50505050565b60008282604051602001611bae9291906124e0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611c049291906124e0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000611c7b858561190b565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be858585604051611cb193929190612531565b60405180910390a2613a3160f11b857fffff0000000000000000000000000000000000000000000000000000000000001614611ced5750611b93565b6000611cf8866119f5565b905060005b8151811015611dd7576000828281518110611d1a57611d1a6121e0565b60200260200101519050611d466004826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611dc4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90611d91908b908b908b908b9060040161256e565b600060405180830381600087803b158015611dab57600080fd5b505af1158015611dbf573d6000803e3d6000fd5b505050505b5080611dcf816124c6565b915050611cfd565b50611deb828565ffffffffffff1685611fa3565b60005b815181101561069e576000828281518110611e0b57611e0b6121e0565b60200260200101519050611e376008826affffffffffffffffffffff1916611abd90919063ffffffff16565b15611eb5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611e82908b908b908b908b9060040161256e565b600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050505b5080611ec0816124c6565b915050611dee565b60606112eb611ed8858585611bef565b611efb84611ee68888611fb3565b9060ff166028026038011c64ffffffffff1690565b6000611fc6565b6000818311158015611f15575083518211155b611f51578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109b3939291906125a7565b60208401611f5f84826121cd565b90506000611f6d85856122fe565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061157a8360156000611fe9565b6115058383602084018451611adb565b600061157a611fc28484611b99565b5490565b60405160208101601f19603f858401011660405283825261199c85858584612064565b60606000611ff78560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161201d5761201d61251b565b04905060405193506020840160208202810160405281855260005b82811015612058578451871c825293870193602090910190600101612038565b50505050509392505050565b81156120ed576020821061208e5760208204840193506020828161208a5761208a61251b565b0691505b81156120ed5760208290036000818510156120b25750600019600885021c196120bd565b50600019600882021c195b8554600885021b8119845116828216178452508185116120de575050611b93565b50600194909401939283900392015b5b6020831061210f5783548152600190930192601f19909201916020016120ee565b8215611b93576000600019600885021c198251865482169119161782525050505050565b6122c8806125cd83390190565b6000806040838503121561215357600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461217757600080fd5b915060208301357fffffffffffffffffffffffffffff000000000000000000000000000000000000811681146121ac57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610187576101876121b7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b8381101561222757818101518382015260200161220f565b50506000910152565b6000815180845261224881602086016020860161220c565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156122a757601f19868403018952612295838351612230565b98840198925090830190600101612279565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006122df60c083018561225c565b82810360a08401526122f1818561225c565b9998505050505050505050565b81810381811115610187576101876121b7565b8082028115828204841417610187576101876121b7565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006115ae6060830184612230565b8281526040602082015260006112eb6040830184612230565b60208152600061157a602083018461225c565b80516020808301519190811015610ee05760001960209190910360031b1b16919050565b600083516123cb81846020880161220c565b8351908301906123df81836020880161220c565b01949350505050565b600081518084526020808501945080840160005b83811015612418578151875295820195908201906001016123fc565b509495945050505050565b60808152600061243660808301876123e8565b82810360208401526124488187612230565b905084604084015282810360608401526124628185612230565b979650505050505050565b86815260c06020820152600061248660c08301886123e8565b82810360408401526124988188612230565b905085606084015282810360808401526124b28186612230565b9150508260a0830152979650505050505050565b600060001982036124d9576124d96121b7565b5060010190565b82815260006020808301845182860160005b8281101561250e578151845292840192908401906001016124f2565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60608152600061254460608301866123e8565b65ffffffffffff8516602084015282810360408401526125648185612230565b9695505050505050565b84815260806020820152600061258760808301866123e8565b65ffffffffffff8516604084015282810360608401526124628185612230565b6060815260006125ba6060830186612230565b6020830194909452506040015291905056fe608060405234801561001057600080fd5b506122a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063dd62ed3e1461020e578063e1af802c1461022157600080fd5b806340c10f19146101ad57806345ec9354146101c257806370a08231146101cd57806395d89b41146101e057600080fd5b8063119df25f116100d3578063119df25f1461014a57806318160ddd1461016a57806323b872dd14610180578063313ce5671461019357600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063095ea7b314610137575b600080fd5b61010d610108366004611dad565b610229565b60405190151581526020015b60405180910390f35b61012a6102c2565b6040516101199190611e3f565b61010d610145366004611e69565b6102e1565b610152610303565b6040516001600160a01b039091168152602001610119565b61017261030d565b604051908152602001610119565b61010d61018e366004611e93565b610327565b61019b610357565b60405160ff9091168152602001610119565b6101c06101bb366004611e69565b61036c565b005b36601f190135610172565b6101726101db366004611ecf565b6103cc565b61012a6103e7565b6101c06101f6366004611e69565b6103fc565b61010d610209366004611e69565b610453565b61017261021c366004611eea565b61046b565b610152610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb42128800000000000000000000000000000000000000000000000000000000014806102bc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60606102dc6102d76102d2610491565b6104af565b6104e1565b905090565b6000806102ec610303565b90506102f9818585610507565b5060019392505050565b60006102dc610665565b60006102dc61032261031d610491565b610697565b6106c9565b600080610332610303565b905061033f8582856106ee565b61034a858585610776565b60019150505b9392505050565b60006102dc6103676102d2610491565b61080c565b610374610854565b6001600160a01b0382166103bc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103c86000838361086f565b5050565b60006102bc6103e16103dc610491565b610a37565b83610a69565b60606102dc6103f76102d2610491565b610ad7565b610404610854565b6001600160a01b038216610447576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6103c88260008361086f565b60008061045e610303565b90506102f9818585610776565b600061035061048061047b610491565b610af6565b8484610b28565b60006102dc610bc3565b60008061049d30610c02565b90506104a98160101b90565b91505090565b60006102bc613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610cde565b604080516000808252602082019092526060916104ff848383610d65565b949350505050565b6001600160a01b03831661054a576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b03821661058d576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6105a361059b61047b610491565b848484610e2c565b6105ab610ee3565b6001600160a01b031663c9a34acd7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256105ea866001600160a01b031690565b6001600160a01b0386166040805160208101889052016040516020818303038152906040526040518563ffffffff1660e01b815260040161062e9493929190611f33565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106945750335b90565b60006102bc613a3160f11b837f546f74616c537570706c79000000000000000000000000000000000000000000610cde565b6040805160008082526020820190925260006104ff848383630100080160dd1b610fbe565b60006107056106fe61047b610491565b8585610b28565b905060001981146107705781811015610763576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103b3565b6107708484848403610507565b50505050565b6001600160a01b0383166107b9576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b0382166107fc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b61080783838361086f565b505050565b6040805160008082526020820190925260006108498483837e01010201000000000000000000000000000000000000000000000000000000610fbe565b60f81c949350505050565b61086d61086030610c02565b610868610303565b61107b565b565b6000610879610491565b9050600061088682610697565b9050600061089383610a37565b90506001600160a01b0386166108c5576108c082856108b1856106c9565b6108bb9190611f6e565b61111c565b610935565b60006108d18288610a69565b905084811015610926576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101829052604481018690526064016103b3565b6109338288878403611143565b505b6001600160a01b03851661095c576109578285610951856106c9565b0361111c565b610972565b61097281868661096c858a610a69565b01611143565b61097a610ee3565b6001600160a01b031663c9a34acd7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109b9896001600160a01b031690565b6001600160a01b03891660408051602081018b9052016040516020818303038152906040526040518563ffffffff1660e01b81526004016109fd9493929190611f33565b600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b50505050505050505050565b60006102bc613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610cde565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610aae57610aae611f81565b60209081029190910101526000610ace858383630100080160dd1b610fbe565b95945050505050565b604080516000808252602082019092526060916104ff84836001610d65565b60006102bc613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610cde565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610b6d57610b6d611f81565b602002602001018181525050826001600160a01b031660001b81600181518110610b9957610b99611f81565b60209081029190910101526000610bb9868383630100080160dd1b610fbe565b9695505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610bfd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610c4757610c47611f81565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526000906104ff90610cce90611f97565b836000630100080160dd1b610fbe565b6000610cec60706010611f6e565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60606000610d71610bc3565b9050306001600160a01b03821603610d9657610d8e8585856111ab565b915050610350565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610ddf90889088908890600401611ff9565b600060405180830381865afa158015610dfc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d8e9190810190612025565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610e6d57610e6d611f81565b602002602001018181525050826001600160a01b031660001b81600181518110610e9957610e99611f81565b602002602001018181525050610edc8582600085604051602001610ebf91815260200190565b60408051601f19818403018152919052630100080160dd1b6111e5565b5050505050565b600080610eef30610c02565b60408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f50757070657452656769737472790000000000000000000000000000000000006030820152919250600091610f739101604051602081830303815290604052610f6d90611f97565b83611268565b90506001600160a01b0381166102bc576040517f9434f7e1000000000000000000000000000000000000000000000000000000008152306004820152602481018390526044016103b3565b600080610fc9610bc3565b9050306001600160a01b03821603610fef57610fe7868686866112e5565b9150506104ff565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061103a9089908990899089906004016120d2565b602060405180830381865afa158015611057573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612101565b6001600160a01b0381166110d07f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617611312565b6001600160a01b0316146103c8576110e782611405565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103b392919061211a565b60408051600080825260208201835291810183905290610807908490839060608201610ebf565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b8160008151811061118557611185611f81565b6020026020010181815250506107708482600085604051602001610ebf91815260200190565b60606104ff6111bb858585611581565b6111de846111c98888611601565b9060ff166028026038011c64ffffffffff1690565b6000611614565b60006111ef610bc3565b9050306001600160a01b038216036112135761120e8686868686611637565b611260565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906109fd9089908990899089908990600401612145565b505050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106112a1576112a1611f81565b602090810291909101015260006112d98583837e14010014000000000000000000000000000000000000000000000000000000610fbe565b60601c95945050505050565b6000610ace6112f4868661164c565b60ff858116601b0360080285901c1661130d85876116a2565b6116dd565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061134b5761134b611f81565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906113fa906113d290611f97565b8360007e14010014000000000000000000000000000000000000000000000000000000610fbe565b60601c949350505050565b606081601081901b60006114188361172e565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561146b577fffffffffffffffffffffffffffff000000000000000000000000000000000000831661148d565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156114bb57826114dd565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040517fffff00000000000000000000000000000000000000000000000000000000000090931660208401527f3a00000000000000000000000000000000000000000000000000000000000000602284018190527fffffffffffffffffffffffffffffffff00000000000000000000000000000000928316602385015260338401521660348201526044016040516020818303038152906040529350505050919050565b6000838360405160200161159692919061218c565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006103506116108484611745565b5490565b60405160208101601f19603f8584010116604052838252610e248585858461179b565b610edc858561164684876116a2565b8561186a565b6000828260405160200161166192919061218c565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610e24576116c960ff601b83900360080287901c1683611f6e565b9150806116d5816121c7565b9150506116a7565b600060208210611703576020820484019350602082816116ff576116ff6121e1565b0691505b508254600882021b602082900380841115610e24576001850154600882021c82179150509392505050565b600061173c60706010611f6e565b9190911b919050565b6000828260405160200161175a92919061218c565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b811561182457602082106117c5576020820484019350602082816117c1576117c16121e1565b0691505b81156118245760208290036000818510156117e95750600019600885021c196117f4565b50600019600882021c195b8554600885021b811984511682821617845250818511611815575050610770565b50600194909401939283900392015b5b602083106118465783548152600190930192601f1990920191602001611825565b8215610770576000600019600885021c198251865482169119161782525050505050565b6000611876858561164c565b9050847f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8585856040516118ac939291906121f7565b60405180910390a2613a3160f11b857fffff00000000000000000000000000000000000000000000000000000000000016146118e85750610770565b60006118f386611ac3565b905060005b81518110156119d257600082828151811061191557611915611f81565b602002602001015190506119416004826affffffffffffffffffffff1916611ba390919063ffffffff16565b156119bf576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061198c908b908b908b908b9060040161222a565b600060405180830381600087803b1580156119a657600080fd5b505af11580156119ba573d6000803e3d6000fd5b505050505b50806119ca816121c7565b9150506118f8565b506119e6828565ffffffffffff1685611bc1565b60005b815181101561065c576000828281518110611a0657611a06611f81565b60200260200101519050611a326008826affffffffffffffffffffff1916611ba390919063ffffffff16565b15611ab0576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611a7d908b908b908b908b9060040161222a565b600060405180830381600087803b158015611a9757600080fd5b505af1158015611aab573d6000803e3d6000fd5b505050505b5080611abb816121c7565b9150506119e9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611afd57611afd611f81565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611b8c90611b8490611f97565b8360006111ab565b90506104ff611b9e8260008451611bd1565b611c61565b60008160ff1682611bb48560581c90565b1660ff1614905092915050565b6108078383602084018451611c72565b6000818311158015611be4575083518211155b611c20578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103b393929190612263565b60208401611c2e8482611f6e565b90506000611c3c8585612288565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103508360156000611d32565b8215611cec5760208310611c9c57602083048401935060208381611c9857611c986121e1565b0692505b8215611cec5760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311611cdd575050610770565b50600194909401939182019190035b5b60208110611d0e5781518455600190930192602090910190601f1901611ced565b8015610770576000600019600883021c198554845182169119161785555050505050565b60606000611d408560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611d6657611d666121e1565b04905060405193506020840160208202810160405281855260005b82811015611da1578451871c825293870193602090910190600101611d81565b50505050509392505050565b600060208284031215611dbf57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035057600080fd5b60005b83811015611e0a578181015183820152602001611df2565b50506000910152565b60008151808452611e2b816020860160208601611def565b601f01601f19169290920160200192915050565b6020815260006103506020830184611e13565b80356001600160a01b0381168114610bfd57600080fd5b60008060408385031215611e7c57600080fd5b611e8583611e52565b946020939093013593505050565b600080600060608486031215611ea857600080fd5b611eb184611e52565b9250611ebf60208501611e52565b9150604084013590509250925092565b600060208284031215611ee157600080fd5b61035082611e52565b60008060408385031215611efd57600080fd5b611f0683611e52565b9150611f1460208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b848152836020820152826040820152608060608201526000610bb96080830184611e13565b634e487b7160e01b600052601160045260246000fd5b808201808211156102bc576102bc611f58565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015611fb8576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b83811015611fee57815187529582019590820190600101611fd2565b509495945050505050565b8381526060602082015260006120126060830185611fbe565b905060ff83166040830152949350505050565b60006020828403121561203757600080fd5b815167ffffffffffffffff8082111561204f57600080fd5b818401915084601f83011261206357600080fd5b81518181111561207557612075611f1d565b604051601f8201601f19908116603f0116810190838211818310171561209d5761209d611f1d565b816040528281528760208487010111156120b657600080fd5b6120c7836020830160208801611def565b979650505050505050565b8481526080602082015260006120eb6080830186611fbe565b60ff949094166040830152506060015292915050565b60006020828403121561211357600080fd5b5051919050565b60408152600061212d6040830185611e13565b90506001600160a01b03831660208301529392505050565b85815260a06020820152600061215e60a0830187611fbe565b60ff8616604084015282810360608401526121798186611e13565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156121ba5781518452928401929084019060010161219e565b5091979650505050505050565b600060001982036121da576121da611f58565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061220a6060830186611fbe565b65ffffffffffff851660208401528281036040840152610bb98185611e13565b8481526080602082015260006122436080830186611fbe565b65ffffffffffff8516604084015282810360608401526120c78185611e13565b6060815260006122766060830186611e13565b60208301949094525060400152919050565b818103818111156102bc576102bc611f5856fea164736f6c6343000815000aa164736f6c6343000815000aa164736f6c6343000815000a","sourceMap":"1479:9437:192:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1623:370;;;:::i;:::-;;6898:444;;;;;;:::i;:::-;;:::i;4969:468::-;;;:::i;3566:338::-;;;:::i;2170:134:105:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9863:515:192;;;;;;:::i;:::-;;:::i;5602:278::-;;;:::i;2939:133:105:-;;;:::i;2640:141::-;;;:::i;8065:954:192:-;;;;;;:::i;:::-;;:::i;2729:146::-;;;:::i;1997:175::-;;;:::i;2456:178:105:-;;;:::i;:::-;;;;;;;:::i;4366:599:192:-;;;:::i;2176:345::-;;;:::i;6249:348::-;;;:::i;10382:532::-;;;;;;:::i;:::-;;:::i;2310:140:105:-;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;2879:312:192:-;;;:::i;7547:514::-;;;;;;:::i;:::-;;:::i;1875:141:105:-;;;:::i;1819:584:99:-;;;:::i;:::-;;;5288:14:201;;5281:22;5263:41;;5251:2;5236:18;1819:584:99;5123:187:201;9023:401:192;;;;;;:::i;:::-;;:::i;3908:454::-;;;:::i;3195:367::-;;;:::i;2022:142:105:-;;;:::i;9428:431:192:-;;;;;;:::i;:::-;;:::i;6601:293::-;;;;;;:::i;:::-;;:::i;5884:361::-;;;:::i;5441:157::-;;;:::i;1572:26:99:-;;;;;;;;;7346:197:192;;;;;;:::i;:::-;;:::i;1623:370::-;1680:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1653:5:192;:40;;;;-1:-1:-1;;;;;1653:40:192;;;;;;;;;1716:16;;1699;;1716;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1699:34:192;;;;;;;;;;-1:-1:-1;;;;;5499:55:201;;;1699:34:192;;;5481:74:201;5454:18;;1699:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1739:5:192;;1759:18;;-1:-1:-1;;;;;1739:5:192;;;;-1:-1:-1;1739:19:192;;-1:-1:-1;1759:18:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1779:12:192;;;1789:1;1779:12;;;;;;;;;1739:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1834:5:192;;996:42:24;2304:38;;;;-1:-1:-1;;;;;1834:5:192;;;2304:38:24;;;;;;-1:-1:-1;1798:43:192;;-1:-1:-1;2241:106:24;1798:43:192;1890:98;1904:5;;;;;;;;;-1:-1:-1;;;;;1904:5:192;1890:98;1922:65;;;;;;;;1952:2;1922:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:13;:98::i;:::-;1882:5;:106;;;;-1:-1:-1;;;;;1882:106:192;;;;;;;;;;1623:370::o;6898:444::-;6983:29;;-1:-1:-1;;;6983:29:192;;-1:-1:-1;;;;;6993:18:192;;;;6983:29;;;5263:41:201;6983:9:192;;;;5236:18:201;;6983:29:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7018:35:192;;-1:-1:-1;;;7018:35:192;;7028:24;;;;7018:35;;;5263:41:201;7018:9:192;;-1:-1:-1;7018:9:192;;-1:-1:-1;5236:18:201;;7018:35:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7060:5:192;;:28;;-1:-1:-1;;;7060:28:192;;-1:-1:-1;;;;;6313:55:201;;;7060:28:192;;;6295:74:201;6385:18;;;6378:34;;;7060:5:192;;;;-1:-1:-1;7060:10:192;;-1:-1:-1;6268:18:201;;7060:28:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7094:37:192;;-1:-1:-1;;;7094:37:192;;7108:4;7094:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;7094:13:192;;-1:-1:-1;7094:13:192;;-1:-1:-1;6602:19:201;;7094:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7142:38:192;;7005:25:201;;;7165:1:192;;-1:-1:-1;;;;;;7142:38:192;;;-1:-1:-1;7142:38:192;;6993:2:201;6978:18;7142:38:192;;;;;;;7186:5;;:28;;;;;-1:-1:-1;;;;;6313:55:201;;;7186:28:192;;;6295:74:201;6385:18;;;6378:34;;;7186:5:192;;;;:10;;6268:18:201;;7186:28:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7221:54;7230:5;;;;;;;;;-1:-1:-1;;;;;7230:5:192;-1:-1:-1;;;;;7230:17:192;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7251:23;7264:10;7251;:23;:::i;:::-;7221:8;:54::i;:::-;7290:5;;:21;;-1:-1:-1;;;7290:21:192;;-1:-1:-1;;;;;5499:55:201;;;7290:21:192;;;5481:74:201;7281:56:192;;7290:5;;:15;;5454:18:201;;7290:21:192;;;;;;;;;;;;;;;;;;;;;;;7281:56;6898:444;;;:::o;4969:468::-;5062:5;;:22;;-1:-1:-1;;;5062:22:192;;5048:6;5062:22;;;6295:74:201;;;5079:4:192;6385:18:201;;;6378:34;5048:6:192;-1:-1:-1;;;;;5062:5:192;;:10;;6268:18:201;;5062:22:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5091:14:192;;-1:-1:-1;;;5091:14:192;;-1:-1:-1;;;;;5499:55:201;;5091:14:192;;;5481:74:201;5091:8:192;;-1:-1:-1;5091:8:192;;-1:-1:-1;5454:18:201;;5091:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5111:5:192;;:47;;-1:-1:-1;;;5111:47:192;;5133:4;5111:47;;;6295:74:201;-1:-1:-1;;6385:18:201;;;6378:34;-1:-1:-1;;;;;5111:5:192;;;;-1:-1:-1;5111:13:192;;-1:-1:-1;6268:18:201;;5111:47:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5176:5:192;;:47;;-1:-1:-1;;;5176:47:192;;-1:-1:-1;;;;;8700:15:201;;;5176:47:192;;;8682:34:201;5209:6:192;8732:18:201;;;8725:43;5218:4:192;8784:18:201;;;8777:34;5165:59:192;;5176:5;;:18;;8594::201;;5176:47:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5165:10;:59::i;:::-;5239:5;;:19;;;-1:-1:-1;;;5239:19:192;;;;5230:35;;-1:-1:-1;;;;;5239:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5260:4;5230:8;:35::i;:::-;5281:5;;:36;;-1:-1:-1;;;5281:36:192;;-1:-1:-1;;;;;9075:15:201;;;5281:36:192;;;9057:34:201;5311:4:192;9107:18:201;;;9100:43;5272:65:192;;5281:5;;:15;;8969:18:201;;5281:36:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5272:8:192;:65::i;:::-;5353:5;;:21;;-1:-1:-1;;;5353:21:192;;-1:-1:-1;;;;;5499:55:201;;;5353:21:192;;;5481:74:201;5344:34:192;;5353:5;;:15;;5454:18:201;;5353:21:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5376:1;5344:8;:34::i;:::-;5393:5;;:32;;-1:-1:-1;;;5393:32:192;;5417:6;5393:32;;;5481:74:201;5384:48:192;;-1:-1:-1;;;;;5393:5:192;;:15;;5454:18:201;;5393:32:192;;;;;;;;;;;;;;;;;;;;;;;5384:48;5019:418;4969:468::o;3566:338::-;3602:37;;-1:-1:-1;;;3602:37:192;;3616:4;3602:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;3602:13:192;;;;6602:19:201;;3602:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3650:46:192;;3691:4;7005:25:201;;3682:6:192;;-1:-1:-1;3667:4:192;;-1:-1:-1;3650:46:192;;6993:2:201;6978:18;3650:46:192;;;;;;;3702:25;;;;;;;;;;;;;;;;;;:14;:25::i;:::-;3748:5;;:36;;-1:-1:-1;;;3748:36:192;;3770:6;3748:36;;;6295:74:201;3779:4:192;6385:18:201;;;6378:34;3733:12:192;;-1:-1:-1;;;;;3748:5:192;;:13;;6268:18:201;;3748:36:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3733:51;;3790:14;:12;:14::i;:::-;3810:19;3821:7;3810:10;:19::i;:::-;3845:5;;:47;;-1:-1:-1;;;3845:47:192;;3869:4;3845:47;;;9057:34:201;3884:6:192;9107:18:201;;;9100:43;3836:63:192;;-1:-1:-1;;;;;3845:5:192;;:15;;8969:18:201;;3845:47:192;8822:327:201;2170:134:105;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:105;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;9863:515:192:-;9976:27;;-1:-1:-1;;;9976:27:192;;-1:-1:-1;;;;;9986:16:192;;;;9976:27;;;5263:41:201;9976:9:192;;;;5236:18:201;;9976:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10009:39:192;;-1:-1:-1;;;10009:39:192;;-1:-1:-1;;10019:28:192;;10009:39;;;5263:41:201;10009:9:192;;-1:-1:-1;10009:9:192;;-1:-1:-1;5236:18:201;;10009:39:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10054:28:192;;-1:-1:-1;;;10054:28:192;;10064:17;;;10054:28;;;5263:41:201;10054:9:192;;-1:-1:-1;10054:9:192;;-1:-1:-1;5236:18:201;;10054:28:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10126:5:192;;:24;;-1:-1:-1;;;10126:24:192;;10112:6;10126:24;;;6295:74:201;;;6385:18;;;6378:34;;;10112:6:192;-1:-1:-1;;;;;;10126:5:192;;;;-1:-1:-1;10126:10:192;;6268:18:201;;10126:24:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10157:14:192;;-1:-1:-1;;;10157:14:192;;-1:-1:-1;;;;;5499:55:201;;10157:14:192;;;5481:74:201;10157:8:192;;-1:-1:-1;10157:8:192;;-1:-1:-1;5454:18:201;;10157:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10177:5:192;;:38;;-1:-1:-1;;;10177:38:192;;10199:4;10177:38;;;6295:74:201;6385:18;;;6378:34;;;-1:-1:-1;;;;;10177:5:192;;;;-1:-1:-1;10177:13:192;;-1:-1:-1;6268:18:201;;10177:38:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10238:92:192;;10306:4;10238:92;;;9564:74:201;9654:18;;;9647:34;;;9697:18;;;9690:34;;;10222:15:192;;;;10261:35;;9537:18:201;;10238:92:192;;;;-1:-1:-1;;10238:92:192;;;;;;;;;;;;;;;;;;;;;;;10222:109;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10337:5:192;;:36;;-1:-1:-1;;;10337:36:192;;-1:-1:-1;;;;;8700:15:201;;;10337:36:192;;;8682:34:201;8752:15;;;8732:18;;;8725:43;8784:18;;;8777:34;;;10337:5:192;;;;-1:-1:-1;10337:18:192;;-1:-1:-1;8594:18:201;;10337:36:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9970:408;9863:515;;;:::o;5602:278::-;5665:5;;:33;;-1:-1:-1;;;5665:33:192;;5684:4;5665:33;;;6295:74:201;5691:6:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;5665:5:192;;;;:10;;6268:18:201;;5665:33:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5727:99:192;;;5806:4;5727:99;;;10939:74:201;5813:6:192;11066:18:201;;;11059:43;5821:4:192;11118:18:201;;;;11111:43;;;;5727:99:192;;;;;;;;;;10912:18:201;;;;5727:99:192;;;;;;;;;-1:-1:-1;;;5727:99:192;;;5704:128;;;;;:15;;-1:-1:-1;5704:15:192;;-1:-1:-1;5704:128:192;;5727:99;5704:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5838:5:192;;:37;;-1:-1:-1;;;5838:37:192;;5861:6;5838:37;;;6295:74:201;5870:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;5838:5:192;;;;-1:-1:-1;5838:14:192;;-1:-1:-1;6268:18:201;;5838:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2939:133:105:-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:105;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:105;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;8065:954:192:-;8181:29;;-1:-1:-1;;;8181:29:192;;-1:-1:-1;;;;;8191:18:192;;;;8181:29;;;5263:41:201;8181:9:192;;;;5236:18:201;;8181:29:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8216:27:192;;-1:-1:-1;;;8216:27:192;;-1:-1:-1;;;;;8226:16:192;;;;8216:27;;;5263:41:201;8216:9:192;;-1:-1:-1;8216:9:192;;-1:-1:-1;5236:18:201;;8216:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8249:32:192;;-1:-1:-1;;;8249:32:192;;-1:-1:-1;;;;;8259:21:192;;;;8249:32;;;5263:41:201;8249:9:192;;-1:-1:-1;8249:9:192;;-1:-1:-1;5236:18:201;;8249:32:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8287:29:192;;-1:-1:-1;;;8287:29:192;;8297:18;;;;8287:29;;;5263:41:201;8287:9:192;;-1:-1:-1;8287:9:192;;-1:-1:-1;5236:18:201;;8287:29:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8323:5:192;;:24;;-1:-1:-1;;;8323:24:192;;-1:-1:-1;;;;;6313:55:201;;;8323:24:192;;;6295:74:201;6385:18;;;6378:34;;;8323:5:192;;;;-1:-1:-1;8323:10:192;;-1:-1:-1;6268:18:201;;8323:24:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8362:5:192;;:21;;-1:-1:-1;;;8362:21:192;;-1:-1:-1;;;;;5499:55:201;;;8362:21:192;;;5481:74:201;8353:39:192;;-1:-1:-1;8362:5:192;;;;-1:-1:-1;8362:15:192;;5454:18:201;;8362:21:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8385:6;8353:8;:39::i;:::-;8399:14;;-1:-1:-1;;;8399:14:192;;-1:-1:-1;;;;;5499:55:201;;8399:14:192;;;5481:74:201;8399:8:192;;;;5454:18:201;;8399:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8419:5:192;;:32;;-1:-1:-1;;;8419:32:192;;-1:-1:-1;;;;;6313:55:201;;;8419:32:192;;;6295:74:201;6385:18;;;6378:34;;;8419:5:192;;;;-1:-1:-1;8419:13:192;;-1:-1:-1;6268:18:201;;8419:32:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8458:37:192;;-1:-1:-1;;;8458:37:192;;8472:4;8458:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;8458:13:192;;;;6602:19:201;;8458:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8521:2;-1:-1:-1;;;;;8506:26:192;8515:4;-1:-1:-1;;;;;8506:26:192;;8525:6;8506:26;;;;7005:25:201;;6993:2;6978:18;;6859:177;8506:26:192;;;;;;;;8538:17;;-1:-1:-1;;;8538:17:192;;-1:-1:-1;;;;;5499:55:201;;8538:17:192;;;5481:74:201;8538:8:192;;;;5454:18:201;;8538:17:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8572:5:192;;:36;;-1:-1:-1;;;8572:36:192;;-1:-1:-1;;;;;8700:15:201;;;8572:36:192;;;8682:34:201;8752:15;;;8732:18;;;8725:43;8784:18;;;8777:34;;;8561:48:192;;-1:-1:-1;8572:5:192;;;;-1:-1:-1;8572:18:192;;8594::201;;8572:36:192;8393:424:201;8561:48:192;8624:5;;:19;;;-1:-1:-1;;;8624:19:192;;;;8615:37;;-1:-1:-1;;;;;8624:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;8615:37;-1:-1:-1;;8663:8:192;:29;8659:180;;8711:5;;:30;;-1:-1:-1;;;8711:30:192;;-1:-1:-1;;;;;9075:15:201;;;8711:30:192;;;9057:34:201;9127:15;;;9107:18;;;9100:43;8702:50:192;;8711:5;;:15;;8969:18:201;;8711:30:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8743:8;8702;:50::i;:::-;8659:180;;;8782:5;;:30;;-1:-1:-1;;;8782:30:192;;-1:-1:-1;;;;;9075:15:201;;;8782:30:192;;;9057:34:201;9127:15;;;9107:18;;;9100:43;8773:59:192;;8782:5;;:15;;8969:18:201;;8782:30:192;8822:327:201;8773:59:192;8857:2;-1:-1:-1;;;;;8849:10:192;:4;-1:-1:-1;;;;;8849:10:192;;8845:170;;8878:5;;:21;;-1:-1:-1;;;8878:21:192;;-1:-1:-1;;;;;5499:55:201;;;8878:21:192;;;5481:74:201;8869:39:192;;8878:5;;:15;;5454:18:201;;8878:21:192;5315:246:201;8869:39:192;8845:170;;;8938:5;;:21;;-1:-1:-1;;;8938:21:192;;-1:-1:-1;;;;;5499:55:201;;;8938:21:192;;;5481:74:201;8929:34:192;;8938:5;;:15;;5454:18:201;;8938:21:192;5315:246:201;8929:34:192;8980:5;;:19;;-1:-1:-1;;;8980:19:192;;-1:-1:-1;;;;;5499:55:201;;;8980:19:192;;;5481:74:201;8971:37:192;;8980:5;;:15;;5454:18:201;;8980:19:192;5315:246:201;2729:146:192;2775:5;;:12;;;;;;;;2766:31;;-1:-1:-1;;;;;2775:5:192;;:10;;:12;;;;;:5;;:12;;;;;;;:5;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2775:12:192;;;;;;;;;;;;:::i;:::-;2766:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2812:5;;:14;;;;;;;;2803:31;;-1:-1:-1;;;;;2812:5:192;;:12;;:14;;;;;:5;;:14;;;;;;;:5;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2812:14:192;;;;;;;;;;;;:::i;:::-;2803:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2849:5;;:16;;;;;;;;2840:30;;-1:-1:-1;;;;;2849:5:192;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2840:30;;2867:2;2840:8;:30::i;:::-;2729:146::o;1997:175::-;2050:5;;2031:40;;-1:-1:-1;;;;;2050:5:192;2042:28;;2031:10;:40::i;:::-;2077:90;2086:65;1551::58;2086:18:192;:65::i;2105:45::-;2086:18;:65::i;:::-;2161:4;2077:8;:90::i;2456:178:105:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;4366:599:192:-;4444:5;;:22;;-1:-1:-1;;;4444:22:192;;4430:6;4444:22;;;6295:74:201;;;4461:4:192;6385:18:201;;;6378:34;4430:6:192;-1:-1:-1;;;;;4444:5:192;;:10;;6268:18:201;;4444:22:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4473:14:192;;-1:-1:-1;;;4473:14:192;;-1:-1:-1;;;;;5499:55:201;;4473:14:192;;;5481:74:201;4473:8:192;;-1:-1:-1;4473:8:192;;-1:-1:-1;5454:18:201;;4473:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4493:5:192;;:34;;-1:-1:-1;;;4493:34:192;;4515:4;4493:34;;;6295:74:201;4522:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;4493:5:192;;;;-1:-1:-1;4493:13:192;;-1:-1:-1;6268:18:201;;4493:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4534:37:192;;-1:-1:-1;;;4534:37:192;;4548:4;4534:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;4534:13:192;;;;6602:19:201;;4534:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4582:37:192;;4614:4;7005:25:201;;4605:6:192;;-1:-1:-1;;;;;;4582:37:192;;;-1:-1:-1;4582:37:192;;6993:2:201;6978:18;4582:37:192;;;;;;;4625:30;;;;;;;;;;;;;;;;;;:14;:30::i;:::-;4676:5;;:47;;-1:-1:-1;;;4676:47:192;;-1:-1:-1;;;;;8700:15:201;;;4676:47:192;;;8682:34:201;4709:6:192;8732:18:201;;;8725:43;4718:4:192;8784:18:201;;;8777:34;4661:12:192;;4676:5;;:18;;8594::201;;4676:47:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4661:62;;4729:14;:12;:14::i;:::-;4749:19;4760:7;4749:10;:19::i;:::-;4783:5;;:19;;;-1:-1:-1;;;4783:19:192;;;;4774:35;;-1:-1:-1;;;;;4783:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4774:35;4825:5;;:36;;-1:-1:-1;;;4825:36:192;;-1:-1:-1;;;;;9075:15:201;;;4825:36:192;;;9057:34:201;4855:4:192;9107:18:201;;;9100:43;4816:49:192;;4825:5;;:15;;8969:18:201;;4825:36:192;8822:327:201;4816:49:192;4881:5;;:21;;-1:-1:-1;;;4881:21:192;;-1:-1:-1;;;;;5499:55:201;;;4881:21:192;;;5481:74:201;4872:34:192;;4881:5;;:15;;5454:18:201;;4881:21:192;5315:246:201;4872:34:192;4921:5;;:32;;-1:-1:-1;;;4921:32:192;;4945:6;4921:32;;;5481:74:201;4912:48:192;;-1:-1:-1;;;;;4921:5:192;;:15;;5454:18:201;;4921:32:192;5315:246:201;4912:48:192;4401:564;;4366:599::o;2176:345::-;2249:27;2279:127;2300:5;;;;;;;;;-1:-1:-1;;;;;2300:5:192;2279:127;2335:65;;;;;;;;2365:2;2335:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2279:13;:127::i;:::-;2249:157;-1:-1:-1;2412:47:192;-1:-1:-1;;;;;2423:35:192;;;;2412:10;:47::i;:::-;2509:5;;2465:51;;-1:-1:-1;;;;;2476:39:192;;;2509:5;;2476:39;;2465:10;:51::i;6249:348::-;6353:5;;:24;;-1:-1:-1;;;6353:24:192;;6339:6;6353:24;;;6295:74:201;;;6370:6:192;6385:18:201;;;6378:34;6339:6:192;-1:-1:-1;;;;;6353:5:192;;:10;;6268:18:201;;6353:24:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6384:14:192;;-1:-1:-1;;;6384:14:192;;-1:-1:-1;;;;;5499:55:201;;6384:14:192;;;5481:74:201;6384:8:192;;-1:-1:-1;6384:8:192;;-1:-1:-1;5454:18:201;;6384:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6404:5:192;;:34;;-1:-1:-1;;;6404:34:192;;6426:4;6404:34;;;6295:74:201;6433:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;6404:5:192;;;;-1:-1:-1;6404:13:192;;-1:-1:-1;6268:18:201;;6404:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6461:77:192;;-1:-1:-1;;;;;10957:55:201;;6461:77:192;;;10939:74:201;6525:6:192;11066:18:201;;;11059:43;6533:4:192;11118:18:201;;;11111:43;6445:15:192;;;;-1:-1:-1;;;6484:33:192;10912:18:201;;6461:77:192;;;;-1:-1:-1;;6461:77:192;;;;;;;;;;;;;;;;;;;;;;;6445:94;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6545:5:192;;:47;;-1:-1:-1;;;6545:47:192;;-1:-1:-1;;;;;8700:15:201;;;6545:47:192;;;8682:34:201;6578:6:192;8732:18:201;;;8725:43;6587:4:192;8784:18:201;;;8777:34;6545:5:192;;;;-1:-1:-1;6545:18:192;;-1:-1:-1;8594:18:201;;6545:47:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10382:532::-;10499:27;;-1:-1:-1;;;10499:27:192;;-1:-1:-1;;;;;10509:16:192;;;;10499:27;;;5263:41:201;10499:9:192;;;;5236:18:201;;10499:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10532:41:192;;-1:-1:-1;;;10532:41:192;;-1:-1:-1;;10542:30:192;;10532:41;;;5263::201;10532:9:192;;-1:-1:-1;10532:9:192;;-1:-1:-1;5236:18:201;;10532:41:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10579:34:192;;-1:-1:-1;;;10579:34:192;;10589:23;;;10579:34;;;5263:41:201;10579:9:192;;-1:-1:-1;10579:9:192;;-1:-1:-1;5236:18:201;;10579:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10657:5:192;;:28;;-1:-1:-1;;;10657:28:192;;10643:6;10657:28;;;6295:74:201;;;6385:18;;;6378:34;;;10643:6:192;-1:-1:-1;;;;;;10657:5:192;;;;-1:-1:-1;10657:10:192;;6268:18:201;;10657:28:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10692:14:192;;-1:-1:-1;;;10692:14:192;;-1:-1:-1;;;;;5499:55:201;;10692:14:192;;;5481:74:201;10692:8:192;;-1:-1:-1;10692:8:192;;-1:-1:-1;5454:18:201;;10692:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10712:5:192;;:40;;-1:-1:-1;;;10712:40:192;;10734:4;10712:40;;;6295:74:201;6385:18;;;6378:34;;;-1:-1:-1;;;;;10712:5:192;;;;-1:-1:-1;10712:13:192;;-1:-1:-1;6268:18:201;;10712:40:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10775:87:192;;-1:-1:-1;;;;;9582:55:201;;10775:87:192;;;9564:74:201;9654:18;;;9647:34;;;9697:18;;;9690:34;;;10759:15:192;;;;-1:-1:-1;;;10798:33:192;9537:18:201;;10775:87:192;9362:368:201;2310:140:105;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:312:192;2912:37;;-1:-1:-1;;;2912:37:192;;2926:4;2912:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;2912:13:192;;;;6602:19:201;;2912:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2960:43:192;;2998:4;7005:25:201;;2989:6:192;;-1:-1:-1;2977:1:192;;-1:-1:-1;2960:43:192;;6993:2:201;6978:18;2960:43:192;;;;;;;3009:22;;;;;;;;;;;;;;;;;;:14;:22::i;:::-;3037:5;;:33;;-1:-1:-1;;;3037:33:192;;3056:6;3037:33;;;6295:74:201;3065:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;3037:5:192;;;;:10;;6268:18:201;;3037:33:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3076:14;:12;:14::i;:::-;3106:5;;:19;;;-1:-1:-1;;;3106:19:192;;;;3097:35;;-1:-1:-1;;;;;3106:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;3097:35;3147:5;;:32;;-1:-1:-1;;;3147:32:192;;3171:6;3147:32;;;5481:74:201;3138:48:192;;-1:-1:-1;;;;;3147:5:192;;:15;;5454:18:201;;3147:32:192;5315:246:201;7547:514:192;7610:27;;-1:-1:-1;;;7610:27:192;;-1:-1:-1;;;;;7620:16:192;;;;7610:27;;;5263:41:201;7610:9:192;;;;5236:18:201;;7610:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7643:5:192;;:33;;-1:-1:-1;;;7643:33:192;;7662:4;7643:33;;;6295:74:201;6385:18;;;6378:34;;;-1:-1:-1;;;;;7643:5:192;;;;-1:-1:-1;7643:10:192;;-1:-1:-1;6268:18:201;;7643:33:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7683:37:192;;-1:-1:-1;;;7683:37:192;;7697:4;7683:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;7683:13:192;;-1:-1:-1;7683:13:192;;-1:-1:-1;6602:19:201;;7683:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7731:35:192;;7005:25:201;;;-1:-1:-1;;;;;7731:35:192;;;-1:-1:-1;7748:4:192;;-1:-1:-1;7731:35:192;;6993:2:201;6978:18;7731:35:192;;;;;;;7783:5;;:26;;-1:-1:-1;;;7783:26:192;;-1:-1:-1;;;;;6313:55:201;;;7783:26:192;;;6295:74:201;6385:18;;;6378:34;;;7772:38:192;;7783:5;;:14;;6268:18:201;;7783:26:192;6121:297:201;7772:38:192;7825:5;;:19;;;-1:-1:-1;;;7825:19:192;;;;7816:37;;-1:-1:-1;;;;;7825:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;7816:37;-1:-1:-1;;;;;7864:19:192;;7872:4;7864:19;7860:197;;7902:5;;:30;;-1:-1:-1;;;7902:30:192;;7926:4;7902:30;;;5481:74:201;7893:48:192;;-1:-1:-1;;;;;7902:5:192;;:15;;5454:18:201;;7902:30:192;5315:246:201;7860:197:192;7971:5;;:30;;-1:-1:-1;;;7971:30:192;;7995:4;7971:30;;;5481:74:201;7962:43:192;;-1:-1:-1;;;;;7971:5:192;;:15;;5454:18:201;;7971:30:192;5315:246:201;7962:43:192;8022:5;;:19;;-1:-1:-1;;;8022:19:192;;-1:-1:-1;;;;;5499:55:201;;;8022:19:192;;;5481:74:201;8013:37:192;;8022:5;;:15;;5454:18:201;;8022:19:192;5315:246:201;1875:141:105;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:99;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:99;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;6295:74:201;;;2221:17:99;6385:18:201;;;6378:34;2196:43:99;;;;;;;;;6268:18:201;;;2196:43:99;;;-1:-1:-1;;1671:64:99;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:99;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:99:o;9023:401:192:-;9132:27;;-1:-1:-1;;;9132:27:192;;-1:-1:-1;;;;;9142:16:192;;;;9132:27;;;5263:41:201;9132:9:192;;;;5236:18:201;;9132:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9165:41:192;;-1:-1:-1;;;9165:41:192;;-1:-1:-1;;9175:30:192;;9165:41;;;5263::201;9165:9:192;;-1:-1:-1;9165:9:192;;-1:-1:-1;5236:18:201;;9165:41:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9212:34:192;;-1:-1:-1;;;9212:34:192;;9222:23;;;9212:34;;;5263:41:201;9212:9:192;;-1:-1:-1;9212:9:192;;-1:-1:-1;5236:18:201;;9212:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9253:5:192;;:26;;-1:-1:-1;;;9253:26:192;;-1:-1:-1;;;;;6313:55:201;;;9253:26:192;;;6295:74:201;6385:18;;;6378:34;;;9253:5:192;;;;-1:-1:-1;9253:10:192;;-1:-1:-1;6268:18:201;;9253:26:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9301:85:192;;;-1:-1:-1;;;;;9582:55:201;;9301:85:192;;;9564:74:201;9654:18;;;9647:34;;;9697:18;;;;9690:34;;;9301:85:192;;;;;;;;;;9537:18:201;;;;9301:85:192;;;;;;;;;-1:-1:-1;;;9301:85:192;;;9285:102;;;;;:15;;-1:-1:-1;9285:15:192;;-1:-1:-1;9285:102:192;;9301:85;9285:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9393:5:192;;:26;;;;;-1:-1:-1;;;;;6313:55:201;;;9393:26:192;;;6295:74:201;6385:18;;;6378:34;;;9393:5:192;;;;-1:-1:-1;9393:10:192;;-1:-1:-1;6268:18:201;;9393:26:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9023:401;;;:::o;3908:454::-;3945:5;;:31;;-1:-1:-1;;;3945:31:192;;3964:4;3945:31;;;6295:74:201;3971:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;3945:5:192;;;;:10;;6268:18:201;;3945:31:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3983:37:192;;-1:-1:-1;;;3983:37:192;;3997:4;3983:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;3983:13:192;;-1:-1:-1;3983:13:192;;-1:-1:-1;6602:19:201;;3983:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4031:46:192;;4072:4;7005:25:201;;4063:6:192;;-1:-1:-1;4048:4:192;;-1:-1:-1;4031:46:192;;6993:2:201;6978:18;4031:46:192;;;;;;;4083:26;;;;;;;;;;;;;;;;;;:14;:26::i;:::-;4130:5;;:37;;-1:-1:-1;;;4130:37:192;;4153:6;4130:37;;;6295:74:201;4162:4:192;6385:18:201;;;6378:34;4115:12:192;;-1:-1:-1;;;;;4130:5:192;;:14;;6268:18:201;;4130:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4115:52;;4173:14;:12;:14::i;:::-;4193:19;4204:7;4193:10;:19::i;:::-;4227:5;;:19;;;-1:-1:-1;;;4227:19:192;;;;4218:35;;-1:-1:-1;;;;;4227:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4218:35;4269:5;;:30;;-1:-1:-1;;;4269:30:192;;4293:4;4269:30;;;5481:74:201;4260:43:192;;-1:-1:-1;;;;;4269:5:192;;:15;;5454:18:201;;4269:30:192;5315:246:201;3195:367:192;3228:5;;:33;;-1:-1:-1;;;3228:33:192;;3247:6;3228:33;;;6295:74:201;3256:4:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;3228:5:192;;;;:10;;6268:18:201;;3228:33:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3268:37:192;;-1:-1:-1;;;3268:37:192;;3282:4;3268:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;3268:13:192;;-1:-1:-1;3268:13:192;;-1:-1:-1;6602:19:201;;3268:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3316:45:192;;3354:6;7005:25:201;;3350:1:192;;-1:-1:-1;3333:6:192;;-1:-1:-1;3316:45:192;;6993:2:201;6978:18;3316:45:192;;;;;;;3367:22;;;;;;;;;;;;;;;;;;:14;:22::i;:::-;3395:5;;:35;;;;;3414:6;3395:35;;;6295:74:201;3423:6:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;3395:5:192;;;;:10;;6268:18:201;;3395:35:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3436:14;:12;:14::i;:::-;3466:5;;:19;;;-1:-1:-1;;;3466:19:192;;;;3457:44;;-1:-1:-1;;;;;3466:5:192;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3487:13;3457:8;:44::i;:::-;3516:5;;:32;;-1:-1:-1;;;3516:32:192;;3540:6;3516:32;;;5481:74:201;3507:50:192;;-1:-1:-1;;;;;3516:5:192;;:15;;5454:18:201;;3516:32:192;;;;;;;;;;;;;;;;;;;;;;2022:142:105;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:105;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;9428:431:192:-;9541:27;;-1:-1:-1;;;9541:27:192;;-1:-1:-1;;;;;9551:16:192;;;;9541:27;;;5263:41:201;9541:9:192;;;;5236:18:201;;9541:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9574:41:192;;-1:-1:-1;;;9574:41:192;;-1:-1:-1;;9584:30:192;;9574:41;;;5263::201;9574:9:192;;-1:-1:-1;9574:9:192;;-1:-1:-1;5236:18:201;;9574:41:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9621:34:192;;-1:-1:-1;;;9621:34:192;;9631:23;;;9621:34;;;5263:41:201;9621:9:192;;-1:-1:-1;9621:9:192;;-1:-1:-1;5236:18:201;;9621:34:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9662:5:192;;:37;;-1:-1:-1;;;9662:37:192;;9681:4;9662:37;;;6295:74:201;6385:18;;;6378:34;;;-1:-1:-1;;;;;9662:5:192;;;;-1:-1:-1;9662:10:192;;-1:-1:-1;6268:18:201;;9662:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9721:96:192;;;9787:4;9721:96;;;9564:74:201;9654:18;;;9647:34;;;9697:18;;;;9690:34;;;9721:96:192;;;;;;;;;;9537:18:201;;;;9721:96:192;;;;;;;;;-1:-1:-1;;;9721:96:192;;;9705:113;;;;;:15;;-1:-1:-1;9705:15:192;;-1:-1:-1;9705:113:192;;9721:96;9705:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9824:5:192;;:30;;-1:-1:-1;;;9824:30:192;;-1:-1:-1;;;;;6313:55:201;;;9824:30:192;;;6295:74:201;6385:18;;;6378:34;;;9824:5:192;;;;-1:-1:-1;9824:14:192;;-1:-1:-1;6268:18:201;;9824:30:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9428:431;;;:::o;6601:293::-;6660:27;;-1:-1:-1;;;6660:27:192;;-1:-1:-1;;;;;6670:16:192;;;;6660:27;;;5263:41:201;6660:9:192;;;;5236:18:201;;6660:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6694:37:192;;-1:-1:-1;;;6694:37:192;;6708:4;6694:37;;;6630:41:201;;;6687:18;;;6680:50;;;6746:18;;;6739:50;;;6805:18;;;6798:50;6694:13:192;;-1:-1:-1;6694:13:192;;-1:-1:-1;6602:19:201;;6694:37:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6742:32:192;;7005:25:201;;;-1:-1:-1;;;;;6742:32:192;;;-1:-1:-1;6759:1:192;;-1:-1:-1;6742:32:192;;6993:2:201;6978:18;6742:32:192;;;;;;;6780:5;;:22;;-1:-1:-1;;;6780:22:192;;-1:-1:-1;;;;;6313:55:201;;;6780:22:192;;;6295:74:201;6385:18;;;6378:34;;;6780:5:192;;;;:10;;6268:18:201;;6780:22:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6809:37;6818:5;;;;;;;;;-1:-1:-1;;;;;6818:5:192;-1:-1:-1;;;;;6818:17:192;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5884:361;5990:5;;:22;;-1:-1:-1;;;5990:22:192;;5976:6;5990:22;;;6295:74:201;;;6007:4:192;6385:18:201;;;6378:34;5976:6:192;-1:-1:-1;;;;;5990:5:192;;:10;;6268:18:201;;5990:22:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6019:14:192;;-1:-1:-1;;;6019:14:192;;-1:-1:-1;;;;;5499:55:201;;6019:14:192;;;5481:74:201;6019:8:192;;-1:-1:-1;6019:8:192;;-1:-1:-1;5454:18:201;;6019:14:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6039:5:192;;:36;;-1:-1:-1;;;6039:36:192;;6061:4;6039:36;;;6295:74:201;6068:6:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;6039:5:192;;;;-1:-1:-1;6039:13:192;;-1:-1:-1;6268:18:201;;6039:36:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6098:88:192;;6166:4;6098:88;;;10939:74:201;6173:6:192;11066:18:201;;;11059:43;6181:4:192;11118:18:201;;;11111:43;6082:15:192;;;;6121:35;;10912:18:201;;6098:88:192;10688:472:201;5441:157:192;5492:5;;:44;;-1:-1:-1;;;5492:44:192;;5511:4;5492:44;;;6295:74:201;-1:-1:-1;;6385:18:201;;;6378:34;-1:-1:-1;;;;;5492:5:192;;;;:10;;6268:18:201;;5492:44:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:100;309:37;;-1:-1:-1;;;;;5542:15:192;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5565:5:192;;:28;;-1:-1:-1;;;5565:28:192;;5584:4;5565:28;;;6295:74:201;5565:5:192;6385:18:201;;;6378:34;-1:-1:-1;;;;;5565:5:192;;;;-1:-1:-1;5565:10:192;;-1:-1:-1;6268:18:201;;5565:28:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7346:197;7408:27;;-1:-1:-1;;;7408:27:192;;-1:-1:-1;;;;;7418:16:192;;;;7408:27;;;5263:41:201;7408:9:192;;;;5236:18:201;;7408:27:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7453:5:192;;:25;;-1:-1:-1;;;7453:25:192;;-1:-1:-1;;;;;6313:55:201;;;7453:25:192;;;6295:74:201;6385:18;;;6378:34;;;7442:37:192;;-1:-1:-1;7453:5:192;;;;-1:-1:-1;7453:13:192;;6268:18:201;;7453:25:192;6121:297:201;7442:37:192;7495:5;;:34;;-1:-1:-1;;;7495:34:192;;7519:4;7495:34;;;9057::201;-1:-1:-1;;;;;9127:15:201;;;9107:18;;;9100:43;7486:52:192;;7495:5;;:15;;8969:18:201;;7495:34:192;8822:327:201;820:613:129;473:54:128;;490:18;473:54;;;14547:92:201;510:16:128;14655:11:201;;;14648:100;932:20:129;;;;1022:39;;14764:12:201;;473:54:128;;;;;;;;;;;;465:63;;;:::i;1022:39:129:-;984:78;-1:-1:-1;;;;;;1070:34:129;;1066:82;;1126:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1112:31;;1066:82;1205:5;-1:-1:-1;;;;;1205:19:129;;1225:11;1249:9;1260:8;1238:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1205:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;850:76:128;;;867:14;850:76;;;16529:92:201;883:16:128;16637:11:201;;;16630:100;901:24:128;16746:12:201;;;16739:101;1340:89:129;;-1:-1:-1;16856:12:201;;-1:-1:-1;850:76:128;;;;;;;;;;;;842:85;;;:::i;:::-;336:5:16;1582:33:58;;;;;1559:18;1551:65;1340:17:129;:89::i;:::-;1317:113;820:613;-1:-1:-1;;;;;820:613:129:o;5209:262:99:-;5271:1;5266;:6;5262:203;;5293:41;;;;;17081:2:201;17063:21;;;17120:2;17100:18;;;17093:30;17159:34;17154:2;17139:18;;17132:62;17230:4;17225:2;17210:18;;17203:32;17267:3;17252:19;;16879:398;5293:41:99;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;:::-;;;;;;;;5448:6;:4;:6::i;3262:157::-;3322:9;3317:96;;3352:30;;;;;18518:2:201;18500:21;;;18557:2;18537:18;;;18530:30;18596:25;18591:2;18576:18;;18569:53;18654:2;18639:18;;18316:347;3352:30:99;;;;;;;;3396:6;:4;:6::i;330:580:0:-;394:39;;;;;;;;;18874:21:201;;;;18931:2;18911:18;;;18904:30;18970:22;18950:18;;;18943:50;309:37:100;19045:20:201;;;19038:52;394:8:0;;;;19010:19:201;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:100;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:100;;883:22:0;;;;;;;309:37:100;883:20:0;:22;;;;;;;;;;;;;;;;;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;18874:21:201;;;;18931:2;18911:18;;;18904:30;18970:22;18950:18;;;18943:50;309:37:100;19045:20:201;;;19038:52;953:23:0;;-1:-1:-1;987:8:0;;;;19010:19:201;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;24488:2:201;1214:49:0;;;24470:21:201;24527:2;24507:18;;;24500:30;24566:27;24546:18;;;24539:55;24611:18;;1214:49:0;24286:349:201;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;17902:344:99:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;26603:2:201;26585:21;;;26642:2;26622:18;;;26615:30;26681:34;26676:2;26661:18;;26654:62;26752:6;26747:2;26732:18;;26725:34;26791:3;26776:19;;26401:400;18062:43:99;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;4133:307:72:-;4243:16;;;4257:1;4243:16;;;;;;;;;4193:13;;;;4243:16;;;;;;;;;;;;-1:-1:-1;4243:16:72;4214:45;;4298:11;4265:9;4275:1;4265:12;;;;;;;;:::i;:::-;;;;;;;;;;;:45;;;;1253:77;;;1270:14;1253:77;;;16529:92:201;1286:16:72;16637:11:201;;;16630:100;1304:25:72;16746:12:201;;;16739:101;1253:77:72;;;;;;;;;;16856:12:201;;1253:77:72;;-1:-1:-1;;4333:64:72;;1245:86;;;:::i;:::-;4370:9;4381:1;1446:66;4333:26;:64::i;:::-;4411:23;;;4133:307;-1:-1:-1;;;;4133:307:72:o;3622:277:99:-;3690:1;-1:-1:-1;;;;;3685:6:99;:1;-1:-1:-1;;;;;3685:6:99;;3681:212;;3712:44;;;;;28087:2:201;28069:21;;;28126:2;28106:18;;;28099:30;28165:34;28160:2;28145:18;;28138:62;28236:7;28231:2;28216:18;;28209:35;28276:3;28261:19;;27885:401;3712:44:99;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;4073:335:132:-;4211:16;;;4225:1;4211:16;;;;;;;;;4154:20;;;;4211:16;;;;;;;;;;;;-1:-1:-1;4211:16:132;4182:45;;4266:11;4233:9;4243:1;4233:12;;;;;;;;:::i;:::-;;;;;;;;;;:45;4285:13;4301:64;4328:8;4338:9;4285:13;1251:66;4301:26;:64::i;:::-;4379:23;;;-1:-1:-1;;;4073:335:132;;;;;:::o;2409:432:99:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;9564:74:201;;;2677:17:99;9654:18:201;;;9647:34;;;;2712:4:99;9697:18:201;;;9690:34;2489:11:99;;1671:64;2586:43;;9537:18:201;;2652:67:99;;;-1:-1:-1;;2652:67:99;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:99;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:99;2820:7;:14;;;;;;;;2409:432::o;1754:155:0:-;1818:86;317:28:100;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;7005:25:201;;;6993:2;6978:18;;6859:177;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;17702:457:24:-;17859:7;17874:21;17898:17;:15;:17::i;:::-;17874:41;-1:-1:-1;17950:4:24;-1:-1:-1;;;;;17925:30:24;;;17921:234;;17972:68;17997:7;18006:8;18016:10;18028:11;17972:24;:68::i;:::-;17965:75;;;;;17921:234;18068:80;;;;;-1:-1:-1;;;;;18068:36:24;;;;;:80;;18105:7;;18114:8;;18124:10;;18136:11;;18068:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17702:457::-;;;;;;;:::o;5630:121:113:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:113;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;1766:227:24:-;996:42;1855:22;1816:7;;-1:-1:-1;;;;;1855:22:24;;1883:106;;1931:10;1924:17;;;1766:227;:::o;35212:541:20:-;35369:7;35506:242;35550:59;35591:7;35600:8;35550:40;:59::i;:::-;35627:31;;;;4044:19:3;:27;537:1:30;4043:44:3;4009:79;;;3996:93;35676:63:20;35715:11;35728:10;35676:38;:63::i;:::-;35506:17;:242::i;181:376:113:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;49619:191:20:-;49721:7;49785;49794:8;49768:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;49768:35:20;;;;;;;;;49758:46;;49768:35;49758:46;;;;41226:22;49751:53;;49619:191;-1:-1:-1;;;49619:191:20:o;50636:242::-;50732:7;;;50771:84;50791:10;50787:14;;:1;:14;50771:84;;;50816:32;3996:93:3;4044:19;:27;;;537:1:30;4043:44:3;4009:79;;;3996:93;50816:32:20;;:::i;:::-;;-1:-1:-1;50803:3:20;;;;:::i;:::-;;;;50771:84;;;-1:-1:-1;50867:6:20;50636:242;-1:-1:-1;;;50636:242:20:o;8796:790:19:-;8894:14;8930:2;8920:6;:12;8916:112;;8989:2;8980:6;:11;8962:29;;;;9011:2;9001:12;;;;;;:::i;:::-;;;;8916:112;-1:-1:-1;9208:21:19;;9204:1;9192:14;;9188:42;9356:2;:11;;;9438:22;;;9434:148;;;9563:1;9547:14;9543:22;9537:29;9533:1;9518:13;9514:21;9510:57;9502:6;9499:69;9489:79;;8910:676;8796:790;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:196:201:-;82:20;;-1:-1:-1;;;;;131:54:201;;121:65;;111:93;;200:1;197;190:12;215:322;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;476:2;461:18;;448:32;;-1:-1:-1;527:2:201;512:18;;;499:32;;215:322;-1:-1:-1;;;215:322:201:o;542:681::-;713:2;765:21;;;835:13;;738:18;;;857:22;;;684:4;;713:2;936:15;;;;910:2;895:18;;;684:4;979:218;993:6;990:1;987:13;979:218;;;1058:13;;-1:-1:-1;;;;;1054:62:201;1042:75;;1172:15;;;;1137:12;;;;1015:1;1008:9;979:218;;;-1:-1:-1;1214:3:201;;542:681;-1:-1:-1;;;;;;542:681:201:o;1228:472::-;1323:6;1331;1339;1347;1355;1408:3;1396:9;1387:7;1383:23;1379:33;1376:53;;;1425:1;1422;1415:12;1376:53;1448:29;1467:9;1448:29;:::i;:::-;1438:39;;1496:38;1530:2;1519:9;1515:18;1496:38;:::i;:::-;1486:48;;1553:38;1587:2;1576:9;1572:18;1553:38;:::i;:::-;1228:472;;;;-1:-1:-1;1543:48:201;;1638:2;1623:18;;1610:32;;-1:-1:-1;1689:3:201;1674:19;1661:33;;1228:472;-1:-1:-1;;1228:472:201:o;1705:1697::-;1909:4;1938:2;1978;1967:9;1963:18;2008:2;1997:9;1990:21;2031:6;2066;2060:13;2097:6;2089;2082:22;2123:2;2113:12;;2156:2;2145:9;2141:18;2134:25;;2218:2;2208:6;2205:1;2201:14;2190:9;2186:30;2182:39;2256:2;2248:6;2244:15;2277:1;2298;2308:1065;2324:6;2319:3;2316:15;2308:1065;;;2393:22;;;-1:-1:-1;;2389:95:201;2377:108;;2508:13;;2595:9;;-1:-1:-1;;;;;2591:58:201;2576:74;;2689:11;;2683:18;2721:15;;;2714:27;;;2802:19;;2548:15;;;2834:24;;;2924:21;;;;2969:1;;2892:2;2880:15;;;2983:282;2999:8;2994:3;2991:17;2983:282;;;3080:15;;3097:66;3076:88;3062:103;;3234:17;;;;3027:1;3018:11;;;;;3191:14;;;;2983:282;;;-1:-1:-1;3351:12:201;;;;3288:5;-1:-1:-1;;;3316:15:201;;;;2350:1;2341:11;2308:1065;;;-1:-1:-1;3390:6:201;;1705:1697;-1:-1:-1;;;;;;;;;1705:1697:201:o;3407:250::-;3492:1;3502:113;3516:6;3513:1;3510:13;3502:113;;;3592:11;;;3586:18;3573:11;;;3566:39;3538:2;3531:10;3502:113;;;-1:-1:-1;;3649:1:201;3631:16;;3624:27;3407:250::o;3662:330::-;3704:3;3742:5;3736:12;3769:6;3764:3;3757:19;3785:76;3854:6;3847:4;3842:3;3838:14;3831:4;3824:5;3820:16;3785:76;:::i;:::-;3906:2;3894:15;-1:-1:-1;;3890:88:201;3881:98;;;;3981:4;3877:109;;3662:330;-1:-1:-1;;3662:330:201:o;3997:862::-;4159:4;4188:2;4228;4217:9;4213:18;4258:2;4247:9;4240:21;4281:6;4316;4310:13;4347:6;4339;4332:22;4385:2;4374:9;4370:18;4363:25;;4447:2;4437:6;4434:1;4430:14;4419:9;4415:30;4411:39;4397:53;;4485:2;4477:6;4473:15;4506:1;4516:314;4530:6;4527:1;4524:13;4516:314;;;-1:-1:-1;;4607:9:201;4599:6;4595:22;4591:95;4586:3;4579:108;4710:40;4743:6;4734;4728:13;4710:40;:::i;:::-;4700:50;-1:-1:-1;4808:12:201;;;;4773:15;;;;4552:1;4545:9;4516:314;;;-1:-1:-1;4847:6:201;;3997:862;-1:-1:-1;;;;;;;3997:862:201:o;4864:254::-;4932:6;4940;4993:2;4981:9;4972:7;4968:23;4964:32;4961:52;;;5009:1;5006;4999:12;4961:52;5032:29;5051:9;5032:29;:::i;:::-;5022:39;5108:2;5093:18;;;;5080:32;;-1:-1:-1;;;4864:254:201:o;5566:184::-;-1:-1:-1;;;5615:1:201;5608:88;5715:4;5712:1;5705:15;5739:4;5736:1;5729:15;5755:361;-1:-1:-1;;;;;5957:6:201;5953:55;5942:9;5935:74;6045:2;6040;6029:9;6025:18;6018:30;5916:4;6065:45;6106:2;6095:9;6091:18;6083:6;6065:45;:::i;7041:184::-;7111:6;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;-1:-1:-1;7203:16:201;;7041:184;-1:-1:-1;7041:184:201:o;7230:::-;-1:-1:-1;;;7279:1:201;7272:88;7379:4;7376:1;7369:15;7403:4;7400:1;7393:15;7419:128;7486:9;;;7507:11;;;7504:37;;;7521:18;;:::i;8111:277::-;8178:6;8231:2;8219:9;8210:7;8206:23;8202:32;8199:52;;;8247:1;8244;8237:12;8199:52;8279:9;8273:16;8332:5;8325:13;8318:21;8311:5;8308:32;8298:60;;8354:1;8351;8344:12;8298:60;8377:5;8111:277;-1:-1:-1;;;8111:277:201:o;9735:218::-;9882:2;9871:9;9864:21;9845:4;9902:45;9943:2;9932:9;9928:18;9920:6;9902:45;:::i;11165:956::-;11245:6;11298:2;11286:9;11277:7;11273:23;11269:32;11266:52;;;11314:1;11311;11304:12;11266:52;11347:9;11341:16;11376:18;11417:2;11409:6;11406:14;11403:34;;;11433:1;11430;11423:12;11403:34;11471:6;11460:9;11456:22;11446:32;;11516:7;11509:4;11505:2;11501:13;11497:27;11487:55;;11538:1;11535;11528:12;11487:55;11567:2;11561:9;11589:2;11585;11582:10;11579:36;;;11595:18;;:::i;:::-;11729:2;11723:9;11791:4;11783:13;;-1:-1:-1;;11779:22:201;;;11803:2;11775:31;11771:40;11759:53;;;11827:18;;;11847:22;;;11824:46;11821:72;;;11873:18;;:::i;:::-;11913:10;11909:2;11902:22;11948:2;11940:6;11933:18;11988:7;11983:2;11978;11974;11970:11;11966:20;11963:33;11960:53;;;12009:1;12006;11999:12;11960:53;12022:68;12087:2;12082;12074:6;12070:15;12065:2;12061;12057:11;12022:68;:::i;:::-;12109:6;11165:956;-1:-1:-1;;;;;;;11165:956:201:o;12126:273::-;12194:6;12247:2;12235:9;12226:7;12222:23;12218:32;12215:52;;;12263:1;12260;12253:12;12215:52;12295:9;12289:16;12345:4;12338:5;12334:16;12327:5;12324:27;12314:55;;12365:1;12362;12355:12;12404:437;12483:1;12479:12;;;;12526;;;12547:61;;12601:4;12593:6;12589:17;12579:27;;12547:61;12654:2;12646:6;12643:14;12623:18;12620:38;12617:218;;-1:-1:-1;;;12688:1:201;12681:88;12792:4;12789:1;12782:15;12820:4;12817:1;12810:15;12617:218;;12404:437;;;:::o;13148:430::-;13345:66;13337:6;13333:79;13328:3;13321:92;13303:3;13442:6;13436:13;13458:74;13525:6;13521:1;13516:3;13512:11;13505:4;13497:6;13493:17;13458:74;:::i;:::-;13552:16;;;;13570:1;13548:24;;13148:430;-1:-1:-1;;;13148:430:201:o;13583:287::-;13712:3;13750:6;13744:13;13766:66;13825:6;13820:3;13813:4;13805:6;13801:17;13766:66;:::i;:::-;13848:16;;;;;13583:287;-1:-1:-1;;13583:287:201:o;14787:357::-;14905:12;;14952:4;14941:16;;;14935:23;;14905:12;14970:16;;14967:171;;;-1:-1:-1;;15044:4:201;15040:17;;;;15037:1;15033:25;15029:98;15018:110;;14787:357;-1:-1:-1;14787:357:201:o;15149:828::-;15390:66;15382:6;15378:79;15367:9;15360:98;15494:2;15489;15478:9;15474:18;15467:30;15552:4;15543:6;15537:13;15533:24;15528:2;15517:9;15513:18;15506:52;15341:4;15605:2;15597:6;15593:15;15587:22;15647:4;15640;15629:9;15625:20;15618:34;15675:52;15722:3;15711:9;15707:19;15693:12;15675:52;:::i;:::-;15661:66;;15776:2;15768:6;15764:15;15758:22;-1:-1:-1;;15833:9:201;15825:6;15821:22;15817:95;15811:3;15800:9;15796:19;15789:124;15930:41;15964:6;15948:14;15930:41;:::i;:::-;15922:49;15149:828;-1:-1:-1;;;;;;15149:828:201:o;17446:348::-;17676:2;17665:9;17658:21;17639:4;17696:49;17741:2;17730:9;17726:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;17696:49;17688:57;;17781:6;17776:2;17765:9;17761:18;17754:34;17446:348;;;;:::o;17963:::-;18193:2;18182:9;18175:21;18156:4;18213:49;18258:2;18247:9;18243:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;19227:780;19277:3;19318:5;19312:12;19347:36;19373:9;19347:36;:::i;:::-;19402:1;19419:18;;;19446:191;;;;19651:1;19646:355;;;;19412:589;;19446:191;19494:66;19483:9;19479:82;19474:3;19467:95;19617:6;19610:14;19603:22;19595:6;19591:35;19586:3;19582:45;19575:52;;19446:191;;19646:355;19677:5;19674:1;19667:16;19706:4;19751:2;19748:1;19738:16;19776:1;19790:165;19804:6;19801:1;19798:13;19790:165;;;19882:14;;19869:11;;;19862:35;19925:16;;;;19819:10;;19790:165;;;19794:3;;;19984:6;19979:3;19975:16;19968:23;;19412:589;;;;;19227:780;;;;:::o;20012:664::-;20362:66;20357:3;20350:79;20332:3;20448:47;20491:2;20486:3;20482:12;20474:6;20448:47;:::i;:::-;20515:66;20504:78;;20611:31;20606:2;20598:11;;20591:52;20667:2;20659:11;;20012:664;-1:-1:-1;;;20012:664:201:o;21200:694::-;21543:66;21538:3;21531:79;21513:3;21639:6;21633:13;21655:75;21723:6;21718:2;21713:3;21709:12;21702:4;21694:6;21690:17;21655:75;:::i;:::-;21794:66;21789:2;21749:16;;;;21781:11;;;21774:87;-1:-1:-1;21885:2:201;21877:11;;21200:694;-1:-1:-1;21200:694:201:o;21899:545::-;22001:2;21996:3;21993:11;21990:448;;;22037:1;22062:5;22058:2;22051:17;22107:4;22103:2;22093:19;22177:2;22165:10;22161:19;22158:1;22154:27;22148:4;22144:38;22213:4;22201:10;22198:20;22195:47;;;-1:-1:-1;22236:4:201;22195:47;22291:2;22286:3;22282:12;22279:1;22275:20;22269:4;22265:31;22255:41;;22346:82;22364:2;22357:5;22354:13;22346:82;;;22409:17;;;22390:1;22379:13;22346:82;;;22350:3;;;21899:545;;;:::o;22680:1471::-;22806:3;22800:10;22833:18;22825:6;22822:30;22819:56;;;22855:18;;:::i;:::-;22884:97;22974:6;22934:38;22966:4;22960:11;22934:38;:::i;:::-;22928:4;22884:97;:::i;:::-;23036:4;;23100:2;23089:14;;23117:1;23112:782;;;;23938:1;23955:6;23952:89;;;-1:-1:-1;24007:19:201;;;24001:26;23952:89;-1:-1:-1;;22577:1:201;22573:11;;;22569:84;22565:89;22555:100;22661:1;22657:11;;;22552:117;24054:81;;23082:1063;;23112:782;19174:1;19167:14;;;19211:4;19198:18;;-1:-1:-1;;23148:79:201;;;23325:236;23339:7;23336:1;23333:14;23325:236;;;23428:19;;;23422:26;23407:42;;23520:27;;;;23488:1;23476:14;;;;23355:19;;23325:236;;;23329:3;23589:6;23580:7;23577:19;23574:261;;;23650:19;;;23644:26;-1:-1:-1;;23733:1:201;23729:14;;;23745:3;23725:24;23721:97;23717:102;23702:118;23687:134;;23574:261;-1:-1:-1;;;;;23881:1:201;23865:14;;;23861:22;23848:36;;-1:-1:-1;22680:1471:201:o;24156:125::-;24221:9;;;24242:10;;;24239:36;;;24255:18;;:::i;24640:197::-;24768:3;24793:38;24827:3;24819:6;24793:38;:::i;24842:1554::-;24961:3;24955:4;24952:13;24949:26;;24968:5;;24842:1554::o;24949:26::-;24998:37;25030:3;25024:10;24998:37;:::i;:::-;25058:18;25050:6;25047:30;25044:56;;;25080:18;;:::i;:::-;25109:97;25199:6;25159:38;25191:4;25185:11;25159:38;:::i;25109:97::-;25232:1;25260:2;25252:6;25249:14;25277:1;25272:867;;;;26183:1;26200:6;26197:89;;;-1:-1:-1;26252:19:201;;;26246:26;26197:89;-1:-1:-1;;22577:1:201;22573:11;;;22569:84;22565:89;22555:100;22661:1;22657:11;;;22552:117;26299:81;;25242:1148;;25272:867;19174:1;19167:14;;;19211:4;19198:18;;-1:-1:-1;;25308:79:201;;;19174:1;19167:14;;;19211:4;19198:18;;25531:9;25553:251;25567:7;25564:1;25561:14;25553:251;;;25649:21;;;25643:28;25628:44;;25699:1;25772:18;;;;25727:15;;;;25590:4;25583:12;25553:251;;;25557:3;25832:6;25823:7;25820:19;25817:263;;;25893:21;;25887:28;-1:-1:-1;;25990:3:201;25978:1;25974:14;;;25970:24;25966:97;25962:102;25947:118;25932:134;;;-1:-1:-1;;26126:1:201;26110:14;;;26106:22;26093:36;;-1:-1:-1;24842:1554:201:o;26806:440::-;27056:2;27045:9;27038:21;27019:4;27082:49;27127:2;27116:9;27112:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;27082:49;27179:9;27171:6;27167:22;27162:2;27151:9;27147:18;27140:50;27207:33;27233:6;27225;27207:33;:::i;27251:440::-;27501:2;27490:9;27483:21;27464:4;27527:49;27572:2;27561:9;27557:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;27696:184;-1:-1:-1;;;27745:1:201;27738:88;27845:4;27842:1;27835:15;27869:4;27866:1;27859:15;28291:397;28521:2;28510:9;28503:21;28484:4;28541:49;28586:2;28575:9;28571:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;28541:49;28533:57;;-1:-1:-1;;;;;28630:6:201;28626:55;28621:2;28610:9;28606:18;28599:83;28291:397;;;;:::o;28693:::-;28923:2;28912:9;28905:21;28886:4;28943:49;28988:2;28977:9;28973:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;29468:764;29858:14;29853:3;29846:27;29828:3;29902:6;29896:13;29918:75;29986:6;29981:2;29976:3;29972:12;29965:4;29957:6;29953:17;29918:75;:::i;:::-;30057:3;30052:2;30012:16;;;30044:11;;;30037:24;30086:13;;30108:76;30086:13;30170:2;30162:11;;30155:4;30143:17;;30108:76;:::i;:::-;30204:17;30223:2;30200:26;;29468:764;-1:-1:-1;;;;29468:764:201:o;30237:918::-;30522:4;30570:3;30559:9;30555:19;30601:6;30590:9;30583:25;30627:2;30665:3;30660:2;30649:9;30645:18;30638:31;30689:6;30724;30718:13;30755:6;30747;30740:22;30793:3;30782:9;30778:19;30771:26;;30832:2;30824:6;30820:15;30806:29;;30853:1;30863:169;30877:6;30874:1;30871:13;30863:169;;;30938:13;;30926:26;;31007:15;;;;30972:12;;;;30899:1;30892:9;30863:169;;;-1:-1:-1;;31100:4:201;31088:17;;;;31083:2;31068:18;;31061:45;-1:-1:-1;;;31137:2:201;31122:18;31115:34;31049:3;30237:918;-1:-1:-1;;30237:918:201:o;31349:639::-;31599:6;31594:3;31587:19;31569:3;31625:2;31658;31653:3;31649:12;31690:6;31684:13;31755:2;31747:6;31743:15;31776:1;31786:175;31800:6;31797:1;31794:13;31786:175;;;31863:13;;31849:28;;31899:14;;;;31936:15;;;;31822:1;31815:9;31786:175;;;-1:-1:-1;31977:5:201;;31349:639;-1:-1:-1;;;;;;;31349:639:201:o;31993:195::-;32032:3;-1:-1:-1;;32056:5:201;32053:77;32050:103;;32133:18;;:::i;:::-;-1:-1:-1;32180:1:201;32169:13;;31993:195::o;32193:184::-;-1:-1:-1;;;32242:1:201;32235:88;32342:4;32339:1;32332:15;32366:4;32363:1;32356:15","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testApprove(address,uint256)":"fb44e83a","testBurn()":"e13aba48","testBurn(address,uint256,uint256)":"1037c205","testBurnInsufficientBalanceReverts(address,uint256,uint256)":"be4733bc","testInfiniteApproveTransferFrom()":"18eab016","testInstallTwice()":"78cdebf9","testMetadata()":"5ad7ef92","testMint()":"9642ddaf","testMint(address,uint256)":"f28e093d","testMintOverMaxUintReverts()":"fa531f85","testSetUp()":"5babb758","testTransfer()":"d591221f","testTransfer(address,uint256)":"a0e70267","testTransferFrom()":"70557298","testTransferFrom(address,address,address,uint256,uint256)":"48186a7f","testTransferFromInsufficientAllowanceReverts()":"f63809d9","testTransferFromInsufficientAllowanceReverts(address,uint256,uint256)":"37e816d3","testTransferFromInsufficientBalanceReverts()":"7a715085","testTransferFromInsufficientBalanceReverts(address,uint256,uint256)":"7c0c5369","testTransferInsufficientBalanceReverts()":"3dc6c955","testTransferInsufficientBalanceReverts(address,uint256,uint256)":"e70629ce"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurnInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInfiniteApproveTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintOverMaxUintReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ERC20.t.sol\":\"ERC20Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xab31edce915377852bb5f29f7f2ccfc50cac087d64d2a8aae669715ad862d558\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3187e86e43be1fbdd59df45c695294f1114aa1ac48e6445c0cb26089434be5c4\",\"dweb:/ipfs/Qmck7shMVrcKMVkgN2pC1byPY7hb3V9fTxnUcGgxAUeXYk\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x2a0536cd6cecc479d0b81d5aad6380231f4d6873beadc54814d801c2036b02c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e07c041e19146a9ec258cc700a450b4d49440202895eb12f3bb17508427c23ba\",\"dweb:/ipfs/QmXoqrCGDSkuFgNSMURRFdjokjREL78nLDzNaUi6rjefy9\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0x045024523eb55d08ad8d13eca6185bff2988865f4aa12e3f9372029c2ecb8ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6621c53b49f8fe0557d1a1db47bfe1561801c09256948dd0652fb41541891a18\",\"dweb:/ipfs/QmZgFVCUH1pKcc9MeFyzMe1VW87SLz6c9szGwrDRUp6BZe\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0xa6777c7868333996ad9c61a94457dcac702d8d7445a104dfdc86543d25e7470e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6268a16449d7529a94746d0103670dd0e38faf5117bf914fb01da9947ab44c2e\",\"dweb:/ipfs/QmaSfbx1QRA3jw2K8bGkQTw4CTGPUzNqnCJW7LwaFUJCXy\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0x44ddfa9eb8a861462c550f0a9d66c40c68acdb347a61fa765949608407a2c7fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47ee957f4b19cab9e20bf5fc569c015eca13852fb3351f2a105a8be9c48204c0\",\"dweb:/ipfs/QmNkyzDobVQLoq9BtQ8HtgsPLiqnmi97EZx1wsu6wp8nKH\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0x40983c580b8958e55db4520095934a535e98544ffe8228327e598973eb6647ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://839d658fa2bb2b1f09a08149d2bf0c26a26c301ad2dda8154fc99458085a695d\",\"dweb:/ipfs/Qmd5jHHYrgqraPqF8bjzT4xyjsoPk8K7pkxXLLfz6MRT6d\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0xfaf54b1f5acccd4c6ce3f8377050ee84efbb423cb604b4651e8b9ea3b467bf32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acf2ce7ffec21f28ad1dc6da06c342f1212a03a3d16a0be7ee85715a5940718c\",\"dweb:/ipfs/QmTCN3NSdFg87hi7KS2Xtq7PsmRUMG64SxC8PtP3p2GzuT\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x130f0925a5bf4f732ef9758b47eca18c77d1bb34546ea9463321e9df766435a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68767e3db6fd6538a4577a1c30fe03e05bf9d316cdd43a66657e93c008b76f45\",\"dweb:/ipfs/QmSZmUBSfhk3v5gNu5GgwcYuWbb1FFDKYpDKvpXVahfyTw\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x95b7d62d84b43777c54dd1c7d941dbb5ba0afc02c444c30cfdb1de671bbbf180\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe62a2fdb2a73610c3072f31b7f88ed3f9d03c1009fe0f0ef37a7eb814b23534\",\"dweb:/ipfs/QmV85zaV5HAD6eGc5N4RmdtmpR6EwkswVLQTaR2aJqsXrj\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0x0da12dea94f088d01b1b0d6d4887f628c61c9c34a4c74a4c9033621bddcc007f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e77d66891e1cdff6899e00c7993302dd77dd291f954b79d2c582da076e22264\",\"dweb:/ipfs/QmcLyDFSnyMUF89hGhPX4nvUpkXdJSxBe5zGSJFqTAT5Mj\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0xc5c6f807cff6b4dc486525c559ba3f7cbb034ac5895636ee64c9d01defa6a38e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d3a3b3fd3afa2ab3231fd7fe981889dfb0600deec34c5d4e9c07d3187af8a5\",\"dweb:/ipfs/Qmanj7WjETqBYQXkxKLjqWs4vMp3en3N69B5MacKme5fpD\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0xf7a9bf3e37b486377005c556cdf5b813ea1a41278b3a0349f81e3c82a2f1c789\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92cc87add89abcb126bf3cd0b284f25065c2b9c90a49f8dba4629b28a5b87751\",\"dweb:/ipfs/QmNNBDSK5GNujERGiSUhorbmtpdD2UnGz7MqSSDasEGdub\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xa1186b8b6143b4a87cea1624785494398be1613cb7c6f9e57734e1cca1d5dd14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://488c158082622689d035d7964c6ca063295e53078291c340eb6a23db08e8ff95\",\"dweb:/ipfs/QmWcjo3B5SH7jStXKAuf7qvF2ouz6syw9c7aT86PnTgRqW\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xd47e1921c07fc8608157b5dc343fcef7235e891ea6a21dec1fb118a0bd797fcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01a6ad068e6991994a0939f22a55245e0c7c82fc5e274da0af616286a8acfc7a\",\"dweb:/ipfs/QmPokA3pSexzZY33MMV6BGx48ZwQegdUN5AijiAfycSDxy\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xd0360567e4d77c6a8e3d8a5f4bf3653ccde4d268674c50988d55695dc6193f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53e6bcb53fcb08ee9426225fdab7c41df91e12cb4f80d92895a6117338627401\",\"dweb:/ipfs/QmeLcaPGeMBpNSTSsPYK3PHpzKuGMjuitCweAWcoXK2mXr\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x5cacd4cb371e0a79bc8d64f62349d568fd8b08093c11ae0c3db4f16480d8808b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12b64ddf2b5c19cf68ba93a8153ed79cbafe7a91e015d4b2f25eb1d42ab06256\",\"dweb:/ipfs/QmQz5WwztcuTbSGFv2pkhU3w5scUj1gmavoyUpduxk2v3A\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x10ca29a5d7075edb2fe5cd559077fc34857129182f9d6ea074a234dfbcdb313e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fe2783b7d0592d14a20b8be192dd3fa4216f8e541adea579859ea2bf1224da3\",\"dweb:/ipfs/QmTi9XDP5jsQpbqvJxPvkqyDByv7i88wKidrYnTtLdPhka\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0xebe8f1d4a86bcd052afe19773cc5b48da49a7742033c2cc6f06c17a20be907b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20dd17dc78d0aff086ae0b80823cdc8544cdef4b545ec58303a1a8ef19c5372c\",\"dweb:/ipfs/QmdTBo4xSMEQAQoae5o2L2DB7yGBv9TmzZwR3LmUjynEY9\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x4535542ceb57e77096f24b943285bc158c48ef5291999f9c1e27f5682f8a9581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec670524d19c50c659e385bc4dcb4757b065e1b5fe14160244537a7cd7a4b883\",\"dweb:/ipfs/QmT7NSWFSQ6MxYefe665srKMT2GTWomrPRZAHLjrFhQzV6\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0xb2114b6b66c0e7d8304d9e1d06aa1d0731f089daa6a0584e6cf744d9c48cf4db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebbb172970b106dd4ae5a6d5e417ac75cad7529d2b94c1601e10b886d0edf510\",\"dweb:/ipfs/QmPGn4F92hjkFch6Jh2NB37EYLLfstw6JxJKUZjXBFqGCw\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0x22b8cb3ffcc21cb1657d57fc8ac929d2d6fdd199328e6f43ad2cb54f53dcd500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47c001f6b7c6d6e453c340618d23b1532078abb7d0fd7283405071e4e8ff8d2d\",\"dweb:/ipfs/QmRW3femBhqQCPwDEj4Jop2Dnd3EU21ufg7GDVwN4joCQu\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0x652a3d6a3721a1c3f36abd7a398b16ae7d9e30ddbf54d8dc4494343dadb9f719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c33d2bb71a7ae8823233fa399f778fe86e9bb078889a092fcd1ed9e7838873e5\",\"dweb:/ipfs/QmYM6JQ4syoxQLCXC4evHVEwbsTuXgS42HZZ9Fho7J9EXr\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2db3d2945cea02e3c830329c30dde0c96bb87da9d070f3545dbd7f807d2ff53a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee5c3b48917527ec0f26c953f66d149bb2173d1dfd78ee00d2ceb409f3a5bd08\",\"dweb:/ipfs/QmQ7WjHbmWeEDnu2dgx7nduYBCvyVsjFksPHXxrJjZCKo9\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0xebc236e55c297ccbd00fe635a4216c4bc35e4e860129653935b2bc90d918b8f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0289100d0fc793223c8d42c5e3a55bf33447dd14d72a6f5f9154b78b2736dc7\",\"dweb:/ipfs/QmQp7yniMmyNtzUHPt8r6aoPhPiyWV1atS5Z2f9sw9QHGf\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xb7bfae2890004001221b3902d185c14cfea0e606d16914f6b7f81cf112aa9417\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acfd0d09166fc1bf16a8a5c80fbae1bd42426b2fcbab3c492bc836ea5c0375fb\",\"dweb:/ipfs/QmTzZWHVBkx8hipFVpgEwAbZpr4c6hfr7yf7R71JojT3NK\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf96aee478cc770cd9cd417b7939c38c9b9b075c91f3f47bdf8c6742f5591e9dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c59c4c9a6ab3d64e2b0d7c9f3df2d330a36fc93ac2ab5e5f907fa881fbed1f8\",\"dweb:/ipfs/QmTbd82cCtDwc8Ga1UsWAKXmFYrWU1zkbCCk1nMspqWdZu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreSystem.sol\":{\"keccak256\":\"0xf837b53eaa348da3b3650e0b7159de02d3f84897d96e487ece2f932c272dbe57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbdc52e9e519c8c6d4a00caf4de08688eb8eb34dbfc6236308f281d7cf05b51b\",\"dweb:/ipfs/QmWnogXiA5KA6JGxCTJR5W1MNFowrH7baSAYhSXjV1xM47\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0xd71faf03c782ac29483e94c2ea166fcc4e50179c7605357b1ba31bca4de29514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://099db3f65835e395450f49119c4211b8394f2783ded4aa86eac32b3ca951f662\",\"dweb:/ipfs/QmV9FEcdDnCLbEoiAzAWYwN66P1Wf2bgkbicHNnBXD7Xrd\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x873f8d46f75ec8a85c392aa7cf2dd3f2183684dadde18b7dfca12643ab6249ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1eaf7aeee1487c967ce419db0e96abd1cb8f6b75670009f2cac26dda94caec81\",\"dweb:/ipfs/QmXs5wmrwP23g3LNPP6J3NPgemu85VVQvx8rfHz2RFXRtk\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0x63f3d68775ad36b709d47f8a222dcee9244923b5665e94cd15ab966a7a92bee8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e9e11fc3de65b6681e86971da4645f3054a5a37d58bdd5b90bc9c07c2b5e9eb\",\"dweb:/ipfs/QmehdJcmH1buEMdnGpbi8sY1c1mUV4jMhq6bRLMPGBnyAB\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0xbe0b03a0379cf2dcbed5302acbcb116b263b68a1c1689b66b6df2c0414033f7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7c3913cc938e7e0e3257194703a7cda9b8269b89ed2ccc5250d31eb07254198\",\"dweb:/ipfs/QmctosJsQ6sVhFHG3bEAUdhEdcBVVUKtSjTG1taXome1ff\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x47c6d188f39a85b50f066151cb48d987454e845f1629685300613fdb502505a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abeba0002051f60f81c1e29dbf627db4aed8da11483ec8d860a362b4bfbf4c08\",\"dweb:/ipfs/Qmc4RNYgBma9repACLdN1hpjPmEbsFKWXL8B42KaBAZvtc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb0b7c13673a1629118cb0c3c341380fa6d4795c9b7cf6a6c73443750f1a3b34d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3c8eb44785f61c0470273cac40a228ae458b74f48d2bff8faf8915861fc49ac\",\"dweb:/ipfs/QmUF52hgGCL9TMyTQqrxGVharwfFgKNsCpD3VNqfbhid9X\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xe2a4e6a75ffda6971c16e9218a0f076d5b89572d37780cd4c2375a2de683fd60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04dbdf5295c0ddbda4ba0eb5fdebd84dce2ff3fe86d34681f71522bcb0e6e93\",\"dweb:/ipfs/QmUMkPg1vhSz2zVweN5bqtWbUCj3UQKZPgYfBkQ3QGS7gF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0xd069f1f65243ffcc3ace23804851bc902c5e58d525b962575a659e47aa76236b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f86b3d93b5bcf81e0d3da0abbd6fc3924be59e7c8d147cfeb3307108431f6a3\",\"dweb:/ipfs/QmRrkBXGsdtbo28xznUWUuqNUGyfAbu1kadKGjL7n6KiKb\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0x8318ead6bf21b8f1e9f231d73634034511d74c1a979246df9f9cda8f349b644d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b705a942046bb24fdbf0a5f4b365e33ab724d26bc158e7458ef5f262f72b5bae\",\"dweb:/ipfs/Qme63b3DKKizKumysUGVFH8Q9h6cHnHBFM2Kdsxh2p6SWN\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x3bf40b7e71a1953f21b447975ec1a850994a250325fdb88489d24175cf8440d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7fc1d4ce3096dfbd5510d2558d6fcae01ede446032ae232bd3e8656071e21ef1\",\"dweb:/ipfs/QmNSmK5Mt7tt5isSuo216vVnn6rHBprYjz9Sdodf8YRPAy\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xffc8c2aa8115f5e7200638c21772a2f4eec283fd33a877d02a9b906614badb70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4df5c66e27c4a778c2ba7ce26d48652ee6f7740f0440aae9021d76aee66a2ecd\",\"dweb:/ipfs/QmWLY9GVbxHerTUJwWaNBjAWXKF7cxm2GLietVi6L5kS15\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x2ae619771cab21bff599bda7e32bce6d44c9f2740fbf895e2669f4725188f81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c40cd9c84d98c5227f7874a3077ae1a187db47f3b6c01a0c546b56952b424eda\",\"dweb:/ipfs/QmUfN3ajrhYwS3r8wHzjoAVtysXf51aLQvoafGi5cMFWUX\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreSystem.sol\":{\"keccak256\":\"0x380389a97358b3c85e259e5eb9cb0cdf9a15167d24a812fbf47d86775da43b74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://691dfe2fbb428b49d5458b3ef37f1efa6b4f9d947a40c8a351a60bca904ee419\",\"dweb:/ipfs/QmUZJNJijQovNHU13fT6PkGmdE5EBWA4MrJtLAgcUSn2D5\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0x35b32faf971caa7aefecae3c8b1a1cd2e78ff350c2109263b2f199cdaec96488\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c149042b448fd88260abde657931370697b35ab8e338920f0c5e5b9e83c74ab\",\"dweb:/ipfs/QmZYAsp3xtCmoNRnYaeFyXwkvYuraa3XpTBqD5Hj83NJP4\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x249199f0f92320c6845018fa5449f53be3d81c496eda3d776f21c31f5bb9eb64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff22da9809870b3c481dfccff1925f921fd105e6ccda00c0674a3e6e9f999c96\",\"dweb:/ipfs/QmezanrLD6hf17e18JFoxwvBHGiSpdBHvrKjs6D6NSJCWj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x475fd8fbb61fd197a299bcf60be06941a83ebc32c97564fdb0297be9451ee24b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b81e95b20b066aa7a5a175cdadcfb935cad17d58c8b9de308bc01021901b8e1\",\"dweb:/ipfs/QmeiespPCmS5YVQ53QENFWiG61JDXiG6XoED9Lo4hV4HHm\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xbd38c017901c8893dbb8685905a6427ba2f2d80e105b28fe05ab1eaf5476d729\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccea43206d53cae13b0f7b49188afa09f6943f7b7d3ead669e93f7845441fd7c\",\"dweb:/ipfs/QmNkBh13FdewhBG4dkF8eAcXGJJhdZw9WKrSdNXBcvsmx1\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xff42b8b669583d22885bc685be3a50498452300757e585a5bb2ad6a8ad07ee71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://246f2255ef9a6688e128f7f8ce3fe223fb7c053ebc2c8111c1626a04f7ffb53c\",\"dweb:/ipfs/Qmd2MHASghbm3ThMej7MkuQig9nSAMJ2rRyeRkvZJQAyGH\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xcdeaab34a28a43960f7fb673d92575af98aa7b36d8210a8e6e95197d14a827cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://329d675cf7281638cfa8fa348e5e24700049c590e088353d64e88dad861c0cef\",\"dweb:/ipfs/QmSZMYFSLknMga7UgX1H2tuuXayDYJhEnngbfLRBfVTu3f\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x5c5e5c8f1fa4780a7b1ca759f7ce63dd4165a5b2a7f64c8fcb8f06bd8917ace6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6d37ed25ed4471dc336681c959153cdb4cb16c209142ca5edbc6d9293669fd2\",\"dweb:/ipfs/QmQLAbkk7jxN68QcHV9KgiCbsvxDm9rKmLJQWME6DBZEpw\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xe31ee781596541f60ed71ef327c9d26ffc899e7fb3f4991c67406518bfc00746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7b864fea8c77833a322b16c4673f110d5065d0cafcedecd07895699cf4258c2\",\"dweb:/ipfs/QmRkzXVjMLwQFWxjEjgfdXVPAp6SU4zfxPo4NJcmz8HwH9\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/erc20-puppet/ERC20Module.sol\":{\"keccak256\":\"0xd228562b1974e15d04903262356d5e472001997d8f85f7ee82ac94bc55c2d453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://792dcc71b19aceb3da51c3a3ed14976b01555e12719e7b53f39823a7ab13d4e6\",\"dweb:/ipfs/QmYJDNxECGAMUCPKLiVSvz61a6sdXSPt3iK1UwzpkQpaoR\"]},\"src/modules/erc20-puppet/ERC20System.sol\":{\"keccak256\":\"0xb84141880fce305b424d3aaa48c7c813f5b2cf8b6140781917ae59b2a2dde154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6168e5757f5383c7f5113d25e9c8f61b482c103dd72c0409e6c53e0b008d85\",\"dweb:/ipfs/QmSF74y8miTyvz1SvgXsxZSmnTBUcspqfc5HQzQB2CfVot\"]},\"src/modules/erc20-puppet/IERC20.sol\":{\"keccak256\":\"0x9526a245dd9b2527be8ce0304869de8b6b3fa5ce5c4a9878ae4c164eb048b75a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bf0ce8ec02dfbded17da925a23e8ee7c9dc99ad4c42a1d3a3f6954ee363d2a9\",\"dweb:/ipfs/QmWSjpZDkdvvemfpPa7zvHbGHp15xeeAQDNPUvyepPcdvS\"]},\"src/modules/erc20-puppet/IERC20Errors.sol\":{\"keccak256\":\"0xe9614a529c1886f58a9346c5e23d588729b8358876cdaaa1e02c05aedb49d1e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6da79a2b8813b856be2532bf2a4108703bc438a0d899e72a13113e624e3cf6b\",\"dweb:/ipfs/QmXm41JU4yapHaDDjuExTKgpX2FdDNmyDQgvGwK7Qv9PE6\"]},\"src/modules/erc20-puppet/IERC20Events.sol\":{\"keccak256\":\"0x22b66b1bc5609d9be78150221ff0ecc85fe22c39dad6ac9a02aef4fc7347296d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13bfceb7a6e7869f16cf9f3046308b834b0d64bffcd55828cd12edab0efa8e5f\",\"dweb:/ipfs/QmVPXYHx9MszicYsovZrwmafe1zv9amAuX4qpvzYdcufj5\"]},\"src/modules/erc20-puppet/IERC20Mintable.sol\":{\"keccak256\":\"0x1f17e23ada0ab60edb2d70322f6317832167ab261825fc9cc8c22fed4fdf167f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66f4ed9a5449dea5585a91c846bfd25a4af400e86d55d3646177a147d3f7d205\",\"dweb:/ipfs/Qmc2Yxm9HEvRepmNdgRxN1zvvq8SxbDfJ5zA8WorooiH6E\"]},\"src/modules/erc20-puppet/constants.sol\":{\"keccak256\":\"0xbc3dceef68daf66c30b51387398268598b85442f85b5d6a2100a882518036889\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://085db7a1d6d673b76b5a66c3da6828ba45e104cf64a36707d671f21710cf1c7b\",\"dweb:/ipfs/QmVsPmdFTCZnBckz2RLSQZ43mK3LUBDu26WRHtiXTs4fsk\"]},\"src/modules/erc20-puppet/registerERC20.sol\":{\"keccak256\":\"0x5f9d0b4272cc590a0f4554a1276ab5443f5918c5d83c4a8d80eaa1ce11b9e547\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d6e8adfd29e362ff38c740607c1f65d088de7af231c9381ee1fdef67c73f14\",\"dweb:/ipfs/QmTkdHdNPHo5w5HdWZeTcGH8V7fgef9xSTToZYk473J9Ce\"]},\"src/modules/erc20-puppet/tables/Allowances.sol\":{\"keccak256\":\"0x701b2f518f8702cb41c924c4ac4bd64a5fe2ad470a7639f1163428bd83305b74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41844112f540ef1a0e15a578810bb5b7f1cfb2036ddd4867bcba7e453b1c3768\",\"dweb:/ipfs/QmQnLcXDE3T9mCTJbGVp6CTjNgXbEcWBa92hiGtitahszo\"]},\"src/modules/erc20-puppet/tables/ERC20Metadata.sol\":{\"keccak256\":\"0x17618ef023cb4d1fa9e53b183bc0e796b3042ca0dab69544e2044997e8f71253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://103799676aa6d5fbe321d6fdd83de10f8ba670fc98b2cf62b40eaae07f9abbee\",\"dweb:/ipfs/QmNs9JYUd4ThSnFMwFHHXoAinCGbBSPMvH2bz4tUFTfQ51\"]},\"src/modules/erc20-puppet/tables/ERC20Registry.sol\":{\"keccak256\":\"0xd84e88798b32ca0a8d5321b832262f4aaf74fe2cb28a0bb1073d17f4fe3b649e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac87a8c584663f797aaedfa76fccf0641e1db326e276a602746147eb84419ab7\",\"dweb:/ipfs/Qmdjcr9mEoZ5RDDyaHjZcysaimsocLmDmPiRXxD3YtbiEM\"]},\"src/modules/erc20-puppet/tables/TotalSupply.sol\":{\"keccak256\":\"0xebbf33ab9020c92e18035eea0992ad2bd058735d1c5b14e381c79e917043e385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26de448ed8a278775618b215248ac0cb603f6828efc0f562f6a7e3460e6c8a7b\",\"dweb:/ipfs/Qmcd3gJAvDCrWRQK3fT5yhXRN17c5suJBkyJzRdAQ6Xbn9\"]},\"src/modules/erc20-puppet/utils.sol\":{\"keccak256\":\"0x745e5260697e8c0f962c8d72fadeb4e47fc59e57c26f67f4f3b94fc118b19ce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3282e8b0947abd80491027e7fc347466b5e0bf737148001cdd492de45c0aa14e\",\"dweb:/ipfs/QmNx7zvfz8ThSLdypvBeJUFCpTBKJnRCKrYZBaqAbac8nN\"]},\"src/modules/puppet/Puppet.sol\":{\"keccak256\":\"0x8933512836ec527a90f1fd44cf01870b302cd5f080d1dc9f64ea11c41e46d2ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854b7887821c26da985de13e8fb476bd8bd52c411284793789d19d34d9112f3b\",\"dweb:/ipfs/QmcHweSL5z6Mwro4dm4sLnzy7WmzdZud5yW7KQ36mnZTYD\"]},\"src/modules/puppet/PuppetDelegationControl.sol\":{\"keccak256\":\"0x8ba3488fee9e5503fa77b39609cfa2eed78be87636ada50e99094b0edc5a79e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08214be4e0315011bb8c675c955f560865687d9129be342ab420bbb5d123f37b\",\"dweb:/ipfs/QmXFbsptKuD6fxKhhb7FatDBRE4seDnmefNB2WG6MEHHmW\"]},\"src/modules/puppet/PuppetFactorySystem.sol\":{\"keccak256\":\"0x47fc8ab186eba9b965c8cde4ff814eb9973302cbe1de6ee96f4539b62278fd85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04eb1f7b3d964cefef88285546dbcbdc4f1c4e03d2364d37cdda5c79f9d9bb5a\",\"dweb:/ipfs/QmddEmBYqWtnd63FCZgnHz2ukk1ZFTwLv2bMkVYwsXTG5t\"]},\"src/modules/puppet/PuppetMaster.sol\":{\"keccak256\":\"0x7f94270573d344a1aea188e3920acab0f6c3befe9e7f27a1759df091f73db9e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc35076fb222a6e77a6968ef62856db69c4bb757f83f9849fe6abd8bb983002f\",\"dweb:/ipfs/QmVKRXYS1Xj1ckMZg6i9XPp8LbE4BXR8GL2XBfiFvnPnk9\"]},\"src/modules/puppet/PuppetModule.sol\":{\"keccak256\":\"0x71d10e17d99360bcab771a7ce47290c49e925deffaea4d188a066c71f9ce2f56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf64cd8d6c0a972475bc63fa992296af6b9212ebc7220e98b6c8094a57b976c1\",\"dweb:/ipfs/QmSGEtg2UMZfxBvCaBhpaC76RNVRvWz4JgMWwgqtKg1zK2\"]},\"src/modules/puppet/constants.sol\":{\"keccak256\":\"0xb5379ef41cc6ab6a27bc8bee21f73094ecccd7af0b54e61bf7180b04dd828207\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7edb00d3c48110499790cc93573b3d4e7626a7d56c7243a57d0cbe2b1b86d449\",\"dweb:/ipfs/QmU9c1n3vftuRM4WjSmBhodZvSKwfovvzakdre2AYQTrur\"]},\"src/modules/puppet/createPuppet.sol\":{\"keccak256\":\"0x3ec80fa8b953772490089a2ec073109f4e06bdcb12ddc4f6501384340f64232e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93ecfe683e78efc41c21ed5be647cb4654ccdbf38f8ef4358067f87b39dc997c\",\"dweb:/ipfs/QmTrt6U6BnykBBJqVmHQkgAxEcqZ6X5LHDQZgWVGVPR1X3\"]},\"src/modules/puppet/tables/PuppetRegistry.sol\":{\"keccak256\":\"0xe746e9170bee8f229554971e2ebdeda0ac4b4d342f92c711a9c22882c0ebe4f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e8ba2b16545929f480da8b5d6980fe5f92bb87b7b09178b5236aeede72a7436\",\"dweb:/ipfs/QmUT9HGrXJB1jiyFW14kqGGGb8v86w2UscWuzWWfcmPTuE\"]},\"src/modules/puppet/utils.sol\":{\"keccak256\":\"0x725bf79655d814b0b04e2f64a8eb3a01dbd87cebf6c9674fb656363cc72c6e66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6efcc323f7cdf8e0d284dafe714f9dd922d63c747e9a34d6e71473943b50805c\",\"dweb:/ipfs/QmcxA7uqyhAV7m3svQstVhsjvLYbcgUq1nQCk7vqACAsQf\"]},\"src/modules/tokens/tables/Balances.sol\":{\"keccak256\":\"0x1a5efec938f8f444e25499f55c11782e2f8425ecb4bb7642b3e4d89ef5c94283\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8cc1696ae88061b5b469111ee6bd4c25919756d3c85e2830a92dd7a344bda8d\",\"dweb:/ipfs/QmNZKrU7NkRHmvvm98kaLYFusEmH3e7sJdCwciuUWzCCxe\"]},\"src/utils/AccessControlLib.sol\":{\"keccak256\":\"0xb31878bda3f249c941719f6aa743bc739701418ed3effd2b5e6b4f28219e3f88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a56bea3221f0663c35375beea4803b0d4ebc7e004828b89ef72c0cfec8e009e0\",\"dweb:/ipfs/QmPNZig8c2ou4uZFMjotG1CGT3ZcTU2aCt3C2RTSLkx3w8\"]},\"test/ERC20.t.sol\":{\"keccak256\":\"0xe3ed3590372171f7e3d51ae9e22ead8bf3eb38224a509722a9f05aa35314093f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://030e963edbef731d65528eb947328cf2c9d7511f9b7aa3d932fd792256c0eb3b\",\"dweb:/ipfs/QmZuJJy47eBWKpRfJB1LoFvLqiaWjGrdFcbRNFw96mk9Mq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurnInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInfiniteApproveTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMetadata"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintOverMaxUintReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetUp"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/ERC20.t.sol":"ERC20Test"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xab31edce915377852bb5f29f7f2ccfc50cac087d64d2a8aae669715ad862d558","urls":["bzz-raw://3187e86e43be1fbdd59df45c695294f1114aa1ac48e6445c0cb26089434be5c4","dweb:/ipfs/Qmck7shMVrcKMVkgN2pC1byPY7hb3V9fTxnUcGgxAUeXYk"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x2a0536cd6cecc479d0b81d5aad6380231f4d6873beadc54814d801c2036b02c0","urls":["bzz-raw://e07c041e19146a9ec258cc700a450b4d49440202895eb12f3bb17508427c23ba","dweb:/ipfs/QmXoqrCGDSkuFgNSMURRFdjokjREL78nLDzNaUi6rjefy9"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0x045024523eb55d08ad8d13eca6185bff2988865f4aa12e3f9372029c2ecb8ddd","urls":["bzz-raw://6621c53b49f8fe0557d1a1db47bfe1561801c09256948dd0652fb41541891a18","dweb:/ipfs/QmZgFVCUH1pKcc9MeFyzMe1VW87SLz6c9szGwrDRUp6BZe"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0xa6777c7868333996ad9c61a94457dcac702d8d7445a104dfdc86543d25e7470e","urls":["bzz-raw://6268a16449d7529a94746d0103670dd0e38faf5117bf914fb01da9947ab44c2e","dweb:/ipfs/QmaSfbx1QRA3jw2K8bGkQTw4CTGPUzNqnCJW7LwaFUJCXy"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0x44ddfa9eb8a861462c550f0a9d66c40c68acdb347a61fa765949608407a2c7fb","urls":["bzz-raw://47ee957f4b19cab9e20bf5fc569c015eca13852fb3351f2a105a8be9c48204c0","dweb:/ipfs/QmNkyzDobVQLoq9BtQ8HtgsPLiqnmi97EZx1wsu6wp8nKH"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0x40983c580b8958e55db4520095934a535e98544ffe8228327e598973eb6647ed","urls":["bzz-raw://839d658fa2bb2b1f09a08149d2bf0c26a26c301ad2dda8154fc99458085a695d","dweb:/ipfs/Qmd5jHHYrgqraPqF8bjzT4xyjsoPk8K7pkxXLLfz6MRT6d"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0xfaf54b1f5acccd4c6ce3f8377050ee84efbb423cb604b4651e8b9ea3b467bf32","urls":["bzz-raw://acf2ce7ffec21f28ad1dc6da06c342f1212a03a3d16a0be7ee85715a5940718c","dweb:/ipfs/QmTCN3NSdFg87hi7KS2Xtq7PsmRUMG64SxC8PtP3p2GzuT"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x130f0925a5bf4f732ef9758b47eca18c77d1bb34546ea9463321e9df766435a1","urls":["bzz-raw://68767e3db6fd6538a4577a1c30fe03e05bf9d316cdd43a66657e93c008b76f45","dweb:/ipfs/QmSZmUBSfhk3v5gNu5GgwcYuWbb1FFDKYpDKvpXVahfyTw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x95b7d62d84b43777c54dd1c7d941dbb5ba0afc02c444c30cfdb1de671bbbf180","urls":["bzz-raw://fe62a2fdb2a73610c3072f31b7f88ed3f9d03c1009fe0f0ef37a7eb814b23534","dweb:/ipfs/QmV85zaV5HAD6eGc5N4RmdtmpR6EwkswVLQTaR2aJqsXrj"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0x0da12dea94f088d01b1b0d6d4887f628c61c9c34a4c74a4c9033621bddcc007f","urls":["bzz-raw://7e77d66891e1cdff6899e00c7993302dd77dd291f954b79d2c582da076e22264","dweb:/ipfs/QmcLyDFSnyMUF89hGhPX4nvUpkXdJSxBe5zGSJFqTAT5Mj"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0xc5c6f807cff6b4dc486525c559ba3f7cbb034ac5895636ee64c9d01defa6a38e","urls":["bzz-raw://84d3a3b3fd3afa2ab3231fd7fe981889dfb0600deec34c5d4e9c07d3187af8a5","dweb:/ipfs/Qmanj7WjETqBYQXkxKLjqWs4vMp3en3N69B5MacKme5fpD"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0xf7a9bf3e37b486377005c556cdf5b813ea1a41278b3a0349f81e3c82a2f1c789","urls":["bzz-raw://92cc87add89abcb126bf3cd0b284f25065c2b9c90a49f8dba4629b28a5b87751","dweb:/ipfs/QmNNBDSK5GNujERGiSUhorbmtpdD2UnGz7MqSSDasEGdub"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xa1186b8b6143b4a87cea1624785494398be1613cb7c6f9e57734e1cca1d5dd14","urls":["bzz-raw://488c158082622689d035d7964c6ca063295e53078291c340eb6a23db08e8ff95","dweb:/ipfs/QmWcjo3B5SH7jStXKAuf7qvF2ouz6syw9c7aT86PnTgRqW"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xd47e1921c07fc8608157b5dc343fcef7235e891ea6a21dec1fb118a0bd797fcb","urls":["bzz-raw://01a6ad068e6991994a0939f22a55245e0c7c82fc5e274da0af616286a8acfc7a","dweb:/ipfs/QmPokA3pSexzZY33MMV6BGx48ZwQegdUN5AijiAfycSDxy"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xd0360567e4d77c6a8e3d8a5f4bf3653ccde4d268674c50988d55695dc6193f6f","urls":["bzz-raw://53e6bcb53fcb08ee9426225fdab7c41df91e12cb4f80d92895a6117338627401","dweb:/ipfs/QmeLcaPGeMBpNSTSsPYK3PHpzKuGMjuitCweAWcoXK2mXr"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x5cacd4cb371e0a79bc8d64f62349d568fd8b08093c11ae0c3db4f16480d8808b","urls":["bzz-raw://12b64ddf2b5c19cf68ba93a8153ed79cbafe7a91e015d4b2f25eb1d42ab06256","dweb:/ipfs/QmQz5WwztcuTbSGFv2pkhU3w5scUj1gmavoyUpduxk2v3A"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x10ca29a5d7075edb2fe5cd559077fc34857129182f9d6ea074a234dfbcdb313e","urls":["bzz-raw://1fe2783b7d0592d14a20b8be192dd3fa4216f8e541adea579859ea2bf1224da3","dweb:/ipfs/QmTi9XDP5jsQpbqvJxPvkqyDByv7i88wKidrYnTtLdPhka"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0xebe8f1d4a86bcd052afe19773cc5b48da49a7742033c2cc6f06c17a20be907b9","urls":["bzz-raw://20dd17dc78d0aff086ae0b80823cdc8544cdef4b545ec58303a1a8ef19c5372c","dweb:/ipfs/QmdTBo4xSMEQAQoae5o2L2DB7yGBv9TmzZwR3LmUjynEY9"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x4535542ceb57e77096f24b943285bc158c48ef5291999f9c1e27f5682f8a9581","urls":["bzz-raw://ec670524d19c50c659e385bc4dcb4757b065e1b5fe14160244537a7cd7a4b883","dweb:/ipfs/QmT7NSWFSQ6MxYefe665srKMT2GTWomrPRZAHLjrFhQzV6"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0xb2114b6b66c0e7d8304d9e1d06aa1d0731f089daa6a0584e6cf744d9c48cf4db","urls":["bzz-raw://ebbb172970b106dd4ae5a6d5e417ac75cad7529d2b94c1601e10b886d0edf510","dweb:/ipfs/QmPGn4F92hjkFch6Jh2NB37EYLLfstw6JxJKUZjXBFqGCw"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0x22b8cb3ffcc21cb1657d57fc8ac929d2d6fdd199328e6f43ad2cb54f53dcd500","urls":["bzz-raw://47c001f6b7c6d6e453c340618d23b1532078abb7d0fd7283405071e4e8ff8d2d","dweb:/ipfs/QmRW3femBhqQCPwDEj4Jop2Dnd3EU21ufg7GDVwN4joCQu"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0x652a3d6a3721a1c3f36abd7a398b16ae7d9e30ddbf54d8dc4494343dadb9f719","urls":["bzz-raw://c33d2bb71a7ae8823233fa399f778fe86e9bb078889a092fcd1ed9e7838873e5","dweb:/ipfs/QmYM6JQ4syoxQLCXC4evHVEwbsTuXgS42HZZ9Fho7J9EXr"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2db3d2945cea02e3c830329c30dde0c96bb87da9d070f3545dbd7f807d2ff53a","urls":["bzz-raw://ee5c3b48917527ec0f26c953f66d149bb2173d1dfd78ee00d2ceb409f3a5bd08","dweb:/ipfs/QmQ7WjHbmWeEDnu2dgx7nduYBCvyVsjFksPHXxrJjZCKo9"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0xebc236e55c297ccbd00fe635a4216c4bc35e4e860129653935b2bc90d918b8f0","urls":["bzz-raw://b0289100d0fc793223c8d42c5e3a55bf33447dd14d72a6f5f9154b78b2736dc7","dweb:/ipfs/QmQp7yniMmyNtzUHPt8r6aoPhPiyWV1atS5Z2f9sw9QHGf"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xb7bfae2890004001221b3902d185c14cfea0e606d16914f6b7f81cf112aa9417","urls":["bzz-raw://acfd0d09166fc1bf16a8a5c80fbae1bd42426b2fcbab3c492bc836ea5c0375fb","dweb:/ipfs/QmTzZWHVBkx8hipFVpgEwAbZpr4c6hfr7yf7R71JojT3NK"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf96aee478cc770cd9cd417b7939c38c9b9b075c91f3f47bdf8c6742f5591e9dc","urls":["bzz-raw://9c59c4c9a6ab3d64e2b0d7c9f3df2d330a36fc93ac2ab5e5f907fa881fbed1f8","dweb:/ipfs/QmTbd82cCtDwc8Ga1UsWAKXmFYrWU1zkbCCk1nMspqWdZu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreSystem.sol":{"keccak256":"0xf837b53eaa348da3b3650e0b7159de02d3f84897d96e487ece2f932c272dbe57","urls":["bzz-raw://fbdc52e9e519c8c6d4a00caf4de08688eb8eb34dbfc6236308f281d7cf05b51b","dweb:/ipfs/QmWnogXiA5KA6JGxCTJR5W1MNFowrH7baSAYhSXjV1xM47"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0xd71faf03c782ac29483e94c2ea166fcc4e50179c7605357b1ba31bca4de29514","urls":["bzz-raw://099db3f65835e395450f49119c4211b8394f2783ded4aa86eac32b3ca951f662","dweb:/ipfs/QmV9FEcdDnCLbEoiAzAWYwN66P1Wf2bgkbicHNnBXD7Xrd"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x873f8d46f75ec8a85c392aa7cf2dd3f2183684dadde18b7dfca12643ab6249ed","urls":["bzz-raw://1eaf7aeee1487c967ce419db0e96abd1cb8f6b75670009f2cac26dda94caec81","dweb:/ipfs/QmXs5wmrwP23g3LNPP6J3NPgemu85VVQvx8rfHz2RFXRtk"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0x63f3d68775ad36b709d47f8a222dcee9244923b5665e94cd15ab966a7a92bee8","urls":["bzz-raw://3e9e11fc3de65b6681e86971da4645f3054a5a37d58bdd5b90bc9c07c2b5e9eb","dweb:/ipfs/QmehdJcmH1buEMdnGpbi8sY1c1mUV4jMhq6bRLMPGBnyAB"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0xbe0b03a0379cf2dcbed5302acbcb116b263b68a1c1689b66b6df2c0414033f7c","urls":["bzz-raw://a7c3913cc938e7e0e3257194703a7cda9b8269b89ed2ccc5250d31eb07254198","dweb:/ipfs/QmctosJsQ6sVhFHG3bEAUdhEdcBVVUKtSjTG1taXome1ff"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x47c6d188f39a85b50f066151cb48d987454e845f1629685300613fdb502505a0","urls":["bzz-raw://abeba0002051f60f81c1e29dbf627db4aed8da11483ec8d860a362b4bfbf4c08","dweb:/ipfs/Qmc4RNYgBma9repACLdN1hpjPmEbsFKWXL8B42KaBAZvtc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb0b7c13673a1629118cb0c3c341380fa6d4795c9b7cf6a6c73443750f1a3b34d","urls":["bzz-raw://b3c8eb44785f61c0470273cac40a228ae458b74f48d2bff8faf8915861fc49ac","dweb:/ipfs/QmUF52hgGCL9TMyTQqrxGVharwfFgKNsCpD3VNqfbhid9X"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xe2a4e6a75ffda6971c16e9218a0f076d5b89572d37780cd4c2375a2de683fd60","urls":["bzz-raw://f04dbdf5295c0ddbda4ba0eb5fdebd84dce2ff3fe86d34681f71522bcb0e6e93","dweb:/ipfs/QmUMkPg1vhSz2zVweN5bqtWbUCj3UQKZPgYfBkQ3QGS7gF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0xd069f1f65243ffcc3ace23804851bc902c5e58d525b962575a659e47aa76236b","urls":["bzz-raw://4f86b3d93b5bcf81e0d3da0abbd6fc3924be59e7c8d147cfeb3307108431f6a3","dweb:/ipfs/QmRrkBXGsdtbo28xznUWUuqNUGyfAbu1kadKGjL7n6KiKb"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0x8318ead6bf21b8f1e9f231d73634034511d74c1a979246df9f9cda8f349b644d","urls":["bzz-raw://b705a942046bb24fdbf0a5f4b365e33ab724d26bc158e7458ef5f262f72b5bae","dweb:/ipfs/Qme63b3DKKizKumysUGVFH8Q9h6cHnHBFM2Kdsxh2p6SWN"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x3bf40b7e71a1953f21b447975ec1a850994a250325fdb88489d24175cf8440d9","urls":["bzz-raw://7fc1d4ce3096dfbd5510d2558d6fcae01ede446032ae232bd3e8656071e21ef1","dweb:/ipfs/QmNSmK5Mt7tt5isSuo216vVnn6rHBprYjz9Sdodf8YRPAy"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xffc8c2aa8115f5e7200638c21772a2f4eec283fd33a877d02a9b906614badb70","urls":["bzz-raw://4df5c66e27c4a778c2ba7ce26d48652ee6f7740f0440aae9021d76aee66a2ecd","dweb:/ipfs/QmWLY9GVbxHerTUJwWaNBjAWXKF7cxm2GLietVi6L5kS15"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x2ae619771cab21bff599bda7e32bce6d44c9f2740fbf895e2669f4725188f81d","urls":["bzz-raw://c40cd9c84d98c5227f7874a3077ae1a187db47f3b6c01a0c546b56952b424eda","dweb:/ipfs/QmUfN3ajrhYwS3r8wHzjoAVtysXf51aLQvoafGi5cMFWUX"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreSystem.sol":{"keccak256":"0x380389a97358b3c85e259e5eb9cb0cdf9a15167d24a812fbf47d86775da43b74","urls":["bzz-raw://691dfe2fbb428b49d5458b3ef37f1efa6b4f9d947a40c8a351a60bca904ee419","dweb:/ipfs/QmUZJNJijQovNHU13fT6PkGmdE5EBWA4MrJtLAgcUSn2D5"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0x35b32faf971caa7aefecae3c8b1a1cd2e78ff350c2109263b2f199cdaec96488","urls":["bzz-raw://0c149042b448fd88260abde657931370697b35ab8e338920f0c5e5b9e83c74ab","dweb:/ipfs/QmZYAsp3xtCmoNRnYaeFyXwkvYuraa3XpTBqD5Hj83NJP4"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x249199f0f92320c6845018fa5449f53be3d81c496eda3d776f21c31f5bb9eb64","urls":["bzz-raw://ff22da9809870b3c481dfccff1925f921fd105e6ccda00c0674a3e6e9f999c96","dweb:/ipfs/QmezanrLD6hf17e18JFoxwvBHGiSpdBHvrKjs6D6NSJCWj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x475fd8fbb61fd197a299bcf60be06941a83ebc32c97564fdb0297be9451ee24b","urls":["bzz-raw://0b81e95b20b066aa7a5a175cdadcfb935cad17d58c8b9de308bc01021901b8e1","dweb:/ipfs/QmeiespPCmS5YVQ53QENFWiG61JDXiG6XoED9Lo4hV4HHm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xbd38c017901c8893dbb8685905a6427ba2f2d80e105b28fe05ab1eaf5476d729","urls":["bzz-raw://ccea43206d53cae13b0f7b49188afa09f6943f7b7d3ead669e93f7845441fd7c","dweb:/ipfs/QmNkBh13FdewhBG4dkF8eAcXGJJhdZw9WKrSdNXBcvsmx1"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xff42b8b669583d22885bc685be3a50498452300757e585a5bb2ad6a8ad07ee71","urls":["bzz-raw://246f2255ef9a6688e128f7f8ce3fe223fb7c053ebc2c8111c1626a04f7ffb53c","dweb:/ipfs/Qmd2MHASghbm3ThMej7MkuQig9nSAMJ2rRyeRkvZJQAyGH"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xcdeaab34a28a43960f7fb673d92575af98aa7b36d8210a8e6e95197d14a827cd","urls":["bzz-raw://329d675cf7281638cfa8fa348e5e24700049c590e088353d64e88dad861c0cef","dweb:/ipfs/QmSZMYFSLknMga7UgX1H2tuuXayDYJhEnngbfLRBfVTu3f"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x5c5e5c8f1fa4780a7b1ca759f7ce63dd4165a5b2a7f64c8fcb8f06bd8917ace6","urls":["bzz-raw://f6d37ed25ed4471dc336681c959153cdb4cb16c209142ca5edbc6d9293669fd2","dweb:/ipfs/QmQLAbkk7jxN68QcHV9KgiCbsvxDm9rKmLJQWME6DBZEpw"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xe31ee781596541f60ed71ef327c9d26ffc899e7fb3f4991c67406518bfc00746","urls":["bzz-raw://f7b864fea8c77833a322b16c4673f110d5065d0cafcedecd07895699cf4258c2","dweb:/ipfs/QmRkzXVjMLwQFWxjEjgfdXVPAp6SU4zfxPo4NJcmz8HwH9"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/erc20-puppet/ERC20Module.sol":{"keccak256":"0xd228562b1974e15d04903262356d5e472001997d8f85f7ee82ac94bc55c2d453","urls":["bzz-raw://792dcc71b19aceb3da51c3a3ed14976b01555e12719e7b53f39823a7ab13d4e6","dweb:/ipfs/QmYJDNxECGAMUCPKLiVSvz61a6sdXSPt3iK1UwzpkQpaoR"],"license":"MIT"},"src/modules/erc20-puppet/ERC20System.sol":{"keccak256":"0xb84141880fce305b424d3aaa48c7c813f5b2cf8b6140781917ae59b2a2dde154","urls":["bzz-raw://fc6168e5757f5383c7f5113d25e9c8f61b482c103dd72c0409e6c53e0b008d85","dweb:/ipfs/QmSF74y8miTyvz1SvgXsxZSmnTBUcspqfc5HQzQB2CfVot"],"license":"MIT"},"src/modules/erc20-puppet/IERC20.sol":{"keccak256":"0x9526a245dd9b2527be8ce0304869de8b6b3fa5ce5c4a9878ae4c164eb048b75a","urls":["bzz-raw://7bf0ce8ec02dfbded17da925a23e8ee7c9dc99ad4c42a1d3a3f6954ee363d2a9","dweb:/ipfs/QmWSjpZDkdvvemfpPa7zvHbGHp15xeeAQDNPUvyepPcdvS"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Errors.sol":{"keccak256":"0xe9614a529c1886f58a9346c5e23d588729b8358876cdaaa1e02c05aedb49d1e3","urls":["bzz-raw://d6da79a2b8813b856be2532bf2a4108703bc438a0d899e72a13113e624e3cf6b","dweb:/ipfs/QmXm41JU4yapHaDDjuExTKgpX2FdDNmyDQgvGwK7Qv9PE6"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Events.sol":{"keccak256":"0x22b66b1bc5609d9be78150221ff0ecc85fe22c39dad6ac9a02aef4fc7347296d","urls":["bzz-raw://13bfceb7a6e7869f16cf9f3046308b834b0d64bffcd55828cd12edab0efa8e5f","dweb:/ipfs/QmVPXYHx9MszicYsovZrwmafe1zv9amAuX4qpvzYdcufj5"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Mintable.sol":{"keccak256":"0x1f17e23ada0ab60edb2d70322f6317832167ab261825fc9cc8c22fed4fdf167f","urls":["bzz-raw://66f4ed9a5449dea5585a91c846bfd25a4af400e86d55d3646177a147d3f7d205","dweb:/ipfs/Qmc2Yxm9HEvRepmNdgRxN1zvvq8SxbDfJ5zA8WorooiH6E"],"license":"MIT"},"src/modules/erc20-puppet/constants.sol":{"keccak256":"0xbc3dceef68daf66c30b51387398268598b85442f85b5d6a2100a882518036889","urls":["bzz-raw://085db7a1d6d673b76b5a66c3da6828ba45e104cf64a36707d671f21710cf1c7b","dweb:/ipfs/QmVsPmdFTCZnBckz2RLSQZ43mK3LUBDu26WRHtiXTs4fsk"],"license":"MIT"},"src/modules/erc20-puppet/registerERC20.sol":{"keccak256":"0x5f9d0b4272cc590a0f4554a1276ab5443f5918c5d83c4a8d80eaa1ce11b9e547","urls":["bzz-raw://85d6e8adfd29e362ff38c740607c1f65d088de7af231c9381ee1fdef67c73f14","dweb:/ipfs/QmTkdHdNPHo5w5HdWZeTcGH8V7fgef9xSTToZYk473J9Ce"],"license":"MIT"},"src/modules/erc20-puppet/tables/Allowances.sol":{"keccak256":"0x701b2f518f8702cb41c924c4ac4bd64a5fe2ad470a7639f1163428bd83305b74","urls":["bzz-raw://41844112f540ef1a0e15a578810bb5b7f1cfb2036ddd4867bcba7e453b1c3768","dweb:/ipfs/QmQnLcXDE3T9mCTJbGVp6CTjNgXbEcWBa92hiGtitahszo"],"license":"MIT"},"src/modules/erc20-puppet/tables/ERC20Metadata.sol":{"keccak256":"0x17618ef023cb4d1fa9e53b183bc0e796b3042ca0dab69544e2044997e8f71253","urls":["bzz-raw://103799676aa6d5fbe321d6fdd83de10f8ba670fc98b2cf62b40eaae07f9abbee","dweb:/ipfs/QmNs9JYUd4ThSnFMwFHHXoAinCGbBSPMvH2bz4tUFTfQ51"],"license":"MIT"},"src/modules/erc20-puppet/tables/ERC20Registry.sol":{"keccak256":"0xd84e88798b32ca0a8d5321b832262f4aaf74fe2cb28a0bb1073d17f4fe3b649e","urls":["bzz-raw://ac87a8c584663f797aaedfa76fccf0641e1db326e276a602746147eb84419ab7","dweb:/ipfs/Qmdjcr9mEoZ5RDDyaHjZcysaimsocLmDmPiRXxD3YtbiEM"],"license":"MIT"},"src/modules/erc20-puppet/tables/TotalSupply.sol":{"keccak256":"0xebbf33ab9020c92e18035eea0992ad2bd058735d1c5b14e381c79e917043e385","urls":["bzz-raw://26de448ed8a278775618b215248ac0cb603f6828efc0f562f6a7e3460e6c8a7b","dweb:/ipfs/Qmcd3gJAvDCrWRQK3fT5yhXRN17c5suJBkyJzRdAQ6Xbn9"],"license":"MIT"},"src/modules/erc20-puppet/utils.sol":{"keccak256":"0x745e5260697e8c0f962c8d72fadeb4e47fc59e57c26f67f4f3b94fc118b19ce4","urls":["bzz-raw://3282e8b0947abd80491027e7fc347466b5e0bf737148001cdd492de45c0aa14e","dweb:/ipfs/QmNx7zvfz8ThSLdypvBeJUFCpTBKJnRCKrYZBaqAbac8nN"],"license":"MIT"},"src/modules/puppet/Puppet.sol":{"keccak256":"0x8933512836ec527a90f1fd44cf01870b302cd5f080d1dc9f64ea11c41e46d2ab","urls":["bzz-raw://854b7887821c26da985de13e8fb476bd8bd52c411284793789d19d34d9112f3b","dweb:/ipfs/QmcHweSL5z6Mwro4dm4sLnzy7WmzdZud5yW7KQ36mnZTYD"],"license":"MIT"},"src/modules/puppet/PuppetDelegationControl.sol":{"keccak256":"0x8ba3488fee9e5503fa77b39609cfa2eed78be87636ada50e99094b0edc5a79e0","urls":["bzz-raw://08214be4e0315011bb8c675c955f560865687d9129be342ab420bbb5d123f37b","dweb:/ipfs/QmXFbsptKuD6fxKhhb7FatDBRE4seDnmefNB2WG6MEHHmW"],"license":"MIT"},"src/modules/puppet/PuppetFactorySystem.sol":{"keccak256":"0x47fc8ab186eba9b965c8cde4ff814eb9973302cbe1de6ee96f4539b62278fd85","urls":["bzz-raw://04eb1f7b3d964cefef88285546dbcbdc4f1c4e03d2364d37cdda5c79f9d9bb5a","dweb:/ipfs/QmddEmBYqWtnd63FCZgnHz2ukk1ZFTwLv2bMkVYwsXTG5t"],"license":"MIT"},"src/modules/puppet/PuppetMaster.sol":{"keccak256":"0x7f94270573d344a1aea188e3920acab0f6c3befe9e7f27a1759df091f73db9e5","urls":["bzz-raw://fc35076fb222a6e77a6968ef62856db69c4bb757f83f9849fe6abd8bb983002f","dweb:/ipfs/QmVKRXYS1Xj1ckMZg6i9XPp8LbE4BXR8GL2XBfiFvnPnk9"],"license":"MIT"},"src/modules/puppet/PuppetModule.sol":{"keccak256":"0x71d10e17d99360bcab771a7ce47290c49e925deffaea4d188a066c71f9ce2f56","urls":["bzz-raw://bf64cd8d6c0a972475bc63fa992296af6b9212ebc7220e98b6c8094a57b976c1","dweb:/ipfs/QmSGEtg2UMZfxBvCaBhpaC76RNVRvWz4JgMWwgqtKg1zK2"],"license":"MIT"},"src/modules/puppet/constants.sol":{"keccak256":"0xb5379ef41cc6ab6a27bc8bee21f73094ecccd7af0b54e61bf7180b04dd828207","urls":["bzz-raw://7edb00d3c48110499790cc93573b3d4e7626a7d56c7243a57d0cbe2b1b86d449","dweb:/ipfs/QmU9c1n3vftuRM4WjSmBhodZvSKwfovvzakdre2AYQTrur"],"license":"MIT"},"src/modules/puppet/createPuppet.sol":{"keccak256":"0x3ec80fa8b953772490089a2ec073109f4e06bdcb12ddc4f6501384340f64232e","urls":["bzz-raw://93ecfe683e78efc41c21ed5be647cb4654ccdbf38f8ef4358067f87b39dc997c","dweb:/ipfs/QmTrt6U6BnykBBJqVmHQkgAxEcqZ6X5LHDQZgWVGVPR1X3"],"license":"MIT"},"src/modules/puppet/tables/PuppetRegistry.sol":{"keccak256":"0xe746e9170bee8f229554971e2ebdeda0ac4b4d342f92c711a9c22882c0ebe4f4","urls":["bzz-raw://8e8ba2b16545929f480da8b5d6980fe5f92bb87b7b09178b5236aeede72a7436","dweb:/ipfs/QmUT9HGrXJB1jiyFW14kqGGGb8v86w2UscWuzWWfcmPTuE"],"license":"MIT"},"src/modules/puppet/utils.sol":{"keccak256":"0x725bf79655d814b0b04e2f64a8eb3a01dbd87cebf6c9674fb656363cc72c6e66","urls":["bzz-raw://6efcc323f7cdf8e0d284dafe714f9dd922d63c747e9a34d6e71473943b50805c","dweb:/ipfs/QmcxA7uqyhAV7m3svQstVhsjvLYbcgUq1nQCk7vqACAsQf"],"license":"MIT"},"src/modules/tokens/tables/Balances.sol":{"keccak256":"0x1a5efec938f8f444e25499f55c11782e2f8425ecb4bb7642b3e4d89ef5c94283","urls":["bzz-raw://b8cc1696ae88061b5b469111ee6bd4c25919756d3c85e2830a92dd7a344bda8d","dweb:/ipfs/QmNZKrU7NkRHmvvm98kaLYFusEmH3e7sJdCwciuUWzCCxe"],"license":"MIT"},"src/utils/AccessControlLib.sol":{"keccak256":"0xb31878bda3f249c941719f6aa743bc739701418ed3effd2b5e6b4f28219e3f88","urls":["bzz-raw://a56bea3221f0663c35375beea4803b0d4ebc7e004828b89ef72c0cfec8e009e0","dweb:/ipfs/QmPNZig8c2ou4uZFMjotG1CGT3ZcTU2aCt3C2RTSLkx3w8"],"license":"MIT"},"test/ERC20.t.sol":{"keccak256":"0xe3ed3590372171f7e3d51ae9e22ead8bf3eb38224a509722a9f05aa35314093f","urls":["bzz-raw://030e963edbef731d65528eb947328cf2c9d7511f9b7aa3d932fd792256c0eb3b","dweb:/ipfs/QmZuJJy47eBWKpRfJB1LoFvLqiaWjGrdFcbRNFw96mk9Mq"],"license":"MIT"}},"version":1},"id":192}
1
+ {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testApprove","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurnInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInfiniteApproveTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInstallTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMetadata","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintOverMaxUintReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"approval","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientAllowanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFromInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferInsufficientBalanceReverts","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"sendAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c5534801561003157600080fd5b5062027a5c80620000436000396000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633f7286f411620001c457806366d9a9a0116200018f57806366d9a9a014620002f457806370557298146200030d57806378cdebf914620003175780637a715085146200032157600080fd5b80633f7286f414620002bf57806348186a7f14620002c95780635ad7ef9214620002e05780635babb75814620002ea57600080fd5b80631ed7831c11620002055780631ed7831c146200027257806337e816d314620002945780633dc6c95514620002ab5780633e5e3c2314620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b620002456200025836600462005a48565b6200069c565b62000245620009fc565b6200024562000dbc565b6200027c62000f8e565b6040516200028b919062005a7e565b60405180910390f35b62000245620002a536600462005a48565b62000ff2565b620002456200140c565b6200027c620015e8565b6200027c6200164a565b62000245620002da36600462005acd565b620016ac565b6200024562001d90565b6200024562001fc1565b620002fe62002016565b6040516200028b919062005b29565b620002456200211e565b620002456200251d565b620002456200261e565b620002456200033c36600462005a48565b62002905565b6200034c62002be3565b6040516200028b919062005c4e565b620002fe62002cbd565b6200024562002dbc565b620002456200038036600462005cb6565b62002fb6565b6200034c62003280565b6200039a6200335a565b60405190151581526020016200028b565b62000245620003bc36600462005a48565b620034a6565b62000245620037b7565b6200024562003a3b565b6200027c62003d0a565b62000245620003f136600462005a48565b62003d6c565b620002456200040836600462005cb6565b6200406c565b6200024562004258565b6200024562004423565b6000546200039a9060ff1681565b620002456200044136600462005cb6565b62004564565b620004516200464e565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604051638da798da906200049c90620059c0565b604051809103906000f080158015620004b9573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200050491906024810162005cf9565b600060405180830381600087803b1580156200051f57600080fd5b505af115801562000534573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620005989050565b62000662601f60009054906101000a90046001600160a01b03167f6d794552433230000000000000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152508152506200470d565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620006f257600080fd5b505afa15801562000707573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200075957600080fd5b505afa1580156200076e573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b158015620007c157600080fd5b505af1158015620007d6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200083d57600080fd5b505af115801562000852573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820184905290911690639dc29fac90604401600060405180830381600087803b158015620008ff57600080fd5b505af115801562000914573d6000803e3d6000fd5b50505050620009a8602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000996919062005d1d565b620009a2838562005d4d565b62004937565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620009f79216906370a08231906024015b602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b15801562000a5357600080fd5b505af115801562000a68573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ac257600080fd5b505af115801562000ad7573d6000803e3d6000fd5b505060215460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562000b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b54919062005d63565b506021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000be89216906323b872dd906064015b6020604051808303816000875af115801562000bbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be2919062005d63565b62004a49565b602154604080516318160ddd60e01b8152905162000c6a926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5b919062005d1d565b670de0b6b3a764000062004937565b602154604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000ced92169063dd62ed3e90604401602060405180830381865afa15801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062005d1d565b60001962004937565b6021546040516370a0823160e01b81526001600160a01b03838116600483015262000d6a9216906370a08231906024015b602060405180830381865afa15801562000d3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d62919062005d1d565b600062004937565b6021546040516370a0823160e01b815261beef600482015262000db9916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000c35573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000e1f57600080fd5b505af115801562000e34573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000eb96040518060400160405280600781526020017f617070726f76650000000000000000000000000000000000000000000000000081525062004ac1565b60215460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000f15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f3b919062005d63565b905062000f4762004d95565b62000f528162004a49565b602154604051636eb1769f60e11b815230600482015261beef602482015262000db9916001600160a01b03169063dd62ed3e9060440162000d9b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000fe857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000fc9575b5050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200104857600080fd5b505afa1580156200105d573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620010b057600080fd5b505afa158015620010c5573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200111657600080fd5b505afa1580156200112b573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820186905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200118157600080fd5b505af115801562001196573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011f057600080fd5b505af115801562001205573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001281919062005d63565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200134f9160040162005d8e565b600060405180830381600087803b1580156200136a57600080fd5b505af11580156200137f573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620013df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001405919062005d63565b5050505050565b6021546040516340c10f1960e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200146057600080fd5b505af115801562001475573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001533919060040162005d8e565b600060405180830381600087803b1580156200154e57600080fd5b505af115801562001563573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af1158015620015c2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db9919062005d63565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200170257600080fd5b505afa15801562001717573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200177157600080fd5b505afa15801562001786573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620017e057600080fd5b505afa158015620017f5573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200184757600080fd5b505afa1580156200185c573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0388811660048301526024820186905290911692506340c10f199150604401600060405180830381600087803b158015620018af57600080fd5b505af1158015620018c4573d6000803e3d6000fd5b50506021546040516370a0823160e01b81526001600160a01b03888116600483015262001946945090911691506370a08231906024015b602060405180830381865afa15801562001919573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200193f919062005d1d565b8262004937565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200199c57600080fd5b505af1158015620019b1573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af115801562001a09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a2f919062005d63565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001a9357600080fd5b505af115801562001aa8573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001af291815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b5057600080fd5b505af115801562001b65573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001bb0945090911691506323b872dd9060640162000b9c565b602154604080516318160ddd60e01b8152905162001bfd926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562001919573d6000803e3d6000fd5b600019820362001c9057602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001c8a92169063dd62ed3e90604401602060405180830381865afa15801562001c5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c83919062005d1d565b8362004937565b62001cce565b602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001cce92169063dd62ed3e90604401620009d9565b826001600160a01b0316846001600160a01b03160362001d24576021546040516370a0823160e01b81526001600160a01b03868116600483015262001d1e9216906370a0823190602401620018fb565b62001405565b6021546040516370a0823160e01b81526001600160a01b03868116600483015262001d5a9216906370a082319060240162000d1e565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620014059216906370a0823190602401620018fb565b602154604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001e5c926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001df6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e20919081019062005da3565b6040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525062005025565b602154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001f28926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001eec919081019062005da3565b6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525062005025565b602154604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162001fbf926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562001f8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fb4919062005e5c565b60ff16601262004937565b565b60215462001fda906001600160a01b0316151562004a49565b62001fbf6200200f7f6e736d794552433230000000000000000000000000000000000000000000000062005175565b62005175565b3062005216565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620021155760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620020fc57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020a85790505b505050505081525050815260200190600101906200203a565b50505050905090565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200217557600080fd5b505af11580156200218a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620021e457600080fd5b505af1158015620021f9573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227c919062005d63565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620022e057600080fd5b505af1158015620022f5573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620023836040518060400160405280600c81526020017f7472616e7366657246726f6d000000000000000000000000000000000000000081525062004ac1565b6021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620023e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200240d919062005d63565b90506200241962004d95565b620024248162004a49565b602154604080516318160ddd60e01b8152905162002471926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b602154604051636eb1769f60e11b81526001600160a01b038481166004830152306024830152620024ad92169063dd62ed3e9060440162000d1e565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620024e39216906370a082319060240162000d1e565b6021546040516370a0823160e01b815261beef600482015262002519916001600160a01b0316906370a082319060240162000d9b565b5050565b6000620025e9601f60009054906101000a90046001600160a01b03167f616e6f74686572455243323000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152508152506200470d565b9050620026016001600160a01b038216151562004a49565b60215462000db9906001600160a01b038381169116141562004a49565b6021546040516340c10f1960e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200267557600080fd5b505af11580156200268a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620026e457600080fd5b505af1158015620026f9573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002756573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277c919062005d63565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620028489160040162005d8e565b600060405180830381600087803b1580156200286357600080fd5b505af115801562002878573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620028df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002519919062005d63565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200295b57600080fd5b505afa15801562002970573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620029c357600080fd5b505afa158015620029d8573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002a2957600080fd5b505afa15801562002a3e573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820187905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b15801562002a9457600080fd5b505af115801562002aa9573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002b0357600080fd5b505af115801562002b18573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b94919062005d63565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620012db565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200211557838290600052602060002001805462002c299062005e81565b80601f016020809104026020016040519081016040528092919081815260200182805462002c579062005e81565b801562002ca85780601f1062002c7c5761010080835404028352916020019162002ca8565b820191906000526020600020905b81548152906001019060200180831162002c8a57829003601f168201915b50505050508152602001906001019062002c07565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620021155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002da357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002d4f5790505b5050505050815250508152602001906001019062002ce1565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002e1f57600080fd5b505af115801562002e34573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002eba6040518060400160405280600481526020017f6d696e740000000000000000000000000000000000000000000000000000000081525062004ac1565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562002f1057600080fd5b505af115801562002f25573d6000803e3d6000fd5b5050505062002f3362004d95565b602154604080516318160ddd60e01b8152905162002f80926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b6021546040516370a0823160e01b815261beef600482015262001fbf916001600160a01b0316906370a082319060240162000d9b565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200300c57600080fd5b505afa15801562003021573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200307257600080fd5b505af115801562003087573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620030ee57600080fd5b505af115801562003103573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360215460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490526200318492169063a9059cbb9060440162000b9c565b602154604080516318160ddd60e01b81529051620031d1926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562001919573d6000803e3d6000fd5b6001600160a01b038216300362003216576021546040516370a0823160e01b815230600482015262002519916001600160a01b0316906370a0823190602401620018fb565b6021546040516370a0823160e01b81523060048201526200324a916001600160a01b0316906370a082319060240162000d1e565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025199216906370a0823190602401620018fb565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562002115578382906000526020600020018054620032c69062005e81565b80601f0160208091040260200160405190810160405280929190818152602001828054620032f49062005e81565b8015620033455780601f10620033195761010080835404028352916020019162003345565b820191906000526020600020905b8154815290600101906020018083116200332757829003601f168201915b505050505081526020019060010190620032a4565b60008054610100900460ff16156200337b5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620034a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003423917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005ebd565b60408051601f19818403018152908290526200343f9162005f07565b6000604051808303816000865af19150503d80600081146200347e576040519150601f19603f3d011682016040523d82523d6000602084013e62003483565b606091505b50915050808060200190518101906200349d919062005d63565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620034fc57600080fd5b505afa15801562003511573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200356457600080fd5b505afa15801562003579573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620035ca57600080fd5b505afa158015620035df573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200363257600080fd5b505af115801562003647573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620036fd919060040162005d8e565b600060405180830381600087803b1580156200371857600080fd5b505af11580156200372d573d6000803e3d6000fd5b50506021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018690529091169250639dc29fac9150604401600060405180830381600087803b1580156200379957600080fd5b505af1158015620037ae573d6000803e3d6000fd5b50505050505050565b6021546040516340c10f1960e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200380b57600080fd5b505af115801562003820573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200388757600080fd5b505af11580156200389c573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620039216040518060400160405280600881526020017f7472616e7366657200000000000000000000000000000000000000000000000081525062004ac1565b60215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156200397d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039a3919062005d63565b9050620039af62004d95565b620039ba8162004a49565b602154604080516318160ddd60e01b8152905162003a07926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b6021546040516370a0823160e01b815230600482015262000d6a916001600160a01b0316906370a082319060240162000d1e565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562003a9157600080fd5b505af115801562003aa6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003b0d57600080fd5b505af115801562003b22573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362003ba86040518060400160405280600481526020017f6275726e0000000000000000000000000000000000000000000000000000000081525062004ac1565b6021546040517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801562003c1757600080fd5b505af115801562003c2c573d6000803e3d6000fd5b5050505062003c3a62004d95565b602154604080516318160ddd60e01b8152905162003cbc926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003c87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cad919062005d1d565b67016345785d8a000062004937565b6021546040516370a0823160e01b815261beef600482015262001fbf916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003c87573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003dc257600080fd5b505afa15801562003dd7573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003e2a57600080fd5b505afa15801562003e3f573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003e9057600080fd5b505afa15801562003ea5573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018690526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b15801562003ef657600080fd5b505af115801562003f0b573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062003fb8919060040162005d8e565b600060405180830381600087803b15801562003fd357600080fd5b505af115801562003fe8573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562004040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004066919062005d63565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620040c257600080fd5b505afa158015620040d7573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200413e57600080fd5b505af115801562004153573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b158015620041e757600080fd5b505af1158015620041fc573d6000803e3d6000fd5b505050506200324a602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001919573d6000803e3d6000fd5b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b158015620042af57600080fd5b505af1158015620042c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200431e57600080fd5b505af115801562004333573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043b6919062005d63565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b20000000000000000000000000000000000000000000000000000000090608401620027d4565b6021546040516340c10f1960e01b815230600482015260001960248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200447157600080fd5b505af115801562004486573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620044e957600080fd5b505af1158015620044fe573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152600160248201526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200454f57600080fd5b505af115801562004066573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620045ba57600080fd5b505afa158015620045cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620046129450909116915063095ea7b39060440162000b9c565b602154604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301526200251992169063dd62ed3e90604401620018fb565b60006040516200465e90620059ce565b604051809103906000f0801580156200467b573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200469762005328565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620046f157600080fd5b505af115801562004706573d6000803e3d6000fd5b5050505090565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d7075707065740000000000000000000000000000000000000000602282015260009081906200478390603001604051602081830303815290604052620020099062005f25565b90506001600160a01b038116620047c357604051620047a290620059dc565b604051809103906000f080158015620047bf573d6000803e3d6000fd5b5090505b846001600160a01b0316638da798da828686604051602001620047e892919062005f4a565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200481692919062005cf9565b600060405180830381600087803b1580156200483157600080fd5b505af115801562004846573d6000803e3d6000fd5b5050604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f455243323052656769737472790000000000000000000000000000000000000060308201526200492e9350019050604051602081830303815290604052620048e19062005f25565b601086901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001762005433565b95945050505050565b80821462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620049c59060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620049fe919062005fc5565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004a37919062006011565b60405180910390a162002519620054b7565b8062000db9577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004aaf9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000db9620054b7565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b89919062005d63565b62004b915750565b601b805462004ba09062005e81565b9050600014601b60405160200162004bb99190620060e8565b6040516020818303038152906040529062004c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c03919062005d8e565b60405180910390fd5b50601d8160405162004c1f919062005f07565b9081526020016040518091039020546000148160405160200162004c4491906200616f565b6040516020818303038152906040529062004c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c03919062005d8e565b50601b62004c9d828262006231565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004cfd57600080fd5b505af115801562004d12573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004d8057600080fd5b505af115801562001405573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004e3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e63919062005d63565b62004e6b5750565b600060a082601c5462004e7f919062005d4d565b62004e8b919062005d4d565b62004e98906001620062fe565b90506000811162004f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162004c03565b80601d601b60405162004f1a919062006314565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162004f69601b8262006322565b5062005007601b805462004f7d9062005e81565b80601f016020809104026020016040519081016040528092919081815260200182805462004fab9062005e81565b801562004ffc5780601f1062004fd05761010080835404028352916020019162004ffc565b820191906000526020600020905b81548152906001019060200180831162004fde57829003601f168201915b5050505050620055fe565b604080516020810190915260008152601b90620009f7908262006231565b8060405160200162005038919062005f07565b604051602081830303815290604052805190602001208260405160200162005061919062005f07565b604051602081830303815290604052805190602001201462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620051039060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200513c919062006404565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a37919062006456565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620051b157620051b162006494565b602090810291909101015260006200520b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e1401001400000000000000000000000000000000000000000000000000000062005701565b60601c949350505050565b806001600160a01b0316826001600160a01b03161462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620052b69060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620052ef9190620064aa565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004a379190620064ff565b60006040516200533890620059ea565b604051809103906000f08015801562005355573d6000803e3d6000fd5b506040516200536490620059f8565b604051809103906000f08015801562005381573d6000803e3d6000fd5b50604051620053909062005a06565b604051809103906000f080158015620053ad573d6000803e3d6000fd5b50604051620053bc9062005a14565b604051809103906000f080158015620053d9573d6000803e3d6000fd5b50604051620053e89062005a22565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200542d573d6000803e3d6000fd5b50905090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106200546f576200546f62006494565b60209081029190910101526000620054a98583837e1401001400000000000000000000000000000000000000000000000000000062005701565b60601c925050505b92915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620055d05760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200556b929160200162005ebd565b60408051601f1981840301815290829052620055879162005f07565b6000604051808303816000865af19150503d8060008114620055c6576040519150601f19603f3d011682016040523d82523d6000602084013e620055cb565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62000db97f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162005646919062005f07565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620056909160040190815260200190565b600060405180830381865afa158015620056ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620056d8919081019062005da3565b82604051602001620056ec9291906200653d565b604051602081830303815290604052620057d1565b6000806200570e62005846565b9050306001600160a01b0382160362005738576200572f8686868662005881565b915050620057c9565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599062005785908990899089908990600401620065c2565b602060405180830381865afa158015620057a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200572f919062005d1d565b949350505050565b62000db981604051602401620057e8919062005d8e565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620058b4565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620034a1573391505090565b60006200492e620058938686620058d5565b60ff858116601b0360080285901c16620058ae85876200592d565b6200596a565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008282604051602001620058ec92919062006621565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562005962576200595760ff601b83900360080287901c1683620062fe565b915060010162005932565b509392505050565b60006020821062005994576020820484019350602082816200599057620059906200665f565b0691505b508254600882021b60208290038084111562005962576001850154600882021c82179150509392505050565b6159a6806200667683390190565b615368806200c01c83390190565b618296806201138483390190565b611c68806201961a83390190565b61178f806201b28283390190565b610b38806201ca1183390190565b6157b8806201d54983390190565b614d4f8062022d0183390190565b80356001600160a01b0381168114620034a157600080fd5b60008060006060848603121562005a5e57600080fd5b62005a698462005a30565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101562005ac15783516001600160a01b03168352928401929184019160010162005a9a565b50909695505050505050565b600080600080600060a0868803121562005ae657600080fd5b62005af18662005a30565b945062005b016020870162005a30565b935062005b116040870162005a30565b94979396509394606081013594506080013592915050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562005beb57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005bd55783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005b91565b50978a0197955050509187019160010162005b53565b50919998505050505050505050565b60005b8381101562005c1757818101518382015260200162005bfd565b50506000910152565b6000815180845262005c3a81602086016020860162005bfa565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562005ca957603f1988860301845262005c9685835162005c20565b9450928501929085019060010162005c77565b5092979650505050505050565b6000806040838503121562005cca57600080fd5b62005cd58362005a30565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620057c9604083018462005c20565b60006020828403121562005d3057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620054b157620054b162005d37565b60006020828403121562005d7657600080fd5b8151801515811462005d8757600080fd5b9392505050565b60208152600062005d87602083018462005c20565b60006020828403121562005db657600080fd5b815167ffffffffffffffff8082111562005dcf57600080fd5b818401915084601f83011262005de457600080fd5b81518181111562005df95762005df962005ce3565b604051601f8201601f19908116603f0116810190838211818310171562005e245762005e2462005ce3565b8160405282815287602084870101111562005e3e57600080fd5b62005e5183602083016020880162005bfa565b979650505050505050565b60006020828403121562005e6f57600080fd5b815160ff8116811462005d8757600080fd5b600181811c9082168062005e9657607f821691505b60208210810362005eb757634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005ef981600485016020870162005bfa565b919091016004019392505050565b6000825162005f1b81846020870162005bfa565b9190910192915050565b8051602080830151919081101562005eb75760001960209190910360031b1b16919050565b7fffffffffffffffffffffffffffff000000000000000000000000000000000000831681526040602082015260ff82511660408201526000602083015160608084015262005f9c60a084018262005c20565b90506040840151603f1984830301608085015262005fbb828262005c20565b9695505050505050565b6040815260006200600360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200600360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b600081546200605e8162005e81565b60018281168015620060795760018114620060ad57620060de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620060de565b8560005260208060002060005b85811015620060d55781548a820152908401908201620060ba565b50505082870194505b5050505092915050565b7f676173207265706f727420220000000000000000000000000000000000000000815260006200611c600c8301846200604f565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f727420220000000000000000000000000000000000000000815260008251620061a981600c85016020870162005bfa565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620009f7576000816000526020600020601f850160051c81016020861015620062085750805b601f850160051c820191505b81811015620062295782815560010162006214565b505050505050565b815167ffffffffffffffff8111156200624e576200624e62005ce3565b62006266816200625f845462005e81565b84620061dd565b602080601f8311600181146200629e5760008415620062855750858301515b600019600386901b1c1916600185901b17855562006229565b600085815260208120601f198616915b82811015620062cf57888601518255948401946001909101908401620062ae565b5085821015620062ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620054b157620054b162005d37565b600062005d8782846200604f565b8181036200632e575050565b6200633a825462005e81565b67ffffffffffffffff81111562006355576200635562005ce3565b62006366816200625f845462005e81565b6000601f8211600181146200639d5760008315620063845750848201545b600019600385901b1c1916600184901b17845562001405565b600085815260209020601f19841690600086815260209020845b83811015620063d95782860154825560019586019590910190602001620063b7565b5085831015620062ee5793015460001960f8600387901b161c19169092555050600190811b01905550565b6040815260006200644260408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620057c9818562005c20565b6040815260006200644260408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b634e487b7160e01b600052603260045260246000fd5b604081526000620064e860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620064e860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200657781600c85016020880162005bfa565b7f2000000000000000000000000000000000000000000000000000000000000000600c918401918201528351620065b681600d84016020880162005bfa565b01600d01949350505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b818110156200660757845183529383019391830191600101620065e9565b505060ff9690961660408501525050506060015292915050565b8281526000602080830184516020860160005b82811015620066525781518452928401929084019060010162006634565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60e060408190523060805262000015906200008b565b604051809103906000f08015801562000032573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004d9062000099565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b506001600160a01b031660c0523480156200008457600080fd5b50620000a7565b61087c8062002bd683390190565b612554806200345283390190565b60805160a05160c051612af4620000e2600039600081816103cb015261073a0152600081816104d8015261088f015260005050612af46000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d45780637c5b0335146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100bf575b600080fd5b61008a6100853660046125c3565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b6100d26100cd36600461261b565b6101f6565b005b604051601f193601358152602001610096565b6100d26100f536600461261b565b61053d565b6100a7610965565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c8000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161096f565b905090565b6000610200610965565b6040517f6e730000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201529091506001600160a01b0382169063b29e408990603001604051602081830303815290604052610267906126cc565b6040518263ffffffff1660e01b815260040161028591815260200190565b600060405180830381600087803b15801561029f57600080fd5b505af11580156102b3573d6000803e3d6000fd5b505060408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f5075707065745265676973747279000000000000000000000000000000000000603082015261031f93500190505b60405160208183030381529060405261031a906126cc565b6109a1565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526001600160a01b03831691633350b6a9910160405160208183030381529060405261038d906126cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561041457600080fd5b505af1158015610428573d6000803e3d6000fd5b50506040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e0000000000000000000000000000000000000000000060308201526001600160a01b0385169350633350b6a992500160405160208183030381529060405261049a906126cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050505050565b6000610547610965565b6040517f6e730000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b602282015290915060009081906001600160a01b03841690819063b29e4089906030016040516020818303038152906040526105b5906126cc565b6040516024016105c791815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106149250612714565b600060405180830381855af49150503d806000811461064f576040519150601f19603f3d011682016040523d82523d6000602084013e610654565b606091505b50915091508161066757610667816109ed565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f507570706574526567697374727900000000000000000000000000000000000060308201526106b59101610302565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526001600160a01b038516918291633350b6a99101604051602081830303815290604052610725906126cc565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516107b69250612714565b600060405180830381855af49150503d80600081146107f1576040519150601f19603f3d011682016040523d82523d6000602084013e6107f6565b606091505b5090925090508161080a5761080a816109ed565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e0000000000000000000000000000000000000000000060308201526001600160a01b038516918291633350b6a9910160405160208183030381529060405261087a906126cc565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161090b9250612714565b600060405180830381855af49150503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b5090925090508161095f5761095f816109ed565b50505050565b60006101f16109f5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061099e5750335b90565b6109ea817e140100140000000000000000000000000000000000000000000000000000006109cd6109ff565b6109d5610a77565b6109dd610ab1565b6109e5610b36565b610b96565b50565b805160208201fd5b60006101f1610c50565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110610a3957610a39612730565b602002602001019060c5811115610a5257610a52612746565b908160c5811115610a6557610a65612746565b905250610a7181610c8f565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610a3957610a39612730565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ac85790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110610b2857610b28612730565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b4d579050509050604051806040016040528060068152602001651c1d5c1c195d60d21b81525081600081518110610b2857610b28612730565b6000610ba0610c50565b9050306001600160a01b03821603610bc557610bc0878787878787610e53565b610c47565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990610c14908a908a908a908a908a908a906004016127e2565b600060405180830381600087803b158015610c2e57600080fd5b505af1158015610c42573d6000803e3d6000fd5b505050505b50505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610c8a573391505090565b919050565b6000601c82511115610cc2578151604051635318beb960e01b8152600401610cb991815260200190565b60405180910390fd5b60008080805b8551811015610d9d576000610d06878381518110610ce857610ce8612730565b602002602001015160c5811115610d0157610d01612746565b6112a9565b905080600003610d1b57600190920191610d53565b8215610d53576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610d7457610d74612730565b602002602001015160c5811115610d8d57610d8d612746565b901b949094179350600101610cc8565b506005811115610dc357604051635318beb960e01b815260048101829052602401610cb9565b84518190036008610dd660026020612842565b610de09190612855565b83901b939093179260086001610df860026020612842565b610e029190612842565b610e0c9190612855565b81901b93909317926008600180610e2560026020612842565b610e2f9190612842565b610e399190612842565b610e439190612855565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610ecc57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610f2d57613a3160f11b8687604051602001610eeb91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610cb993929160040161286c565b610f3685611309565b610f41846001611550565b610f4c836000611550565b60e084901c60e885901c0160ff16825114610fac5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60e085901c60e886901c0160ff1681511461100c5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110845760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b61108d856116ec565b611096846116ec565b146110e8576110a4856116ec565b6110ad846116ec565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b6110f18561171e565b6110fa8461171e565b1461114c576111088561171e565b6111118461171e565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60005b611158866116ec565b8110156111ee5761117d61116c858361173b565b60c5811115610d0157610d01612746565b6008601b8390030287901c60ff16146111e6576008601b8290030286901c60ff166111ab61116c868461173b565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60010161114f565b506111f886611763565b1561125257858660405160200161121191815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610cb992916004016128ad565b61129e868686868660405160200161126a91906128c6565b6040516020818303038152906040528660405160200161128a91906128c6565b604051602081830303815290604052611808565b6105358660016118eb565b6000808260c58111156112be576112be612746565b60ff16905060618110156112d857601f1660010192915050565b60618360c58111156112ec576112ec612746565b036112fa5750601492915050565b50600092915050565b50919050565b80611340576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061134b8261171e565b90506005811115611392576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610cb9565b600061139d836116ec565b905060006113ab83836128d9565b9050601c8111156113f2576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610cb9565b6000805b8381101561149d5760ff601b82900360080287901c16600081900361144a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b6020811115611488576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b61149281846128d9565b9250506001016113f6565b506114a7856119a9565b81146114f3576114b6856119a9565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610cb9565b825b601c8110156105355760ff601b82900360080287901c168015611547576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b506001016114f5565b8015801561155c575081155b1561157d57604051635318beb960e01b815260006004820152602401610cb9565b60006115888361171e565b905060058111156115af57604051635318beb960e01b815260048101829052602401610cb9565b60006115ba846116ec565b905060006115c883836128d9565b9050601c8111156115ef57604051635318beb960e01b815260048101829052602401610cb9565b6000805b8381101561165b57600061160a61116c898461173b565b905080600003611646576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61165081846128d9565b9250506001016115f3565b50611665866119a9565b811461169057611674866119a9565b604051635318beb960e01b8152600401610cb991815260200190565b825b82811015610c475760006116a961116c898461173b565b905080156116e3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611692565b6000600860016116fe60026020612842565b6117089190612842565b6117129190612855565b8260ff911c1692915050565b6000600860018061173160026020612842565b6116fe9190612842565b6000601b8290036008028360ff911c1660c581111561175c5761175c612746565b9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061179c5761179c612730565b602090810291909101015260006117f47f746273746f72650000000000000000005265736f75726365496473000000000083837e010100010000000000000000000000000000000000000000000000000000006119cc565b90506118008160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061183f8484611a02565b9050600061184d8585611a1f565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061188757611887612730565b60209081029190910101526118df7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611a4b565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061192157611921612730565b6020026020010181815250506119a47f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161196f91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611d84565b505050565b600060086119b960026020612842565b6119c39190612855565b9190911c919050565b60006119f96119db8686611da0565b60ff858116601b0360080285901c166119f48587611df6565b611e2f565b95945050505050565b8151815160009181810160389190911b1760609190911b1761175c565b60608282604051602001611a349291906128ec565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611ad757857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611aca9493929190612957565b60405180910390a2610535565b6000611ae287611e80565b905060005b8151811015611bbb576000828281518110611b0457611b04612730565b60200260200101519050611b306001826affffffffffffffffffffff1916611f0990919063ffffffff16565b15611bb2576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611b7f908c908c908c908c908c908c906004016129a1565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505b50600101611ae7565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611bf29493929190612957565b60405180910390a26000611c068888611da0565b90506000602087019050611c1e826000895184611f27565b6000611c298561171e565b1115611cad576000611c3b8a8a611fe6565b878155905060208601915060008060005b611c558861171e565b8160ff161015611ca857611c6a8d8d8361203c565b9250611c858a8260ff166028026038011c64ffffffffff1690565b9150611c948360008488611f27565b611c9e82866128d9565b9450600101611c4c565b505050505b60005b83518110156118df576000848281518110611ccd57611ccd612730565b60200260200101519050611cf96002826affffffffffffffffffffff1916611f0990919063ffffffff16565b15611d7b576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611d48908e908e908e908e908e908e906004016129a1565b600060405180830381600087803b158015611d6257600080fd5b505af1158015611d76573d6000803e3d6000fd5b505050505b50600101611cb0565b611d998585611d938487611df6565b856120bc565b5050505050565b60008282604051602001611db59291906129fa565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611e2757611e1d60ff601b83900360080287901c16836128d9565b9150600101611dfb565b509392505050565b600060208210611e5557602082048401935060208281611e5157611e51612a36565b0691505b508254600882021b602082900380841115611e27576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611eba57611eba612730565b60209081029190910101526000611ef27f746273746f726500000000000000000053746f7265486f6f6b730000000000008383612357565b9050611800611f048260008451612391565b61241f565b60008160ff1682611f1a8560581c90565b1660ff1614905092915050565b8215611fa15760208310611f5157602083048401935060208381611f4d57611f4d612a36565b0692505b8215611fa15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611f9257505061095f565b50600194909401939182900391015b5b60208210611fc35780518455600190930192601f1990910190602001611fa2565b811561095f576000600019600884021c8554835182191691161785555050505050565b60008282604051602001611ffb9291906129fa565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016120519291906129fa565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361214657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161213993929190612a4c565b60405180910390a261095f565b60006121528585611da0565b9050600061215f86611e80565b905060005b815181101561223457600082828151811061218157612181612730565b602002602001015190506121ad6004826affffffffffffffffffffff1916611f0990919063ffffffff16565b1561222b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906121f8908b908b908b908b90600401612a89565b600060405180830381600087803b15801561221257600080fd5b505af1158015612226573d6000803e3d6000fd5b505050505b50600101612164565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161226993929190612a4c565b60405180910390a2612284828565ffffffffffff1685612430565b60005b8151811015610c475760008282815181106122a4576122a4612730565b602002602001015190506122d06008826affffffffffffffffffffff1916611f0990919063ffffffff16565b1561234e576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061231b908b908b908b908b90600401612a89565b600060405180830381600087803b15801561233557600080fd5b505af1158015612349573d6000803e3d6000fd5b505050505b50600101612287565b606061180061236785858561203c565b600061238c856123778989612446565b9060ff166028026038011c64ffffffffff1690565b612459565b6000818311806123a15750835182115b156123de578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb993929190612ac2565b602084016123ec84826128d9565b905060006123fa8585612842565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061175c836015600061247c565b6119a4838383516124418560200190565b611f27565b600061175c6124558484611fe6565b5490565b60405160208101601f19603f8484010116604052828252611e27858585846124f7565b6060600061248a8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816124b0576124b0612a36565b04905060405193506020840160208202810160405281855260005b828110156124eb578451871c8252938701936020909101906001016124cb565b50505050509392505050565b821561257e57602083106125215760208304840193506020838161251d5761251d612a36565b0692505b821561257e5760208390036000818410156125445750600019600884021c61254e565b50600019600882021c5b8554600886021b81845116821982161784525081841161256f57505061095f565b50600194909401939182900391015b5b602082106125a05783548152600190930192601f199091019060200161257f565b811561095f576000600019600884021c8251865482191691161782525050505050565b6000602082840312156125d557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461175c57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561262d57600080fd5b813567ffffffffffffffff8082111561264557600080fd5b818401915084601f83011261265957600080fd5b81358181111561266b5761266b612605565b604051601f8201601f19908116603f0116810190838211818310171561269357612693612605565b816040528281528760208487010111156126ac57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156113035760001960209190910360031b1b16919050565b60005b8381101561270b5781810151838201526020016126f3565b50506000910152565b600082516127268184602087016126f0565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526127748160208601602086016126f0565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156127d557601f198684030189526127c383835161275c565b988401989250908301906001016127a7565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061280d60c0830185612788565b82810360a084015261281f8185612788565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101e1576101e161282c565b80820281158282048414176101e1576101e161282c565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006119f9606083018461275c565b828152604060208201526000611800604083018461275c565b60208152600061175c6020830184612788565b808201808211156101e1576101e161282c565b600083516128fe8184602088016126f0565b8351908301906129128183602088016126f0565b01949350505050565b60008151808452602080850194506020840160005b8381101561294c57815187529582019590820190600101612930565b509495945050505050565b60808152600061296a608083018761291b565b828103602084015261297c818761275c565b90508460408401528281036060840152612996818561275c565b979650505050505050565b86815260c0602082015260006129ba60c083018861291b565b82810360408401526129cc818861275c565b905085606084015282810360808401526129e6818661275c565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612a2957815184529284019290840190600101612a0d565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612a5f606083018661291b565b65ffffffffffff851660208401528281036040840152612a7f818561275c565b9695505050505050565b848152608060208201526000612aa2608083018661291b565b65ffffffffffff851660408401528281036060840152612996818561275c565b606081526000612ad5606083018661275c565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80631a86b550116100505780631a86b550146100c157806345ec9354146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a3660046105c6565b6100ef565b60405190151581526020015b60405180910390f35b61009c6101d4565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b61007f6100cf366004610625565b6101e3565b604051601f19360135815260200161008b565b61009c6102c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6102cc565b905090565b6000806101ee6101d4565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925073ffffffffffffffffffffffffffffffffffffffff8316916102a2910160405160208183030381529060405261029c9061070b565b866102fe565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b60006101de61037b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061033757610337610750565b6020908102919091010152600061036f8583837e14010014000000000000000000000000000000000000000000000000000000610385565b60601c95945050505050565b60006101de610464565b600080610390610464565b90503073ffffffffffffffffffffffffffffffffffffffff8216036103c3576103bb868686866104b0565b91505061045c565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061041b908990899089908990600401610766565b602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb91906107c3565b949350505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104ab573391505090565b919050565b60006104dd6104bf86866104e6565b60ff858116601b0360080285901c166104d8858761053c565b610575565b95945050505050565b600082826040516020016104fb9291906107dc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561056d5761056360ff601b83900360080287901c1683610818565b9150600101610541565b509392505050565b60006020821061059b5760208204840193506020828161059757610597610839565b0691505b508254600882021b60208290038084111561056d576001850154600882021c82179150509392505050565b6000602082840312156105d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561063a57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461065e57600080fd5b925060208401359150604084013567ffffffffffffffff8082111561068257600080fd5b818601915086601f83011261069657600080fd5b8135818111156106a8576106a861060f565b604051601f8201601f19908116603f011681019083821181831017156106d0576106d061060f565b816040528281528960208487010111156106e957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8051602080830151919081101561074a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b818110156107a95784518352938301939183019160010161078d565b505060ff9690961660408501525050506060015292915050565b6000602082840312156107d557600080fd5b5051919050565b8281526000602080830184516020860160005b8281101561080b578151845292840192908401906001016107ef565b5091979650505050505050565b808201808211156101ce57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000a608060405234801561001057600080fd5b50612534806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063b9eb8bfb146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461118f565b6100ef565b60405190151581526020015b60405180910390f35b61009c610188565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c6100e23660046111d1565b610197565b61009c6102a0565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101926102aa565b905090565b60006101aa826101a5610188565b6102dc565b6101b26102a0565b826040516101bf90611182565b73ffffffffffffffffffffffffffffffffffffffff90921682526020820152604001604051809103906000f0801580156101fd573d6000803e3d6000fd5b50604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925061029b9101604051602081830303815290604052610294906111ea565b83836103a4565b919050565b6000610192610464565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102d95750335b90565b73ffffffffffffffffffffffffffffffffffffffff811661033e7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161761046e565b73ffffffffffffffffffffffffffffffffffffffff16146103a0576103628261050a565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610397929190611261565b60405180910390fd5b5050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106103da576103da611299565b60200260200101818152505061045e8482600085604051602001610429919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610647565b50505050565b6000610192610717565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104a7576104a7611299565b602090810291909101015260006104ff7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e1401001400000000000000000000000000000000000000000000000000000061075e565b60601c949350505050565b606081601081901b600061051d8361083d565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615610578576105737fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610854565b6105af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156105e5576105e083610854565b61061c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161062e939291906112c8565b6040516020818303038152906040529350505050919050565b6000610651610717565b90503073ffffffffffffffffffffffffffffffffffffffff8216036106825761067d86868686866108f8565b61070f565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106dc9089908990899089908990600401611392565b600060405180830381600087803b1580156106f657600080fd5b505af115801561070a573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061029b573391505090565b600080610769610717565b90503073ffffffffffffffffffffffffffffffffffffffff82160361079c5761079486868686610914565b915050610835565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906107f49089908990899089906004016113d9565b602060405180830381865afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107949190611408565b949350505050565b600061084b60706010611450565b9190911b919050565b606060005b60108110156108b9577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108b957600101610859565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610835565b61090d8585610907848761094a565b85610983565b5050505050565b60006109416109238686610c27565b60ff858116601b0360080285901c1661093c858761094a565b610c7d565b95945050505050565b600080805b8360ff1681101561097b5761097160ff601b83900360080287901c1683611450565b915060010161094f565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610a0d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610a0093929190611463565b60405180910390a261045e565b6000610a198585610c27565b90506000610a2686610cce565b905060005b8151811015610afb576000828281518110610a4857610a48611299565b60200260200101519050610a746004826affffffffffffffffffffff1916610d5790919063ffffffff16565b15610af2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610abf908b908b908b908b906004016114a0565b600060405180830381600087803b158015610ad957600080fd5b505af1158015610aed573d6000803e3d6000fd5b505050505b50600101610a2b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610b3093929190611463565b60405180910390a2610b4b828565ffffffffffff1685610d75565b60005b8151811015610c1e576000828281518110610b6b57610b6b611299565b60200260200101519050610b976008826affffffffffffffffffffff1916610d5790919063ffffffff16565b15610c15576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610be2908b908b908b908b906004016114a0565b600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b505050505b50600101610b4e565b50505050505050565b60008282604051602001610c3c9291906114e4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610ca357602082048401935060208281610c9f57610c9f611520565b0691505b508254600882021b60208290038084111561097b576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d0857610d08611299565b60209081029190910101526000610d407f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610d90565b9050610835610d528260008451610dca565b610e58565b60008160ff1682610d688560581c90565b1660ff1614905092915050565b610d8b83838351610d868560200190565b610e70565b505050565b6060610835610da0858585610f2f565b6000610dc585610db08989610faf565b9060ff166028026038011c64ffffffffff1690565b610fc2565b600081831180610dda5750835182115b15610e17578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103979392919061154f565b60208401610e258482611450565b90506000610e338585611574565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e698360156000610fe5565b9392505050565b8215610eea5760208310610e9a57602083048401935060208381610e9657610e96611520565b0692505b8215610eea5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610edb57505061045e565b50600194909401939182900391015b5b60208210610f0c5780518455600190930192601f1990910190602001610eeb565b811561045e576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610f449291906114e4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610e69610fbe8484611060565b5490565b60405160208101601f19603f848401011660405282825261097b858585846110b6565b60606000610ff38560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161101957611019611520565b04905060405193506020840160208202810160405281855260005b82811015611054578451871c825293870193602090910190600101611034565b50505050509392505050565b600082826040516020016110759291906114e4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561113d57602083106110e0576020830484019350602083816110dc576110dc611520565b0692505b821561113d5760208390036000818410156111035750600019600884021c61110d565b50600019600882021c5b8554600886021b81845116821982161784525081841161112e57505061045e565b50600194909401939182900391015b5b6020821061115f5783548152600190930192601f199091019060200161113e565b811561045e576000600019600884021c8251865482191691161782525050505050565b610fa08061158883390190565b6000602082840312156111a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e6957600080fd5b6000602082840312156111e357600080fd5b5035919050565b8051602080830151919081101561120b576000198160200360031b1b821691505b50919050565b60005b8381101561122c578181015183820152602001611214565b50506000910152565b6000815180845261124d816020860160208601611211565b601f01601f19169290920160200192915050565b6040815260006112746040830185611235565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611329816003860160208901611211565b808401905081600382015284519150611349826004830160208801611211565b0160040195945050505050565b60008151808452602080850194506020840160005b838110156113875781518752958201959082019060010161136b565b509495945050505050565b85815260a0602082015260006113ab60a0830187611356565b60ff8616604084015282810360608401526113c68186611235565b9150508260808301529695505050505050565b8481526080602082015260006113f26080830186611356565b60ff949094166040830152506060015292915050565b60006020828403121561141a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561018257610182611421565b6060815260006114766060830186611356565b65ffffffffffff8516602084015282810360408401526114968185611235565b9695505050505050565b8481526080602082015260006114b96080830186611356565b65ffffffffffff8516604084015282810360608401526114d98185611235565b979650505050505050565b8281526000602080830184516020860160005b82811015611513578151845292840192908401906001016114f7565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006115626060830186611235565b60208301949094525060400152919050565b818103818111156101825761018261142156fe60c060405234801561001057600080fd5b50604051610fa0380380610fa083398101604081905261002f9161007c565b6001600160a01b038216608081905260a08290527f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b031916909117905550506100b6565b6000806040838503121561008f57600080fd5b82516001600160a01b03811681146100a657600080fd5b6020939093015192949293505050565b60805160a051610e9d6101036000396000818160e1015281816101b401528181610239015281816102b70152818161032e01526103a101526000818160b201526101630152610e9d6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c9a34acd11610050578063c9a34acd146101f9578063d72a26651461020c578063e2ed58bd1461021f57610072565b806330b67baa1461015e57806339f898bc146101af57806366c93bdb146101e4575b6040517f894ecc5800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063894ecc589061010d9033907f000000000000000000000000000000000000000000000000000000000000000090869036906004016109e7565b6000604051808303816000875af115801561012c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101549190810190610b17565b9050805160208201f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a6565b6101f76101f2366004610ba5565b610232565b005b6101f7610207366004610c09565b6102b0565b6101f761021a366004610c63565b610327565b6101f761022d366004610caa565b61039a565b600061025d7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461029d576040516398d49b0360e01b81523360048201526024015b60405180910390fd5b82848688855160208701a4505050505050565b60006102db7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610316576040516398d49b0360e01b8152336004820152602401610294565b828486845160208601a35050505050565b60006103527f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461038d576040516398d49b0360e01b8152336004820152602401610294565b82825160208401a1505050565b60006103c57f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610400576040516398d49b0360e01b8152336004820152602401610294565b8284835160208501a250505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061044957610449610cfa565b6020908102919091010152600080806104a27f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006104c7565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b60606000606060006104d76105b1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361050d576105018787876105fd565b935093509350506105a8565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610563908a908a908a90600401610d10565b600060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105019190810190610d69565b93509350939050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105f8573391505090565b919050565b606060006060600061060e85610705565b905061061b878783610728565b935060006106288661076c565b905080156106fa5761063a88886107a9565b935066ffffffffffffff841667ffffffffffffffff81111561065e5761065e610a3a565b6040519080825280601f01601f191660200182016040528015610688576020820181803683370190505b5092506020830160005b828160ff1610156106f75760006106aa8b8b846107c5565b905060006106c7888460ff166028026038011c64ffffffffff1690565b90506106d68260008387610845565b6106e08185610de2565b9350505080806106ef90610df5565b915050610692565b50505b505093509350939050565b6000600861071560026020610e14565b61071f9190610e27565b9190911c919050565b6060816000036107475750604080516020810190915260008152610765565b60006107538585610910565b905061076181600085610966565b9150505b9392505050565b6000600860018061077f60026020610e14565b6107899190610e14565b6107939190610e14565b61079d9190610e27565b8260ff911c1692915050565b60006107bc6107b88484610991565b5490565b90505b92915050565b600083836040516020016107da929190610e3e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b82156108cc576020831061086f5760208304840193506020838161086b5761086b610e7a565b0692505b82156108cc5760208390036000818410156108925750600019600884021c61089c565b50600019600882021c5b8554600886021b8184511682198216178452508184116108bd57505061090a565b50600194909401939182900391015b5b602082106108ee5783548152600190930192601f19909101906020016108cd565b811561090a5780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610925929190610e3e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f848401011660405282825261098985858584610845565b509392505050565b600082826040516020016109a6929190610e3e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a7957610a79610a3a565b604052919050565b600067ffffffffffffffff821115610a9b57610a9b610a3a565b50601f01601f191660200190565b600082601f830112610aba57600080fd5b8151610acd610ac882610a81565b610a50565b8181526020856020848701011115610ae457600080fd5b60005b83811015610b02578581018201518382018301528101610ae7565b50506000918101602001919091529392505050565b600060208284031215610b2957600080fd5b815167ffffffffffffffff811115610b4057600080fd5b610b4c84828501610aa9565b949350505050565b600082601f830112610b6557600080fd5b8135610b73610ac882610a81565b818152846020838601011115610b8857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610bbd57600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115610bf057600080fd5b610bfc88828901610b54565b9150509295509295909350565b60008060008060808587031215610c1f57600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115610c4b57600080fd5b610c5787828801610b54565b91505092959194509250565b60008060408385031215610c7657600080fd5b82359150602083013567ffffffffffffffff811115610c9457600080fd5b610ca085828601610b54565b9150509250929050565b600080600060608486031215610cbf57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610ce457600080fd5b610cf086828701610b54565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006060820185835260206060602085015281865180845260808601915060208801935060005b81811015610d5357845183529383019391830191600101610d37565b5050809350505050826040830152949350505050565b600080600060608486031215610d7e57600080fd5b835167ffffffffffffffff80821115610d9657600080fd5b610da287838801610aa9565b9450602086015193506040860151915080821115610dbf57600080fd5b50610cf086828701610aa9565b634e487b7160e01b600052601160045260246000fd5b808201808211156107bf576107bf610dcc565b600060ff821660ff8103610e0b57610e0b610dcc565b60010192915050565b818103818111156107bf576107bf610dcc565b80820281158282048414176107bf576107bf610dcc565b8281526000602080830184516020860160005b82811015610e6d57815184529284019290840190600101610e51565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000aa164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60c0604081905230608052620000159062000053565b604051809103906000f08015801562000032573d6000803e3d6000fd5b506001600160a01b031660a0523480156200004c57600080fd5b5062000061565b614cc380620035d383390190565b60805160a05161354c6200008760003960006102d7015260006101fb015261354c6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d45780637c5b0335146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100bf575b600080fd5b61008a610085366004612d31565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b6100d26100cd366004612e0b565b6101f6565b005b604051601f193601358152602001610096565b6100d26100f5366004612e0b565b610749565b6100a761077b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c8000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610785565b905090565b6102207f0000000000000000000000000000000000000000000000000000000000000000826107b7565b600080828060200190518101906102379190612eff565b90925090507f9a8d9ccdcfd28f8a8f8f9a8c000000000000000000000000000000000000000071ffffffffffffffffffffffffffffffffffff198316016102c6576040517f0f31c63c00000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19831660048201526024015b60405180910390fd5b60006102d061077b565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316838660405160240161033b9291906001600160a01b0392909216825271ffffffffffffffffffffffffffffffffffff1916602082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f472466c2000000000000000000000000000000000000000000000000000000001790525161039e9190612fd7565b600060405180830381855af49150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150816103f1576103f1816107fc565b6104036103fd86610804565b85610836565b600061040e866108d8565b9050600061041c8583610925565b90507f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601089901c16176001600160a01b03861663ef5d6bbb8261047d6101e7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b1580156104dc57600080fd5b505af11580156104f0573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610572935001905060405160208183030381529060405261056d90612ff3565b610c23565b6106bf576040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201526001600160a01b0387169063b29e4089906030016040516020818303038152906040526105f190612ff3565b6040518263ffffffff1660e01b815260040161060f91815260200190565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f455243323052656769737472790000000000000000000000000000000000000060308201526106bf93500190506040516020818303038152906040526106ba90612ff3565b610cb0565b60408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f4552433230526567697374727900000000000000000000000000000000000000603082015261073e910160405160208183030381529060405261073790612ff3565b8284610cfc565b505050505050505050565b6040517fb6622fc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f1610dbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107b45750335b90565b6107c18282610dc6565b156107f8576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b805160208201fd5b60006101e1613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610de0565b600061088582600001516040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b9050600061089b83602001518460400151610e66565b905060006108b184602001518560400151610e83565b6040805160008152602081019091529091506108d08682868686610eaf565b505050505050565b60006101e17f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d000000000000000000000000000000000000000000610de0565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526000916001600160a01b03851691633ae7af0891016040516020818303038152906040526109c890612ff3565b6040516024810186905260440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb9eb8bfb00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152610a65929190600401613043565b6000604051808303816000875af1158015610a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aac919081019061305c565b806020019051810190610abf91906130a5565b90506001600160a01b03831663bfdfaff77f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015201604051602081830303815290604052610ba290612ff3565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16909152610beb929190602481016130ce565b600060405180830381600087803b158015610c0557600080fd5b505af1158015610c19573d6000803e3d6000fd5b5050505092915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610c5c57610c5c6130ed565b60209081029190910101526000610c9c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b610f64565b9050610ca88160f81c90565b949350505050565b610cf9817e14010014000000000000000000000000000000000000000000000000000000610cdc611021565b610ce4611099565b610cec6110d3565b610cf4611158565b6111cf565b50565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610d3257610d326130ed565b602002602001018181525050610db68482600085604051602001610d81919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000611289565b50505050565b60006101f16112ff565b6000610dd983838051906020012061133e565b9392505050565b6000610dee60706010613119565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b8151815160009181810160389190911b1760609190911b17610dd9565b60608282604051602001610e9892919061312c565b604051602081830303815290604052905092915050565b6000610eb96112ff565b9050306001600160a01b03821603610edd57610ed886868686866113f8565b6108d0565b6040517f298314fb0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063298314fb90610f2a9089908990899089908990600401613197565b600060405180830381600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b50505050505050505050565b600080610f6f6112ff565b9050306001600160a01b03821603610f9557610f8d86868686611415565b915050610ca8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610fe09089908990899089906004016131e8565b602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8d9190613217565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811061105b5761105b6130ed565b602002602001019060c581111561107457611074613230565b908160c581111561108757611087613230565b90525061109381611442565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061105b5761105b6130ed565b604080516001808252818301909252606091816020015b60608152602001906001900390816110ea5790505090506040518060400160405280600b81526020017f6e616d65737061636549640000000000000000000000000000000000000000008152508160008151811061114a5761114a6130ed565b602002602001018190525090565b604080516001808252818301909252606091816020015b606081526020019060019003908161116f5790505090506040518060400160405280600c81526020017f746f6b656e4164647265737300000000000000000000000000000000000000008152508160008151811061114a5761114a6130ed565b60006111d96112ff565b9050306001600160a01b038216036111fe576111f98787878787876115fd565b611280565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f499061124d908a908a908a908a908a908a906004016132a0565b600060405180830381600087803b15801561126757600080fd5b505af115801561127b573d6000803e3d6000fd5b505050505b50505050505050565b60006112936112ff565b9050306001600160a01b038216036112b257610ed88686868686611a53565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090610f2a90899089908990899089906004016132ea565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680611339573391505090565b919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611383576113836130ed565b60200260200101818152505082816001815181106113a3576113a36130ed565b602090810291909101015260006113e37f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c65738383630101000160d81b610f64565b90506113ef8160f81c90565b95945050505050565b61140e85858585856114098b611a68565b611aed565b5050505050565b60006113ef6114248686611e26565b60ff858116601b0360080285901c1661143d8587611e7c565b611eb5565b6000601c8251111561146c578151604051635318beb960e01b81526004016102bd91815260200190565b60008080805b85518110156115475760006114b0878381518110611492576114926130ed565b602002602001015160c58111156114ab576114ab613230565b611f06565b9050806000036114c5576001909201916114fd565b82156114fd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061151e5761151e6130ed565b602002602001015160c581111561153757611537613230565b901b949094179350600101611472565b50600581111561156d57604051635318beb960e01b8152600481018290526024016102bd565b8451819003600861158060026020613331565b61158a9190613344565b83901b9390931792600860016115a260026020613331565b6115ac9190613331565b6115b69190613344565b81901b939093179260086001806115cf60026020613331565b6115d99190613331565b6115e39190613331565b6115ed9190613344565b9190911b92909217949350505050565b613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000161480159061167657507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156116d757613a3160f11b868760405160200161169591815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102bd93929160040161335b565b6116e085611f66565b6116eb8460016121ad565b6116f68360006121ad565b60e084901c60e885901c0160ff168251146117565760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60e085901c60e886901c0160ff168151146117b65760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461182e5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b61183785612349565b61184084612349565b146118925761184e85612349565b61185784612349565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b61189b8561237b565b6118a48461237b565b146118f6576118b28561237b565b6118bb8461237b565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60005b61190286612349565b811015611998576119276119168583612398565b60c58111156114ab576114ab613230565b6008601b8390030287901c60ff1614611990576008601b8290030286901c60ff166119556119168684612398565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b6001016118f9565b506119a2866123b9565b156119fc5785866040516020016119bb91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526102bd9291600401613043565b611a488686868686604051602001611a14919061339c565b60405160208183030381529060405286604051602001611a34919061339c565b604051602081830303815290604052612432565b6108d0866001612509565b61140e8585611a628487611e7c565b856125af565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611ab757507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1611ae47f746273746f72650000000000000000005461626c6573000000000000000000008461284a565b60206000611eb5565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b7957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b6c94939291906133af565b60405180910390a26108d0565b6000611b8487612866565b905060005b8151811015611c5d576000828281518110611ba657611ba66130ed565b60200260200101519050611bd26001826affffffffffffffffffffff19166128ef90919063ffffffff16565b15611c54576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c21908c908c908c908c908c908c906004016133f9565b600060405180830381600087803b158015611c3b57600080fd5b505af1158015611c4f573d6000803e3d6000fd5b505050505b50600101611b89565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c9494939291906133af565b60405180910390a26000611ca88888611e26565b90506000602087019050611cc082600089518461290d565b6000611ccb8561237b565b1115611d4f576000611cdd8a8a6129cc565b878155905060208601915060008060005b611cf78861237b565b8160ff161015611d4a57611d0c8d8d83612a22565b9250611d278a8260ff166028026038011c64ffffffffff1690565b9150611d36836000848861290d565b611d408286613119565b9450600101611cee565b505050505b60005b8351811015610f58576000848281518110611d6f57611d6f6130ed565b60200260200101519050611d9b6002826affffffffffffffffffffff19166128ef90919063ffffffff16565b15611e1d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611dea908e908e908e908e908e908e906004016133f9565b600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b505050505b50600101611d52565b60008282604051602001611e3b929190613452565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611ead57611ea360ff601b83900360080287901c1683613119565b9150600101611e81565b509392505050565b600060208210611edb57602082048401935060208281611ed757611ed761348e565b0691505b508254600882021b602082900380841115611ead576001850154600882021c82179150509392505050565b6000808260c5811115611f1b57611f1b613230565b60ff1690506061811015611f3557601f1660010192915050565b60618360c5811115611f4957611f49613230565b03611f575750601492915050565b50600092915050565b50919050565b80611f9d576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fa88261237b565b90506005811115611fef576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016102bd565b6000611ffa83612349565b905060006120088383613119565b9050601c81111561204f576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016102bd565b6000805b838110156120fa5760ff601b82900360080287901c1660008190036120a7576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b60208111156120e5576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b6120ef8184613119565b925050600101612053565b5061210485612aa2565b81146121505761211385612aa2565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016102bd565b825b601c8110156108d05760ff601b82900360080287901c1680156121a4576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b50600101612152565b801580156121b9575081155b156121da57604051635318beb960e01b8152600060048201526024016102bd565b60006121e58361237b565b9050600581111561220c57604051635318beb960e01b8152600481018290526024016102bd565b600061221784612349565b905060006122258383613119565b9050601c81111561224c57604051635318beb960e01b8152600481018290526024016102bd565b6000805b838110156122b85760006122676119168984612398565b9050806000036122a3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ad8184613119565b925050600101612250565b506122c286612aa2565b81146122ed576122d186612aa2565b604051635318beb960e01b81526004016102bd91815260200190565b825b828110156112805760006123066119168984612398565b90508015612340576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016122ef565b60006008600161235b60026020613331565b6123659190613331565b61236f9190613344565b8260ff911c1692915050565b6000600860018061238e60026020613331565b61235b9190613331565b6000601b8290036008028360ff911c1660c5811115610dd957610dd9613230565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123f2576123f26130ed565b60209081029190910101526000610c9c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b611415565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006124698484610e66565b905060006124778585610e83565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106124b1576124b16130ed565b6020908102919091010152610f587f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611aed565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061253f5761253f6130ed565b6020026020010181815250506125aa7f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161258d91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b611a53565b505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361263957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161262c939291906134a4565b60405180910390a2610db6565b60006126458585611e26565b9050600061265286612866565b905060005b8151811015612727576000828281518110612674576126746130ed565b602002602001015190506126a06004826affffffffffffffffffffff19166128ef90919063ffffffff16565b1561271e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906126eb908b908b908b908b906004016134e1565b600060405180830381600087803b15801561270557600080fd5b505af1158015612719573d6000803e3d6000fd5b505050505b50600101612657565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161275c939291906134a4565b60405180910390a2612777828565ffffffffffff1685612ac5565b60005b8151811015611280576000828281518110612797576127976130ed565b602002602001015190506127c36008826affffffffffffffffffffff19166128ef90919063ffffffff16565b15612841576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061280e908b908b908b908b906004016134e1565b600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b505050505b5060010161277a565b6040805160208101849052908101829052600090606001611e3b565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128a0576128a06130ed565b602090810291909101015260006128d87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383612adb565b9050610ca86128ea8260008451612b15565b612ba3565b60008160ff16826129008560581c90565b1660ff1614905092915050565b82156129875760208310612937576020830484019350602083816129335761293361348e565b0692505b82156129875760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411612978575050610db6565b50600194909401939182900391015b5b602082106129a95780518455600190930192601f1990910190602001612988565b8115610db6576000600019600884021c8554835182191691161785555050505050565b600082826040516020016129e1929190613452565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612a37929190613452565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008612ab260026020613331565b612abc9190613344565b9190911c919050565b6125aa83838351612ad68560200190565b61290d565b6060610ca8612aeb858585612a22565b6000612b1085612afb8989612bb4565b9060ff166028026038011c64ffffffffff1690565b612bc7565b600081831180612b255750835182115b15612b62578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102bd9392919061351a565b60208401612b708482613119565b90506000612b7e8585613331565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610dd98360156000612bea565b6000610dd9612bc384846129cc565b5490565b60405160208101601f19603f8484010116604052828252611ead85858584612c65565b60606000612bf88560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612c1e57612c1e61348e565b04905060405193506020840160208202810160405281855260005b82811015612c59578451871c825293870193602090910190600101612c39565b50505050509392505050565b8215612cec5760208310612c8f57602083048401935060208381612c8b57612c8b61348e565b0692505b8215612cec576020839003600081841015612cb25750600019600884021c612cbc565b50600019600882021c5b8554600886021b818451168219821617845250818411612cdd575050610db6565b50600194909401939182900391015b5b60208210612d0e5783548152600190930192601f1990910190602001612ced565b8115610db6576000600019600884021c8251865482191691161782525050505050565b600060208284031215612d4357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dd957600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612dac57612dac612d73565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ddb57612ddb612d73565b604052919050565b600067ffffffffffffffff821115612dfd57612dfd612d73565b50601f01601f191660200190565b600060208284031215612e1d57600080fd5b813567ffffffffffffffff811115612e3457600080fd5b8201601f81018413612e4557600080fd5b8035612e58612e5382612de3565b612db2565b818152856020838501011115612e6d57600080fd5b81602084016020830137600091810160200191909152949350505050565b60005b83811015612ea6578181015183820152602001612e8e565b50506000910152565b6000612ebd612e5384612de3565b9050828152838383011115612ed157600080fd5b610dd9836020830184612e8b565b600082601f830112612ef057600080fd5b610dd983835160208501612eaf565b60008060408385031215612f1257600080fd5b825171ffffffffffffffffffffffffffffffffffff1981168114612f3557600080fd5b602084015190925067ffffffffffffffff80821115612f5357600080fd5b9084019060608287031215612f6757600080fd5b612f6f612d89565b825160ff81168114612f8057600080fd5b8152602083015182811115612f9457600080fd5b612fa088828601612edf565b602083015250604083015182811115612fb857600080fd5b612fc488828601612edf565b6040830152508093505050509250929050565b60008251612fe9818460208701612e8b565b9190910192915050565b80516020808301519190811015611f605760001960209190910360031b1b16919050565b6000815180845261302f816020860160208601612e8b565b601f01601f19169290920160200192915050565b828152604060208201526000610ca86040830184613017565b60006020828403121561306e57600080fd5b815167ffffffffffffffff81111561308557600080fd5b8201601f8101841361309657600080fd5b610ca884825160208401612eaf565b6000602082840312156130b757600080fd5b81516001600160a01b0381168114610dd957600080fd5b8381528260208201526060604082015260006113ef6060830184613017565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1613103565b6000835161313e818460208801612e8b565b835190830190613152818360208801612e8b565b01949350505050565b60008151808452602080850194506020840160005b8381101561318c57815187529582019590820190600101613170565b509495945050505050565b85815260a0602082015260006131b060a083018761315b565b82810360408401526131c28187613017565b905084606084015282810360808401526131dc8185613017565b98975050505050505050565b848152608060208201526000613201608083018661315b565b60ff949094166040830152506060015292915050565b60006020828403121561322957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008282518085526020808601955060208260051b8401016020860160005b8481101561329357601f19868403018952613281838351613017565b98840198925090830190600101613265565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006132cb60c0830185613246565b82810360a08401526132dd8185613246565b9998505050505050505050565b85815260a06020820152600061330360a083018761315b565b60ff86166040840152828103606084015261331e8186613017565b9150508260808301529695505050505050565b818103818111156101e1576101e1613103565b80820281158282048414176101e1576101e1613103565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006113ef6060830184613017565b602081526000610dd96020830184613246565b6080815260006133c2608083018761315b565b82810360208401526133d48187613017565b905084604084015282810360608401526133ee8185613017565b979650505050505050565b86815260c06020820152600061341260c083018861315b565b82810360408401526134248188613017565b9050856060840152828103608084015261343e8186613017565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b8281101561348157815184529284019290840190600101613465565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6060815260006134b7606083018661315b565b65ffffffffffff8516602084015282810360408401526134d78185613017565b9695505050505050565b8481526080602082015260006134fa608083018661315b565b65ffffffffffff8516604084015282810360608401526133ee8185613017565b60608152600061352d6060830186613017565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50614ca3806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063472466c214610030575b600080fd5b61004361003e366004612558565b610045565b005b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601083901c16176100958161022b565b61011a576040517fb29e40890000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff84169063b29e408990602401600060405180830381600087803b15801561010157600080fd5b505af1158015610115573d6000803e3d6000fd5b505050505b61012b610126836102d0565b610308565b61013c61013783610354565b610386565b61014d610148836103c2565b6103f4565b8273ffffffffffffffffffffffffffffffffffffffff16633350b6a961017284610438565b60405161017e9061254b565b604051809103906000f08015801561019a573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff16602482015260016044820152606401600060405180830381600087803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610264576102646125cf565b602090810291909101015260006102bc7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610485565b90506102c88160f81c90565b949350505050565b6000610302613a3160f11b837f416c6c6f77616e6365730000000000000000000000000000000000000000000061055c565b92915050565b610351817e200100200000000000000000000000000000000000000000000000000000006103346105e3565b61033c6106a0565b6103446106da565b61034c6107b2565b610829565b50565b6000610302613a3160f11b837f42616c616e63657300000000000000000000000000000000000000000000000061055c565b610351817e200100200000000000000000000000000000000000000000000000000000006103b26108fc565b6103ba6106a0565b610344610936565b6000610302613a3160f11b837f4d6574616461746100000000000000000000000000000000000000000000000061055c565b610351817e010102010000000000000000000000000000000000000000000000000000006104206109ad565b6104286109c6565b610430610a8b565b61034c610abe565b60006103027f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d00000000000000000000000000000000000000000061055c565b600080610490610bde565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104c3576104bb86868686610c2a565b9150506102c8565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061051b908990899089908990600401612621565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190612650565b600061056a6070601061267f565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061061d5761061d6125cf565b602002602001019060c581111561063657610636612692565b908160c581111561064957610649612692565b81525050606181600181518110610662576106626125cf565b602002602001019060c581111561067b5761067b612692565b908160c581111561068e5761068e612692565b90525061069a81610c60565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610662576106626125cf565b6040805160028082526060828101909352816020015b60608152602001906001900390816106f05790505090506040518060400160405280600781526020017f6163636f756e740000000000000000000000000000000000000000000000000081525081600081518110610750576107506125cf565b60200260200101819052506040518060400160405280600781526020017f7370656e64657200000000000000000000000000000000000000000000000000815250816001815181106107a4576107a46125cf565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816107c95790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106107a4576107a46125cf565b6000610833610bde565b90503073ffffffffffffffffffffffffffffffffffffffff82160361086557610860878787878787610e24565b610222565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f49906108c1908a908a908a908a908a908a90600401612752565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b5050505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610662576106626125cf565b604080516001808252818301909252606091816020015b606081526020019060019003908161094d5790505090506040518060400160405280600781526020017f6163636f756e7400000000000000000000000000000000000000000000000000815250816000815181106107a4576107a46125cf565b6040805160008082526020820190925261069a81610c60565b6040805160038082526080820190925260009182919060208201606080368337019050509050600081600081518110610a0157610a016125cf565b602002602001019060c5811115610a1a57610a1a612692565b908160c5811115610a2d57610a2d612692565b8152505060c581600181518110610a4657610a466125cf565b602002602001019060c5811115610a5f57610a5f612692565b908160c5811115610a7257610a72612692565b8152505060c581600281518110610662576106626125cf565b60408051600080825260208201909252606091610ab8565b6060815260200190600190039081610aa35790505b50905090565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ad65790505090506040518060400160405280600881526020017f646563696d616c7300000000000000000000000000000000000000000000000081525081600081518110610b3657610b366125cf565b60200260200101819052506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600181518110610b8a57610b8a6125cf565b60200260200101819052506040518060400160405280600681526020017f73796d626f6c0000000000000000000000000000000000000000000000000000815250816002815181106107a4576107a46125cf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c25573391505090565b919050565b6000610c57610c398686611282565b60ff858116601b0360080285901c16610c5285876112d8565b611311565b95945050505050565b6000601c82511115610c93578151604051635318beb960e01b8152600401610c8a91815260200190565b60405180910390fd5b60008080805b8551811015610d6e576000610cd7878381518110610cb957610cb96125cf565b602002602001015160c5811115610cd257610cd2612692565b611362565b905080600003610cec57600190920191610d24565b8215610d24576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610d4557610d456125cf565b602002602001015160c5811115610d5e57610d5e612692565b901b949094179350600101610c99565b506005811115610d9457604051635318beb960e01b815260048101829052602401610c8a565b84518190036008610da76002602061279c565b610db191906127af565b83901b939093179260086001610dc96002602061279c565b610dd3919061279c565b610ddd91906127af565b81901b93909317926008600180610df66002602061279c565b610e00919061279c565b610e0a919061279c565b610e1491906127af565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610e9d57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610efe57613a3160f11b8687604051602001610ebc91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610c8a9392916004016127c6565b610f07856113bc565b610f12846001611603565b610f1d836000611603565b60e084901c60e885901c0160ff16825114610f7d5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60e085901c60e886901c0160ff16815114610fdd5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110555760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b61105e8561179f565b6110678461179f565b146110b9576110758561179f565b61107e8461179f565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b6110c2856117d1565b6110cb846117d1565b1461111d576110d9856117d1565b6110e2846117d1565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60005b6111298661179f565b8110156111bf5761114e61113d85836117ee565b60c5811115610cd257610cd2612692565b6008601b8390030287901c60ff16146111b7576008601b8290030286901c60ff1661117c61113d86846117ee565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b600101611120565b506111c986611816565b156112235785866040516020016111e291815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610c8a9291600401612807565b61126f868686868660405160200161123b9190612820565b6040516020818303038152906040528660405160200161125b9190612820565b6040516020818303038152906040526118a7565b61127a86600161198a565b505050505050565b60008282604051602001611297929190612833565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611309576112ff60ff601b83900360080287901c168361267f565b91506001016112dd565b509392505050565b600060208210611337576020820484019350602082816113335761133361286f565b0691505b508254600882021b602082900380841115611309576001850154600882021c82179150509392505050565b6000808260c581111561137757611377612692565b60ff169050606181101561139157601f1660010192915050565b60618360c58111156113a5576113a5612692565b036113b35750601492915050565b50600092915050565b806113f3576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113fe826117d1565b90506005811115611445576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610c8a565b60006114508361179f565b9050600061145e838361267f565b9050601c8111156114a5576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610c8a565b6000805b838110156115505760ff601b82900360080287901c1660008190036114fd576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b602081111561153b576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b611545818461267f565b9250506001016114a9565b5061155a85611a48565b81146115a65761156985611a48565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c8a565b825b601c81101561127a5760ff601b82900360080287901c1680156115fa576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b506001016115a8565b8015801561160f575081155b1561163057604051635318beb960e01b815260006004820152602401610c8a565b600061163b836117d1565b9050600581111561166257604051635318beb960e01b815260048101829052602401610c8a565b600061166d8461179f565b9050600061167b838361267f565b9050601c8111156116a257604051635318beb960e01b815260048101829052602401610c8a565b6000805b8381101561170e5760006116bd61113d89846117ee565b9050806000036116f9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611703818461267f565b9250506001016116a6565b5061171886611a48565b81146117435761172786611a48565b604051635318beb960e01b8152600401610c8a91815260200190565b825b8281101561022257600061175c61113d89846117ee565b90508015611796576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611745565b6000600860016117b16002602061279c565b6117bb919061279c565b6117c591906127af565b8260ff911c1692915050565b600060086001806117e46002602061279c565b6117b1919061279c565b6000601b8290036008028360ff911c1660c581111561180f5761180f612692565b9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061184f5761184f6125cf565b602090810291909101015260006102bc7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610c2a565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006118de8484611a6b565b905060006118ec8585611a88565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611926576119266125cf565b602090810291909101015261197e7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611ab4565b50505050505050505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119c0576119c06125cf565b602002602001018181525050611a437f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611a0e91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611ded565b505050565b60006008611a586002602061279c565b611a6291906127af565b9190911c919050565b8151815160009181810160389190911b1760609190911b1761180f565b60608282604051602001611a9d929190612885565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b3394939291906128b4565b60405180910390a261127a565b6000611b4b87611e09565b905060005b8151811015611c24576000828281518110611b6d57611b6d6125cf565b60200260200101519050611b996001826affffffffffffffffffffff1916611e9290919063ffffffff16565b15611c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611be8908c908c908c908c908c908c906004016128fe565b600060405180830381600087803b158015611c0257600080fd5b505af1158015611c16573d6000803e3d6000fd5b505050505b50600101611b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c5b94939291906128b4565b60405180910390a26000611c6f8888611282565b90506000602087019050611c87826000895184611eb0565b6000611c92856117d1565b1115611d16576000611ca48a8a611f6e565b878155905060208601915060008060005b611cbe886117d1565b8160ff161015611d1157611cd38d8d83611fc4565b9250611cee8a8260ff166028026038011c64ffffffffff1690565b9150611cfd8360008488611eb0565b611d07828661267f565b9450600101611cb5565b505050505b60005b835181101561197e576000848281518110611d3657611d366125cf565b60200260200101519050611d626002826affffffffffffffffffffff1916611e9290919063ffffffff16565b15611de4576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611db1908e908e908e908e908e908e906004016128fe565b600060405180830381600087803b158015611dcb57600080fd5b505af1158015611ddf573d6000803e3d6000fd5b505050505b50600101611d19565b611e028585611dfc84876112d8565b85612044565b5050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611e4357611e436125cf565b60209081029190910101526000611e7b7f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836122df565b90506102c8611e8d8260008451612319565b6123a7565b60008160ff1682611ea38560581c90565b1660ff1614905092915050565b8215611f2a5760208310611eda57602083048401935060208381611ed657611ed661286f565b0692505b8215611f2a5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611f1b575050611f68565b50600194909401939182900391015b5b60208210611f4c5780518455600190930192601f1990910190602001611f2b565b8115611f685783548151600019600885021c9182169119161784555b50505050565b60008282604051602001611f83929190612833565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611fd9929190612833565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036120ce57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516120c193929190612957565b60405180910390a2611f68565b60006120da8585611282565b905060006120e786611e09565b905060005b81518110156121bc576000828281518110612109576121096125cf565b602002602001015190506121356004826affffffffffffffffffffff1916611e9290919063ffffffff16565b156121b3576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612180908b908b908b908b90600401612994565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b505050505b506001016120ec565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516121f193929190612957565b60405180910390a261220c828565ffffffffffff16856123b8565b60005b815181101561022257600082828151811061222c5761222c6125cf565b602002602001015190506122586008826affffffffffffffffffffff1916611e9290919063ffffffff16565b156122d6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906122a3908b908b908b908b90600401612994565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b505050505b5060010161220f565b60606102c86122ef858585611fc4565b6000612314856122ff89896123ce565b9060ff166028026038011c64ffffffffff1690565b6123e1565b6000818311806123295750835182115b15612366578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610c8a939291906129cd565b60208401612374848261267f565b90506000612382858561279c565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061180f8360156000612404565b611a43838383516123c98560200190565b611eb0565b600061180f6123dd8484611f6e565b5490565b60405160208101601f19603f84840101166040528282526113098585858461247f565b606060006124128560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816124385761243861286f565b04905060405193506020840160208202810160405281855260005b82811015612473578451871c825293870193602090910190600101612453565b50505050509392505050565b821561250657602083106124a9576020830484019350602083816124a5576124a561286f565b0692505b82156125065760208390036000818410156124cc5750600019600884021c6124d6565b50600019600882021c5b8554600886021b8184511682198216178452508184116124f7575050611f68565b50600194909401939182900391015b5b602082106125285783548152600190930192601f1990910190602001612507565b8115611f68576000600019600884021c8251865482191691161782525050505050565b6122a4806129f383390190565b6000806040838503121561256b57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461258f57600080fd5b915060208301357fffffffffffffffffffffffffffff000000000000000000000000000000000000811681146125c457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015612616578151875295820195908201906001016125fa565b509495945050505050565b84815260806020820152600061263a60808301866125e5565b60ff949094166040830152506060015292915050565b60006020828403121561266257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561030257610302612669565b634e487b7160e01b600052602160045260246000fd5b60005b838110156126c35781810151838201526020016126ab565b50506000910152565b600081518084526126e48160208601602086016126a8565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561274557601f198684030189526127338383516126cc565b98840198925090830190600101612717565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061277d60c08301856126f8565b82810360a084015261278f81856126f8565b9998505050505050505050565b8181038181111561030257610302612669565b808202811582820484141761030257610302612669565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5760608301846126cc565b8281526040602082015260006102c860408301846126cc565b60208152600061180f60208301846126f8565b8281526000602080830184516020860160005b8281101561286257815184529284019290840190600101612846565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b600083516128978184602088016126a8565b8351908301906128ab8183602088016126a8565b01949350505050565b6080815260006128c760808301876125e5565b82810360208401526128d981876126cc565b905084604084015282810360608401526128f381856126cc565b979650505050505050565b86815260c06020820152600061291760c08301886125e5565b828103604084015261292981886126cc565b9050856060840152828103608084015261294381866126cc565b9150508260a0830152979650505050505050565b60608152600061296a60608301866125e5565b65ffffffffffff85166020840152828103604084015261298a81856126cc565b9695505050505050565b8481526080602082015260006129ad60808301866125e5565b65ffffffffffff8516604084015282810360608401526128f381856126cc565b6060815260006129e060608301866126cc565b6020830194909452506040015291905056fe608060405234801561001057600080fd5b50612284806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063dd62ed3e1461020e578063e1af802c1461022157600080fd5b806340c10f19146101ad57806345ec9354146101c257806370a08231146101cd57806395d89b41146101e057600080fd5b8063119df25f116100d3578063119df25f1461014a57806318160ddd1461016a57806323b872dd14610180578063313ce5671461019357600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063095ea7b314610137575b600080fd5b61010d610108366004611d13565b610229565b60405190151581526020015b60405180910390f35b61012a6102c2565b6040516101199190611da5565b61010d610145366004611dcf565b6102e1565b610152610303565b6040516001600160a01b039091168152602001610119565b61017261030d565b604051908152602001610119565b61010d61018e366004611df9565b610327565b61019b610357565b60405160ff9091168152602001610119565b6101c06101bb366004611dcf565b61036c565b005b36601f190135610172565b6101726101db366004611e35565b6103cc565b61012a6103e7565b6101c06101f6366004611dcf565b6103fc565b61010d610209366004611dcf565b610453565b61017261021c366004611e50565b61046b565b610152610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806102bc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60606102dc6102d76102d2610491565b6104af565b6104e1565b905090565b6000806102ec610303565b90506102f9818585610507565b5060019392505050565b60006102dc610665565b60006102dc61032261031d610491565b610697565b6106c9565b600080610332610303565b905061033f8582856106ee565b61034a858585610776565b60019150505b9392505050565b60006102dc6103676102d2610491565b61080c565b610374610854565b6001600160a01b0382166103bc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103c86000838361086f565b5050565b60006102bc6103e16103dc610491565b610a37565b83610a69565b60606102dc6103f76102d2610491565b610ad7565b610404610854565b6001600160a01b038216610447576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6103c88260008361086f565b60008061045e610303565b90506102f9818585610776565b600061035061048061047b610491565b610af6565b8484610b28565b60006102dc610bc3565b60008061049d30610bcd565b90506104a98160101b90565b91505090565b60006102bc613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610c52565b604080516000808252602082019092526060916104ff848383610cca565b949350505050565b6001600160a01b03831661054a576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b03821661058d576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6105a361059b61047b610491565b848484610d91565b6105ab610e48565b6001600160a01b031663c9a34acd7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256105ea866001600160a01b031690565b6001600160a01b0386166040805160208101889052016040516020818303038152906040526040518563ffffffff1660e01b815260040161062e9493929190611e99565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106945750335b90565b60006102bc613a3160f11b837f546f74616c537570706c79000000000000000000000000000000000000000000610c52565b6040805160008082526020820190925260006104ff848383630100080160dd1b610f23565b60006107056106fe61047b610491565b8585610b28565b905060001981146107705781811015610763576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103b3565b6107708484848403610507565b50505050565b6001600160a01b0383166107b9576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b0382166107fc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b61080783838361086f565b505050565b6040805160008082526020820190925260006108498483837e01010201000000000000000000000000000000000000000000000000000000610f23565b60f81c949350505050565b61086d61086030610bcd565b610868610303565b610fe0565b565b6000610879610491565b9050600061088682610697565b9050600061089383610a37565b90506001600160a01b0386166108c5576108c082856108b1856106c9565b6108bb9190611ed4565b611081565b610935565b60006108d18288610a69565b905084811015610926576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101829052604481018690526064016103b3565b61093382888784036110a8565b505b6001600160a01b03851661095c576109578285610951856106c9565b03611081565b610972565b61097281868661096c858a610a69565b016110a8565b61097a610e48565b6001600160a01b031663c9a34acd7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109b9896001600160a01b031690565b6001600160a01b03891660408051602081018b9052016040516020818303038152906040526040518563ffffffff1660e01b81526004016109fd9493929190611e99565b600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b50505050505050505050565b60006102bc613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610c52565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610aae57610aae611ee7565b60209081029190910101526000610ace858383630100080160dd1b610f23565b95945050505050565b604080516000808252602082019092526060916104ff84836001610cca565b60006102bc613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610c52565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610b6d57610b6d611ee7565b602002602001018181525050826001600160a01b031660001b81600181518110610b9957610b99611ee7565b60209081029190910101526000610bb9868383630100080160dd1b610f23565b9695505050505050565b60006102dc611110565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610c1257610c12611ee7565b602090810291909101015260006104ff7f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b610f23565b6000610c6060706010611ed4565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b60606000610cd6611110565b9050306001600160a01b03821603610cfb57610cf385858561114f565b915050610350565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610d4490889088908890600401611f39565b600060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf39190810190611f65565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610dd257610dd2611ee7565b602002602001018181525050826001600160a01b031660001b81600181518110610dfe57610dfe611ee7565b602002602001018181525050610e418582600085604051602001610e2491815260200190565b60408051601f19818403018152919052630100080160dd1b611189565b5050505050565b600080610e5430610bcd565b60408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f50757070657452656769737472790000000000000000000000000000000000006030820152919250600091610ed89101604051602081830303815290604052610ed290612012565b8361120c565b90506001600160a01b0381166102bc576040517f9434f7e1000000000000000000000000000000000000000000000000000000008152306004820152602481018390526044016103b3565b600080610f2e611110565b9050306001600160a01b03821603610f5457610f4c86868686611289565b9150506104ff565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610f9f908990899089908990600401612039565b602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190612068565b6001600160a01b0381166110357f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176112b6565b6001600160a01b0316146103c85761104c82611352565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103b3929190612081565b60408051600080825260208201835291810183905290610807908490839060608201610e24565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b816000815181106110ea576110ea611ee7565b6020026020010181815250506107708482600085604051602001610e2491815260200190565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061114a573391505090565b919050565b60606104ff61115f858585611480565b60006111848561116f8989611500565b9060ff166028026038011c64ffffffffff1690565b611513565b6000611193611110565b9050306001600160a01b038216036111b7576111b28686868686611536565b611204565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906109fd90899089908990899089906004016120ac565b505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061124557611245611ee7565b6020908102919091010152600061127d8583837e14010014000000000000000000000000000000000000000000000000000000610f23565b60601c95945050505050565b6000610ace611298868661154b565b60ff858116601b0360080285901c166112b185876115a1565b6115d2565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106112ef576112ef611ee7565b602090810291909101015260006113477f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f23565b60601c949350505050565b606081601081901b600061136583611623565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156113c0576113bb7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661163a565b6113f7565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161561141e576114198361163a565b611455565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001611467939291906120f3565b6040516020818303038152906040529350505050919050565b60008383604051602001611495929190612181565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061035061150f84846116c0565b5490565b60405160208101601f19603f8484010116604052828252610d8985858584611716565b610e41858561154584876115a1565b856117e2565b60008282604051602001611560929190612181565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610d89576115c860ff601b83900360080287901c1683611ed4565b91506001016115a6565b6000602082106115f8576020820484019350602082816115f4576115f46121bd565b0691505b508254600882021b602082900380841115610d89576001850154600882021c82179150509392505050565b600061163160706010611ed4565b9190911b919050565b606060005b6010811015611690576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156116905760010161163f565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152806104ff565b600082826040516020016116d5929190612181565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561179d57602083106117405760208304840193506020838161173c5761173c6121bd565b0692505b821561179d5760208390036000818410156117635750600019600884021c61176d565b50600019600882021c5b8554600886021b81845116821982161784525081841161178e575050610770565b50600194909401939182900391015b5b602082106117bf5783548152600190930192601f199091019060200161179e565b8115610770576000600019600884021c8251865482191691161782525050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361186c57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161185f939291906121d3565b60405180910390a2610770565b6000611878858561154b565b9050600061188586611a7d565b905060005b815181101561195a5760008282815181106118a7576118a7611ee7565b602002602001015190506118d36004826affffffffffffffffffffff1916611b0690919063ffffffff16565b15611951576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061191e908b908b908b908b90600401612206565b600060405180830381600087803b15801561193857600080fd5b505af115801561194c573d6000803e3d6000fd5b505050505b5060010161188a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161198f939291906121d3565b60405180910390a26119aa828565ffffffffffff1685611b24565b60005b815181101561065c5760008282815181106119ca576119ca611ee7565b602002602001015190506119f66008826affffffffffffffffffffff1916611b0690919063ffffffff16565b15611a74576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611a41908b908b908b908b90600401612206565b600060405180830381600087803b158015611a5b57600080fd5b505af1158015611a6f573d6000803e3d6000fd5b505050505b506001016119ad565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611ab757611ab7611ee7565b60209081029190910101526000611aef7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361114f565b90506104ff611b018260008451611b3a565b611bc8565b60008160ff1682611b178560581c90565b1660ff1614905092915050565b61080783838351611b358560200190565b611bd9565b600081831180611b4a5750835182115b15611b87578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103b39392919061223f565b60208401611b958482611ed4565b90506000611ba38585612264565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103508360156000611c98565b8215611c535760208310611c0357602083048401935060208381611bff57611bff6121bd565b0692505b8215611c535760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611c44575050610770565b50600194909401939182900391015b5b60208210611c755780518455600190930192601f1990910190602001611c54565b8115610770576000600019600884021c8554835182191691161785555050505050565b60606000611ca68560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611ccc57611ccc6121bd565b04905060405193506020840160208202810160405281855260005b82811015611d07578451871c825293870193602090910190600101611ce7565b50505050509392505050565b600060208284031215611d2557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035057600080fd5b60005b83811015611d70578181015183820152602001611d58565b50506000910152565b60008151808452611d91816020860160208601611d55565b601f01601f19169290920160200192915050565b6020815260006103506020830184611d79565b80356001600160a01b038116811461114a57600080fd5b60008060408385031215611de257600080fd5b611deb83611db8565b946020939093013593505050565b600080600060608486031215611e0e57600080fd5b611e1784611db8565b9250611e2560208501611db8565b9150604084013590509250925092565b600060208284031215611e4757600080fd5b61035082611db8565b60008060408385031215611e6357600080fd5b611e6c83611db8565b9150611e7a60208401611db8565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b848152836020820152826040820152608060608201526000610bb96080830184611d79565b634e487b7160e01b600052601160045260246000fd5b808201808211156102bc576102bc611ebe565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015611f2e57815187529582019590820190600101611f12565b509495945050505050565b838152606060208201526000611f526060830185611efd565b905060ff83166040830152949350505050565b600060208284031215611f7757600080fd5b815167ffffffffffffffff80821115611f8f57600080fd5b818401915084601f830112611fa357600080fd5b815181811115611fb557611fb5611e83565b604051601f8201601f19908116603f01168101908382118183101715611fdd57611fdd611e83565b81604052828152876020848701011115611ff657600080fd5b612007836020830160208801611d55565b979650505050505050565b80516020808301519190811015612033576000198160200360031b1b821691505b50919050565b8481526080602082015260006120526080830186611efd565b60ff949094166040830152506060015292915050565b60006020828403121561207a57600080fd5b5051919050565b6040815260006120946040830185611d79565b90506001600160a01b03831660208301529392505050565b85815260a0602082015260006120c560a0830187611efd565b60ff8616604084015282810360608401526120e08186611d79565b9150508260808301529695505050505050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451612154816003860160208901611d55565b808401905081600382015284519150612174826004830160208801611d55565b0160040195945050505050565b8281526000602080830184516020860160005b828110156121b057815184529284019290840190600101612194565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6060815260006121e66060830186611efd565b65ffffffffffff851660208401528281036040840152610bb98185611d79565b84815260806020820152600061221f6080830186611efd565b65ffffffffffff8516604084015282810360608401526120078185611d79565b6060815260006122526060830186611d79565b60208301949094525060400152919050565b818103818111156102bc576102bc611ebe56fea164736f6c6343000818000aa164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000aa164736f6c6343000818000a","sourceMap":"1469:9378:198:-:0;;;1572:26:106;;;1594:4;-1:-1:-1;;1572:26:106;;;;;;;;3126:44:109;;;;;;;;;;;228:9:0;186:51;;1469:9378:198;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637c0c53691162000142578063d591221f11620000cc578063f28e093d1162000097578063fa531f85116200007a578063fa531f851462000418578063fa7626d41462000422578063fb44e83a146200043057600080fd5b8063f28e093d14620003f7578063f63809d9146200040e57600080fd5b8063d591221f14620003c2578063e13aba4814620003cc578063e20c9f7114620003d6578063e70629ce14620003e057600080fd5b8063a0e70267116200010d578063a0e70267146200036f578063b5508aa91462000386578063ba414fa61462000390578063be4733bc14620003ab57600080fd5b80637c0c5369146200032b57806385226c811462000342578063916a17c6146200035b5780639642ddaf146200036557600080fd5b80633f7286f411620001c457806366d9a9a0116200018f57806366d9a9a014620002f457806370557298146200030d57806378cdebf914620003175780637a715085146200032157600080fd5b80633f7286f414620002bf57806348186a7f14620002c95780635ad7ef9214620002e05780635babb75814620002ea57600080fd5b80631ed7831c11620002055780631ed7831c146200027257806337e816d314620002945780633dc6c95514620002ab5780633e5e3c2314620002b557600080fd5b80630a9254e4146200023b5780631037c205146200024757806318eab016146200025e5780631aeb10a61462000268575b600080fd5b6200024562000447565b005b620002456200025836600462005a48565b6200069c565b62000245620009fc565b6200024562000dbc565b6200027c62000f8e565b6040516200028b919062005a7e565b60405180910390f35b62000245620002a536600462005a48565b62000ff2565b620002456200140c565b6200027c620015e8565b6200027c6200164a565b62000245620002da36600462005acd565b620016ac565b6200024562001d90565b6200024562001fc1565b620002fe62002016565b6040516200028b919062005b29565b620002456200211e565b620002456200251d565b620002456200261e565b620002456200033c36600462005a48565b62002905565b6200034c62002be3565b6040516200028b919062005c4e565b620002fe62002cbd565b6200024562002dbc565b620002456200038036600462005cb6565b62002fb6565b6200034c62003280565b6200039a6200335a565b60405190151581526020016200028b565b62000245620003bc36600462005a48565b620034a6565b62000245620037b7565b6200024562003a3b565b6200027c62003d0a565b62000245620003f136600462005a48565b62003d6c565b620002456200040836600462005cb6565b6200406c565b6200024562004258565b6200024562004423565b6000546200039a9060ff1681565b620002456200044136600462005cb6565b62004564565b620004516200464e565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604051638da798da906200049c90620059c0565b604051809103906000f080158015620004b9573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200050491906024810162005cf9565b600060405180830381600087803b1580156200051f57600080fd5b505af115801562000534573d6000803e3d6000fd5b5050601f547f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550620005989050565b62000662601f60009054906101000a90046001600160a01b03167f6d794552433230000000000000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152508152506200470d565b602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620006f257600080fd5b505afa15801562000707573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200075957600080fd5b505afa1580156200076e573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b158015620007c157600080fd5b505af1158015620007d6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200083d57600080fd5b505af115801562000852573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03861691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820184905290911690639dc29fac90604401600060405180830381600087803b158015620008ff57600080fd5b505af115801562000914573d6000803e3d6000fd5b50505050620009a8602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000996919062005d1d565b620009a2838562005d4d565b62004937565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620009f79216906370a08231906024015b602060405180830381865afa15801562000970573d6000803e3d6000fd5b505050565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b15801562000a5357600080fd5b505af115801562000a68573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ac257600080fd5b505af115801562000ad7573d6000803e3d6000fd5b505060215460405163095ea7b360e01b815230600482015260001960248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562000b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b54919062005d63565b506021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015262000be89216906323b872dd906064015b6020604051808303816000875af115801562000bbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be2919062005d63565b62004a49565b602154604080516318160ddd60e01b8152905162000c6a926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5b919062005d1d565b670de0b6b3a764000062004937565b602154604051636eb1769f60e11b81526001600160a01b03838116600483015230602483015262000ced92169063dd62ed3e90604401602060405180830381865afa15801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062005d1d565b60001962004937565b6021546040516370a0823160e01b81526001600160a01b03838116600483015262000d6a9216906370a08231906024015b602060405180830381865afa15801562000d3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d62919062005d1d565b600062004937565b6021546040516370a0823160e01b815261beef600482015262000db9916001600160a01b0316906370a08231906024015b602060405180830381865afa15801562000c35573d6000803e3d6000fd5b50565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562000e1f57600080fd5b505af115801562000e34573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a362000eb96040518060400160405280600781526020017f617070726f76650000000000000000000000000000000000000000000000000081525062004ac1565b60215460405163095ea7b360e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000f15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f3b919062005d63565b905062000f4762004d95565b62000f528162004a49565b602154604051636eb1769f60e11b815230600482015261beef602482015262000db9916001600160a01b03169063dd62ed3e9060440162000d9b565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000fe857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000fc9575b5050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200104857600080fd5b505afa1580156200105d573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620010b057600080fd5b505afa158015620010c5573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200111657600080fd5b505afa1580156200112b573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820186905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200118157600080fd5b505af115801562001196573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011f057600080fd5b505af115801562001205573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018790526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af11580156200125b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001281919062005d63565b506040513060248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b200000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200134f9160040162005d8e565b600060405180830381600087803b1580156200136a57600080fd5b505af11580156200137f573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015288811660248301526044820187905290911692506323b872dd91506064016020604051808303816000875af1158015620013df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001405919062005d63565b5050505050565b6021546040516340c10f1960e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200146057600080fd5b505af115801562001475573d6000803e3d6000fd5b505060408051306024820152670c7d713b49da00006044820152670de0b6b3a764000060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001533919060040162005d8e565b600060405180830381600087803b1580156200154e57600080fd5b505af115801562001563573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116925063a9059cbb91506044016020604051808303816000875af1158015620015c2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db9919062005d63565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b604051632631f2b160e11b81526001600160a01b03851615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200170257600080fd5b505afa15801562001717573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03861615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200177157600080fd5b505afa15801562001786573d6000803e3d6000fd5b5050604051632631f2b160e11b81526001600160a01b03881615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620017e057600080fd5b505afa158015620017f5573d6000803e3d6000fd5b5050604051632631f2b160e11b8152848411156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200184757600080fd5b505afa1580156200185c573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0388811660048301526024820186905290911692506340c10f199150604401600060405180830381600087803b158015620018af57600080fd5b505af1158015620018c4573d6000803e3d6000fd5b50506021546040516370a0823160e01b81526001600160a01b03888116600483015262001946945090911691506370a08231906024015b602060405180830381865afa15801562001919573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200193f919062005d1d565b8262004937565b60405163ca669fa760e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200199c57600080fd5b505af1158015620019b1573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03898116600483015260248201879052909116925063095ea7b391506044016020604051808303816000875af115801562001a09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a2f919062005d63565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562001a9357600080fd5b505af115801562001aa8573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001af291815260200190565b60405180910390a360405163ca669fa760e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b5057600080fd5b505af115801562001b65573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03888116600483015287811660248301526044820186905262001bb0945090911691506323b872dd9060640162000b9c565b602154604080516318160ddd60e01b8152905162001bfd926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562001919573d6000803e3d6000fd5b600019820362001c9057602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001c8a92169063dd62ed3e90604401602060405180830381865afa15801562001c5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c83919062005d1d565b8362004937565b62001cce565b602154604051636eb1769f60e11b81526001600160a01b038681166004830152878116602483015262001cce92169063dd62ed3e90604401620009d9565b826001600160a01b0316846001600160a01b03160362001d24576021546040516370a0823160e01b81526001600160a01b03868116600483015262001d1e9216906370a0823190602401620018fb565b62001405565b6021546040516370a0823160e01b81526001600160a01b03868116600483015262001d5a9216906370a082319060240162000d1e565b6021546040516370a0823160e01b81526001600160a01b038581166004830152620014059216906370a0823190602401620018fb565b602154604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162001e5c926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001df6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e20919081019062005da3565b6040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525062005025565b602154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162001f28926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001ec2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001eec919081019062005da3565b6040518060400160405280600381526020017f544b4e000000000000000000000000000000000000000000000000000000000081525062005025565b602154604080517f313ce567000000000000000000000000000000000000000000000000000000008152905162001fbf926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801562001f8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fb4919062005e5c565b60ff16601262004937565b565b60215462001fda906001600160a01b0316151562004a49565b62001fbf6200200f7f6e736d794552433230000000000000000000000000000000000000000000000062005175565b62005175565b3062005216565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620021155760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620020fc57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020a85790505b505050505081525050815260200190600101906200203a565b50505050905090565b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200217557600080fd5b505af11580156200218a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620021e457600080fd5b505af1158015620021f9573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227c919062005d63565b5060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b158015620022e057600080fd5b505af1158015620022f5573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92506001600160a01b03841691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620023836040518060400160405280600c81526020017f7472616e7366657246726f6d000000000000000000000000000000000000000081525062004ac1565b6021546040516323b872dd60e01b81526001600160a01b03838116600483015261beef6024830152670de0b6b3a7640000604483015260009216906323b872dd906064016020604051808303816000875af1158015620023e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200240d919062005d63565b90506200241962004d95565b620024248162004a49565b602154604080516318160ddd60e01b8152905162002471926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b602154604051636eb1769f60e11b81526001600160a01b038481166004830152306024830152620024ad92169063dd62ed3e9060440162000d1e565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620024e39216906370a082319060240162000d1e565b6021546040516370a0823160e01b815261beef600482015262002519916001600160a01b0316906370a082319060240162000d9b565b5050565b6000620025e9601f60009054906101000a90046001600160a01b03167f616e6f74686572455243323000000000000000000000000000000000000000006040518060600160405280601260ff1681526020016040518060400160405280600581526020017f546f6b656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f544b4e00000000000000000000000000000000000000000000000000000000008152508152506200470d565b9050620026016001600160a01b038216151562004a49565b60215462000db9906001600160a01b038381169116141562004a49565b6021546040516340c10f1960e01b815261abcd60048201819052670c7d713b49da00006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b1580156200267557600080fd5b505af11580156200268a573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620026e457600080fd5b505af1158015620026f9573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002756573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277c919062005d63565b506040516001600160a01b0382166024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b906084015b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620028489160040162005d8e565b600060405180830381600087803b1580156200286357600080fd5b505af115801562002878573d6000803e3d6000fd5b50506021546040516323b872dd60e01b81526001600160a01b03858116600483015261beef6024830152670de0b6b3a7640000604483015290911692506323b872dd91506064016020604051808303816000875af1158015620028df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002519919062005d63565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200295b57600080fd5b505afa15801562002970573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620029c357600080fd5b505afa158015620029d8573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562002a2957600080fd5b505afa15801562002a3e573d6000803e3d6000fd5b50506021546040516340c10f1960e01b815261abcd600482018190526024820187905293506001600160a01b0390911691506340c10f1990604401600060405180830381600087803b15801562002a9457600080fd5b505af115801562002aa9573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002b0357600080fd5b505af115801562002b18573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152602481018690526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562002b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b94919062005d63565b506040516001600160a01b03821660248201526044810184905260648101839052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39063391434e360e21b90608401620012db565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200211557838290600052602060002001805462002c299062005e81565b80601f016020809104026020016040519081016040528092919081815260200182805462002c579062005e81565b801562002ca85780601f1062002c7c5761010080835404028352916020019162002ca8565b820191906000526020600020905b81548152906001019060200180831162002c8a57829003601f168201915b50505050508152602001906001019062002c07565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620021155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002da357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002d4f5790505b5050505050815250508152602001906001019062002ce1565b60405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b15801562002e1f57600080fd5b505af115801562002e34573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef9250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362002eba6040518060400160405280600481526020017f6d696e740000000000000000000000000000000000000000000000000000000081525062004ac1565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562002f1057600080fd5b505af115801562002f25573d6000803e3d6000fd5b5050505062002f3362004d95565b602154604080516318160ddd60e01b8152905162002f80926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b6021546040516370a0823160e01b815261beef600482015262001fbf916001600160a01b0316906370a082319060240162000d9b565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200300c57600080fd5b505afa15801562003021573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200307257600080fd5b505af115801562003087573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b158015620030ee57600080fd5b505af115801562003103573d6000803e3d6000fd5b50506040518381526001600160a01b03851692503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360215460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490526200318492169063a9059cbb9060440162000b9c565b602154604080516318160ddd60e01b81529051620031d1926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562001919573d6000803e3d6000fd5b6001600160a01b038216300362003216576021546040516370a0823160e01b815230600482015262002519916001600160a01b0316906370a0823190602401620018fb565b6021546040516370a0823160e01b81523060048201526200324a916001600160a01b0316906370a082319060240162000d1e565b6021546040516370a0823160e01b81526001600160a01b038481166004830152620025199216906370a0823190602401620018fb565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562002115578382906000526020600020018054620032c69062005e81565b80601f0160208091040260200160405190810160405280929190818152602001828054620032f49062005e81565b8015620033455780601f10620033195761010080835404028352916020019162003345565b820191906000526020600020905b8154815290600101906020018083116200332757829003601f168201915b505050505081526020019060010190620032a4565b60008054610100900460ff16156200337b5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620034a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003423917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005ebd565b60408051601f19818403018152908290526200343f9162005f07565b6000604051808303816000865af19150503d80600081146200347e576040519150601f19603f3d011682016040523d82523d6000602084013e62003483565b606091505b50915050808060200190518101906200349d919062005d63565b9150505b919050565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620034fc57600080fd5b505afa15801562003511573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200356457600080fd5b505afa15801562003579573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620035ca57600080fd5b505afa158015620035df573d6000803e3d6000fd5b50506021546040516340c10f1960e01b81526001600160a01b0387811660048301526024820187905290911692506340c10f199150604401600060405180830381600087803b1580156200363257600080fd5b505af115801562003647573d6000803e3d6000fd5b5050604080516001600160a01b038716602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620036fd919060040162005d8e565b600060405180830381600087803b1580156200371857600080fd5b505af11580156200372d573d6000803e3d6000fd5b50506021546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018690529091169250639dc29fac9150604401600060405180830381600087803b1580156200379957600080fd5b505af1158015620037ae573d6000803e3d6000fd5b50505050505050565b6021546040516340c10f1960e01b8152306004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200380b57600080fd5b505af115801562003820573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200388757600080fd5b505af11580156200389c573d6000803e3d6000fd5b5050604051670de0b6b3a7640000815261beef92503091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620039216040518060400160405280600881526020017f7472616e7366657200000000000000000000000000000000000000000000000081525062004ac1565b60215460405163a9059cbb60e01b815261beef6004820152670de0b6b3a764000060248201526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156200397d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039a3919062005d63565b9050620039af62004d95565b620039ba8162004a49565b602154604080516318160ddd60e01b8152905162003a07926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562000c35573d6000803e3d6000fd5b6021546040516370a0823160e01b815230600482015262000d6a916001600160a01b0316906370a082319060240162000d1e565b6021546040516340c10f1960e01b815261beef6004820152670de0b6b3a764000060248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801562003a9157600080fd5b505af115801562003aa6573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562003b0d57600080fd5b505af115801562003b22573d6000803e3d6000fd5b5050604051670c7d713b49da000081526000925061beef91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362003ba86040518060400160405280600481526020017f6275726e0000000000000000000000000000000000000000000000000000000081525062004ac1565b6021546040517f9dc29fac00000000000000000000000000000000000000000000000000000000815261beef6004820152670c7d713b49da000060248201526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801562003c1757600080fd5b505af115801562003c2c573d6000803e3d6000fd5b5050505062003c3a62004d95565b602154604080516318160ddd60e01b8152905162003cbc926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562003c87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cad919062005d1d565b67016345785d8a000062004937565b6021546040516370a0823160e01b815261beef600482015262001fbf916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003c87573d6000803e3d6000fd5b6060600c80548060200260200160405190810160405280929190818152602001828054801562000fe8576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000fc9575050505050905090565b604051632631f2b160e11b81526001600160a01b03841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562003dc257600080fd5b505afa15801562003dd7573d6000803e3d6000fd5b5050604051632631f2b160e11b815260001985106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003e2a57600080fd5b505afa15801562003e3f573d6000803e3d6000fd5b5050604051632631f2b160e11b81528484116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003e9057600080fd5b505afa15801562003ea5573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152602481018690526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b15801562003ef657600080fd5b505af115801562003f0b573d6000803e3d6000fd5b50506040805130602482015260448101869052606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663391434e360e21b17905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062003fb8919060040162005d8e565b600060405180830381600087803b15801562003fd357600080fd5b505af115801562003fe8573d6000803e3d6000fd5b505060215460405163a9059cbb60e01b81526001600160a01b03878116600483015260248201869052909116925063a9059cbb91506044016020604051808303816000875af115801562004040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004066919062005d63565b50505050565b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620040c257600080fd5b505afa158015620040d7573d6000803e3d6000fd5b505060405163248e63e160e11b815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200413e57600080fd5b505af115801562004153573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36021546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b158015620041e757600080fd5b505af1158015620041fc573d6000803e3d6000fd5b505050506200324a602160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001919573d6000803e3d6000fd5b6021546040516340c10f1960e01b815261abcd60048201819052670de0b6b3a76400006024830152916001600160a01b0316906340c10f1990604401600060405180830381600087803b158015620042af57600080fd5b505af1158015620042c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0384166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200431e57600080fd5b505af115801562004333573d6000803e3d6000fd5b505060215460405163095ea7b360e01b8152306004820152670c7d713b49da000060248201526001600160a01b03909116925063095ea7b391506044016020604051808303816000875af115801562004390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043b6919062005d63565b50604051306024820152670c7d713b49da00006044820152670de0b6b3a76400006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ffb8f41b20000000000000000000000000000000000000000000000000000000090608401620027d4565b6021546040516340c10f1960e01b815230600482015260001960248201526001600160a01b03909116906340c10f1990604401600060405180830381600087803b1580156200447157600080fd5b505af115801562004486573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620044e957600080fd5b505af1158015620044fe573d6000803e3d6000fd5b50506021546040516340c10f1960e01b8152306004820152600160248201526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156200454f57600080fd5b505af115801562004066573d6000803e3d6000fd5b604051632631f2b160e11b81526001600160a01b03831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620045ba57600080fd5b505afa158015620045cf573d6000803e3d6000fd5b505060215460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052620046129450909116915063095ea7b39060440162000b9c565b602154604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301526200251992169063dd62ed3e90604401620018fb565b60006040516200465e90620059ce565b604051809103906000f0801580156200467b573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200469762005328565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620046f157600080fd5b505af115801562004706573d6000803e3d6000fd5b5050505090565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d7075707065740000000000000000000000000000000000000000602282015260009081906200478390603001604051602081830303815290604052620020099062005f25565b90506001600160a01b038116620047c357604051620047a290620059dc565b604051809103906000f080158015620047bf573d6000803e3d6000fd5b5090505b846001600160a01b0316638da798da828686604051602001620047e892919062005f4a565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200481692919062005cf9565b600060405180830381600087803b1580156200483157600080fd5b505af115801562004846573d6000803e3d6000fd5b5050604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f455243323052656769737472790000000000000000000000000000000000000060308201526200492e9350019050604051602081830303815290604052620048e19062005f25565b601086901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001762005433565b95945050505050565b80821462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620049c59060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620049fe919062005fc5565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162004a37919062006011565b60405180910390a162002519620054b7565b8062000db9577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004aaf9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000db9620054b7565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b89919062005d63565b62004b915750565b601b805462004ba09062005e81565b9050600014601b60405160200162004bb99190620060e8565b6040516020818303038152906040529062004c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c03919062005d8e565b60405180910390fd5b50601d8160405162004c1f919062005f07565b9081526020016040518091039020546000148160405160200162004c4491906200616f565b6040516020818303038152906040529062004c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162004c03919062005d8e565b50601b62004c9d828262006231565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004cfd57600080fd5b505af115801562004d12573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b15801562004d8057600080fd5b505af115801562001405573d6000803e3d6000fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562004e3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e63919062005d63565b62004e6b5750565b600060a082601c5462004e7f919062005d4d565b62004e8b919062005d4d565b62004e98906001620062fe565b90506000811162004f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162004c03565b80601d601b60405162004f1a919062006314565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162004f69601b8262006322565b5062005007601b805462004f7d9062005e81565b80601f016020809104026020016040519081016040528092919081815260200182805462004fab9062005e81565b801562004ffc5780601f1062004fd05761010080835404028352916020019162004ffc565b820191906000526020600020905b81548152906001019060200180831162004fde57829003601f168201915b5050505050620055fe565b604080516020810190915260008152601b90620009f7908262006231565b8060405160200162005038919062005f07565b604051602081830303815290604052805190602001208260405160200162005061919062005f07565b604051602081830303815290604052805190602001201462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620051039060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200513c919062006404565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a37919062006456565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110620051b157620051b162006494565b602090810291909101015260006200520b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e1401001400000000000000000000000000000000000000000000000000000062005701565b60601c949350505050565b806001600160a01b0316826001600160a01b03161462002519577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620052b69060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620052ef9190620064aa565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004a379190620064ff565b60006040516200533890620059ea565b604051809103906000f08015801562005355573d6000803e3d6000fd5b506040516200536490620059f8565b604051809103906000f08015801562005381573d6000803e3d6000fd5b50604051620053909062005a06565b604051809103906000f080158015620053ad573d6000803e3d6000fd5b50604051620053bc9062005a14565b604051809103906000f080158015620053d9573d6000803e3d6000fd5b50604051620053e89062005a22565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200542d573d6000803e3d6000fd5b50905090565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106200546f576200546f62006494565b60209081029190910101526000620054a98583837e1401001400000000000000000000000000000000000000000000000000000062005701565b60601c925050505b92915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620055d05760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200556b929160200162005ebd565b60408051601f1981840301815290829052620055879162005f07565b6000604051808303816000865af19150503d8060008114620055c6576040519150601f19603f3d011682016040523d82523d6000602084013e620055cb565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62000db97f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162005646919062005f07565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168252620056909160040190815260200190565b600060405180830381865afa158015620056ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620056d8919081019062005da3565b82604051602001620056ec9291906200653d565b604051602081830303815290604052620057d1565b6000806200570e62005846565b9050306001600160a01b0382160362005738576200572f8686868662005881565b915050620057c9565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599062005785908990899089908990600401620065c2565b602060405180830381865afa158015620057a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200572f919062005d1d565b949350505050565b62000db981604051602401620057e8919062005d8e565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620058b4565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680620034a1573391505090565b60006200492e620058938686620058d5565b60ff858116601b0360080285901c16620058ae85876200592d565b6200596a565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008282604051602001620058ec92919062006621565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101562005962576200595760ff601b83900360080287901c1683620062fe565b915060010162005932565b509392505050565b60006020821062005994576020820484019350602082816200599057620059906200665f565b0691505b508254600882021b60208290038084111562005962576001850154600882021c82179150509392505050565b6159a6806200667683390190565b615368806200c01c83390190565b618296806201138483390190565b611c68806201961a83390190565b61178f806201b28283390190565b610b38806201ca1183390190565b6157b8806201d54983390190565b614d4f8062022d0183390190565b80356001600160a01b0381168114620034a157600080fd5b60008060006060848603121562005a5e57600080fd5b62005a698462005a30565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101562005ac15783516001600160a01b03168352928401929184019160010162005a9a565b50909695505050505050565b600080600080600060a0868803121562005ae657600080fd5b62005af18662005a30565b945062005b016020870162005a30565b935062005b116040870162005a30565b94979396509394606081013594506080013592915050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562005beb57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005bd55783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062005b91565b50978a0197955050509187019160010162005b53565b50919998505050505050505050565b60005b8381101562005c1757818101518382015260200162005bfd565b50506000910152565b6000815180845262005c3a81602086016020860162005bfa565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562005ca957603f1988860301845262005c9685835162005c20565b9450928501929085019060010162005c77565b5092979650505050505050565b6000806040838503121562005cca57600080fd5b62005cd58362005a30565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0383168152604060208201526000620057c9604083018462005c20565b60006020828403121562005d3057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620054b157620054b162005d37565b60006020828403121562005d7657600080fd5b8151801515811462005d8757600080fd5b9392505050565b60208152600062005d87602083018462005c20565b60006020828403121562005db657600080fd5b815167ffffffffffffffff8082111562005dcf57600080fd5b818401915084601f83011262005de457600080fd5b81518181111562005df95762005df962005ce3565b604051601f8201601f19908116603f0116810190838211818310171562005e245762005e2462005ce3565b8160405282815287602084870101111562005e3e57600080fd5b62005e5183602083016020880162005bfa565b979650505050505050565b60006020828403121562005e6f57600080fd5b815160ff8116811462005d8757600080fd5b600181811c9082168062005e9657607f821691505b60208210810362005eb757634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162005ef981600485016020870162005bfa565b919091016004019392505050565b6000825162005f1b81846020870162005bfa565b9190910192915050565b8051602080830151919081101562005eb75760001960209190910360031b1b16919050565b7fffffffffffffffffffffffffffff000000000000000000000000000000000000831681526040602082015260ff82511660408201526000602083015160608084015262005f9c60a084018262005c20565b90506040840151603f1984830301608085015262005fbb828262005c20565b9695505050505050565b6040815260006200600360408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200600360408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b600081546200605e8162005e81565b60018281168015620060795760018114620060ad57620060de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620060de565b8560005260208060002060005b85811015620060d55781548a820152908401908201620060ba565b50505082870194505b5050505092915050565b7f676173207265706f727420220000000000000000000000000000000000000000815260006200611c600c8301846200604f565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f727420220000000000000000000000000000000000000000815260008251620061a981600c85016020870162005bfa565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620009f7576000816000526020600020601f850160051c81016020861015620062085750805b601f850160051c820191505b81811015620062295782815560010162006214565b505050505050565b815167ffffffffffffffff8111156200624e576200624e62005ce3565b62006266816200625f845462005e81565b84620061dd565b602080601f8311600181146200629e5760008415620062855750858301515b600019600386901b1c1916600185901b17855562006229565b600085815260208120601f198616915b82811015620062cf57888601518255948401946001909101908401620062ae565b5085821015620062ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620054b157620054b162005d37565b600062005d8782846200604f565b8181036200632e575050565b6200633a825462005e81565b67ffffffffffffffff81111562006355576200635562005ce3565b62006366816200625f845462005e81565b6000601f8211600181146200639d5760008315620063845750848201545b600019600385901b1c1916600184901b17845562001405565b600085815260209020601f19841690600086815260209020845b83811015620063d95782860154825560019586019590910190602001620063b7565b5085831015620062ee5793015460001960f8600387901b161c19169092555050600190811b01905550565b6040815260006200644260408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620057c9818562005c20565b6040815260006200644260408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b634e487b7160e01b600052603260045260246000fd5b604081526000620064e860408301600a81527f2020202020204c65667400000000000000000000000000000000000000000000602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620064e860408301600a81527f2020202020526967687400000000000000000000000000000000000000000000602082015260400190565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200657781600c85016020880162005bfa565b7f2000000000000000000000000000000000000000000000000000000000000000600c918401918201528351620065b681600d84016020880162005bfa565b01600d01949350505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b818110156200660757845183529383019391830191600101620065e9565b505060ff9690961660408501525050506060015292915050565b8281526000602080830184516020860160005b82811015620066525781518452928401929084019060010162006634565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfe60e060408190523060805262000015906200008b565b604051809103906000f08015801562000032573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004d9062000099565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b506001600160a01b031660c0523480156200008457600080fd5b50620000a7565b61087c8062002bd683390190565b612554806200345283390190565b60805160a05160c051612af4620000e2600039600081816103cb015261073a0152600081816104d8015261088f015260005050612af46000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d45780637c5b0335146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100bf575b600080fd5b61008a6100853660046125c3565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b6100d26100cd36600461261b565b6101f6565b005b604051601f193601358152602001610096565b6100d26100f536600461261b565b61053d565b6100a7610965565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c8000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161096f565b905090565b6000610200610965565b6040517f6e730000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b60228201529091506001600160a01b0382169063b29e408990603001604051602081830303815290604052610267906126cc565b6040518263ffffffff1660e01b815260040161028591815260200190565b600060405180830381600087803b15801561029f57600080fd5b505af11580156102b3573d6000803e3d6000fd5b505060408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f5075707065745265676973747279000000000000000000000000000000000000603082015261031f93500190505b60405160208183030381529060405261031a906126cc565b6109a1565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526001600160a01b03831691633350b6a9910160405160208183030381529060405261038d906126cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561041457600080fd5b505af1158015610428573d6000803e3d6000fd5b50506040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e0000000000000000000000000000000000000000000060308201526001600160a01b0385169350633350b6a992500160405160208183030381529060405261049a906126cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050505050565b6000610547610965565b6040517f6e730000000000000000000000000000000000000000000000000000000000006020820152651c1d5c1c195d60d21b602282015290915060009081906001600160a01b03841690819063b29e4089906030016040516020818303038152906040526105b5906126cc565b6040516024016105c791815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106149250612714565b600060405180830381855af49150503d806000811461064f576040519150601f19603f3d011682016040523d82523d6000602084013e610654565b606091505b50915091508161066757610667816109ed565b60408051613a3160f11b6020820152651c1d5c1c195d60d21b60228201527f507570706574526567697374727900000000000000000000000000000000000060308201526106b59101610302565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526001600160a01b038516918291633350b6a99101604051602081830303815290604052610725906126cc565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516107b69250612714565b600060405180830381855af49150503d80600081146107f1576040519150601f19603f3d011682016040523d82523d6000602084013e6107f6565b606091505b5090925090508161080a5761080a816109ed565b6040805161737960f01b6020820152651c1d5c1c195d60d21b60228201527f44656c65676174696f6e0000000000000000000000000000000000000000000060308201526001600160a01b038516918291633350b6a9910160405160208183030381529060405261087a906126cc565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161090b9250612714565b600060405180830381855af49150503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b5090925090508161095f5761095f816109ed565b50505050565b60006101f16109f5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061099e5750335b90565b6109ea817e140100140000000000000000000000000000000000000000000000000000006109cd6109ff565b6109d5610a77565b6109dd610ab1565b6109e5610b36565b610b96565b50565b805160208201fd5b60006101f1610c50565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110610a3957610a39612730565b602002602001019060c5811115610a5257610a52612746565b908160c5811115610a6557610a65612746565b905250610a7181610c8f565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610a3957610a39612730565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ac85790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110610b2857610b28612730565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b4d579050509050604051806040016040528060068152602001651c1d5c1c195d60d21b81525081600081518110610b2857610b28612730565b6000610ba0610c50565b9050306001600160a01b03821603610bc557610bc0878787878787610e53565b610c47565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990610c14908a908a908a908a908a908a906004016127e2565b600060405180830381600087803b158015610c2e57600080fd5b505af1158015610c42573d6000803e3d6000fd5b505050505b50505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610c8a573391505090565b919050565b6000601c82511115610cc2578151604051635318beb960e01b8152600401610cb991815260200190565b60405180910390fd5b60008080805b8551811015610d9d576000610d06878381518110610ce857610ce8612730565b602002602001015160c5811115610d0157610d01612746565b6112a9565b905080600003610d1b57600190920191610d53565b8215610d53576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610d7457610d74612730565b602002602001015160c5811115610d8d57610d8d612746565b901b949094179350600101610cc8565b506005811115610dc357604051635318beb960e01b815260048101829052602401610cb9565b84518190036008610dd660026020612842565b610de09190612855565b83901b939093179260086001610df860026020612842565b610e029190612842565b610e0c9190612855565b81901b93909317926008600180610e2560026020612842565b610e2f9190612842565b610e399190612842565b610e439190612855565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610ecc57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610f2d57613a3160f11b8687604051602001610eeb91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610cb993929160040161286c565b610f3685611309565b610f41846001611550565b610f4c836000611550565b60e084901c60e885901c0160ff16825114610fac5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60e085901c60e886901c0160ff1681511461100c5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110845760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b61108d856116ec565b611096846116ec565b146110e8576110a4856116ec565b6110ad846116ec565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b6110f18561171e565b6110fa8461171e565b1461114c576111088561171e565b6111118461171e565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60005b611158866116ec565b8110156111ee5761117d61116c858361173b565b60c5811115610d0157610d01612746565b6008601b8390030287901c60ff16146111e6576008601b8290030286901c60ff166111ab61116c868461173b565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cb9565b60010161114f565b506111f886611763565b1561125257858660405160200161121191815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610cb992916004016128ad565b61129e868686868660405160200161126a91906128c6565b6040516020818303038152906040528660405160200161128a91906128c6565b604051602081830303815290604052611808565b6105358660016118eb565b6000808260c58111156112be576112be612746565b60ff16905060618110156112d857601f1660010192915050565b60618360c58111156112ec576112ec612746565b036112fa5750601492915050565b50600092915050565b50919050565b80611340576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061134b8261171e565b90506005811115611392576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610cb9565b600061139d836116ec565b905060006113ab83836128d9565b9050601c8111156113f2576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610cb9565b6000805b8381101561149d5760ff601b82900360080287901c16600081900361144a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b6020811115611488576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b61149281846128d9565b9250506001016113f6565b506114a7856119a9565b81146114f3576114b6856119a9565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610cb9565b825b601c8110156105355760ff601b82900360080287901c168015611547576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610cb9565b506001016114f5565b8015801561155c575081155b1561157d57604051635318beb960e01b815260006004820152602401610cb9565b60006115888361171e565b905060058111156115af57604051635318beb960e01b815260048101829052602401610cb9565b60006115ba846116ec565b905060006115c883836128d9565b9050601c8111156115ef57604051635318beb960e01b815260048101829052602401610cb9565b6000805b8381101561165b57600061160a61116c898461173b565b905080600003611646576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61165081846128d9565b9250506001016115f3565b50611665866119a9565b811461169057611674866119a9565b604051635318beb960e01b8152600401610cb991815260200190565b825b82811015610c475760006116a961116c898461173b565b905080156116e3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611692565b6000600860016116fe60026020612842565b6117089190612842565b6117129190612855565b8260ff911c1692915050565b6000600860018061173160026020612842565b6116fe9190612842565b6000601b8290036008028360ff911c1660c581111561175c5761175c612746565b9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061179c5761179c612730565b602090810291909101015260006117f47f746273746f72650000000000000000005265736f75726365496473000000000083837e010100010000000000000000000000000000000000000000000000000000006119cc565b90506118008160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061183f8484611a02565b9050600061184d8585611a1f565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061188757611887612730565b60209081029190910101526118df7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611a4b565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061192157611921612730565b6020026020010181815250506119a47f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161196f91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611d84565b505050565b600060086119b960026020612842565b6119c39190612855565b9190911c919050565b60006119f96119db8686611da0565b60ff858116601b0360080285901c166119f48587611df6565b611e2f565b95945050505050565b8151815160009181810160389190911b1760609190911b1761175c565b60608282604051602001611a349291906128ec565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611ad757857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611aca9493929190612957565b60405180910390a2610535565b6000611ae287611e80565b905060005b8151811015611bbb576000828281518110611b0457611b04612730565b60200260200101519050611b306001826affffffffffffffffffffff1916611f0990919063ffffffff16565b15611bb2576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611b7f908c908c908c908c908c908c906004016129a1565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505b50600101611ae7565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611bf29493929190612957565b60405180910390a26000611c068888611da0565b90506000602087019050611c1e826000895184611f27565b6000611c298561171e565b1115611cad576000611c3b8a8a611fe6565b878155905060208601915060008060005b611c558861171e565b8160ff161015611ca857611c6a8d8d8361203c565b9250611c858a8260ff166028026038011c64ffffffffff1690565b9150611c948360008488611f27565b611c9e82866128d9565b9450600101611c4c565b505050505b60005b83518110156118df576000848281518110611ccd57611ccd612730565b60200260200101519050611cf96002826affffffffffffffffffffff1916611f0990919063ffffffff16565b15611d7b576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611d48908e908e908e908e908e908e906004016129a1565b600060405180830381600087803b158015611d6257600080fd5b505af1158015611d76573d6000803e3d6000fd5b505050505b50600101611cb0565b611d998585611d938487611df6565b856120bc565b5050505050565b60008282604051602001611db59291906129fa565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611e2757611e1d60ff601b83900360080287901c16836128d9565b9150600101611dfb565b509392505050565b600060208210611e5557602082048401935060208281611e5157611e51612a36565b0691505b508254600882021b602082900380841115611e27576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611eba57611eba612730565b60209081029190910101526000611ef27f746273746f726500000000000000000053746f7265486f6f6b730000000000008383612357565b9050611800611f048260008451612391565b61241f565b60008160ff1682611f1a8560581c90565b1660ff1614905092915050565b8215611fa15760208310611f5157602083048401935060208381611f4d57611f4d612a36565b0692505b8215611fa15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611f9257505061095f565b50600194909401939182900391015b5b60208210611fc35780518455600190930192601f1990910190602001611fa2565b811561095f576000600019600884021c8554835182191691161785555050505050565b60008282604051602001611ffb9291906129fa565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016120519291906129fa565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361214657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161213993929190612a4c565b60405180910390a261095f565b60006121528585611da0565b9050600061215f86611e80565b905060005b815181101561223457600082828151811061218157612181612730565b602002602001015190506121ad6004826affffffffffffffffffffff1916611f0990919063ffffffff16565b1561222b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906121f8908b908b908b908b90600401612a89565b600060405180830381600087803b15801561221257600080fd5b505af1158015612226573d6000803e3d6000fd5b505050505b50600101612164565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161226993929190612a4c565b60405180910390a2612284828565ffffffffffff1685612430565b60005b8151811015610c475760008282815181106122a4576122a4612730565b602002602001015190506122d06008826affffffffffffffffffffff1916611f0990919063ffffffff16565b1561234e576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061231b908b908b908b908b90600401612a89565b600060405180830381600087803b15801561233557600080fd5b505af1158015612349573d6000803e3d6000fd5b505050505b50600101612287565b606061180061236785858561203c565b600061238c856123778989612446565b9060ff166028026038011c64ffffffffff1690565b612459565b6000818311806123a15750835182115b156123de578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb993929190612ac2565b602084016123ec84826128d9565b905060006123fa8585612842565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061175c836015600061247c565b6119a4838383516124418560200190565b611f27565b600061175c6124558484611fe6565b5490565b60405160208101601f19603f8484010116604052828252611e27858585846124f7565b6060600061248a8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816124b0576124b0612a36565b04905060405193506020840160208202810160405281855260005b828110156124eb578451871c8252938701936020909101906001016124cb565b50505050509392505050565b821561257e57602083106125215760208304840193506020838161251d5761251d612a36565b0692505b821561257e5760208390036000818410156125445750600019600884021c61254e565b50600019600882021c5b8554600886021b81845116821982161784525081841161256f57505061095f565b50600194909401939182900391015b5b602082106125a05783548152600190930192601f199091019060200161257f565b811561095f576000600019600884021c8251865482191691161782525050505050565b6000602082840312156125d557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461175c57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561262d57600080fd5b813567ffffffffffffffff8082111561264557600080fd5b818401915084601f83011261265957600080fd5b81358181111561266b5761266b612605565b604051601f8201601f19908116603f0116810190838211818310171561269357612693612605565b816040528281528760208487010111156126ac57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156113035760001960209190910360031b1b16919050565b60005b8381101561270b5781810151838201526020016126f3565b50506000910152565b600082516127268184602087016126f0565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526127748160208601602086016126f0565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156127d557601f198684030189526127c383835161275c565b988401989250908301906001016127a7565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061280d60c0830185612788565b82810360a084015261281f8185612788565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101e1576101e161282c565b80820281158282048414176101e1576101e161282c565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006119f9606083018461275c565b828152604060208201526000611800604083018461275c565b60208152600061175c6020830184612788565b808201808211156101e1576101e161282c565b600083516128fe8184602088016126f0565b8351908301906129128183602088016126f0565b01949350505050565b60008151808452602080850194506020840160005b8381101561294c57815187529582019590820190600101612930565b509495945050505050565b60808152600061296a608083018761291b565b828103602084015261297c818761275c565b90508460408401528281036060840152612996818561275c565b979650505050505050565b86815260c0602082015260006129ba60c083018861291b565b82810360408401526129cc818861275c565b905085606084015282810360808401526129e6818661275c565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612a2957815184529284019290840190600101612a0d565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612a5f606083018661291b565b65ffffffffffff851660208401528281036040840152612a7f818561275c565b9695505050505050565b848152608060208201526000612aa2608083018661291b565b65ffffffffffff851660408401528281036060840152612996818561275c565b606081526000612ad5606083018661275c565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80631a86b550116100505780631a86b550146100c157806345ec9354146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a3660046105c6565b6100ef565b60405190151581526020015b60405180910390f35b61009c6101d4565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b61007f6100cf366004610625565b6101e3565b604051601f19360135815260200161008b565b61009c6102c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101de6102cc565b905090565b6000806101ee6101d4565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925073ffffffffffffffffffffffffffffffffffffffff8316916102a2910160405160208183030381529060405261029c9061070b565b866102fe565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b60006101de61037b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061033757610337610750565b6020908102919091010152600061036f8583837e14010014000000000000000000000000000000000000000000000000000000610385565b60601c95945050505050565b60006101de610464565b600080610390610464565b90503073ffffffffffffffffffffffffffffffffffffffff8216036103c3576103bb868686866104b0565b91505061045c565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061041b908990899089908990600401610766565b602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb91906107c3565b949350505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806104ab573391505090565b919050565b60006104dd6104bf86866104e6565b60ff858116601b0360080285901c166104d8858761053c565b610575565b95945050505050565b600082826040516020016104fb9291906107dc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561056d5761056360ff601b83900360080287901c1683610818565b9150600101610541565b509392505050565b60006020821061059b5760208204840193506020828161059757610597610839565b0691505b508254600882021b60208290038084111561056d576001850154600882021c82179150509392505050565b6000602082840312156105d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461060857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561063a57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461065e57600080fd5b925060208401359150604084013567ffffffffffffffff8082111561068257600080fd5b818601915086601f83011261069657600080fd5b8135818111156106a8576106a861060f565b604051601f8201601f19908116603f011681019083821181831017156106d0576106d061060f565b816040528281528960208487010111156106e957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b8051602080830151919081101561074a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b818110156107a95784518352938301939183019160010161078d565b505060ff9690961660408501525050506060015292915050565b6000602082840312156107d557600080fd5b5051919050565b8281526000602080830184516020860160005b8281101561080b578151845292840192908401906001016107ef565b5091979650505050505050565b808201808211156101ce57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000a608060405234801561001057600080fd5b50612534806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063b9eb8bfb146100d4578063e1af802c146100e757600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461118f565b6100ef565b60405190151581526020015b60405180910390f35b61009c610188565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c6100e23660046111d1565b610197565b61009c6102a0565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061018257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101926102aa565b905090565b60006101aa826101a5610188565b6102dc565b6101b26102a0565b826040516101bf90611182565b73ffffffffffffffffffffffffffffffffffffffff90921682526020820152604001604051809103906000f0801580156101fd573d6000803e3d6000fd5b50604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f5075707065745265676973747279000000000000000000000000000000000000603082015291925061029b9101604051602081830303815290604052610294906111ea565b83836103a4565b919050565b6000610192610464565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102d95750335b90565b73ffffffffffffffffffffffffffffffffffffffff811661033e7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161761046e565b73ffffffffffffffffffffffffffffffffffffffff16146103a0576103628261050a565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610397929190611261565b60405180910390fd5b5050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106103da576103da611299565b60200260200101818152505061045e8482600085604051602001610429919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610647565b50505050565b6000610192610717565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104a7576104a7611299565b602090810291909101015260006104ff7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e1401001400000000000000000000000000000000000000000000000000000061075e565b60601c949350505050565b606081601081901b600061051d8361083d565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615610578576105737fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610854565b6105af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156105e5576105e083610854565b61061c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161062e939291906112c8565b6040516020818303038152906040529350505050919050565b6000610651610717565b90503073ffffffffffffffffffffffffffffffffffffffff8216036106825761067d86868686866108f8565b61070f565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106dc9089908990899089908990600401611392565b600060405180830381600087803b1580156106f657600080fd5b505af115801561070a573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061029b573391505090565b600080610769610717565b90503073ffffffffffffffffffffffffffffffffffffffff82160361079c5761079486868686610914565b915050610835565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906107f49089908990899089906004016113d9565b602060405180830381865afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107949190611408565b949350505050565b600061084b60706010611450565b9190911b919050565b606060005b60108110156108b9577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156108b957600101610859565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610835565b61090d8585610907848761094a565b85610983565b5050505050565b60006109416109238686610c27565b60ff858116601b0360080285901c1661093c858761094a565b610c7d565b95945050505050565b600080805b8360ff1681101561097b5761097160ff601b83900360080287901c1683611450565b915060010161094f565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610a0d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610a0093929190611463565b60405180910390a261045e565b6000610a198585610c27565b90506000610a2686610cce565b905060005b8151811015610afb576000828281518110610a4857610a48611299565b60200260200101519050610a746004826affffffffffffffffffffff1916610d5790919063ffffffff16565b15610af2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610abf908b908b908b908b906004016114a0565b600060405180830381600087803b158015610ad957600080fd5b505af1158015610aed573d6000803e3d6000fd5b505050505b50600101610a2b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610b3093929190611463565b60405180910390a2610b4b828565ffffffffffff1685610d75565b60005b8151811015610c1e576000828281518110610b6b57610b6b611299565b60200260200101519050610b976008826affffffffffffffffffffff1916610d5790919063ffffffff16565b15610c15576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610be2908b908b908b908b906004016114a0565b600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b505050505b50600101610b4e565b50505050505050565b60008282604051602001610c3c9291906114e4565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610ca357602082048401935060208281610c9f57610c9f611520565b0691505b508254600882021b60208290038084111561097b576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d0857610d08611299565b60209081029190910101526000610d407f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610d90565b9050610835610d528260008451610dca565b610e58565b60008160ff1682610d688560581c90565b1660ff1614905092915050565b610d8b83838351610d868560200190565b610e70565b505050565b6060610835610da0858585610f2f565b6000610dc585610db08989610faf565b9060ff166028026038011c64ffffffffff1690565b610fc2565b600081831180610dda5750835182115b15610e17578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103979392919061154f565b60208401610e258482611450565b90506000610e338585611574565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610e698360156000610fe5565b9392505050565b8215610eea5760208310610e9a57602083048401935060208381610e9657610e96611520565b0692505b8215610eea5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610edb57505061045e565b50600194909401939182900391015b5b60208210610f0c5780518455600190930192601f1990910190602001610eeb565b811561045e576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610f449291906114e4565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610e69610fbe8484611060565b5490565b60405160208101601f19603f848401011660405282825261097b858585846110b6565b60606000610ff38560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161101957611019611520565b04905060405193506020840160208202810160405281855260005b82811015611054578451871c825293870193602090910190600101611034565b50505050509392505050565b600082826040516020016110759291906114e4565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561113d57602083106110e0576020830484019350602083816110dc576110dc611520565b0692505b821561113d5760208390036000818410156111035750600019600884021c61110d565b50600019600882021c5b8554600886021b81845116821982161784525081841161112e57505061045e565b50600194909401939182900391015b5b6020821061115f5783548152600190930192601f199091019060200161113e565b811561045e576000600019600884021c8251865482191691161782525050505050565b610fa08061158883390190565b6000602082840312156111a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e6957600080fd5b6000602082840312156111e357600080fd5b5035919050565b8051602080830151919081101561120b576000198160200360031b1b821691505b50919050565b60005b8381101561122c578181015183820152602001611214565b50506000910152565b6000815180845261124d816020860160208601611211565b601f01601f19169290920160200192915050565b6040815260006112746040830185611235565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611329816003860160208901611211565b808401905081600382015284519150611349826004830160208801611211565b0160040195945050505050565b60008151808452602080850194506020840160005b838110156113875781518752958201959082019060010161136b565b509495945050505050565b85815260a0602082015260006113ab60a0830187611356565b60ff8616604084015282810360608401526113c68186611235565b9150508260808301529695505050505050565b8481526080602082015260006113f26080830186611356565b60ff949094166040830152506060015292915050565b60006020828403121561141a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561018257610182611421565b6060815260006114766060830186611356565b65ffffffffffff8516602084015282810360408401526114968185611235565b9695505050505050565b8481526080602082015260006114b96080830186611356565b65ffffffffffff8516604084015282810360608401526114d98185611235565b979650505050505050565b8281526000602080830184516020860160005b82811015611513578151845292840192908401906001016114f7565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006115626060830186611235565b60208301949094525060400152919050565b818103818111156101825761018261142156fe60c060405234801561001057600080fd5b50604051610fa0380380610fa083398101604081905261002f9161007c565b6001600160a01b038216608081905260a08290527f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b031916909117905550506100b6565b6000806040838503121561008f57600080fd5b82516001600160a01b03811681146100a657600080fd5b6020939093015192949293505050565b60805160a051610e9d6101036000396000818160e1015281816101b401528181610239015281816102b70152818161032e01526103a101526000818160b201526101630152610e9d6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c9a34acd11610050578063c9a34acd146101f9578063d72a26651461020c578063e2ed58bd1461021f57610072565b806330b67baa1461015e57806339f898bc146101af57806366c93bdb146101e4575b6040517f894ecc5800000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063894ecc589061010d9033907f000000000000000000000000000000000000000000000000000000000000000090869036906004016109e7565b6000604051808303816000875af115801561012c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101549190810190610b17565b9050805160208201f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a6565b6101f76101f2366004610ba5565b610232565b005b6101f7610207366004610c09565b6102b0565b6101f761021a366004610c63565b610327565b6101f761022d366004610caa565b61039a565b600061025d7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461029d576040516398d49b0360e01b81523360048201526024015b60405180910390fd5b82848688855160208701a4505050505050565b60006102db7f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610316576040516398d49b0360e01b8152336004820152602401610294565b828486845160208601a35050505050565b60006103527f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff82161461038d576040516398d49b0360e01b8152336004820152602401610294565b82825160208401a1505050565b60006103c57f000000000000000000000000000000000000000000000000000000000000000061040f565b5090503373ffffffffffffffffffffffffffffffffffffffff821614610400576040516398d49b0360e01b8152336004820152602401610294565b8284835160208501a250505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061044957610449610cfa565b6020908102919091010152600080806104a27f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006104c7565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b60606000606060006104d76105b1565b90503073ffffffffffffffffffffffffffffffffffffffff82160361050d576105018787876105fd565b935093509350506105a8565b6040517f419b58fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063419b58fd90610563908a908a908a90600401610d10565b600060405180830381865afa158015610580573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105019190810190610d69565b93509350939050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105f8573391505090565b919050565b606060006060600061060e85610705565b905061061b878783610728565b935060006106288661076c565b905080156106fa5761063a88886107a9565b935066ffffffffffffff841667ffffffffffffffff81111561065e5761065e610a3a565b6040519080825280601f01601f191660200182016040528015610688576020820181803683370190505b5092506020830160005b828160ff1610156106f75760006106aa8b8b846107c5565b905060006106c7888460ff166028026038011c64ffffffffff1690565b90506106d68260008387610845565b6106e08185610de2565b9350505080806106ef90610df5565b915050610692565b50505b505093509350939050565b6000600861071560026020610e14565b61071f9190610e27565b9190911c919050565b6060816000036107475750604080516020810190915260008152610765565b60006107538585610910565b905061076181600085610966565b9150505b9392505050565b6000600860018061077f60026020610e14565b6107899190610e14565b6107939190610e14565b61079d9190610e27565b8260ff911c1692915050565b60006107bc6107b88484610991565b5490565b90505b92915050565b600083836040516020016107da929190610e3e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b82156108cc576020831061086f5760208304840193506020838161086b5761086b610e7a565b0692505b82156108cc5760208390036000818410156108925750600019600884021c61089c565b50600019600882021c5b8554600886021b8184511682198216178452508184116108bd57505061090a565b50600194909401939182900391015b5b602082106108ee5783548152600190930192601f19909101906020016108cd565b811561090a5780518454600019600885021c9182169119161781525b50505050565b60008282604051602001610925929190610e3e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60405160208101601f19603f848401011660405282825261098985858584610845565b509392505050565b600082826040516020016109a6929190610e3e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a7957610a79610a3a565b604052919050565b600067ffffffffffffffff821115610a9b57610a9b610a3a565b50601f01601f191660200190565b600082601f830112610aba57600080fd5b8151610acd610ac882610a81565b610a50565b8181526020856020848701011115610ae457600080fd5b60005b83811015610b02578581018201518382018301528101610ae7565b50506000918101602001919091529392505050565b600060208284031215610b2957600080fd5b815167ffffffffffffffff811115610b4057600080fd5b610b4c84828501610aa9565b949350505050565b600082601f830112610b6557600080fd5b8135610b73610ac882610a81565b818152846020838601011115610b8857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610bbd57600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115610bf057600080fd5b610bfc88828901610b54565b9150509295509295909350565b60008060008060808587031215610c1f57600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff811115610c4b57600080fd5b610c5787828801610b54565b91505092959194509250565b60008060408385031215610c7657600080fd5b82359150602083013567ffffffffffffffff811115610c9457600080fd5b610ca085828601610b54565b9150509250929050565b600080600060608486031215610cbf57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610ce457600080fd5b610cf086828701610b54565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006060820185835260206060602085015281865180845260808601915060208801935060005b81811015610d5357845183529383019391830191600101610d37565b5050809350505050826040830152949350505050565b600080600060608486031215610d7e57600080fd5b835167ffffffffffffffff80821115610d9657600080fd5b610da287838801610aa9565b9450602086015193506040860151915080821115610dbf57600080fd5b50610cf086828701610aa9565b634e487b7160e01b600052601160045260246000fd5b808201808211156107bf576107bf610dcc565b600060ff821660ff8103610e0b57610e0b610dcc565b60010192915050565b818103818111156107bf576107bf610dcc565b80820281158282048414176107bf576107bf610dcc565b8281526000602080830184516020860160005b82811015610e6d57815184529284019290840190600101610e51565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000aa164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60c0604081905230608052620000159062000053565b604051809103906000f08015801562000032573d6000803e3d6000fd5b506001600160a01b031660a0523480156200004c57600080fd5b5062000061565b614cc380620035d383390190565b60805160a05161354c6200008760003960006102d7015260006101fb015261354c6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d45780637c5b0335146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100bf575b600080fd5b61008a610085366004612d31565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b6100d26100cd366004612e0b565b6101f6565b005b604051601f193601358152602001610096565b6100d26100f5366004612e0b565b610749565b6100a761077b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c8000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610785565b905090565b6102207f0000000000000000000000000000000000000000000000000000000000000000826107b7565b600080828060200190518101906102379190612eff565b90925090507f9a8d9ccdcfd28f8a8f8f9a8c000000000000000000000000000000000000000071ffffffffffffffffffffffffffffffffffff198316016102c6576040517f0f31c63c00000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19831660048201526024015b60405180910390fd5b60006102d061077b565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316838660405160240161033b9291906001600160a01b0392909216825271ffffffffffffffffffffffffffffffffffff1916602082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f472466c2000000000000000000000000000000000000000000000000000000001790525161039e9190612fd7565b600060405180830381855af49150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150816103f1576103f1816107fc565b6104036103fd86610804565b85610836565b600061040e866108d8565b9050600061041c8583610925565b90507f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601089901c16176001600160a01b03861663ef5d6bbb8261047d6101e7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526001600160a01b03166024820152604401600060405180830381600087803b1580156104dc57600080fd5b505af11580156104f0573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f45524332305265676973747279000000000000000000000000000000000000006030820152610572935001905060405160208183030381529060405261056d90612ff3565b610c23565b6106bf576040517f6e7300000000000000000000000000000000000000000000000000000000000060208201527f65726332302d707570706574000000000000000000000000000000000000000060228201526001600160a01b0387169063b29e4089906030016040516020818303038152906040526105f190612ff3565b6040518263ffffffff1660e01b815260040161060f91815260200190565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b505060408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f455243323052656769737472790000000000000000000000000000000000000060308201526106bf93500190506040516020818303038152906040526106ba90612ff3565b610cb0565b60408051613a3160f11b60208201527f65726332302d707570706574000000000000000000000000000000000000000060228201527f4552433230526567697374727900000000000000000000000000000000000000603082015261073e910160405160208183030381529060405261073790612ff3565b8284610cfc565b505050505050505050565b6040517fb6622fc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f1610dbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107b45750335b90565b6107c18282610dc6565b156107f8576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b805160208201fd5b60006101e1613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610de0565b600061088582600001516040805160f89290921b7fff00000000000000000000000000000000000000000000000000000000000000166020830152805160018184030181526021909201905290565b9050600061089b83602001518460400151610e66565b905060006108b184602001518560400151610e83565b6040805160008152602081019091529091506108d08682868686610eaf565b505050505050565b60006101e17f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d000000000000000000000000000000000000000000610de0565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f466163746f72790000000000000000000000000000000000000000000000000060308201526000916001600160a01b03851691633ae7af0891016040516020818303038152906040526109c890612ff3565b6040516024810186905260440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb9eb8bfb00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152610a65929190600401613043565b6000604051808303816000875af1158015610a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aac919081019061305c565b806020019051810190610abf91906130a5565b90506001600160a01b03831663bfdfaff77f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617604080517f737900000000000000000000000000000000000000000000000000000000000060208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f44656c65676174696f6e00000000000000000000000000000000000000000000603082015201604051602081830303815290604052610ba290612ff3565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16909152610beb929190602481016130ce565b600060405180830381600087803b158015610c0557600080fd5b505af1158015610c19573d6000803e3d6000fd5b5050505092915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610c5c57610c5c6130ed565b60209081029190910101526000610c9c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b610f64565b9050610ca88160f81c90565b949350505050565b610cf9817e14010014000000000000000000000000000000000000000000000000000000610cdc611021565b610ce4611099565b610cec6110d3565b610cf4611158565b6111cf565b50565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110610d3257610d326130ed565b602002602001018181525050610db68482600085604051602001610d81919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000611289565b50505050565b60006101f16112ff565b6000610dd983838051906020012061133e565b9392505050565b6000610dee60706010613119565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316901c601084901c7dffffffffffffffffffffffffffff00000000000000000000000000000000167fffff0000000000000000000000000000000000000000000000000000000000008616171790509392505050565b8151815160009181810160389190911b1760609190911b17610dd9565b60608282604051602001610e9892919061312c565b604051602081830303815290604052905092915050565b6000610eb96112ff565b9050306001600160a01b03821603610edd57610ed886868686866113f8565b6108d0565b6040517f298314fb0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063298314fb90610f2a9089908990899089908990600401613197565b600060405180830381600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b50505050505050505050565b600080610f6f6112ff565b9050306001600160a01b03821603610f9557610f8d86868686611415565b915050610ca8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610fe09089908990899089906004016131e8565b602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8d9190613217565b60408051600180825281830190925260009182919060208083019080368337019050509050605f8160008151811061105b5761105b6130ed565b602002602001019060c581111561107457611074613230565b908160c581111561108757611087613230565b90525061109381611442565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060618160008151811061105b5761105b6130ed565b604080516001808252818301909252606091816020015b60608152602001906001900390816110ea5790505090506040518060400160405280600b81526020017f6e616d65737061636549640000000000000000000000000000000000000000008152508160008151811061114a5761114a6130ed565b602002602001018190525090565b604080516001808252818301909252606091816020015b606081526020019060019003908161116f5790505090506040518060400160405280600c81526020017f746f6b656e4164647265737300000000000000000000000000000000000000008152508160008151811061114a5761114a6130ed565b60006111d96112ff565b9050306001600160a01b038216036111fe576111f98787878787876115fd565b611280565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f499061124d908a908a908a908a908a908a906004016132a0565b600060405180830381600087803b15801561126757600080fd5b505af115801561127b573d6000803e3d6000fd5b505050505b50505050505050565b60006112936112ff565b9050306001600160a01b038216036112b257610ed88686868686611a53565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090610f2a90899089908990899089906004016132ea565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680611339573391505090565b919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611383576113836130ed565b60200260200101818152505082816001815181106113a3576113a36130ed565b602090810291909101015260006113e37f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c65738383630101000160d81b610f64565b90506113ef8160f81c90565b95945050505050565b61140e85858585856114098b611a68565b611aed565b5050505050565b60006113ef6114248686611e26565b60ff858116601b0360080285901c1661143d8587611e7c565b611eb5565b6000601c8251111561146c578151604051635318beb960e01b81526004016102bd91815260200190565b60008080805b85518110156115475760006114b0878381518110611492576114926130ed565b602002602001015160c58111156114ab576114ab613230565b611f06565b9050806000036114c5576001909201916114fd565b82156114fd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061151e5761151e6130ed565b602002602001015160c581111561153757611537613230565b901b949094179350600101611472565b50600581111561156d57604051635318beb960e01b8152600481018290526024016102bd565b8451819003600861158060026020613331565b61158a9190613344565b83901b9390931792600860016115a260026020613331565b6115ac9190613331565b6115b69190613344565b81901b939093179260086001806115cf60026020613331565b6115d99190613331565b6115e39190613331565b6115ed9190613344565b9190911b92909217949350505050565b613a3160f11b867fffff000000000000000000000000000000000000000000000000000000000000161480159061167657507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156116d757613a3160f11b868760405160200161169591815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102bd93929160040161335b565b6116e085611f66565b6116eb8460016121ad565b6116f68360006121ad565b60e084901c60e885901c0160ff168251146117565760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60e085901c60e886901c0160ff168151146117b65760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461182e5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b61183785612349565b61184084612349565b146118925761184e85612349565b61185784612349565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b61189b8561237b565b6118a48461237b565b146118f6576118b28561237b565b6118bb8461237b565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b60005b61190286612349565b811015611998576119276119168583612398565b60c58111156114ab576114ab613230565b6008601b8390030287901c60ff1614611990576008601b8290030286901c60ff166119556119168684612398565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016102bd565b6001016118f9565b506119a2866123b9565b156119fc5785866040516020016119bb91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526102bd9291600401613043565b611a488686868686604051602001611a14919061339c565b60405160208183030381529060405286604051602001611a34919061339c565b604051602081830303815290604052612432565b6108d0866001612509565b61140e8585611a628487611e7c565b856125af565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611ab757507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1611ae47f746273746f72650000000000000000005461626c6573000000000000000000008461284a565b60206000611eb5565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b7957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b6c94939291906133af565b60405180910390a26108d0565b6000611b8487612866565b905060005b8151811015611c5d576000828281518110611ba657611ba66130ed565b60200260200101519050611bd26001826affffffffffffffffffffff19166128ef90919063ffffffff16565b15611c54576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611c21908c908c908c908c908c908c906004016133f9565b600060405180830381600087803b158015611c3b57600080fd5b505af1158015611c4f573d6000803e3d6000fd5b505050505b50600101611b89565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c9494939291906133af565b60405180910390a26000611ca88888611e26565b90506000602087019050611cc082600089518461290d565b6000611ccb8561237b565b1115611d4f576000611cdd8a8a6129cc565b878155905060208601915060008060005b611cf78861237b565b8160ff161015611d4a57611d0c8d8d83612a22565b9250611d278a8260ff166028026038011c64ffffffffff1690565b9150611d36836000848861290d565b611d408286613119565b9450600101611cee565b505050505b60005b8351811015610f58576000848281518110611d6f57611d6f6130ed565b60200260200101519050611d9b6002826affffffffffffffffffffff19166128ef90919063ffffffff16565b15611e1d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611dea908e908e908e908e908e908e906004016133f9565b600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b505050505b50600101611d52565b60008282604051602001611e3b929190613452565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611ead57611ea360ff601b83900360080287901c1683613119565b9150600101611e81565b509392505050565b600060208210611edb57602082048401935060208281611ed757611ed761348e565b0691505b508254600882021b602082900380841115611ead576001850154600882021c82179150509392505050565b6000808260c5811115611f1b57611f1b613230565b60ff1690506061811015611f3557601f1660010192915050565b60618360c5811115611f4957611f49613230565b03611f575750601492915050565b50600092915050565b50919050565b80611f9d576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fa88261237b565b90506005811115611fef576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016102bd565b6000611ffa83612349565b905060006120088383613119565b9050601c81111561204f576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016102bd565b6000805b838110156120fa5760ff601b82900360080287901c1660008190036120a7576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b60208111156120e5576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b6120ef8184613119565b925050600101612053565b5061210485612aa2565b81146121505761211385612aa2565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016102bd565b825b601c8110156108d05760ff601b82900360080287901c1680156121a4576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016102bd565b50600101612152565b801580156121b9575081155b156121da57604051635318beb960e01b8152600060048201526024016102bd565b60006121e58361237b565b9050600581111561220c57604051635318beb960e01b8152600481018290526024016102bd565b600061221784612349565b905060006122258383613119565b9050601c81111561224c57604051635318beb960e01b8152600481018290526024016102bd565b6000805b838110156122b85760006122676119168984612398565b9050806000036122a3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ad8184613119565b925050600101612250565b506122c286612aa2565b81146122ed576122d186612aa2565b604051635318beb960e01b81526004016102bd91815260200190565b825b828110156112805760006123066119168984612398565b90508015612340576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016122ef565b60006008600161235b60026020613331565b6123659190613331565b61236f9190613344565b8260ff911c1692915050565b6000600860018061238e60026020613331565b61235b9190613331565b6000601b8290036008028360ff911c1660c5811115610dd957610dd9613230565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123f2576123f26130ed565b60209081029190910101526000610c9c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b611415565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006124698484610e66565b905060006124778585610e83565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106124b1576124b16130ed565b6020908102919091010152610f587f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611aed565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061253f5761253f6130ed565b6020026020010181815250506125aa7f746273746f72650000000000000000005265736f75726365496473000000000060001b8260008560405160200161258d91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b611a53565b505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361263957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161262c939291906134a4565b60405180910390a2610db6565b60006126458585611e26565b9050600061265286612866565b905060005b8151811015612727576000828281518110612674576126746130ed565b602002602001015190506126a06004826affffffffffffffffffffff19166128ef90919063ffffffff16565b1561271e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906126eb908b908b908b908b906004016134e1565b600060405180830381600087803b15801561270557600080fd5b505af1158015612719573d6000803e3d6000fd5b505050505b50600101612657565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161275c939291906134a4565b60405180910390a2612777828565ffffffffffff1685612ac5565b60005b8151811015611280576000828281518110612797576127976130ed565b602002602001015190506127c36008826affffffffffffffffffffff19166128ef90919063ffffffff16565b15612841576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061280e908b908b908b908b906004016134e1565b600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b505050505b5060010161277a565b6040805160208101849052908101829052600090606001611e3b565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128a0576128a06130ed565b602090810291909101015260006128d87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383612adb565b9050610ca86128ea8260008451612b15565b612ba3565b60008160ff16826129008560581c90565b1660ff1614905092915050565b82156129875760208310612937576020830484019350602083816129335761293361348e565b0692505b82156129875760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411612978575050610db6565b50600194909401939182900391015b5b602082106129a95780518455600190930192601f1990910190602001612988565b8115610db6576000600019600884021c8554835182191691161785555050505050565b600082826040516020016129e1929190613452565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612a37929190613452565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008612ab260026020613331565b612abc9190613344565b9190911c919050565b6125aa83838351612ad68560200190565b61290d565b6060610ca8612aeb858585612a22565b6000612b1085612afb8989612bb4565b9060ff166028026038011c64ffffffffff1690565b612bc7565b600081831180612b255750835182115b15612b62578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102bd9392919061351a565b60208401612b708482613119565b90506000612b7e8585613331565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610dd98360156000612bea565b6000610dd9612bc384846129cc565b5490565b60405160208101601f19603f8484010116604052828252611ead85858584612c65565b60606000612bf88560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612c1e57612c1e61348e565b04905060405193506020840160208202810160405281855260005b82811015612c59578451871c825293870193602090910190600101612c39565b50505050509392505050565b8215612cec5760208310612c8f57602083048401935060208381612c8b57612c8b61348e565b0692505b8215612cec576020839003600081841015612cb25750600019600884021c612cbc565b50600019600882021c5b8554600886021b818451168219821617845250818411612cdd575050610db6565b50600194909401939182900391015b5b60208210612d0e5783548152600190930192601f1990910190602001612ced565b8115610db6576000600019600884021c8251865482191691161782525050505050565b600060208284031215612d4357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dd957600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612dac57612dac612d73565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ddb57612ddb612d73565b604052919050565b600067ffffffffffffffff821115612dfd57612dfd612d73565b50601f01601f191660200190565b600060208284031215612e1d57600080fd5b813567ffffffffffffffff811115612e3457600080fd5b8201601f81018413612e4557600080fd5b8035612e58612e5382612de3565b612db2565b818152856020838501011115612e6d57600080fd5b81602084016020830137600091810160200191909152949350505050565b60005b83811015612ea6578181015183820152602001612e8e565b50506000910152565b6000612ebd612e5384612de3565b9050828152838383011115612ed157600080fd5b610dd9836020830184612e8b565b600082601f830112612ef057600080fd5b610dd983835160208501612eaf565b60008060408385031215612f1257600080fd5b825171ffffffffffffffffffffffffffffffffffff1981168114612f3557600080fd5b602084015190925067ffffffffffffffff80821115612f5357600080fd5b9084019060608287031215612f6757600080fd5b612f6f612d89565b825160ff81168114612f8057600080fd5b8152602083015182811115612f9457600080fd5b612fa088828601612edf565b602083015250604083015182811115612fb857600080fd5b612fc488828601612edf565b6040830152508093505050509250929050565b60008251612fe9818460208701612e8b565b9190910192915050565b80516020808301519190811015611f605760001960209190910360031b1b16919050565b6000815180845261302f816020860160208601612e8b565b601f01601f19169290920160200192915050565b828152604060208201526000610ca86040830184613017565b60006020828403121561306e57600080fd5b815167ffffffffffffffff81111561308557600080fd5b8201601f8101841361309657600080fd5b610ca884825160208401612eaf565b6000602082840312156130b757600080fd5b81516001600160a01b0381168114610dd957600080fd5b8381528260208201526060604082015260006113ef6060830184613017565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1613103565b6000835161313e818460208801612e8b565b835190830190613152818360208801612e8b565b01949350505050565b60008151808452602080850194506020840160005b8381101561318c57815187529582019590820190600101613170565b509495945050505050565b85815260a0602082015260006131b060a083018761315b565b82810360408401526131c28187613017565b905084606084015282810360808401526131dc8185613017565b98975050505050505050565b848152608060208201526000613201608083018661315b565b60ff949094166040830152506060015292915050565b60006020828403121561322957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60008282518085526020808601955060208260051b8401016020860160005b8481101561329357601f19868403018952613281838351613017565b98840198925090830190600101613265565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006132cb60c0830185613246565b82810360a08401526132dd8185613246565b9998505050505050505050565b85815260a06020820152600061330360a083018761315b565b60ff86166040840152828103606084015261331e8186613017565b9150508260808301529695505050505050565b818103818111156101e1576101e1613103565b80820281158282048414176101e1576101e1613103565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006113ef6060830184613017565b602081526000610dd96020830184613246565b6080815260006133c2608083018761315b565b82810360208401526133d48187613017565b905084604084015282810360608401526133ee8185613017565b979650505050505050565b86815260c06020820152600061341260c083018861315b565b82810360408401526134248188613017565b9050856060840152828103608084015261343e8186613017565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b8281101561348157815184529284019290840190600101613465565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6060815260006134b7606083018661315b565b65ffffffffffff8516602084015282810360408401526134d78185613017565b9695505050505050565b8481526080602082015260006134fa608083018661315b565b65ffffffffffff8516604084015282810360608401526133ee8185613017565b60608152600061352d6060830186613017565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50614ca3806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063472466c214610030575b600080fd5b61004361003e366004612558565b610045565b005b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000601083901c16176100958161022b565b61011a576040517fb29e40890000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff84169063b29e408990602401600060405180830381600087803b15801561010157600080fd5b505af1158015610115573d6000803e3d6000fd5b505050505b61012b610126836102d0565b610308565b61013c61013783610354565b610386565b61014d610148836103c2565b6103f4565b8273ffffffffffffffffffffffffffffffffffffffff16633350b6a961017284610438565b60405161017e9061254b565b604051809103906000f08015801561019a573d6000803e3d6000fd5b506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff16602482015260016044820152606401600060405180830381600087803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610264576102646125cf565b602090810291909101015260006102bc7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610485565b90506102c88160f81c90565b949350505050565b6000610302613a3160f11b837f416c6c6f77616e6365730000000000000000000000000000000000000000000061055c565b92915050565b610351817e200100200000000000000000000000000000000000000000000000000000006103346105e3565b61033c6106a0565b6103446106da565b61034c6107b2565b610829565b50565b6000610302613a3160f11b837f42616c616e63657300000000000000000000000000000000000000000000000061055c565b610351817e200100200000000000000000000000000000000000000000000000000000006103b26108fc565b6103ba6106a0565b610344610936565b6000610302613a3160f11b837f4d6574616461746100000000000000000000000000000000000000000000000061055c565b610351817e010102010000000000000000000000000000000000000000000000000000006104206109ad565b6104286109c6565b610430610a8b565b61034c610abe565b60006103027f7379000000000000000000000000000000000000000000000000000000000000837f455243323053797374656d00000000000000000000000000000000000000000061055c565b600080610490610bde565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104c3576104bb86868686610c2a565b9150506102c8565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061051b908990899089908990600401612621565b602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190612650565b600061056a6070601061267f565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061061d5761061d6125cf565b602002602001019060c581111561063657610636612692565b908160c581111561064957610649612692565b81525050606181600181518110610662576106626125cf565b602002602001019060c581111561067b5761067b612692565b908160c581111561068e5761068e612692565b90525061069a81610c60565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610662576106626125cf565b6040805160028082526060828101909352816020015b60608152602001906001900390816106f05790505090506040518060400160405280600781526020017f6163636f756e740000000000000000000000000000000000000000000000000081525081600081518110610750576107506125cf565b60200260200101819052506040518060400160405280600781526020017f7370656e64657200000000000000000000000000000000000000000000000000815250816001815181106107a4576107a46125cf565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816107c95790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106107a4576107a46125cf565b6000610833610bde565b90503073ffffffffffffffffffffffffffffffffffffffff82160361086557610860878787878787610e24565b610222565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f49906108c1908a908a908a908a908a908a90600401612752565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b5050505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110610662576106626125cf565b604080516001808252818301909252606091816020015b606081526020019060019003908161094d5790505090506040518060400160405280600781526020017f6163636f756e7400000000000000000000000000000000000000000000000000815250816000815181106107a4576107a46125cf565b6040805160008082526020820190925261069a81610c60565b6040805160038082526080820190925260009182919060208201606080368337019050509050600081600081518110610a0157610a016125cf565b602002602001019060c5811115610a1a57610a1a612692565b908160c5811115610a2d57610a2d612692565b8152505060c581600181518110610a4657610a466125cf565b602002602001019060c5811115610a5f57610a5f612692565b908160c5811115610a7257610a72612692565b8152505060c581600281518110610662576106626125cf565b60408051600080825260208201909252606091610ab8565b6060815260200190600190039081610aa35790505b50905090565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ad65790505090506040518060400160405280600881526020017f646563696d616c7300000000000000000000000000000000000000000000000081525081600081518110610b3657610b366125cf565b60200260200101819052506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600181518110610b8a57610b8a6125cf565b60200260200101819052506040518060400160405280600681526020017f73796d626f6c0000000000000000000000000000000000000000000000000000815250816002815181106107a4576107a46125cf565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c25573391505090565b919050565b6000610c57610c398686611282565b60ff858116601b0360080285901c16610c5285876112d8565b611311565b95945050505050565b6000601c82511115610c93578151604051635318beb960e01b8152600401610c8a91815260200190565b60405180910390fd5b60008080805b8551811015610d6e576000610cd7878381518110610cb957610cb96125cf565b602002602001015160c5811115610cd257610cd2612692565b611362565b905080600003610cec57600190920191610d24565b8215610d24576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110610d4557610d456125cf565b602002602001015160c5811115610d5e57610d5e612692565b901b949094179350600101610c99565b506005811115610d9457604051635318beb960e01b815260048101829052602401610c8a565b84518190036008610da76002602061279c565b610db191906127af565b83901b939093179260086001610dc96002602061279c565b610dd3919061279c565b610ddd91906127af565b81901b93909317926008600180610df66002602061279c565b610e00919061279c565b610e0a919061279c565b610e1491906127af565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610e9d57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610efe57613a3160f11b8687604051602001610ebc91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610c8a9392916004016127c6565b610f07856113bc565b610f12846001611603565b610f1d836000611603565b60e084901c60e885901c0160ff16825114610f7d5760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60e085901c60e886901c0160ff16815114610fdd5760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110555760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b61105e8561179f565b6110678461179f565b146110b9576110758561179f565b61107e8461179f565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b6110c2856117d1565b6110cb846117d1565b1461111d576110d9856117d1565b6110e2846117d1565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b60005b6111298661179f565b8110156111bf5761114e61113d85836117ee565b60c5811115610cd257610cd2612692565b6008601b8390030287901c60ff16146111b7576008601b8290030286901c60ff1661117c61113d86846117ee565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8a565b600101611120565b506111c986611816565b156112235785866040516020016111e291815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610c8a9291600401612807565b61126f868686868660405160200161123b9190612820565b6040516020818303038152906040528660405160200161125b9190612820565b6040516020818303038152906040526118a7565b61127a86600161198a565b505050505050565b60008282604051602001611297929190612833565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611309576112ff60ff601b83900360080287901c168361267f565b91506001016112dd565b509392505050565b600060208210611337576020820484019350602082816113335761133361286f565b0691505b508254600882021b602082900380841115611309576001850154600882021c82179150509392505050565b6000808260c581111561137757611377612692565b60ff169050606181101561139157601f1660010192915050565b60618360c58111156113a5576113a5612692565b036113b35750601492915050565b50600092915050565b806113f3576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113fe826117d1565b90506005811115611445576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610c8a565b60006114508361179f565b9050600061145e838361267f565b9050601c8111156114a5576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610c8a565b6000805b838110156115505760ff601b82900360080287901c1660008190036114fd576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b602081111561153b576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b611545818461267f565b9250506001016114a9565b5061155a85611a48565b81146115a65761156985611a48565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c8a565b825b601c81101561127a5760ff601b82900360080287901c1680156115fa576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610c8a565b506001016115a8565b8015801561160f575081155b1561163057604051635318beb960e01b815260006004820152602401610c8a565b600061163b836117d1565b9050600581111561166257604051635318beb960e01b815260048101829052602401610c8a565b600061166d8461179f565b9050600061167b838361267f565b9050601c8111156116a257604051635318beb960e01b815260048101829052602401610c8a565b6000805b8381101561170e5760006116bd61113d89846117ee565b9050806000036116f9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611703818461267f565b9250506001016116a6565b5061171886611a48565b81146117435761172786611a48565b604051635318beb960e01b8152600401610c8a91815260200190565b825b8281101561022257600061175c61113d89846117ee565b90508015611796576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611745565b6000600860016117b16002602061279c565b6117bb919061279c565b6117c591906127af565b8260ff911c1692915050565b600060086001806117e46002602061279c565b6117b1919061279c565b6000601b8290036008028360ff911c1660c581111561180f5761180f612692565b9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061184f5761184f6125cf565b602090810291909101015260006102bc7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610c2a565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006118de8484611a6b565b905060006118ec8585611a88565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611926576119266125cf565b602090810291909101015261197e7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611ab4565b50505050505050505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119c0576119c06125cf565b602002602001018181525050611a437f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611a0e91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611ded565b505050565b60006008611a586002602061279c565b611a6291906127af565b9190911c919050565b8151815160009181810160389190911b1760609190911b1761180f565b60608282604051602001611a9d929190612885565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b3394939291906128b4565b60405180910390a261127a565b6000611b4b87611e09565b905060005b8151811015611c24576000828281518110611b6d57611b6d6125cf565b60200260200101519050611b996001826affffffffffffffffffffff1916611e9290919063ffffffff16565b15611c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611be8908c908c908c908c908c908c906004016128fe565b600060405180830381600087803b158015611c0257600080fd5b505af1158015611c16573d6000803e3d6000fd5b505050505b50600101611b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c5b94939291906128b4565b60405180910390a26000611c6f8888611282565b90506000602087019050611c87826000895184611eb0565b6000611c92856117d1565b1115611d16576000611ca48a8a611f6e565b878155905060208601915060008060005b611cbe886117d1565b8160ff161015611d1157611cd38d8d83611fc4565b9250611cee8a8260ff166028026038011c64ffffffffff1690565b9150611cfd8360008488611eb0565b611d07828661267f565b9450600101611cb5565b505050505b60005b835181101561197e576000848281518110611d3657611d366125cf565b60200260200101519050611d626002826affffffffffffffffffffff1916611e9290919063ffffffff16565b15611de4576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611db1908e908e908e908e908e908e906004016128fe565b600060405180830381600087803b158015611dcb57600080fd5b505af1158015611ddf573d6000803e3d6000fd5b505050505b50600101611d19565b611e028585611dfc84876112d8565b85612044565b5050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611e4357611e436125cf565b60209081029190910101526000611e7b7f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836122df565b90506102c8611e8d8260008451612319565b6123a7565b60008160ff1682611ea38560581c90565b1660ff1614905092915050565b8215611f2a5760208310611eda57602083048401935060208381611ed657611ed661286f565b0692505b8215611f2a5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611f1b575050611f68565b50600194909401939182900391015b5b60208210611f4c5780518455600190930192601f1990910190602001611f2b565b8115611f685783548151600019600885021c9182169119161784555b50505050565b60008282604051602001611f83929190612833565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001611fd9929190612833565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036120ce57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516120c193929190612957565b60405180910390a2611f68565b60006120da8585611282565b905060006120e786611e09565b905060005b81518110156121bc576000828281518110612109576121096125cf565b602002602001015190506121356004826affffffffffffffffffffff1916611e9290919063ffffffff16565b156121b3576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612180908b908b908b908b90600401612994565b600060405180830381600087803b15801561219a57600080fd5b505af11580156121ae573d6000803e3d6000fd5b505050505b506001016120ec565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516121f193929190612957565b60405180910390a261220c828565ffffffffffff16856123b8565b60005b815181101561022257600082828151811061222c5761222c6125cf565b602002602001015190506122586008826affffffffffffffffffffff1916611e9290919063ffffffff16565b156122d6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906122a3908b908b908b908b90600401612994565b600060405180830381600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b505050505b5060010161220f565b60606102c86122ef858585611fc4565b6000612314856122ff89896123ce565b9060ff166028026038011c64ffffffffff1690565b6123e1565b6000818311806123295750835182115b15612366578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610c8a939291906129cd565b60208401612374848261267f565b90506000612382858561279c565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061180f8360156000612404565b611a43838383516123c98560200190565b611eb0565b600061180f6123dd8484611f6e565b5490565b60405160208101601f19603f84840101166040528282526113098585858461247f565b606060006124128560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816124385761243861286f565b04905060405193506020840160208202810160405281855260005b82811015612473578451871c825293870193602090910190600101612453565b50505050509392505050565b821561250657602083106124a9576020830484019350602083816124a5576124a561286f565b0692505b82156125065760208390036000818410156124cc5750600019600884021c6124d6565b50600019600882021c5b8554600886021b8184511682198216178452508184116124f7575050611f68565b50600194909401939182900391015b5b602082106125285783548152600190930192601f1990910190602001612507565b8115611f68576000600019600884021c8251865482191691161782525050505050565b6122a4806129f383390190565b6000806040838503121561256b57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461258f57600080fd5b915060208301357fffffffffffffffffffffffffffff000000000000000000000000000000000000811681146125c457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015612616578151875295820195908201906001016125fa565b509495945050505050565b84815260806020820152600061263a60808301866125e5565b60ff949094166040830152506060015292915050565b60006020828403121561266257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561030257610302612669565b634e487b7160e01b600052602160045260246000fd5b60005b838110156126c35781810151838201526020016126ab565b50506000910152565b600081518084526126e48160208601602086016126a8565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561274557601f198684030189526127338383516126cc565b98840198925090830190600101612717565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061277d60c08301856126f8565b82810360a084015261278f81856126f8565b9998505050505050505050565b8181038181111561030257610302612669565b808202811582820484141761030257610302612669565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5760608301846126cc565b8281526040602082015260006102c860408301846126cc565b60208152600061180f60208301846126f8565b8281526000602080830184516020860160005b8281101561286257815184529284019290840190600101612846565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b600083516128978184602088016126a8565b8351908301906128ab8183602088016126a8565b01949350505050565b6080815260006128c760808301876125e5565b82810360208401526128d981876126cc565b905084604084015282810360608401526128f381856126cc565b979650505050505050565b86815260c06020820152600061291760c08301886125e5565b828103604084015261292981886126cc565b9050856060840152828103608084015261294381866126cc565b9150508260a0830152979650505050505050565b60608152600061296a60608301866125e5565b65ffffffffffff85166020840152828103604084015261298a81856126cc565b9695505050505050565b8481526080602082015260006129ad60808301866125e5565b65ffffffffffff8516604084015282810360608401526128f381856126cc565b6060815260006129e060608301866126cc565b6020830194909452506040015291905056fe608060405234801561001057600080fd5b50612284806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063dd62ed3e1461020e578063e1af802c1461022157600080fd5b806340c10f19146101ad57806345ec9354146101c257806370a08231146101cd57806395d89b41146101e057600080fd5b8063119df25f116100d3578063119df25f1461014a57806318160ddd1461016a57806323b872dd14610180578063313ce5671461019357600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063095ea7b314610137575b600080fd5b61010d610108366004611d13565b610229565b60405190151581526020015b60405180910390f35b61012a6102c2565b6040516101199190611da5565b61010d610145366004611dcf565b6102e1565b610152610303565b6040516001600160a01b039091168152602001610119565b61017261030d565b604051908152602001610119565b61010d61018e366004611df9565b610327565b61019b610357565b60405160ff9091168152602001610119565b6101c06101bb366004611dcf565b61036c565b005b36601f190135610172565b6101726101db366004611e35565b6103cc565b61012a6103e7565b6101c06101f6366004611dcf565b6103fc565b61010d610209366004611dcf565b610453565b61017261021c366004611e50565b61046b565b610152610487565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806102bc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60606102dc6102d76102d2610491565b6104af565b6104e1565b905090565b6000806102ec610303565b90506102f9818585610507565b5060019392505050565b60006102dc610665565b60006102dc61032261031d610491565b610697565b6106c9565b600080610332610303565b905061033f8582856106ee565b61034a858585610776565b60019150505b9392505050565b60006102dc6103676102d2610491565b61080c565b610374610854565b6001600160a01b0382166103bc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103c86000838361086f565b5050565b60006102bc6103e16103dc610491565b610a37565b83610a69565b60606102dc6103f76102d2610491565b610ad7565b610404610854565b6001600160a01b038216610447576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6103c88260008361086f565b60008061045e610303565b90506102f9818585610776565b600061035061048061047b610491565b610af6565b8484610b28565b60006102dc610bc3565b60008061049d30610bcd565b90506104a98160101b90565b91505090565b60006102bc613a3160f11b837f4d65746164617461000000000000000000000000000000000000000000000000610c52565b604080516000808252602082019092526060916104ff848383610cca565b949350505050565b6001600160a01b03831661054a576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b03821661058d576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6105a361059b61047b610491565b848484610d91565b6105ab610e48565b6001600160a01b031663c9a34acd7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256105ea866001600160a01b031690565b6001600160a01b0386166040805160208101889052016040516020818303038152906040526040518563ffffffff1660e01b815260040161062e9493929190611e99565b600060405180830381600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106945750335b90565b60006102bc613a3160f11b837f546f74616c537570706c79000000000000000000000000000000000000000000610c52565b6040805160008082526020820190925260006104ff848383630100080160dd1b610f23565b60006107056106fe61047b610491565b8585610b28565b905060001981146107705781811015610763576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103b3565b6107708484848403610507565b50505050565b6001600160a01b0383166107b9576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6001600160a01b0382166107fc576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b61080783838361086f565b505050565b6040805160008082526020820190925260006108498483837e01010201000000000000000000000000000000000000000000000000000000610f23565b60f81c949350505050565b61086d61086030610bcd565b610868610303565b610fe0565b565b6000610879610491565b9050600061088682610697565b9050600061089383610a37565b90506001600160a01b0386166108c5576108c082856108b1856106c9565b6108bb9190611ed4565b611081565b610935565b60006108d18288610a69565b905084811015610926576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101829052604481018690526064016103b3565b61093382888784036110a8565b505b6001600160a01b03851661095c576109578285610951856106c9565b03611081565b610972565b61097281868661096c858a610a69565b016110a8565b61097a610e48565b6001600160a01b031663c9a34acd7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109b9896001600160a01b031690565b6001600160a01b03891660408051602081018b9052016040516020818303038152906040526040518563ffffffff1660e01b81526004016109fd9493929190611e99565b600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b50505050505050505050565b60006102bc613a3160f11b837f42616c616e636573000000000000000000000000000000000000000000000000610c52565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610aae57610aae611ee7565b60209081029190910101526000610ace858383630100080160dd1b610f23565b95945050505050565b604080516000808252602082019092526060916104ff84836001610cca565b60006102bc613a3160f11b837f416c6c6f77616e63657300000000000000000000000000000000000000000000610c52565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110610b6d57610b6d611ee7565b602002602001018181525050826001600160a01b031660001b81600181518110610b9957610b99611ee7565b60209081029190910101526000610bb9868383630100080160dd1b610f23565b9695505050505050565b60006102dc611110565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110610c1257610c12611ee7565b602090810291909101015260006104ff7f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b610f23565b6000610c6060706010611ed4565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16176fffffffffffffffffffffffffffffffff19841690911c1790509392505050565b60606000610cd6611110565b9050306001600160a01b03821603610cfb57610cf385858561114f565b915050610350565b6040517f1e7889770000000000000000000000000000000000000000000000000000000081526001600160a01b03821690631e78897790610d4490889088908890600401611f39565b600060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf39190810190611f65565b509392505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110610dd257610dd2611ee7565b602002602001018181525050826001600160a01b031660001b81600181518110610dfe57610dfe611ee7565b602002602001018181525050610e418582600085604051602001610e2491815260200190565b60408051601f19818403018152919052630100080160dd1b611189565b5050505050565b600080610e5430610bcd565b60408051613a3160f11b60208201527f707570706574000000000000000000000000000000000000000000000000000060228201527f50757070657452656769737472790000000000000000000000000000000000006030820152919250600091610ed89101604051602081830303815290604052610ed290612012565b8361120c565b90506001600160a01b0381166102bc576040517f9434f7e1000000000000000000000000000000000000000000000000000000008152306004820152602481018390526044016103b3565b600080610f2e611110565b9050306001600160a01b03821603610f5457610f4c86868686611289565b9150506104ff565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610f9f908990899089908990600401612039565b602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4c9190612068565b6001600160a01b0381166110357f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176112b6565b6001600160a01b0316146103c85761104c82611352565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103b3929190612081565b60408051600080825260208201835291810183905290610807908490839060608201610e24565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b816000815181106110ea576110ea611ee7565b6020026020010181815250506107708482600085604051602001610e2491815260200190565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061114a573391505090565b919050565b60606104ff61115f858585611480565b60006111848561116f8989611500565b9060ff166028026038011c64ffffffffff1690565b611513565b6000611193611110565b9050306001600160a01b038216036111b7576111b28686868686611536565b611204565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906109fd90899089908990899089906004016120ac565b505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061124557611245611ee7565b6020908102919091010152600061127d8583837e14010014000000000000000000000000000000000000000000000000000000610f23565b60601c95945050505050565b6000610ace611298868661154b565b60ff858116601b0360080285901c166112b185876115a1565b6115d2565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106112ef576112ef611ee7565b602090810291909101015260006113477f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f23565b60601c949350505050565b606081601081901b600061136583611623565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156113c0576113bb7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661163a565b6113f7565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff1983161561141e576114198361163a565b611455565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001611467939291906120f3565b6040516020818303038152906040529350505050919050565b60008383604051602001611495929190612181565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061035061150f84846116c0565b5490565b60405160208101601f19603f8484010116604052828252610d8985858584611716565b610e41858561154584876115a1565b856117e2565b60008282604051602001611560929190612181565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610d89576115c860ff601b83900360080287901c1683611ed4565b91506001016115a6565b6000602082106115f8576020820484019350602082816115f4576115f46121bd565b0691505b508254600882021b602082900380841115610d89576001850154600882021c82179150509392505050565b600061163160706010611ed4565b9190911b919050565b606060005b6010811015611690576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156116905760010161163f565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152806104ff565b600082826040516020016116d5929190612181565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561179d57602083106117405760208304840193506020838161173c5761173c6121bd565b0692505b821561179d5760208390036000818410156117635750600019600884021c61176d565b50600019600882021c5b8554600886021b81845116821982161784525081841161178e575050610770565b50600194909401939182900391015b5b602082106117bf5783548152600190930192601f199091019060200161179e565b8115610770576000600019600884021c8251865482191691161782525050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361186c57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161185f939291906121d3565b60405180910390a2610770565b6000611878858561154b565b9050600061188586611a7d565b905060005b815181101561195a5760008282815181106118a7576118a7611ee7565b602002602001015190506118d36004826affffffffffffffffffffff1916611b0690919063ffffffff16565b15611951576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061191e908b908b908b908b90600401612206565b600060405180830381600087803b15801561193857600080fd5b505af115801561194c573d6000803e3d6000fd5b505050505b5060010161188a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161198f939291906121d3565b60405180910390a26119aa828565ffffffffffff1685611b24565b60005b815181101561065c5760008282815181106119ca576119ca611ee7565b602002602001015190506119f66008826affffffffffffffffffffff1916611b0690919063ffffffff16565b15611a74576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611a41908b908b908b908b90600401612206565b600060405180830381600087803b158015611a5b57600080fd5b505af1158015611a6f573d6000803e3d6000fd5b505050505b506001016119ad565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611ab757611ab7611ee7565b60209081029190910101526000611aef7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361114f565b90506104ff611b018260008451611b3a565b611bc8565b60008160ff1682611b178560581c90565b1660ff1614905092915050565b61080783838351611b358560200190565b611bd9565b600081831180611b4a5750835182115b15611b87578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103b39392919061223f565b60208401611b958482611ed4565b90506000611ba38585612264565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006103508360156000611c98565b8215611c535760208310611c0357602083048401935060208381611bff57611bff6121bd565b0692505b8215611c535760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611c44575050610770565b50600194909401939182900391015b5b60208210611c755780518455600190930192601f1990910190602001611c54565b8115610770576000600019600884021c8554835182191691161785555050505050565b60606000611ca68560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611ccc57611ccc6121bd565b04905060405193506020840160208202810160405281855260005b82811015611d07578451871c825293870193602090910190600101611ce7565b50505050509392505050565b600060208284031215611d2557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461035057600080fd5b60005b83811015611d70578181015183820152602001611d58565b50506000910152565b60008151808452611d91816020860160208601611d55565b601f01601f19169290920160200192915050565b6020815260006103506020830184611d79565b80356001600160a01b038116811461114a57600080fd5b60008060408385031215611de257600080fd5b611deb83611db8565b946020939093013593505050565b600080600060608486031215611e0e57600080fd5b611e1784611db8565b9250611e2560208501611db8565b9150604084013590509250925092565b600060208284031215611e4757600080fd5b61035082611db8565b60008060408385031215611e6357600080fd5b611e6c83611db8565b9150611e7a60208401611db8565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b848152836020820152826040820152608060608201526000610bb96080830184611d79565b634e487b7160e01b600052601160045260246000fd5b808201808211156102bc576102bc611ebe565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015611f2e57815187529582019590820190600101611f12565b509495945050505050565b838152606060208201526000611f526060830185611efd565b905060ff83166040830152949350505050565b600060208284031215611f7757600080fd5b815167ffffffffffffffff80821115611f8f57600080fd5b818401915084601f830112611fa357600080fd5b815181811115611fb557611fb5611e83565b604051601f8201601f19908116603f01168101908382118183101715611fdd57611fdd611e83565b81604052828152876020848701011115611ff657600080fd5b612007836020830160208801611d55565b979650505050505050565b80516020808301519190811015612033576000198160200360031b1b821691505b50919050565b8481526080602082015260006120526080830186611efd565b60ff949094166040830152506060015292915050565b60006020828403121561207a57600080fd5b5051919050565b6040815260006120946040830185611d79565b90506001600160a01b03831660208301529392505050565b85815260a0602082015260006120c560a0830187611efd565b60ff8616604084015282810360608401526120e08186611d79565b9150508260808301529695505050505050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451612154816003860160208901611d55565b808401905081600382015284519150612174826004830160208801611d55565b0160040195945050505050565b8281526000602080830184516020860160005b828110156121b057815184529284019290840190600101612194565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6060815260006121e66060830186611efd565b65ffffffffffff851660208401528281036040840152610bb98185611d79565b84815260806020820152600061221f6080830186611efd565b65ffffffffffff8516604084015282810360608401526120078185611d79565b6060815260006122526060830186611d79565b60208301949094525060400152919050565b818103818111156102bc576102bc611ebe56fea164736f6c6343000818000aa164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000aa164736f6c6343000818000a","sourceMap":"1469:9378:198:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:311;;;:::i;:::-;;6829:444;;;;;;:::i;:::-;;:::i;4900:468::-;;;:::i;3497:338::-;;;:::i;2170:134:112:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9794:515:198;;;;;;:::i;:::-;;:::i;5533:278::-;;;:::i;2939:133:112:-;;;:::i;2640:141::-;;;:::i;7996:954:198:-;;;;;;:::i;:::-;;:::i;2660:146::-;;;:::i;1928:175::-;;;:::i;2456:178:112:-;;;:::i;:::-;;;;;;;:::i;4297:599:198:-;;;:::i;2107:345::-;;;:::i;6180:348::-;;;:::i;10313:532::-;;;;;;:::i;:::-;;:::i;2310:140:112:-;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;2810:312:198:-;;;:::i;7478:514::-;;;;;;:::i;:::-;;:::i;1875:141:112:-;;;:::i;1819:584:106:-;;;:::i;:::-;;;5288:14:207;;5281:22;5263:41;;5251:2;5236:18;1819:584:106;5123:187:207;8954:401:198;;;;;;:::i;:::-;;:::i;3839:454::-;;;:::i;3126:367::-;;;:::i;2022:142:112:-;;;:::i;9359:431:198:-;;;;;;:::i;:::-;;:::i;6532:293::-;;;;;;:::i;:::-;;:::i;5815:361::-;;;:::i;5372:157::-;;;:::i;1572:26:106:-;;;;;;;;;7277:197:198;;;;;;:::i;:::-;;:::i;1613:311::-;1651:13;:11;:13::i;:::-;1643:5;:21;;;;-1:-1:-1;;;;;1643:21:198;;;;;;;;;1690:18;;1670:19;;1690:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1710:12:198;;;1720:1;1710:12;;;;;;;;;1670:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1765:5:198;;996:42:24;2304:38;;;;-1:-1:-1;;;;;1765:5:198;;;2304:38:24;;;;;;-1:-1:-1;1729:43:198;;-1:-1:-1;2241:106:24;1729:43:198;1821:98;1835:5;;;;;;;;;-1:-1:-1;;;;;1835:5:198;1821:98;1853:65;;;;;;;;1883:2;1853:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:13;:98::i;:::-;1813:5;:106;;;;-1:-1:-1;;;;;1813:106:198;;;;;;;;;;1613:311::o;6829:444::-;6914:29;;-1:-1:-1;;;6914:29:198;;-1:-1:-1;;;;;6924:18:198;;;;6914:29;;;5263:41:207;6914:9:198;;;;5236:18:207;;6914:29:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6949:35:198;;-1:-1:-1;;;6949:35:198;;6959:24;;;;6949:35;;;5263:41:207;6949:9:198;;-1:-1:-1;6949:9:198;;-1:-1:-1;5236:18:207;;6949:35:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6991:5:198;;:28;;-1:-1:-1;;;6991:28:198;;-1:-1:-1;;;;;6062:55:207;;;6991:28:198;;;6044:74:207;6134:18;;;6127:34;;;6991:5:198;;;;-1:-1:-1;6991:10:198;;-1:-1:-1;6017:18:207;;6991:28:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7025:37:198;;-1:-1:-1;;;7025:37:198;;7039:4;7025:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;7025:13:198;;-1:-1:-1;7025:13:198;;-1:-1:-1;6351:19:207;;7025:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7073:38:198;;6754:25:207;;;7096:1:198;;-1:-1:-1;;;;;;7073:38:198;;;-1:-1:-1;7073:38:198;;6742:2:207;6727:18;7073:38:198;;;;;;;7117:5;;:28;;;;;-1:-1:-1;;;;;6062:55:207;;;7117:28:198;;;6044:74:207;6134:18;;;6127:34;;;7117:5:198;;;;:10;;6017:18:207;;7117:28:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7152:54;7161:5;;;;;;;;;-1:-1:-1;;;;;7161:5:198;-1:-1:-1;;;;;7161:17:198;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7182:23;7195:10;7182;:23;:::i;:::-;7152:8;:54::i;:::-;7221:5;;:21;;-1:-1:-1;;;7221:21:198;;-1:-1:-1;;;;;7465:55:207;;;7221:21:198;;;7447:74:207;7212:56:198;;7221:5;;:15;;7420:18:207;;7221:21:198;;;;;;;;;;;;;;;;;;;;;;;7212:56;6829:444;;;:::o;4900:468::-;4993:5;;:22;;-1:-1:-1;;;4993:22:198;;4979:6;4993:22;;;6044:74:207;;;5010:4:198;6134:18:207;;;6127:34;4979:6:198;-1:-1:-1;;;;;4993:5:198;;:10;;6017:18:207;;4993:22:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:14:198;;-1:-1:-1;;;5022:14:198;;-1:-1:-1;;;;;7465:55:207;;5022:14:198;;;7447:74:207;5022:8:198;;-1:-1:-1;5022:8:198;;-1:-1:-1;7420:18:207;;5022:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5042:5:198;;:47;;-1:-1:-1;;;5042:47:198;;5064:4;5042:47;;;6044:74:207;-1:-1:-1;;6134:18:207;;;6127:34;-1:-1:-1;;;;;5042:5:198;;;;-1:-1:-1;5042:13:198;;-1:-1:-1;6017:18:207;;5042:47:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5107:5:198;;:47;;-1:-1:-1;;;5107:47:198;;-1:-1:-1;;;;;8449:15:207;;;5107:47:198;;;8431:34:207;5140:6:198;8481:18:207;;;8474:43;5149:4:198;8533:18:207;;;8526:34;5096:59:198;;5107:5;;:18;;8343::207;;5107:47:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5096:10;:59::i;:::-;5170:5;;:19;;;-1:-1:-1;;;5170:19:198;;;;5161:35;;-1:-1:-1;;;;;5170:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5191:4;5161:8;:35::i;:::-;5212:5;;:36;;-1:-1:-1;;;5212:36:198;;-1:-1:-1;;;;;8824:15:207;;;5212:36:198;;;8806:34:207;5242:4:198;8856:18:207;;;8849:43;5203:65:198;;5212:5;;:15;;8718:18:207;;5212:36:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5203:8:198;:65::i;:::-;5284:5;;:21;;-1:-1:-1;;;5284:21:198;;-1:-1:-1;;;;;7465:55:207;;;5284:21:198;;;7447:74:207;5275:34:198;;5284:5;;:15;;7420:18:207;;5284:21:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5307:1;5275:8;:34::i;:::-;5324:5;;:32;;-1:-1:-1;;;5324:32:198;;5348:6;5324:32;;;7447:74:207;5315:48:198;;-1:-1:-1;;;;;5324:5:198;;:15;;7420:18:207;;5324:32:198;;;;;;;;;;;;;;;;;;;;;;;5315:48;4950:418;4900:468::o;3497:338::-;3533:37;;-1:-1:-1;;;3533:37:198;;3547:4;3533:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;3533:13:198;;;;6351:19:207;;3533:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3581:46:198;;3622:4;6754:25:207;;3613:6:198;;-1:-1:-1;3598:4:198;;-1:-1:-1;3581:46:198;;6742:2:207;6727:18;3581:46:198;;;;;;;3633:25;;;;;;;;;;;;;;;;;;:14;:25::i;:::-;3679:5;;:36;;-1:-1:-1;;;3679:36:198;;3701:6;3679:36;;;6044:74:207;3710:4:198;6134:18:207;;;6127:34;3664:12:198;;-1:-1:-1;;;;;3679:5:198;;:13;;6017:18:207;;3679:36:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3664:51;;3721:14;:12;:14::i;:::-;3741:19;3752:7;3741:10;:19::i;:::-;3776:5;;:47;;-1:-1:-1;;;3776:47:198;;3800:4;3776:47;;;8806:34:207;3815:6:198;8856:18:207;;;8849:43;3767:63:198;;-1:-1:-1;;;;;3776:5:198;;:15;;8718:18:207;;3776:47:198;8571:327:207;2170:134:112;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:112;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;9794:515:198:-;9907:27;;-1:-1:-1;;;9907:27:198;;-1:-1:-1;;;;;9917:16:198;;;;9907:27;;;5263:41:207;9907:9:198;;;;5236:18:207;;9907:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9940:39:198;;-1:-1:-1;;;9940:39:198;;-1:-1:-1;;9950:28:198;;9940:39;;;5263:41:207;9940:9:198;;-1:-1:-1;9940:9:198;;-1:-1:-1;5236:18:207;;9940:39:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9985:28:198;;-1:-1:-1;;;9985:28:198;;9995:17;;;9985:28;;;5263:41:207;9985:9:198;;-1:-1:-1;9985:9:198;;-1:-1:-1;5236:18:207;;9985:28:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10057:5:198;;:24;;-1:-1:-1;;;10057:24:198;;10043:6;10057:24;;;6044:74:207;;;6134:18;;;6127:34;;;10043:6:198;-1:-1:-1;;;;;;10057:5:198;;;;-1:-1:-1;10057:10:198;;6017:18:207;;10057:24:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10088:14:198;;-1:-1:-1;;;10088:14:198;;-1:-1:-1;;;;;7465:55:207;;10088:14:198;;;7447:74:207;10088:8:198;;-1:-1:-1;10088:8:198;;-1:-1:-1;7420:18:207;;10088:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10108:5:198;;:38;;-1:-1:-1;;;10108:38:198;;10130:4;10108:38;;;6044:74:207;6134:18;;;6127:34;;;-1:-1:-1;;;;;10108:5:198;;;;-1:-1:-1;10108:13:198;;-1:-1:-1;6017:18:207;;10108:38:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10169:92:198;;10237:4;10169:92;;;9313:74:207;9403:18;;;9396:34;;;9446:18;;;9439:34;;;10153:15:198;;;;10192:35;;9286:18:207;;10169:92:198;;;;-1:-1:-1;;10169:92:198;;;;;;;;;;;;;;;;;;;;;;;10153:109;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10268:5:198;;:36;;-1:-1:-1;;;10268:36:198;;-1:-1:-1;;;;;8449:15:207;;;10268:36:198;;;8431:34:207;8501:15;;;8481:18;;;8474:43;8533:18;;;8526:34;;;10268:5:198;;;;-1:-1:-1;10268:18:198;;-1:-1:-1;8343:18:207;;10268:36:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9901:408;9794:515;;;:::o;5533:278::-;5596:5;;:33;;-1:-1:-1;;;5596:33:198;;5615:4;5596:33;;;6044:74:207;5622:6:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;5596:5:198;;;;:10;;6017:18:207;;5596:33:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5658:99:198;;;5737:4;5658:99;;;10688:74:207;5744:6:198;10815:18:207;;;10808:43;5752:4:198;10867:18:207;;;;10860:43;;;;5658:99:198;;;;;;;;;;10661:18:207;;;;5658:99:198;;;;;;;;;-1:-1:-1;;;5658:99:198;;;5635:128;;;;;:15;;-1:-1:-1;5635:15:198;;-1:-1:-1;5635:128:198;;5658:99;5635:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5769:5:198;;:37;;-1:-1:-1;;;5769:37:198;;5792:6;5769:37;;;6044:74:207;5801:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;5769:5:198;;;;-1:-1:-1;5769:14:198;;-1:-1:-1;6017:18:207;;5769:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2939:133:112:-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:112;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:112;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;7996:954:198:-;8112:29;;-1:-1:-1;;;8112:29:198;;-1:-1:-1;;;;;8122:18:198;;;;8112:29;;;5263:41:207;8112:9:198;;;;5236:18:207;;8112:29:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8147:27:198;;-1:-1:-1;;;8147:27:198;;-1:-1:-1;;;;;8157:16:198;;;;8147:27;;;5263:41:207;8147:9:198;;-1:-1:-1;8147:9:198;;-1:-1:-1;5236:18:207;;8147:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8180:32:198;;-1:-1:-1;;;8180:32:198;;-1:-1:-1;;;;;8190:21:198;;;;8180:32;;;5263:41:207;8180:9:198;;-1:-1:-1;8180:9:198;;-1:-1:-1;5236:18:207;;8180:32:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8218:29:198;;-1:-1:-1;;;8218:29:198;;8228:18;;;;8218:29;;;5263:41:207;8218:9:198;;-1:-1:-1;8218:9:198;;-1:-1:-1;5236:18:207;;8218:29:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8254:5:198;;:24;;-1:-1:-1;;;8254:24:198;;-1:-1:-1;;;;;6062:55:207;;;8254:24:198;;;6044:74:207;6134:18;;;6127:34;;;8254:5:198;;;;-1:-1:-1;8254:10:198;;-1:-1:-1;6017:18:207;;8254:24:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8293:5:198;;:21;;-1:-1:-1;;;8293:21:198;;-1:-1:-1;;;;;7465:55:207;;;8293:21:198;;;7447:74:207;8284:39:198;;-1:-1:-1;8293:5:198;;;;-1:-1:-1;8293:15:198;;7420:18:207;;8293:21:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8316:6;8284:8;:39::i;:::-;8330:14;;-1:-1:-1;;;8330:14:198;;-1:-1:-1;;;;;7465:55:207;;8330:14:198;;;7447:74:207;8330:8:198;;;;7420:18:207;;8330:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8350:5:198;;:32;;-1:-1:-1;;;8350:32:198;;-1:-1:-1;;;;;6062:55:207;;;8350:32:198;;;6044:74:207;6134:18;;;6127:34;;;8350:5:198;;;;-1:-1:-1;8350:13:198;;-1:-1:-1;6017:18:207;;8350:32:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8389:37:198;;-1:-1:-1;;;8389:37:198;;8403:4;8389:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;8389:13:198;;;;6351:19:207;;8389:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8452:2;-1:-1:-1;;;;;8437:26:198;8446:4;-1:-1:-1;;;;;8437:26:198;;8456:6;8437:26;;;;6754:25:207;;6742:2;6727:18;;6608:177;8437:26:198;;;;;;;;8469:17;;-1:-1:-1;;;8469:17:198;;-1:-1:-1;;;;;7465:55:207;;8469:17:198;;;7447:74:207;8469:8:198;;;;7420:18:207;;8469:17:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8503:5:198;;:36;;-1:-1:-1;;;8503:36:198;;-1:-1:-1;;;;;8449:15:207;;;8503:36:198;;;8431:34:207;8501:15;;;8481:18;;;8474:43;8533:18;;;8526:34;;;8492:48:198;;-1:-1:-1;8503:5:198;;;;-1:-1:-1;8503:18:198;;8343::207;;8503:36:198;8142:424:207;8492:48:198;8555:5;;:19;;;-1:-1:-1;;;8555:19:198;;;;8546:37;;-1:-1:-1;;;;;8555:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;8546:37;-1:-1:-1;;8594:8:198;:29;8590:180;;8642:5;;:30;;-1:-1:-1;;;8642:30:198;;-1:-1:-1;;;;;8824:15:207;;;8642:30:198;;;8806:34:207;8876:15;;;8856:18;;;8849:43;8633:50:198;;8642:5;;:15;;8718:18:207;;8642:30:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8674:8;8633;:50::i;:::-;8590:180;;;8713:5;;:30;;-1:-1:-1;;;8713:30:198;;-1:-1:-1;;;;;8824:15:207;;;8713:30:198;;;8806:34:207;8876:15;;;8856:18;;;8849:43;8704:59:198;;8713:5;;:15;;8718:18:207;;8713:30:198;8571:327:207;8704:59:198;8788:2;-1:-1:-1;;;;;8780:10:198;:4;-1:-1:-1;;;;;8780:10:198;;8776:170;;8809:5;;:21;;-1:-1:-1;;;8809:21:198;;-1:-1:-1;;;;;7465:55:207;;;8809:21:198;;;7447:74:207;8800:39:198;;8809:5;;:15;;7420:18:207;;8809:21:198;7301:226:207;8800:39:198;8776:170;;;8869:5;;:21;;-1:-1:-1;;;8869:21:198;;-1:-1:-1;;;;;7465:55:207;;;8869:21:198;;;7447:74:207;8860:34:198;;8869:5;;:15;;7420:18:207;;8869:21:198;7301:226:207;8860:34:198;8911:5;;:19;;-1:-1:-1;;;8911:19:198;;-1:-1:-1;;;;;7465:55:207;;;8911:19:198;;;7447:74:207;8902:37:198;;8911:5;;:15;;7420:18:207;;8911:19:198;7301:226:207;2660:146:198;2706:5;;:12;;;;;;;;2697:31;;-1:-1:-1;;;;;2706:5:198;;:10;;:12;;;;;:5;;:12;;;;;;;:5;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2706:12:198;;;;;;;;;;;;:::i;:::-;2697:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2743:5;;:14;;;;;;;;2734:31;;-1:-1:-1;;;;;2743:5:198;;:12;;:14;;;;;:5;;:14;;;;;;;:5;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2743:14:198;;;;;;;;;;;;:::i;:::-;2734:31;;;;;;;;;;;;;;;;;:8;:31::i;:::-;2780:5;;:16;;;;;;;;2771:30;;-1:-1:-1;;;;;2780:5:198;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2771:30;;2798:2;2771:8;:30::i;:::-;2660:146::o;1928:175::-;1981:5;;1962:40;;-1:-1:-1;;;;;1981:5:198;1973:28;;1962:10;:40::i;:::-;2008:90;2017:65;1523::59;2017:18:198;:65::i;2036:45::-;2017:18;:65::i;:::-;2092:4;2008:8;:90::i;2456:178:112:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;4297:599:198:-;4375:5;;:22;;-1:-1:-1;;;4375:22:198;;4361:6;4375:22;;;6044:74:207;;;4392:4:198;6134:18:207;;;6127:34;4361:6:198;-1:-1:-1;;;;;4375:5:198;;:10;;6017:18:207;;4375:22:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4404:14:198;;-1:-1:-1;;;4404:14:198;;-1:-1:-1;;;;;7465:55:207;;4404:14:198;;;7447:74:207;4404:8:198;;-1:-1:-1;4404:8:198;;-1:-1:-1;7420:18:207;;4404:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4424:5:198;;:34;;-1:-1:-1;;;4424:34:198;;4446:4;4424:34;;;6044:74:207;4453:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;4424:5:198;;;;-1:-1:-1;4424:13:198;;-1:-1:-1;6017:18:207;;4424:34:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4465:37:198;;-1:-1:-1;;;4465:37:198;;4479:4;4465:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;4465:13:198;;;;6351:19:207;;4465:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4513:37:198;;4545:4;6754:25:207;;4536:6:198;;-1:-1:-1;;;;;;4513:37:198;;;-1:-1:-1;4513:37:198;;6742:2:207;6727:18;4513:37:198;;;;;;;4556:30;;;;;;;;;;;;;;;;;;:14;:30::i;:::-;4607:5;;:47;;-1:-1:-1;;;4607:47:198;;-1:-1:-1;;;;;8449:15:207;;;4607:47:198;;;8431:34:207;4640:6:198;8481:18:207;;;8474:43;4649:4:198;8533:18:207;;;8526:34;4592:12:198;;4607:5;;:18;;8343::207;;4607:47:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4592:62;;4660:14;:12;:14::i;:::-;4680:19;4691:7;4680:10;:19::i;:::-;4714:5;;:19;;;-1:-1:-1;;;4714:19:198;;;;4705:35;;-1:-1:-1;;;;;4714:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4705:35;4756:5;;:36;;-1:-1:-1;;;4756:36:198;;-1:-1:-1;;;;;8824:15:207;;;4756:36:198;;;8806:34:207;4786:4:198;8856:18:207;;;8849:43;4747:49:198;;4756:5;;:15;;8718:18:207;;4756:36:198;8571:327:207;4747:49:198;4812:5;;:21;;-1:-1:-1;;;4812:21:198;;-1:-1:-1;;;;;7465:55:207;;;4812:21:198;;;7447:74:207;4803:34:198;;4812:5;;:15;;7420:18:207;;4812:21:198;7301:226:207;4803:34:198;4852:5;;:32;;-1:-1:-1;;;4852:32:198;;4876:6;4852:32;;;7447:74:207;4843:48:198;;-1:-1:-1;;;;;4852:5:198;;:15;;7420:18:207;;4852:32:198;7301:226:207;4843:48:198;4332:564;;4297:599::o;2107:345::-;2180:27;2210:127;2231:5;;;;;;;;;-1:-1:-1;;;;;2231:5:198;2210:127;2266:65;;;;;;;;2296:2;2266:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2210:13;:127::i;:::-;2180:157;-1:-1:-1;2343:47:198;-1:-1:-1;;;;;2354:35:198;;;;2343:10;:47::i;:::-;2440:5;;2396:51;;-1:-1:-1;;;;;2407:39:198;;;2440:5;;2407:39;;2396:10;:51::i;6180:348::-;6284:5;;:24;;-1:-1:-1;;;6284:24:198;;6270:6;6284:24;;;6044:74:207;;;6301:6:198;6134:18:207;;;6127:34;6270:6:198;-1:-1:-1;;;;;6284:5:198;;:10;;6017:18:207;;6284:24:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6315:14:198;;-1:-1:-1;;;6315:14:198;;-1:-1:-1;;;;;7465:55:207;;6315:14:198;;;7447:74:207;6315:8:198;;-1:-1:-1;6315:8:198;;-1:-1:-1;7420:18:207;;6315:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6335:5:198;;:34;;-1:-1:-1;;;6335:34:198;;6357:4;6335:34;;;6044:74:207;6364:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;6335:5:198;;;;-1:-1:-1;6335:13:198;;-1:-1:-1;6017:18:207;;6335:34:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6392:77:198;;-1:-1:-1;;;;;10706:55:207;;6392:77:198;;;10688:74:207;6456:6:198;10815:18:207;;;10808:43;6464:4:198;10867:18:207;;;10860:43;6376:15:198;;;;-1:-1:-1;;;6415:33:198;10661:18:207;;6392:77:198;;;;-1:-1:-1;;6392:77:198;;;;;;;;;;;;;;;;;;;;;;;6376:94;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:5:198;;:47;;-1:-1:-1;;;6476:47:198;;-1:-1:-1;;;;;8449:15:207;;;6476:47:198;;;8431:34:207;6509:6:198;8481:18:207;;;8474:43;6518:4:198;8533:18:207;;;8526:34;6476:5:198;;;;-1:-1:-1;6476:18:198;;-1:-1:-1;8343:18:207;;6476:47:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10313:532::-;10430:27;;-1:-1:-1;;;10430:27:198;;-1:-1:-1;;;;;10440:16:198;;;;10430:27;;;5263:41:207;10430:9:198;;;;5236:18:207;;10430:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10463:41:198;;-1:-1:-1;;;10463:41:198;;-1:-1:-1;;10473:30:198;;10463:41;;;5263::207;10463:9:198;;-1:-1:-1;10463:9:198;;-1:-1:-1;5236:18:207;;10463:41:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10510:34:198;;-1:-1:-1;;;10510:34:198;;10520:23;;;10510:34;;;5263:41:207;10510:9:198;;-1:-1:-1;10510:9:198;;-1:-1:-1;5236:18:207;;10510:34:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10588:5:198;;:28;;-1:-1:-1;;;10588:28:198;;10574:6;10588:28;;;6044:74:207;;;6134:18;;;6127:34;;;10574:6:198;-1:-1:-1;;;;;;10588:5:198;;;;-1:-1:-1;10588:10:198;;6017:18:207;;10588:28:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10623:14:198;;-1:-1:-1;;;10623:14:198;;-1:-1:-1;;;;;7465:55:207;;10623:14:198;;;7447:74:207;10623:8:198;;-1:-1:-1;10623:8:198;;-1:-1:-1;7420:18:207;;10623:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10643:5:198;;:40;;-1:-1:-1;;;10643:40:198;;10665:4;10643:40;;;6044:74:207;6134:18;;;6127:34;;;-1:-1:-1;;;;;10643:5:198;;;;-1:-1:-1;10643:13:198;;-1:-1:-1;6017:18:207;;10643:40:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10706:87:198;;-1:-1:-1;;;;;9331:55:207;;10706:87:198;;;9313:74:207;9403:18;;;9396:34;;;9446:18;;;9439:34;;;10690:15:198;;;;-1:-1:-1;;;10729:33:198;9286:18:207;;10706:87:198;9111:368:207;2310:140:112;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:312:198;2843:37;;-1:-1:-1;;;2843:37:198;;2857:4;2843:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;2843:13:198;;;;6351:19:207;;2843:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2891:43:198;;2929:4;6754:25:207;;2920:6:198;;-1:-1:-1;2908:1:198;;-1:-1:-1;2891:43:198;;6742:2:207;6727:18;2891:43:198;;;;;;;2940:22;;;;;;;;;;;;;;;;;;:14;:22::i;:::-;2968:5;;:33;;-1:-1:-1;;;2968:33:198;;2987:6;2968:33;;;6044:74:207;2996:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;2968:5:198;;;;:10;;6017:18:207;;2968:33:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3007:14;:12;:14::i;:::-;3037:5;;:19;;;-1:-1:-1;;;3037:19:198;;;;3028:35;;-1:-1:-1;;;;;3037:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;3028:35;3078:5;;:32;;-1:-1:-1;;;3078:32:198;;3102:6;3078:32;;;7447:74:207;3069:48:198;;-1:-1:-1;;;;;3078:5:198;;:15;;7420:18:207;;3078:32:198;7301:226:207;7478:514:198;7541:27;;-1:-1:-1;;;7541:27:198;;-1:-1:-1;;;;;7551:16:198;;;;7541:27;;;5263:41:207;7541:9:198;;;;5236:18:207;;7541:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7574:5:198;;:33;;-1:-1:-1;;;7574:33:198;;7593:4;7574:33;;;6044:74:207;6134:18;;;6127:34;;;-1:-1:-1;;;;;7574:5:198;;;;-1:-1:-1;7574:10:198;;-1:-1:-1;6017:18:207;;7574:33:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7614:37:198;;-1:-1:-1;;;7614:37:198;;7628:4;7614:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;7614:13:198;;-1:-1:-1;7614:13:198;;-1:-1:-1;6351:19:207;;7614:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7662:35:198;;6754:25:207;;;-1:-1:-1;;;;;7662:35:198;;;-1:-1:-1;7679:4:198;;-1:-1:-1;7662:35:198;;6742:2:207;6727:18;7662:35:198;;;;;;;7714:5;;:26;;-1:-1:-1;;;7714:26:198;;-1:-1:-1;;;;;6062:55:207;;;7714:26:198;;;6044:74:207;6134:18;;;6127:34;;;7703:38:198;;7714:5;;:14;;6017:18:207;;7714:26:198;5870:297:207;7703:38:198;7756:5;;:19;;;-1:-1:-1;;;7756:19:198;;;;7747:37;;-1:-1:-1;;;;;7756:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;7747:37;-1:-1:-1;;;;;7795:19:198;;7803:4;7795:19;7791:197;;7833:5;;:30;;-1:-1:-1;;;7833:30:198;;7857:4;7833:30;;;7447:74:207;7824:48:198;;-1:-1:-1;;;;;7833:5:198;;:15;;7420:18:207;;7833:30:198;7301:226:207;7791:197:198;7902:5;;:30;;-1:-1:-1;;;7902:30:198;;7926:4;7902:30;;;7447:74:207;7893:43:198;;-1:-1:-1;;;;;7902:5:198;;:15;;7420:18:207;;7902:30:198;7301:226:207;7893:43:198;7953:5;;:19;;-1:-1:-1;;;7953:19:198;;-1:-1:-1;;;;;7465:55:207;;;7953:19:198;;;7447:74:207;7944:37:198;;7953:5;;:15;;7420:18:207;;7953:19:198;7301:226:207;1875:141:112;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:106;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:106;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;6044:74:207;;;2221:17:106;6134:18:207;;;6127:34;2196:43:106;;;;;;;;;6017:18:207;;;2196:43:106;;;-1:-1:-1;;1671:64:106;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:106;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:106:o;8954:401:198:-;9063:27;;-1:-1:-1;;;9063:27:198;;-1:-1:-1;;;;;9073:16:198;;;;9063:27;;;5263:41:207;9063:9:198;;;;5236:18:207;;9063:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9096:41:198;;-1:-1:-1;;;9096:41:198;;-1:-1:-1;;9106:30:198;;9096:41;;;5263::207;9096:9:198;;-1:-1:-1;9096:9:198;;-1:-1:-1;5236:18:207;;9096:41:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9143:34:198;;-1:-1:-1;;;9143:34:198;;9153:23;;;9143:34;;;5263:41:207;9143:9:198;;-1:-1:-1;9143:9:198;;-1:-1:-1;5236:18:207;;9143:34:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9184:5:198;;:26;;-1:-1:-1;;;9184:26:198;;-1:-1:-1;;;;;6062:55:207;;;9184:26:198;;;6044:74:207;6134:18;;;6127:34;;;9184:5:198;;;;-1:-1:-1;9184:10:198;;-1:-1:-1;6017:18:207;;9184:26:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9232:85:198;;;-1:-1:-1;;;;;9331:55:207;;9232:85:198;;;9313:74:207;9403:18;;;9396:34;;;9446:18;;;;9439:34;;;9232:85:198;;;;;;;;;;9286:18:207;;;;9232:85:198;;;;;;;;;-1:-1:-1;;;9232:85:198;;;9216:102;;;;;:15;;-1:-1:-1;9216:15:198;;-1:-1:-1;9216:102:198;;9232:85;9216:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9324:5:198;;:26;;;;;-1:-1:-1;;;;;6062:55:207;;;9324:26:198;;;6044:74:207;6134:18;;;6127:34;;;9324:5:198;;;;-1:-1:-1;9324:10:198;;-1:-1:-1;6017:18:207;;9324:26:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8954:401;;;:::o;3839:454::-;3876:5;;:31;;-1:-1:-1;;;3876:31:198;;3895:4;3876:31;;;6044:74:207;3902:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;3876:5:198;;;;:10;;6017:18:207;;3876:31:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3914:37:198;;-1:-1:-1;;;3914:37:198;;3928:4;3914:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;3914:13:198;;-1:-1:-1;3914:13:198;;-1:-1:-1;6351:19:207;;3914:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3962:46:198;;4003:4;6754:25:207;;3994:6:198;;-1:-1:-1;3979:4:198;;-1:-1:-1;3962:46:198;;6742:2:207;6727:18;3962:46:198;;;;;;;4014:26;;;;;;;;;;;;;;;;;;:14;:26::i;:::-;4061:5;;:37;;-1:-1:-1;;;4061:37:198;;4084:6;4061:37;;;6044:74:207;4093:4:198;6134:18:207;;;6127:34;4046:12:198;;-1:-1:-1;;;;;4061:5:198;;:14;;6017:18:207;;4061:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4046:52;;4104:14;:12;:14::i;:::-;4124:19;4135:7;4124:10;:19::i;:::-;4158:5;;:19;;;-1:-1:-1;;;4158:19:198;;;;4149:35;;-1:-1:-1;;;;;4158:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;4149:35;4200:5;;:30;;-1:-1:-1;;;4200:30:198;;4224:4;4200:30;;;7447:74:207;4191:43:198;;-1:-1:-1;;;;;4200:5:198;;:15;;7420:18:207;;4200:30:198;7301:226:207;3126:367:198;3159:5;;:33;;-1:-1:-1;;;3159:33:198;;3178:6;3159:33;;;6044:74:207;3187:4:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;3159:5:198;;;;:10;;6017:18:207;;3159:33:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3199:37:198;;-1:-1:-1;;;3199:37:198;;3213:4;3199:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;3199:13:198;;-1:-1:-1;3199:13:198;;-1:-1:-1;6351:19:207;;3199:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3247:45:198;;3285:6;6754:25:207;;3281:1:198;;-1:-1:-1;3264:6:198;;-1:-1:-1;3247:45:198;;6742:2:207;6727:18;3247:45:198;;;;;;;3298:22;;;;;;;;;;;;;;;;;;:14;:22::i;:::-;3326:5;;:35;;;;;3345:6;3326:35;;;6044:74:207;3354:6:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;3326:5:198;;;;:10;;6017:18:207;;3326:35:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3367:14;:12;:14::i;:::-;3397:5;;:19;;;-1:-1:-1;;;3397:19:198;;;;3388:44;;-1:-1:-1;;;;;3397:5:198;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3418:13;3388:8;:44::i;:::-;3447:5;;:32;;-1:-1:-1;;;3447:32:198;;3471:6;3447:32;;;7447:74:207;3438:50:198;;-1:-1:-1;;;;;3447:5:198;;:15;;7420:18:207;;3447:32:198;;;;;;;;;;;;;;;;;;;;;;2022:142:112;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:112;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;9359:431:198:-;9472:27;;-1:-1:-1;;;9472:27:198;;-1:-1:-1;;;;;9482:16:198;;;;9472:27;;;5263:41:207;9472:9:198;;;;5236:18:207;;9472:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9505:41:198;;-1:-1:-1;;;9505:41:198;;-1:-1:-1;;9515:30:198;;9505:41;;;5263::207;9505:9:198;;-1:-1:-1;9505:9:198;;-1:-1:-1;5236:18:207;;9505:41:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9552:34:198;;-1:-1:-1;;;9552:34:198;;9562:23;;;9552:34;;;5263:41:207;9552:9:198;;-1:-1:-1;9552:9:198;;-1:-1:-1;5236:18:207;;9552:34:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9593:5:198;;:37;;-1:-1:-1;;;9593:37:198;;9612:4;9593:37;;;6044:74:207;6134:18;;;6127:34;;;-1:-1:-1;;;;;9593:5:198;;;;-1:-1:-1;9593:10:198;;-1:-1:-1;6017:18:207;;9593:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9652:96:198;;;9718:4;9652:96;;;9313:74:207;9403:18;;;9396:34;;;9446:18;;;;9439:34;;;9652:96:198;;;;;;;;;;9286:18:207;;;;9652:96:198;;;;;;;;;-1:-1:-1;;;9652:96:198;;;9636:113;;;;;:15;;-1:-1:-1;9636:15:198;;-1:-1:-1;9636:113:198;;9652:96;9636:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9755:5:198;;:30;;-1:-1:-1;;;9755:30:198;;-1:-1:-1;;;;;6062:55:207;;;9755:30:198;;;6044:74:207;6134:18;;;6127:34;;;9755:5:198;;;;-1:-1:-1;9755:14:198;;-1:-1:-1;6017:18:207;;9755:30:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9359:431;;;:::o;6532:293::-;6591:27;;-1:-1:-1;;;6591:27:198;;-1:-1:-1;;;;;6601:16:198;;;;6591:27;;;5263:41:207;6591:9:198;;;;5236:18:207;;6591:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6625:37:198;;-1:-1:-1;;;6625:37:198;;6639:4;6625:37;;;6379:41:207;;;6436:18;;;6429:50;;;6495:18;;;6488:50;;;6554:18;;;6547:50;6625:13:198;;-1:-1:-1;6625:13:198;;-1:-1:-1;6351:19:207;;6625:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6673:32:198;;6754:25:207;;;-1:-1:-1;;;;;6673:32:198;;;-1:-1:-1;6690:1:198;;-1:-1:-1;6673:32:198;;6742:2:207;6727:18;6673:32:198;;;;;;;6711:5;;:22;;-1:-1:-1;;;6711:22:198;;-1:-1:-1;;;;;6062:55:207;;;6711:22:198;;;6044:74:207;6134:18;;;6127:34;;;6711:5:198;;;;:10;;6017:18:207;;6711:22:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6740:37;6749:5;;;;;;;;;-1:-1:-1;;;;;6749:5:198;-1:-1:-1;;;;;6749:17:198;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5815:361;5921:5;;:22;;-1:-1:-1;;;5921:22:198;;5907:6;5921:22;;;6044:74:207;;;5938:4:198;6134:18:207;;;6127:34;5907:6:198;-1:-1:-1;;;;;5921:5:198;;:10;;6017:18:207;;5921:22:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5950:14:198;;-1:-1:-1;;;5950:14:198;;-1:-1:-1;;;;;7465:55:207;;5950:14:198;;;7447:74:207;5950:8:198;;-1:-1:-1;5950:8:198;;-1:-1:-1;7420:18:207;;5950:14:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5970:5:198;;:36;;-1:-1:-1;;;5970:36:198;;5992:4;5970:36;;;6044:74:207;5999:6:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;5970:5:198;;;;-1:-1:-1;5970:13:198;;-1:-1:-1;6017:18:207;;5970:36:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6029:88:198;;6097:4;6029:88;;;10688:74:207;6104:6:198;10815:18:207;;;10808:43;6112:4:198;10867:18:207;;;10860:43;6013:15:198;;;;6052:35;;10661:18:207;;6029:88:198;10437:472:207;5372:157:198;5423:5;;:44;;-1:-1:-1;;;5423:44:198;;5442:4;5423:44;;;6044:74:207;-1:-1:-1;;6134:18:207;;;6127:34;-1:-1:-1;;;;;5423:5:198;;;;:10;;6017:18:207;;5423:44:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:107;309:37;;-1:-1:-1;;;;;5473:15:198;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5496:5:198;;:28;;-1:-1:-1;;;5496:28:198;;5515:4;5496:28;;;6044:74:207;5496:5:198;6134:18:207;;;6127:34;-1:-1:-1;;;;;5496:5:198;;;;-1:-1:-1;5496:10:198;;-1:-1:-1;6017:18:207;;5496:28:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:197;7339:27;;-1:-1:-1;;;7339:27:198;;-1:-1:-1;;;;;7349:16:198;;;;7339:27;;;5263:41:207;7339:9:198;;;;5236:18:207;;7339:27:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7384:5:198;;:25;;-1:-1:-1;;;7384:25:198;;-1:-1:-1;;;;;6062:55:207;;;7384:25:198;;;6044:74:207;6134:18;;;6127:34;;;7373:37:198;;-1:-1:-1;7384:5:198;;;;-1:-1:-1;7384:13:198;;6017:18:207;;7384:25:198;5870:297:207;7373:37:198;7426:5;;:34;;-1:-1:-1;;;7426:34:198;;7450:4;7426:34;;;8806::207;-1:-1:-1;;;;;8876:15:207;;;8856:18;;;8849:43;7417:52:198;;7426:5;;:15;;8718:18:207;;7426:34:198;8571:327:207;232:137:105;264:16;313:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;286:40;;330:5;-1:-1:-1;;;;;330:16:105;;347:18;:16;:18::i;:::-;330:36;;;;;;;;;;-1:-1:-1;;;;;7465:55:207;;;330:36:105;;;7447:74:207;7420:18;;330:36:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:137;:::o;820:613:135:-;426:54:134;;443:18;426:54;;;14547:92:207;463:16:134;14655:11:207;;;14648:100;932:20:135;;;;1022:39;;14764:12:207;;426:54:134;;;;;;;;;;;;418:63;;;:::i;1022:39:135:-;984:78;-1:-1:-1;;;;;;1070:34:135;;1066:82;;1126:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1112:31;;1066:82;1205:5;-1:-1:-1;;;;;1205:19:135;;1225:11;1249:9;1260:8;1238:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1205:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;803:76:134;;;820:14;803:76;;;16529:92:207;836:16:134;16637:11:207;;;16630:100;854:24:134;16746:12:207;;;16739:101;1340:89:135;;-1:-1:-1;16856:12:207;;-1:-1:-1;803:76:134;;;;;;;;;;;;795:85;;;:::i;:::-;385:5:16;1554:33:59;;;;;1531:18;1523:65;1340:17:135;:89::i;:::-;1317:113;820:613;-1:-1:-1;;;;;820:613:135:o;5209:262:106:-;5271:1;5266;:6;5262:203;;5293:41;;;;;17081:2:207;17063:21;;;17120:2;17100:18;;;17093:30;17159:34;17154:2;17139:18;;17132:62;17230:4;17225:2;17210:18;;17203:32;17267:3;17252:19;;16879:398;5293:41:106;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;:::-;;;;;;;;5448:6;:4;:6::i;3262:157::-;3322:9;3317:96;;3352:30;;;;;18518:2:207;18500:21;;;18557:2;18537:18;;;18530:30;18596:25;18591:2;18576:18;;18569:53;18654:2;18639:18;;18316:347;3352:30:106;;;;;;;;3396:6;:4;:6::i;330:580:0:-;394:39;;;;;;;;;18874:21:207;;;;18931:2;18911:18;;;18904:30;18970:22;18950:18;;;18943:50;309:37:107;19045:20:207;;;19038:52;394:8:0;;;;19010:19:207;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:107;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:107;;883:22:0;;;;;;;309:37:107;883:20:0;:22;;;;;;;;;;;;;;;;;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;18874:21:207;;;;18931:2;18911:18;;;18904:30;18970:22;18950:18;;;18943:50;309:37:107;19045:20:207;;;19038:52;953:23:0;;-1:-1:-1;987:8:0;;;;19010:19:207;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;24480:2:207;1214:49:0;;;24462:21:207;24519:2;24499:18;;;24492:30;24558:27;24538:18;;;24531:55;24603:18;;1214:49:0;24278:349:207;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;17902:344:106:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;26595:2:207;26577:21;;;26634:2;26614:18;;;26607:30;26673:34;26668:2;26653:18;;26646:62;26744:6;26739:2;26724:18;;26717:34;26783:3;26768:19;;26393:400;18062:43:106;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;4136:307:74:-;4246:16;;;4260:1;4246:16;;;;;;;;;4196:13;;;;4246:16;;;;;;;;;;;;-1:-1:-1;4246:16:74;4217:45;;4301:11;4268:9;4278:1;4268:12;;;;;;;;:::i;:::-;;;;;;;;;;:45;4320:13;4336:64;1269:66;4373:9;4320:13;1449:66;4336:26;:64::i;:::-;4414:23;;;4136:307;-1:-1:-1;;;;4136:307:74:o;3622:277:106:-;3690:1;-1:-1:-1;;;;;3685:6:106;:1;-1:-1:-1;;;;;3685:6:106;;3681:212;;3712:44;;;;;28079:2:207;28061:21;;;28118:2;28098:18;;;28091:30;28157:34;28152:2;28137:18;;28130:62;28228:7;28223:2;28208:18;;28201:35;28268:3;28253:19;;27877:401;3712:44:106;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;506:219:104:-;543:10;592:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;628:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;663:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;692:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;570:152;;;;;:::i;:::-;-1:-1:-1;;;;;29513:15:207;;;29495:34;;29565:15;;;29560:2;29545:18;;29538:43;29617:15;;;29612:2;29597:18;;29590:43;29669:15;;;29664:2;29649:18;;29642:43;29421:3;29406:19;570:152:104;;;;;;;;;;;;;;;;;;;;;;;559:163;;506:219;:::o;3969:335:138:-;4107:16;;;4121:1;4107:16;;;;;;;;;4050:20;;;;4107:16;;;;;;;;;;;;-1:-1:-1;4107:16:138;4078:45;;4162:11;4129:9;4139:1;4129:12;;;;;;;;:::i;:::-;;;;;;;;;;:45;4181:13;4197:64;4224:8;4234:9;4181:13;1147:66;4197:26;:64::i;:::-;4275:23;;;-1:-1:-1;;;3969:335:138;;;;;:::o;2409:432:106:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;9313:74:207;;;2677:17:106;9403:18:207;;;9396:34;;;;2712:4:106;9446:18:207;;;9439:34;2489:11:106;;1671:64;2586:43;;9286:18:207;;2652:67:106;;;-1:-1:-1;;2652:67:106;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:106;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:106;2820:7;:14;;;;;;;;2409:432::o;1754:155:0:-;1818:86;317:28:107;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;6754:25:207;;;6742:2;6727:18;;6608:177;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;17702:457:24:-;17859:7;17874:21;17898:17;:15;:17::i;:::-;17874:41;-1:-1:-1;17950:4:24;-1:-1:-1;;;;;17925:30:24;;;17921:234;;17972:68;17997:7;18006:8;18016:10;18028:11;17972:24;:68::i;:::-;17965:75;;;;;17921:234;18068:80;;;;;-1:-1:-1;;;;;18068:36:24;;;;;:80;;18105:7;;18114:8;;18124:10;;18136:11;;18068:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17702:457::-;;;;;;;:::o;5630:121:120:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:120;;;;;;;;;;;;;;;;;;;;5685:15;:59::i;1766:227:24:-;996:42;1855:22;1816:7;;-1:-1:-1;;;;;1855:22:24;;1883:106;;1931:10;1924:17;;;1766:227;:::o;38022:541:20:-;38179:7;38316:242;38360:59;38401:7;38410:8;38360:40;:59::i;:::-;38437:31;;;;4479:19:3;:27;537:1:30;4478:44:3;4444:79;;;4431:93;38486:63:20;38525:11;38538:10;38486:38;:63::i;:::-;38316:17;:242::i;181:376:120:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;52539:191:20:-;52641:7;52705;52714:8;52688:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;52688:35:20;;;;;;;;;52678:46;;52688:35;52678:46;;;;44145:22;52671:53;;52539:191;-1:-1:-1;;;52539:191:20:o;53556:242::-;53652:7;;;53691:84;53711:10;53707:14;;:1;:14;53691:84;;;53736:32;4431:93:3;4479:19;:27;;;537:1:30;4478:44:3;4444:79;;;4431:93;53736:32:20;;:::i;:::-;;-1:-1:-1;53723:3:20;;53691:84;;;-1:-1:-1;53787:6:20;53556:242;-1:-1:-1;;;53556:242:20:o;8879:812:19:-;8977:14;9013:2;9003:6;:12;8999:112;;9072:2;9063:6;:11;9045:29;;;;9094:2;9084:12;;;;;;:::i;:::-;;;;8999:112;-1:-1:-1;9302:21:19;;9287:12;9275:25;;9271:53;9450:2;:11;;;9532:22;;;9528:159;;;9668:1;9652:14;9648:22;9642:29;9627:12;9612:13;9608:32;9604:68;9596:6;9593:80;9583:90;;8993:698;8879:812;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:196:207:-;82:20;;-1:-1:-1;;;;;131:54:207;;121:65;;111:93;;200:1;197;190:12;215:322;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;476:2;461:18;;448:32;;-1:-1:-1;527:2:207;512:18;;;499:32;;215:322;-1:-1:-1;;;215:322:207:o;542:681::-;713:2;765:21;;;835:13;;738:18;;;857:22;;;684:4;;713:2;936:15;;;;910:2;895:18;;;684:4;979:218;993:6;990:1;987:13;979:218;;;1058:13;;-1:-1:-1;;;;;1054:62:207;1042:75;;1172:15;;;;1137:12;;;;1015:1;1008:9;979:218;;;-1:-1:-1;1214:3:207;;542:681;-1:-1:-1;;;;;;542:681:207:o;1228:472::-;1323:6;1331;1339;1347;1355;1408:3;1396:9;1387:7;1383:23;1379:33;1376:53;;;1425:1;1422;1415:12;1376:53;1448:29;1467:9;1448:29;:::i;:::-;1438:39;;1496:38;1530:2;1519:9;1515:18;1496:38;:::i;:::-;1486:48;;1553:38;1587:2;1576:9;1572:18;1553:38;:::i;:::-;1228:472;;;;-1:-1:-1;1543:48:207;;1638:2;1623:18;;1610:32;;-1:-1:-1;1689:3:207;1674:19;1661:33;;1228:472;-1:-1:-1;;1228:472:207:o;1705:1697::-;1909:4;1938:2;1978;1967:9;1963:18;2008:2;1997:9;1990:21;2031:6;2066;2060:13;2097:6;2089;2082:22;2123:2;2113:12;;2156:2;2145:9;2141:18;2134:25;;2218:2;2208:6;2205:1;2201:14;2190:9;2186:30;2182:39;2256:2;2248:6;2244:15;2277:1;2298;2308:1065;2324:6;2319:3;2316:15;2308:1065;;;2393:22;;;-1:-1:-1;;2389:95:207;2377:108;;2508:13;;2595:9;;-1:-1:-1;;;;;2591:58:207;2576:74;;2689:11;;2683:18;2721:15;;;2714:27;;;2802:19;;2548:15;;;2834:24;;;2924:21;;;;2969:1;;2892:2;2880:15;;;2983:282;2999:8;2994:3;2991:17;2983:282;;;3080:15;;3097:66;3076:88;3062:103;;3234:17;;;;3027:1;3018:11;;;;;3191:14;;;;2983:282;;;-1:-1:-1;3351:12:207;;;;3288:5;-1:-1:-1;;;3316:15:207;;;;2350:1;2341:11;2308:1065;;;-1:-1:-1;3390:6:207;;1705:1697;-1:-1:-1;;;;;;;;;1705:1697:207:o;3407:250::-;3492:1;3502:113;3516:6;3513:1;3510:13;3502:113;;;3592:11;;;3586:18;3573:11;;;3566:39;3538:2;3531:10;3502:113;;;-1:-1:-1;;3649:1:207;3631:16;;3624:27;3407:250::o;3662:330::-;3704:3;3742:5;3736:12;3769:6;3764:3;3757:19;3785:76;3854:6;3847:4;3842:3;3838:14;3831:4;3824:5;3820:16;3785:76;:::i;:::-;3906:2;3894:15;-1:-1:-1;;3890:88:207;3881:98;;;;3981:4;3877:109;;3662:330;-1:-1:-1;;3662:330:207:o;3997:862::-;4159:4;4188:2;4228;4217:9;4213:18;4258:2;4247:9;4240:21;4281:6;4316;4310:13;4347:6;4339;4332:22;4385:2;4374:9;4370:18;4363:25;;4447:2;4437:6;4434:1;4430:14;4419:9;4415:30;4411:39;4397:53;;4485:2;4477:6;4473:15;4506:1;4516:314;4530:6;4527:1;4524:13;4516:314;;;-1:-1:-1;;4607:9:207;4599:6;4595:22;4591:95;4586:3;4579:108;4710:40;4743:6;4734;4728:13;4710:40;:::i;:::-;4700:50;-1:-1:-1;4808:12:207;;;;4773:15;;;;4552:1;4545:9;4516:314;;;-1:-1:-1;4847:6:207;;3997:862;-1:-1:-1;;;;;;;3997:862:207:o;4864:254::-;4932:6;4940;4993:2;4981:9;4972:7;4968:23;4964:32;4961:52;;;5009:1;5006;4999:12;4961:52;5032:29;5051:9;5032:29;:::i;:::-;5022:39;5108:2;5093:18;;;;5080:32;;-1:-1:-1;;;4864:254:207:o;5315:184::-;-1:-1:-1;;;5364:1:207;5357:88;5464:4;5461:1;5454:15;5488:4;5485:1;5478:15;5504:361;-1:-1:-1;;;;;5706:6:207;5702:55;5691:9;5684:74;5794:2;5789;5778:9;5774:18;5767:30;5665:4;5814:45;5855:2;5844:9;5840:18;5832:6;5814:45;:::i;6790:184::-;6860:6;6913:2;6901:9;6892:7;6888:23;6884:32;6881:52;;;6929:1;6926;6919:12;6881:52;-1:-1:-1;6952:16:207;;6790:184;-1:-1:-1;6790:184:207:o;6979:::-;-1:-1:-1;;;7028:1:207;7021:88;7128:4;7125:1;7118:15;7152:4;7149:1;7142:15;7168:128;7235:9;;;7256:11;;;7253:37;;;7270:18;;:::i;7860:277::-;7927:6;7980:2;7968:9;7959:7;7955:23;7951:32;7948:52;;;7996:1;7993;7986:12;7948:52;8028:9;8022:16;8081:5;8074:13;8067:21;8060:5;8057:32;8047:60;;8103:1;8100;8093:12;8047:60;8126:5;7860:277;-1:-1:-1;;;7860:277:207:o;9484:218::-;9631:2;9620:9;9613:21;9594:4;9651:45;9692:2;9681:9;9677:18;9669:6;9651:45;:::i;10914:956::-;10994:6;11047:2;11035:9;11026:7;11022:23;11018:32;11015:52;;;11063:1;11060;11053:12;11015:52;11096:9;11090:16;11125:18;11166:2;11158:6;11155:14;11152:34;;;11182:1;11179;11172:12;11152:34;11220:6;11209:9;11205:22;11195:32;;11265:7;11258:4;11254:2;11250:13;11246:27;11236:55;;11287:1;11284;11277:12;11236:55;11316:2;11310:9;11338:2;11334;11331:10;11328:36;;;11344:18;;:::i;:::-;11478:2;11472:9;11540:4;11532:13;;-1:-1:-1;;11528:22:207;;;11552:2;11524:31;11520:40;11508:53;;;11576:18;;;11596:22;;;11573:46;11570:72;;;11622:18;;:::i;:::-;11662:10;11658:2;11651:22;11697:2;11689:6;11682:18;11737:7;11732:2;11727;11723;11719:11;11715:20;11712:33;11709:53;;;11758:1;11755;11748:12;11709:53;11771:68;11836:2;11831;11823:6;11819:15;11814:2;11810;11806:11;11771:68;:::i;:::-;11858:6;10914:956;-1:-1:-1;;;;;;;10914:956:207:o;11875:273::-;11943:6;11996:2;11984:9;11975:7;11971:23;11967:32;11964:52;;;12012:1;12009;12002:12;11964:52;12044:9;12038:16;12094:4;12087:5;12083:16;12076:5;12073:27;12063:55;;12114:1;12111;12104:12;12153:437;12232:1;12228:12;;;;12275;;;12296:61;;12350:4;12342:6;12338:17;12328:27;;12296:61;12403:2;12395:6;12392:14;12372:18;12369:38;12366:218;;-1:-1:-1;;;12437:1:207;12430:88;12541:4;12538:1;12531:15;12569:4;12566:1;12559:15;12366:218;;12153:437;;;:::o;12897:430::-;13094:66;13086:6;13082:79;13077:3;13070:92;13052:3;13191:6;13185:13;13207:74;13274:6;13270:1;13265:3;13261:11;13254:4;13246:6;13242:17;13207:74;:::i;:::-;13301:16;;;;13319:1;13297:24;;12897:430;-1:-1:-1;;;12897:430:207:o;13332:287::-;13461:3;13499:6;13493:13;13515:66;13574:6;13569:3;13562:4;13554:6;13550:17;13515:66;:::i;:::-;13597:16;;;;;13332:287;-1:-1:-1;;13332:287:207:o;14787:357::-;14905:12;;14952:4;14941:16;;;14935:23;;14905:12;14970:16;;14967:171;;;-1:-1:-1;;15044:4:207;15040:17;;;;15037:1;15033:25;15029:98;15018:110;;14787:357;-1:-1:-1;14787:357:207:o;15149:828::-;15390:66;15382:6;15378:79;15367:9;15360:98;15494:2;15489;15478:9;15474:18;15467:30;15552:4;15543:6;15537:13;15533:24;15528:2;15517:9;15513:18;15506:52;15341:4;15605:2;15597:6;15593:15;15587:22;15647:4;15640;15629:9;15625:20;15618:34;15675:52;15722:3;15711:9;15707:19;15693:12;15675:52;:::i;:::-;15661:66;;15776:2;15768:6;15764:15;15758:22;-1:-1:-1;;15833:9:207;15825:6;15821:22;15817:95;15811:3;15800:9;15796:19;15789:124;15930:41;15964:6;15948:14;15930:41;:::i;:::-;15922:49;15149:828;-1:-1:-1;;;;;;15149:828:207:o;17446:348::-;17676:2;17665:9;17658:21;17639:4;17696:49;17741:2;17730:9;17726:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;17696:49;17688:57;;17781:6;17776:2;17765:9;17761:18;17754:34;17446:348;;;;:::o;17963:::-;18193:2;18182:9;18175:21;18156:4;18213:49;18258:2;18247:9;18243:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;19227:781;19277:3;19318:5;19312:12;19347:36;19373:9;19347:36;:::i;:::-;19402:1;19419:17;;;19445:191;;;;19650:1;19645:357;;;;19412:590;;19445:191;19493:66;19482:9;19478:82;19473:3;19466:95;19616:6;19609:14;19602:22;19594:6;19590:35;19585:3;19581:45;19574:52;;19445:191;;19645:357;19676:5;19673:1;19666:16;19705:4;19750;19747:1;19737:18;19777:1;19791:165;19805:6;19802:1;19799:13;19791:165;;;19883:14;;19870:11;;;19863:35;19926:16;;;;19820:10;;19791:165;;;19795:3;;;19985:6;19980:3;19976:16;19969:23;;19412:590;;;;;19227:781;;;;:::o;20013:664::-;20363:66;20358:3;20351:79;20333:3;20449:47;20492:2;20487:3;20483:12;20475:6;20449:47;:::i;:::-;20516:66;20505:78;;20612:31;20607:2;20599:11;;20592:52;20668:2;20660:11;;20013:664;-1:-1:-1;;;20013:664:207:o;21201:694::-;21544:66;21539:3;21532:79;21514:3;21640:6;21634:13;21656:75;21724:6;21719:2;21714:3;21710:12;21703:4;21695:6;21691:17;21656:75;:::i;:::-;21795:66;21790:2;21750:16;;;;21782:11;;;21775:87;-1:-1:-1;21886:2:207;21878:11;;21201:694;-1:-1:-1;21201:694:207:o;21900:543::-;22002:2;21997:3;21994:11;21991:446;;;22038:1;22062:5;22059:1;22052:16;22106:4;22103:1;22093:18;22176:2;22164:10;22160:19;22157:1;22153:27;22147:4;22143:38;22212:4;22200:10;22197:20;22194:47;;;-1:-1:-1;22235:4:207;22194:47;22290:2;22285:3;22281:12;22278:1;22274:20;22268:4;22264:31;22254:41;;22345:82;22363:2;22356:5;22353:13;22345:82;;;22408:17;;;22389:1;22378:13;22345:82;;;22349:3;;;21900:543;;;:::o;22679:1464::-;22805:3;22799:10;22832:18;22824:6;22821:30;22818:56;;;22854:18;;:::i;:::-;22883:97;22973:6;22933:38;22965:4;22959:11;22933:38;:::i;:::-;22927:4;22883:97;:::i;:::-;23035:4;;23092:2;23081:14;;23109:1;23104:782;;;;23930:1;23947:6;23944:89;;;-1:-1:-1;23999:19:207;;;23993:26;23944:89;-1:-1:-1;;22576:1:207;22572:11;;;22568:84;22564:89;22554:100;22660:1;22656:11;;;22551:117;24046:81;;23074:1063;;23104:782;19174:1;19167:14;;;19211:4;19198:18;;-1:-1:-1;;23140:79:207;;;23317:236;23331:7;23328:1;23325:14;23317:236;;;23420:19;;;23414:26;23399:42;;23512:27;;;;23480:1;23468:14;;;;23347:19;;23317:236;;;23321:3;23581:6;23572:7;23569:19;23566:261;;;23642:19;;;23636:26;-1:-1:-1;;23725:1:207;23721:14;;;23737:3;23717:24;23713:97;23709:102;23694:118;23679:134;;23566:261;-1:-1:-1;;;;;23873:1:207;23857:14;;;23853:22;23840:36;;-1:-1:-1;22679:1464:207:o;24148:125::-;24213:9;;;24234:10;;;24231:36;;;24247:18;;:::i;24632:197::-;24760:3;24785:38;24819:3;24811:6;24785:38;:::i;24834:1554::-;24953:3;24947:4;24944:13;24941:26;;24960:5;;24834:1554::o;24941:26::-;24990:37;25022:3;25016:10;24990:37;:::i;:::-;25050:18;25042:6;25039:30;25036:56;;;25072:18;;:::i;:::-;25101:97;25191:6;25151:38;25183:4;25177:11;25151:38;:::i;25101:97::-;25224:1;25252:2;25244:6;25241:14;25269:1;25264:867;;;;26175:1;26192:6;26189:89;;;-1:-1:-1;26244:19:207;;;26238:26;26189:89;-1:-1:-1;;22576:1:207;22572:11;;;22568:84;22564:89;22554:100;22660:1;22656:11;;;22551:117;26291:81;;25234:1148;;25264:867;19174:1;19167:14;;;19211:4;19198:18;;-1:-1:-1;;25300:79:207;;;19174:1;19167:14;;;19211:4;19198:18;;25523:9;25545:251;25559:7;25556:1;25553:14;25545:251;;;25641:21;;;25635:28;25620:44;;25691:1;25764:18;;;;25719:15;;;;25582:4;25575:12;25545:251;;;25549:3;25824:6;25815:7;25812:19;25809:263;;;25885:21;;25879:28;-1:-1:-1;;25982:3:207;25970:1;25966:14;;;25962:24;25958:97;25954:102;25939:118;25924:134;;;-1:-1:-1;;26118:1:207;26102:14;;;26098:22;26085:36;;-1:-1:-1;24834:1554:207:o;26798:440::-;27048:2;27037:9;27030:21;27011:4;27074:49;27119:2;27108:9;27104:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;27074:49;27171:9;27163:6;27159:22;27154:2;27143:9;27139:18;27132:50;27199:33;27225:6;27217;27199:33;:::i;27243:440::-;27493:2;27482:9;27475:21;27456:4;27519:49;27564:2;27553:9;27549:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;27688:184;-1:-1:-1;;;27737:1:207;27730:88;27837:4;27834:1;27827:15;27861:4;27858:1;27851:15;28283:397;28513:2;28502:9;28495:21;28476:4;28533:49;28578:2;28567:9;28563:18;17359:2;17347:15;;17394:12;17387:4;17378:14;;17371:36;17432:2;17423:12;;17282:159;28533:49;28525:57;;-1:-1:-1;;;;;28622:6:207;28618:55;28613:2;28602:9;28598:18;28591:83;28283:397;;;;:::o;28685:::-;28915:2;28904:9;28897:21;28878:4;28935:49;28980:2;28969:9;28965:18;17876:2;17864:15;;17911:12;17904:4;17895:14;;17888:36;17949:2;17940:12;;17799:159;30069:764;30459:14;30454:3;30447:27;30429:3;30503:6;30497:13;30519:75;30587:6;30582:2;30577:3;30573:12;30566:4;30558:6;30554:17;30519:75;:::i;:::-;30658:3;30653:2;30613:16;;;30645:11;;;30638:24;30687:13;;30709:76;30687:13;30771:2;30763:11;;30756:4;30744:17;;30709:76;:::i;:::-;30805:17;30824:2;30801:26;;30069:764;-1:-1:-1;;;;30069:764:207:o;30838:917::-;31122:4;31170:3;31159:9;31155:19;31201:6;31190:9;31183:25;31227:2;31265:3;31260:2;31249:9;31245:18;31238:31;31289:6;31324;31318:13;31355:6;31347;31340:22;31393:3;31382:9;31378:19;31371:26;;31432:2;31424:6;31420:15;31406:29;;31453:1;31463:169;31477:6;31474:1;31471:13;31463:169;;;31538:13;;31526:26;;31607:15;;;;31572:12;;;;31499:1;31492:9;31463:169;;;-1:-1:-1;;31700:4:207;31688:17;;;;31683:2;31668:18;;31661:45;-1:-1:-1;;;31737:2:207;31722:18;31715:34;31649:3;30838:917;-1:-1:-1;;30838:917:207:o;31949:639::-;32199:6;32194:3;32187:19;32169:3;32225:2;32258;32253:3;32249:12;32290:6;32284:13;32355:2;32347:6;32343:15;32376:1;32386:175;32400:6;32397:1;32394:13;32386:175;;;32463:13;;32449:28;;32499:14;;;;32536:15;;;;32422:1;32415:9;32386:175;;;-1:-1:-1;32577:5:207;;31949:639;-1:-1:-1;;;;;;;31949:639:207:o;32593:184::-;-1:-1:-1;;;32642:1:207;32635:88;32742:4;32739:1;32732:15;32766:4;32763:1;32756:15","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testApprove(address,uint256)":"fb44e83a","testBurn()":"e13aba48","testBurn(address,uint256,uint256)":"1037c205","testBurnInsufficientBalanceReverts(address,uint256,uint256)":"be4733bc","testInfiniteApproveTransferFrom()":"18eab016","testInstallTwice()":"78cdebf9","testMetadata()":"5ad7ef92","testMint()":"9642ddaf","testMint(address,uint256)":"f28e093d","testMintOverMaxUintReverts()":"fa531f85","testSetUp()":"5babb758","testTransfer()":"d591221f","testTransfer(address,uint256)":"a0e70267","testTransferFrom()":"70557298","testTransferFrom(address,address,address,uint256,uint256)":"48186a7f","testTransferFromInsufficientAllowanceReverts()":"f63809d9","testTransferFromInsufficientAllowanceReverts(address,uint256,uint256)":"37e816d3","testTransferFromInsufficientBalanceReverts()":"7a715085","testTransferFromInsufficientBalanceReverts(address,uint256,uint256)":"7c0c5369","testTransferInsufficientBalanceReverts()":"3dc6c955","testTransferInsufficientBalanceReverts(address,uint256,uint256)":"e70629ce"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"testBurnInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInfiniteApproveTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintOverMaxUintReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"approval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientAllowanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferFromInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sendAmount\",\"type\":\"uint256\"}],\"name\":\"testTransferInsufficientBalanceReverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ERC20.t.sol\":\"ERC20Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55\",\"dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf\",\"dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4\",\"dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b\",\"dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb\",\"dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84\",\"dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1\",\"dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e\",\"dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924\",\"dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67\",\"dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263\",\"dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912\",\"dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6\",\"dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2\",\"dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99\",\"dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a\",\"dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d\",\"dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3\",\"dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210\",\"dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd\",\"dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff\",\"dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787\",\"dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551\",\"dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea\",\"dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4\",\"dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44\",\"dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2\",\"dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38\",\"dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64\",\"dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb\",\"dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4\",\"dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf\",\"dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205\",\"dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed\",\"dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c\",\"dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89\",\"dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6\",\"dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d\",\"dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3\",\"dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd\",\"dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc\",\"dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db\",\"dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2\",\"dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3\",\"dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020\",\"dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9\",\"dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d\",\"dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef\",\"dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006\",\"dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74\",\"dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f\",\"dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4\",\"dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5\",\"dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45\",\"dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6\",\"dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8\",\"dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478\",\"dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458\",\"dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd\",\"dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7\",\"dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69\",\"dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e\",\"dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35\",\"dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e\",\"dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c\",\"dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2\",\"dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c\",\"dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7\",\"dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571\",\"dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2\",\"dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6\",\"dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c\",\"dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8\",\"dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c\",\"dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160\",\"dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216\",\"dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7\",\"dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535\",\"dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411\",\"dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658\",\"dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6\",\"dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027\",\"dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8\",\"dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d\",\"dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e\",\"dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d\",\"dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/erc20-puppet/ERC20Module.sol\":{\"keccak256\":\"0x17bc29bb233a59422412c52b96caa8b3348122c7fea93ff6a05b5180d8a7f67f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b41b85213db039ec9d60e0e00f93775263905dc794a7daff0d4cd34ea713566a\",\"dweb:/ipfs/QmdAE8KH3mhK7WPTpDCwpE5Yw294m9T9KYFTxMsSNxc6qd\"]},\"src/modules/erc20-puppet/ERC20System.sol\":{\"keccak256\":\"0xf3cd154bdc6d3f7ad3727ee9852a2858c13b9d19a1b67c8ade74b812abc67ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4761ee9c4d3e0cf92147950d18e267dbbabf735d7ac5f7b09ae63c86968cf466\",\"dweb:/ipfs/QmSFNphuAUT1VbNegRjsXQaWttWL1UCLUixSXjAapbPn5s\"]},\"src/modules/erc20-puppet/IERC20.sol\":{\"keccak256\":\"0x4da2e95751daa6444c24063c1da6886380a487b958808d888f6f4f4b1da7b60b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://111b988299e13500d38a87e2a6309087f42abd6a871e6e9c5da7bc7d09c71b2c\",\"dweb:/ipfs/QmWyShHQnKFNvZdKyKmsuRCwhYRrz2UMqHP2oLnHvqArdj\"]},\"src/modules/erc20-puppet/IERC20Errors.sol\":{\"keccak256\":\"0x704a9e25590a92a80d153552fbe79a83fe0a80a8f6eaa8d2ccaca70649e40fce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e6ae9510a9c5023299a1064c945b652336a31f5cd225bbe9a72f9e2fd81ada2\",\"dweb:/ipfs/QmdvTCUs3ZiP5unHGdwJz3MxAR5b7K7bYVTZjBT8xadBVR\"]},\"src/modules/erc20-puppet/IERC20Events.sol\":{\"keccak256\":\"0xee632339ff14c1e5e6994ce3c605799761f24f40093cabf3b091f6dcbd9ef8ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0c7a33110c14cfc32011bda15c4330d8f193d133c1f34448f1566f44a0663bd\",\"dweb:/ipfs/QmadwRXGu4H2H3WxgEchXTyLx5PKSLZd7VHvRPEZ5zAgaZ\"]},\"src/modules/erc20-puppet/IERC20Mintable.sol\":{\"keccak256\":\"0x51e2b57003ef9fd5e87b7dcd451628e361ff26e0f82a089897e43def4cf35163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b8478ba8a5562432dfcfc02cb35d38b95e0e16d1771c3619d8140a04bbf5208\",\"dweb:/ipfs/QmRBBjFW4dm2qQHdysj3ci9NGpaywbMsN2zjQAUNbXydhL\"]},\"src/modules/erc20-puppet/constants.sol\":{\"keccak256\":\"0xf5bc462ba7a0209d4d13b27f6038d2484c978250d9177d1814813a9fa6c67f0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25f1dafb6cabe5bb70021625bd025d7249aed86dfc8567b9e5d8c2c32da847b4\",\"dweb:/ipfs/QmbAAQHU2q6Dm66CqbrwUtWyCbwndKZtrpE3oneFtaYMxX\"]},\"src/modules/erc20-puppet/registerERC20.sol\":{\"keccak256\":\"0x335a3196b7ea650df456af70696a275ec918796c5ae6123a1b9288d38b20c2a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92308c09691ce3d1c825a2efe3b274a39bf2731cf4e83e4a7b8377b9cbe5303e\",\"dweb:/ipfs/Qmc26ZY12btH3DEEvWcyZwHkUrb7UXshwug4yG3CQXCyRf\"]},\"src/modules/erc20-puppet/tables/Allowances.sol\":{\"keccak256\":\"0xd05c08a2fdc4ab06273bceda2618c9aec7cc362f5401dd2a8070a71719d42544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6fdfc972d7ec013ecd0deb5609ce2f8ce150b61b53d19f9fd3b60f532d04ab9\",\"dweb:/ipfs/QmRNxV9iUqo9rfjVQoJVHxcfwabJiTMt5fnEi8fM4f5D9G\"]},\"src/modules/erc20-puppet/tables/ERC20Metadata.sol\":{\"keccak256\":\"0x04e27880dab60e2f48b5e1057eb24bd5c34026601957db6e81088c656bee306f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b87eb482a34c82ae54a75ec4e70fd0ea09b0765231bdfc26e227b3745994470\",\"dweb:/ipfs/QmbFXEXbvzGxszA4z4KLHMKrMfEyoVhX5xqL7LcyLLJByt\"]},\"src/modules/erc20-puppet/tables/ERC20Registry.sol\":{\"keccak256\":\"0x910ef149f80e14d67751ea8adf324e3dc64aa4d3341cce2f938b07ee146ab427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d8ac5b9c0021582fcfe52f89e0a59a55ede7d120356b3326c537161daf324be\",\"dweb:/ipfs/QmNyoj1pQJHbQdreyekJYBkwKLSt5twVmZ3zjVj8WVaqUJ\"]},\"src/modules/erc20-puppet/tables/TotalSupply.sol\":{\"keccak256\":\"0xc4bab0981b493a1885474ce82a9aee3004d7ec76213c738e268aac467ef73a5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e87b36b0632ad8515650004ecc76ac196805b5d8bc3a5975ed80a86801c6e95b\",\"dweb:/ipfs/QmYCGY7zstQhhUwDjmzscvNDgZ6QK9kDR51fXvKYP9tmjf\"]},\"src/modules/erc20-puppet/utils.sol\":{\"keccak256\":\"0x93469cfd699997e1b980433ad416566a87da0cc925a55752c98dc86c76c63b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00bd06095ef07edea5827d0fde62110f8ce92ed8e20946d04e39a558700e045e\",\"dweb:/ipfs/QmdvVCsFD8ktvJFV56NDkgQ3oBsSb9vLNcwVm6uwTuUuPR\"]},\"src/modules/puppet/Puppet.sol\":{\"keccak256\":\"0x0793dc274d0e27b9a00369935693952f2b15e85b243ebed5994cc0c5fd806bc9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d94877420ab98c06013f327ce43e18a7dd3f9a42a33f76a5291ae8424b2699a6\",\"dweb:/ipfs/QmcpKAzLV2eKSU7Pfbb7wgkidNeWSUyUD5J2Scgio16RS8\"]},\"src/modules/puppet/PuppetDelegationControl.sol\":{\"keccak256\":\"0xef771bb0ed12e5fbb010839842bad2f323930d37bf5f2f32cea911730a180fa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94f6a1e408d554cefe37785e0cdf58ac27760ced06be39cc4fa6b45b1484812d\",\"dweb:/ipfs/QmeWhCxsS3ewKciW5FYP2wgZxT9N8xdC95oFpCvnpRyXrS\"]},\"src/modules/puppet/PuppetFactorySystem.sol\":{\"keccak256\":\"0xa439fa70dafaf5c491ecc145b594fe3a269f00b8d97036b305ed99d761e2aefe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://014fd8fd174420aa76cde8c6afb84df019579550c1540e7c4f79f6f24de12ae9\",\"dweb:/ipfs/QmS2Nba81LDzK3sxa7HHkAvSFdxPL5v5Ri5p41k5MCNYAv\"]},\"src/modules/puppet/PuppetMaster.sol\":{\"keccak256\":\"0xc83209af82eba3b3452a5c62531d52edb13d69db67c768ec12989cfaf9191c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f1d83a60ed2e3a15cde57d6fc859ee7c76e6d089010f41189151e799eb90525c\",\"dweb:/ipfs/QmfZLVNQ9G3kkMBxu3koZbMVPqhtxGTw2iziZQbob4AFhm\"]},\"src/modules/puppet/PuppetModule.sol\":{\"keccak256\":\"0x739e8ad43272fe763939da7d104f475aadb12db92b78cee7e65b0996a85805b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99ba913faf457ae6026eb537211f2937e7d26778ee8af2ddf1582a64b837b556\",\"dweb:/ipfs/QmbwQYp5AdPKxAykDfh7cv1gHWELmGZ4NcvxQeKVQ7yG8X\"]},\"src/modules/puppet/constants.sol\":{\"keccak256\":\"0x55dc370e83d22bd3ddb79172658731deb725c7609c1966d58cfdc5276bc20a7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc27074a755a64d238f32cfd07b4226cfd47fd157f4f0829c13d8d5406d5f9d\",\"dweb:/ipfs/QmZesmQK815TdF6AuZpKZ249NXP2Qqnzmy9k3WpNRc5Cyq\"]},\"src/modules/puppet/createPuppet.sol\":{\"keccak256\":\"0x775c337cda5ffb3ea7f6e105d3804eebcf8bb58d4278d2925f43678f772caae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b458c3b5e40fadcde03b9f3aabee02904a5f0ac289eafa92aa7d370416b39398\",\"dweb:/ipfs/QmSBzbevgeyNECE2gej5GWKGyY7CQV2NNtxPxDbamsm2uc\"]},\"src/modules/puppet/tables/PuppetRegistry.sol\":{\"keccak256\":\"0x7599140542e17339a785741ca6057d2b5ca5529a816b4609940e43e154bf179d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b251df5ef3be9a7cca661d861ba8802181fe55607cf119313ad6db0bcd73be9\",\"dweb:/ipfs/QmaVjFTBdqasneWm1EakzBgBU9n7i4vV1YdrGiqYT5pobk\"]},\"src/modules/puppet/utils.sol\":{\"keccak256\":\"0x0c07e1daf167a9ebcf81d1b176e4aef23d12b0bc01333c572c0482b699fd199d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f2ec0928e530ae3b75aadfe224a5c1654d0c26b8f10e06e490274fff3871489\",\"dweb:/ipfs/QmPLfak2kwefQ5tcNFxuE9TXsQ4PVkvTraHWZU8PK9GkR4\"]},\"src/modules/tokens/tables/Balances.sol\":{\"keccak256\":\"0x323871032273e403a04e1b27c36dda8ec5cc7ae116c96af6843ad9b9585327db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd555e72a6b5c42e27aaeda796e93b50a9e4a0f9253dba806a484ff8559c4fd7\",\"dweb:/ipfs/QmQ3hJxyoWVj4Cx7w2Yb9DW18htPeN2z8drkz2Sq3emEyB\"]},\"src/utils/AccessControlLib.sol\":{\"keccak256\":\"0xc14746b7e25f7d3340b9585c170f2120a46639f3c6ebb8ba88ca81311f475df2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fba240838bc55220b4c9efdcd389df4ec028d43ea9f682cf583d7879280a7bb8\",\"dweb:/ipfs/QmV5fyNXfFgdTxYRYB1NzNQKkypnQH8SJ5C6BZpjhieiUS\"]},\"test/ERC20.t.sol\":{\"keccak256\":\"0x38f3f00265c9240b52dd0f1e02bf25e3dd66b029aede5bc0cd991a42f1742f3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b54644b2ccb1a071c70b69b279c3e714e7e6cf458a058c8385dd24dfb01b4f\",\"dweb:/ipfs/Qmbq2AePcx9vb832EwGH6UmZnLzYPnSckBPKrjUazXcw4A\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testBurnInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInfiniteApproveTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testInstallTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMetadata"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintOverMaxUintReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetUp"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransfer"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"approval","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientAllowanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferFromInsufficientBalanceReverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"sendAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testTransferInsufficientBalanceReverts"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/ERC20.t.sol":"ERC20Test"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd","urls":["bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55","dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728","urls":["bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf","dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09","urls":["bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4","dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3","urls":["bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b","dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec","urls":["bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb","dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79","urls":["bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84","dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f","urls":["bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1","dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99","urls":["bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e","dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449","urls":["bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924","dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167","urls":["bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67","dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc","urls":["bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263","dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d","urls":["bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912","dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e","urls":["bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6","dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18","urls":["bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2","dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8","urls":["bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99","dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5","urls":["bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a","dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f","urls":["bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d","dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20","urls":["bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3","dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd","urls":["bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210","dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28","urls":["bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd","dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9","urls":["bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff","dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c","urls":["bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787","dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7","urls":["bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551","dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763","urls":["bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea","dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b","urls":["bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4","dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270","urls":["bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44","dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50","urls":["bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2","dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410","urls":["bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38","dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305","urls":["bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64","dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554","urls":["bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb","dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7","urls":["bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4","dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29","urls":["bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf","dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a","urls":["bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205","dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61","urls":["bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed","dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439","urls":["bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c","dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a","urls":["bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89","dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3","urls":["bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6","dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e","urls":["bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d","dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695","urls":["bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3","dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909","urls":["bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd","dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc","urls":["bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc","dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402","urls":["bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db","dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd","urls":["bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2","dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635","urls":["bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3","dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd","urls":["bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020","dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3","urls":["bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9","dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2","urls":["bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d","dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a","urls":["bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef","dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf","urls":["bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006","dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd","urls":["bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74","dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d","urls":["bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f","dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4","urls":["bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4","dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a","urls":["bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5","dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b","urls":["bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45","dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4","urls":["bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6","dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772","urls":["bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8","dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c","urls":["bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478","dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f","urls":["bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458","dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8","urls":["bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd","dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b","urls":["bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7","dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395","urls":["bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69","dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc","urls":["bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e","dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf","urls":["bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35","dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd","urls":["bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e","dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568","urls":["bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c","dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68","urls":["bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2","dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194","urls":["bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c","dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21","urls":["bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7","dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51","urls":["bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571","dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6","urls":["bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2","dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa","urls":["bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6","dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9","urls":["bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c","dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2","urls":["bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8","dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b","urls":["bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c","dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7","urls":["bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160","dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93","urls":["bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216","dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f","urls":["bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7","dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e","urls":["bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535","dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3","urls":["bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411","dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730","urls":["bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658","dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1","urls":["bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6","dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc","urls":["bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027","dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a","urls":["bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8","dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145","urls":["bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d","dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be","urls":["bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e","dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed","urls":["bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d","dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/erc20-puppet/ERC20Module.sol":{"keccak256":"0x17bc29bb233a59422412c52b96caa8b3348122c7fea93ff6a05b5180d8a7f67f","urls":["bzz-raw://b41b85213db039ec9d60e0e00f93775263905dc794a7daff0d4cd34ea713566a","dweb:/ipfs/QmdAE8KH3mhK7WPTpDCwpE5Yw294m9T9KYFTxMsSNxc6qd"],"license":"MIT"},"src/modules/erc20-puppet/ERC20System.sol":{"keccak256":"0xf3cd154bdc6d3f7ad3727ee9852a2858c13b9d19a1b67c8ade74b812abc67ad9","urls":["bzz-raw://4761ee9c4d3e0cf92147950d18e267dbbabf735d7ac5f7b09ae63c86968cf466","dweb:/ipfs/QmSFNphuAUT1VbNegRjsXQaWttWL1UCLUixSXjAapbPn5s"],"license":"MIT"},"src/modules/erc20-puppet/IERC20.sol":{"keccak256":"0x4da2e95751daa6444c24063c1da6886380a487b958808d888f6f4f4b1da7b60b","urls":["bzz-raw://111b988299e13500d38a87e2a6309087f42abd6a871e6e9c5da7bc7d09c71b2c","dweb:/ipfs/QmWyShHQnKFNvZdKyKmsuRCwhYRrz2UMqHP2oLnHvqArdj"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Errors.sol":{"keccak256":"0x704a9e25590a92a80d153552fbe79a83fe0a80a8f6eaa8d2ccaca70649e40fce","urls":["bzz-raw://0e6ae9510a9c5023299a1064c945b652336a31f5cd225bbe9a72f9e2fd81ada2","dweb:/ipfs/QmdvTCUs3ZiP5unHGdwJz3MxAR5b7K7bYVTZjBT8xadBVR"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Events.sol":{"keccak256":"0xee632339ff14c1e5e6994ce3c605799761f24f40093cabf3b091f6dcbd9ef8ff","urls":["bzz-raw://a0c7a33110c14cfc32011bda15c4330d8f193d133c1f34448f1566f44a0663bd","dweb:/ipfs/QmadwRXGu4H2H3WxgEchXTyLx5PKSLZd7VHvRPEZ5zAgaZ"],"license":"MIT"},"src/modules/erc20-puppet/IERC20Mintable.sol":{"keccak256":"0x51e2b57003ef9fd5e87b7dcd451628e361ff26e0f82a089897e43def4cf35163","urls":["bzz-raw://3b8478ba8a5562432dfcfc02cb35d38b95e0e16d1771c3619d8140a04bbf5208","dweb:/ipfs/QmRBBjFW4dm2qQHdysj3ci9NGpaywbMsN2zjQAUNbXydhL"],"license":"MIT"},"src/modules/erc20-puppet/constants.sol":{"keccak256":"0xf5bc462ba7a0209d4d13b27f6038d2484c978250d9177d1814813a9fa6c67f0e","urls":["bzz-raw://25f1dafb6cabe5bb70021625bd025d7249aed86dfc8567b9e5d8c2c32da847b4","dweb:/ipfs/QmbAAQHU2q6Dm66CqbrwUtWyCbwndKZtrpE3oneFtaYMxX"],"license":"MIT"},"src/modules/erc20-puppet/registerERC20.sol":{"keccak256":"0x335a3196b7ea650df456af70696a275ec918796c5ae6123a1b9288d38b20c2a7","urls":["bzz-raw://92308c09691ce3d1c825a2efe3b274a39bf2731cf4e83e4a7b8377b9cbe5303e","dweb:/ipfs/Qmc26ZY12btH3DEEvWcyZwHkUrb7UXshwug4yG3CQXCyRf"],"license":"MIT"},"src/modules/erc20-puppet/tables/Allowances.sol":{"keccak256":"0xd05c08a2fdc4ab06273bceda2618c9aec7cc362f5401dd2a8070a71719d42544","urls":["bzz-raw://d6fdfc972d7ec013ecd0deb5609ce2f8ce150b61b53d19f9fd3b60f532d04ab9","dweb:/ipfs/QmRNxV9iUqo9rfjVQoJVHxcfwabJiTMt5fnEi8fM4f5D9G"],"license":"MIT"},"src/modules/erc20-puppet/tables/ERC20Metadata.sol":{"keccak256":"0x04e27880dab60e2f48b5e1057eb24bd5c34026601957db6e81088c656bee306f","urls":["bzz-raw://8b87eb482a34c82ae54a75ec4e70fd0ea09b0765231bdfc26e227b3745994470","dweb:/ipfs/QmbFXEXbvzGxszA4z4KLHMKrMfEyoVhX5xqL7LcyLLJByt"],"license":"MIT"},"src/modules/erc20-puppet/tables/ERC20Registry.sol":{"keccak256":"0x910ef149f80e14d67751ea8adf324e3dc64aa4d3341cce2f938b07ee146ab427","urls":["bzz-raw://3d8ac5b9c0021582fcfe52f89e0a59a55ede7d120356b3326c537161daf324be","dweb:/ipfs/QmNyoj1pQJHbQdreyekJYBkwKLSt5twVmZ3zjVj8WVaqUJ"],"license":"MIT"},"src/modules/erc20-puppet/tables/TotalSupply.sol":{"keccak256":"0xc4bab0981b493a1885474ce82a9aee3004d7ec76213c738e268aac467ef73a5a","urls":["bzz-raw://e87b36b0632ad8515650004ecc76ac196805b5d8bc3a5975ed80a86801c6e95b","dweb:/ipfs/QmYCGY7zstQhhUwDjmzscvNDgZ6QK9kDR51fXvKYP9tmjf"],"license":"MIT"},"src/modules/erc20-puppet/utils.sol":{"keccak256":"0x93469cfd699997e1b980433ad416566a87da0cc925a55752c98dc86c76c63b32","urls":["bzz-raw://00bd06095ef07edea5827d0fde62110f8ce92ed8e20946d04e39a558700e045e","dweb:/ipfs/QmdvVCsFD8ktvJFV56NDkgQ3oBsSb9vLNcwVm6uwTuUuPR"],"license":"MIT"},"src/modules/puppet/Puppet.sol":{"keccak256":"0x0793dc274d0e27b9a00369935693952f2b15e85b243ebed5994cc0c5fd806bc9","urls":["bzz-raw://d94877420ab98c06013f327ce43e18a7dd3f9a42a33f76a5291ae8424b2699a6","dweb:/ipfs/QmcpKAzLV2eKSU7Pfbb7wgkidNeWSUyUD5J2Scgio16RS8"],"license":"MIT"},"src/modules/puppet/PuppetDelegationControl.sol":{"keccak256":"0xef771bb0ed12e5fbb010839842bad2f323930d37bf5f2f32cea911730a180fa3","urls":["bzz-raw://94f6a1e408d554cefe37785e0cdf58ac27760ced06be39cc4fa6b45b1484812d","dweb:/ipfs/QmeWhCxsS3ewKciW5FYP2wgZxT9N8xdC95oFpCvnpRyXrS"],"license":"MIT"},"src/modules/puppet/PuppetFactorySystem.sol":{"keccak256":"0xa439fa70dafaf5c491ecc145b594fe3a269f00b8d97036b305ed99d761e2aefe","urls":["bzz-raw://014fd8fd174420aa76cde8c6afb84df019579550c1540e7c4f79f6f24de12ae9","dweb:/ipfs/QmS2Nba81LDzK3sxa7HHkAvSFdxPL5v5Ri5p41k5MCNYAv"],"license":"MIT"},"src/modules/puppet/PuppetMaster.sol":{"keccak256":"0xc83209af82eba3b3452a5c62531d52edb13d69db67c768ec12989cfaf9191c72","urls":["bzz-raw://f1d83a60ed2e3a15cde57d6fc859ee7c76e6d089010f41189151e799eb90525c","dweb:/ipfs/QmfZLVNQ9G3kkMBxu3koZbMVPqhtxGTw2iziZQbob4AFhm"],"license":"MIT"},"src/modules/puppet/PuppetModule.sol":{"keccak256":"0x739e8ad43272fe763939da7d104f475aadb12db92b78cee7e65b0996a85805b6","urls":["bzz-raw://99ba913faf457ae6026eb537211f2937e7d26778ee8af2ddf1582a64b837b556","dweb:/ipfs/QmbwQYp5AdPKxAykDfh7cv1gHWELmGZ4NcvxQeKVQ7yG8X"],"license":"MIT"},"src/modules/puppet/constants.sol":{"keccak256":"0x55dc370e83d22bd3ddb79172658731deb725c7609c1966d58cfdc5276bc20a7e","urls":["bzz-raw://6bc27074a755a64d238f32cfd07b4226cfd47fd157f4f0829c13d8d5406d5f9d","dweb:/ipfs/QmZesmQK815TdF6AuZpKZ249NXP2Qqnzmy9k3WpNRc5Cyq"],"license":"MIT"},"src/modules/puppet/createPuppet.sol":{"keccak256":"0x775c337cda5ffb3ea7f6e105d3804eebcf8bb58d4278d2925f43678f772caae1","urls":["bzz-raw://b458c3b5e40fadcde03b9f3aabee02904a5f0ac289eafa92aa7d370416b39398","dweb:/ipfs/QmSBzbevgeyNECE2gej5GWKGyY7CQV2NNtxPxDbamsm2uc"],"license":"MIT"},"src/modules/puppet/tables/PuppetRegistry.sol":{"keccak256":"0x7599140542e17339a785741ca6057d2b5ca5529a816b4609940e43e154bf179d","urls":["bzz-raw://2b251df5ef3be9a7cca661d861ba8802181fe55607cf119313ad6db0bcd73be9","dweb:/ipfs/QmaVjFTBdqasneWm1EakzBgBU9n7i4vV1YdrGiqYT5pobk"],"license":"MIT"},"src/modules/puppet/utils.sol":{"keccak256":"0x0c07e1daf167a9ebcf81d1b176e4aef23d12b0bc01333c572c0482b699fd199d","urls":["bzz-raw://7f2ec0928e530ae3b75aadfe224a5c1654d0c26b8f10e06e490274fff3871489","dweb:/ipfs/QmPLfak2kwefQ5tcNFxuE9TXsQ4PVkvTraHWZU8PK9GkR4"],"license":"MIT"},"src/modules/tokens/tables/Balances.sol":{"keccak256":"0x323871032273e403a04e1b27c36dda8ec5cc7ae116c96af6843ad9b9585327db","urls":["bzz-raw://bd555e72a6b5c42e27aaeda796e93b50a9e4a0f9253dba806a484ff8559c4fd7","dweb:/ipfs/QmQ3hJxyoWVj4Cx7w2Yb9DW18htPeN2z8drkz2Sq3emEyB"],"license":"MIT"},"src/utils/AccessControlLib.sol":{"keccak256":"0xc14746b7e25f7d3340b9585c170f2120a46639f3c6ebb8ba88ca81311f475df2","urls":["bzz-raw://fba240838bc55220b4c9efdcd389df4ec028d43ea9f682cf583d7879280a7bb8","dweb:/ipfs/QmV5fyNXfFgdTxYRYB1NzNQKkypnQH8SJ5C6BZpjhieiUS"],"license":"MIT"},"test/ERC20.t.sol":{"keccak256":"0x38f3f00265c9240b52dd0f1e02bf25e3dd66b029aede5bc0cd991a42f1742f3e","urls":["bzz-raw://a1b54644b2ccb1a071c70b69b279c3e714e7e6cf458a058c8385dd24dfb01b4f","dweb:/ipfs/Qmbq2AePcx9vb832EwGH6UmZnLzYPnSckBPKrjUazXcw4A"],"license":"MIT"}},"version":1},"id":198}