6080604052604051620025fa380380620025fa833981016040819052620000269162000f32565b82826200003e826200041460201b620000f41760201c565b604080516001808252818301909252600091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620000555750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b81600081518110620000c857620000c862000f7c565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03851681529081016000815260200182815250826000815181106200011b576200011b62000f7c565b60200260200101819052506200014e826000604051806020016040528060008152506200049860201b620001ae1760201c565b505050506000620001696200061960201b620003431760201c565b6301ffc9a760e01b6000908152600382016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b8452828420805482168317905563184371e560e31b8452828420805482168317905563422353cf60e11b8452828420805482168317905563152a902d60e11b845282842080549091168217905581518181528083019092529293509091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200022657505060408051600580825260c08201909252919250600091906020820160a080368337019050509050637a0ed62760e01b816000815181106200029a576200029a62000f7c565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b9082906001908110620002d457620002d462000f7c565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106200030e576200030e62000f7c565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b908290600390811062000348576200034862000f7c565b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b908290600490811062000382576200038262000f7c565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b0386168152908101600081526020018281525082600081518110620003d557620003d562000f7c565b602002602001018190525062000408826000604051806020016040528060008152506200049860201b620001ae1760201c565b505050505050620011ed565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062002566833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e54600080516020620025668339815191529061ffff811690819060009060071615620004f75750600381901c60009081526001840160205260409020545b60005b875181101562000587576200057983838a84815181106200051f576200051f62000f7c565b6020026020010151600001518b858151811062000540576200054062000f7c565b6020026020010151602001518c868151811062000561576200056162000f7c565b6020026020010151604001516200062c60201b60201c565b9093509150600101620004fa565b50828214620005a45760028401805461ffff191661ffff84161790555b6007821615620005c757600382901c600090815260018501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673878787604051620005fc9392919062000ffc565b60405180910390a162000610868662000e19565b50505050505050565b6000805160206200256683398151915290565b600080806000805160206200256683398151915290506000845111620006ad5760405162461bcd60e51b815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201526a1858d95d081d1bc818dd5d60aa1b60648201526084015b60405180910390fd5b6000856002811115620006c457620006c462000f92565b036200084157620006ef86604051806060016040528060248152602001620025866024913962000ef1565b60005b84518110156200083a57600085828151811062000713576200071362000f7c565b6020908102919091018101516001600160e01b03198116600090815291859052604090912054909150606081901c15620007b65760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620006a4565b6001600160e01b031980831660008181526020879052604090206001600160601b031960608d901b168e17905560e060058e901b811692831c199c909c1690821c179a8190036200081b5760038c901c600090815260018601602052604081209b909b555b8b620008278162001119565b9c505060019093019250620006f2915050565b5062000e0d565b600185600281111562000858576200085862000f92565b0362000a65576200088386604051806060016040528060288152602001620025d26028913962000ef1565b60005b84518110156200083a576000858281518110620008a757620008a762000f7c565b6020908102919091018101516001600160e01b03198116600090815291859052604090912054909150606081901c3081036200093e5760405162461bcd60e51b815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e2774207265706c61636520696d6d60448201526e3aba30b1363290333ab731ba34b7b760891b6064820152608401620006a4565b896001600160a01b0316816001600160a01b031603620009b65760405162461bcd60e51b815260206004820152603860248201526000805160206200254683398151915260448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620006a4565b6001600160a01b03811662000a235760405162461bcd60e51b815260206004820152603860248201526000805160206200254683398151915260448201527f6374696f6e207468617420646f65736e277420657869737400000000000000006064820152608401620006a4565b506001600160e01b031990911660009081526020849052604090206001600160601b03919091166001600160601b031960608a901b1617905560010162000886565b600285600281111562000a7c5762000a7c62000f92565b0362000db4576001600160a01b0386161562000b015760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620006a4565b600388901c6007891660005b865181101562000d8f5760008a900362000b4e578262000b2d8162001135565b60008181526001870160205260409020549b5093506007925062000b5e9050565b8162000b5a8162001135565b9250505b6000806000808a858151811062000b795762000b7962000f7c565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c62000c1b5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620006a4565b30606082901c0362000c875760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620006a4565b600587901b8f901b94506001600160e01b03198086169083161462000cd9576001600160e01b03198516600090815260208a90526040902080546001600160601b0319166001600160601b0383161790555b6001600160e01b031991909116600090815260208990526040812055600381901c611fff16925060051b60e016905085821462000d40576000828152600188016020526040902080546001600160e01b031980841c19909116908516831c17905562000d64565b80836001600160e01b031916901c816001600160e01b031960001b901c198e16179c505b8460000362000d8357600086815260018801602052604081208190559c505b50505060010162000b0d565b508062000d9e8360086200114f565b62000daa91906200116f565b9950505062000e0d565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b6064820152608401620006a4565b50959694955050505050565b6001600160a01b03821662000e2c575050565b62000e5182604051806060016040528060288152602001620025aa6028913962000ef1565b600080836001600160a01b03168360405162000e6e919062001185565b600060405180830381855af49150503d806000811462000eab576040519150601f19603f3d011682016040523d82523d6000602084013e62000eb0565b606091505b50915091508162000eeb5780511562000ecc5780518082602001fd5b838360405163192105d760e01b8152600401620006a4929190620011a3565b50505050565b813b818162000eeb5760405162461bcd60e51b8152600401620006a49190620011d1565b80516001600160a01b038116811462000f2d57600080fd5b919050565b60008060006060848603121562000f4857600080fd5b62000f538462000f15565b925062000f636020850162000f15565b915062000f736040850162000f15565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b8381101562000fc557818101518382015260200162000fab565b50506000910152565b6000815180845262000fe881602086016020860162000fa8565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015620010d157898403607f19018652815180516001600160a01b031685528381015189860190600381106200106d57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620010bb5783516001600160e01b03191682529286019260019290920191908601906200108f565b5097850197955050509082019060010162001025565b50506001600160a01b038a16908801528681036040880152620010f5818962000fce565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016200112e576200112e62001103565b5060010190565b60008162001147576200114762001103565b506000190190565b808202811582820484141762001169576200116962001103565b92915050565b8082018082111562001169576200116962001103565b600082516200119981846020870162000fa8565b9190910192915050565b6001600160a01b0383168152604060208201819052600090620011c99083018462000fce565b949350505050565b602081526000620011e6602083018462000fce565b9392505050565b61134980620011fd6000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819060601c806100d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100ef573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9061ffff81169081906000906007161561021d5750600381901c60009081526001840160205260409020545b60005b875181101561029a5761028d83838a848151811061024057610240610f32565b6020026020010151600001518b858151811061025e5761025e610f32565b6020026020010151602001518c868151811061027c5761027c610f32565b602002602001015160400151610367565b9093509150600101610220565b508282146102d3576002840180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84161790555b60078216156102f557600382901c600090815260018501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67387878760405161032893929190610ffe565b60405180910390a161033a8686610df8565b50505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b600080807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050600084511161041f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100c7565b600085600281111561043357610433610f61565b036106035761045a866040518060600160405280602481526020016112a060249139610ef7565b60005b84518110156105fd57600085828151811061047a5761047a610f32565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815291859052604090912054909150606081901c1561054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100c7565b7fffffffff0000000000000000000000000000000000000000000000000000000080831660008181526020879052604090207fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608d901b168e17905560e060058e901b811692831c199c909c1690821c179a8190036105e15760038c901c600090815260018601602052604081209b909b555b8b6105eb81611195565b9c50506001909301925061045d915050565b50610dec565b600185600281111561061757610617610f61565b036109075761063e866040518060600160405280602881526020016112ec60289139610ef7565b60005b84518110156105fd57600085828151811061065e5761065e610f32565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815291859052604090912054909150606081901c308103610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e2774207265706c61636520696d6d60448201527f757461626c652066756e6374696f6e000000000000000000000000000000000060648201526084016100c7565b8973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100c7565b73ffffffffffffffffffffffffffffffffffffffff8116610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e207468617420646f65736e2774206578697374000000000000000060648201526084016100c7565b507fffffffff0000000000000000000000000000000000000000000000000000000090911660009081526020849052604090206bffffffffffffffffffffffff919091167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b16179055600101610641565b600285600281111561091b5761091b610f61565b03610d645773ffffffffffffffffffffffffffffffffffffffff8616156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100c7565b600388901c6007891660005b8651811015610d445760008a9003610a0c57826109ec816111cd565b60008181526001870160205260409020549b50935060079250610a1a9050565b81610a16816111cd565b9250505b6000806000808a8581518110610a3257610a32610f32565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081166000908152918a9052604090912054909150606081901c610b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100c7565b30606082901c03610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100c7565b600587901b8f901b94507fffffffff0000000000000000000000000000000000000000000000000000000080861690831614610c35577fffffffff000000000000000000000000000000000000000000000000000000008516600090815260208a90526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff83161790555b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260208990526040812055600381901c611fff16925060051b60e0169050858214610cca576000828152600188016020526040902080547fffffffff0000000000000000000000000000000000000000000000000000000080841c19909116908516831c179055610d1b565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198e16179c505b84600003610d3957600086815260018801602052604081208190559c505b5050506001016109d0565b5080610d51836008611202565b610d5b919061121f565b99505050610dec565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100c7565b50959694955050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610e17575050565b610e39826040518060600160405280602881526020016112c460289139610ef7565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610e619190611232565b600060405180830381855af49150503d8060008114610e9c576040519150601f19603f3d011682016040523d82523d6000602084013e610ea1565b606091505b509150915081610ef157805115610ebb5780518082602001fd5b83836040517f192105d70000000000000000000000000000000000000000000000000000000081526004016100c792919061124e565b50505050565b813b8181610ef1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c79190611285565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60005b83811015610fab578181015183820152602001610f93565b50506000910152565b60008151808452610fcc816020860160208601610f90565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611129577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff825116865284820151600381106110b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111145783517fffffffff000000000000000000000000000000000000000000000000000000001682529286019260019290920191908601906110d2565b50978501979550505090820190600101611027565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526111588189610fb4565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111c6576111c6611166565b5060010190565b6000816111dc576111dc611166565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b808202811582820484141761121957611219611166565b92915050565b8082018082111561121957611219611166565b60008251611244818460208701610f90565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061127d6040830184610fb4565b949350505050565b6020815260006112986020830184610fb4565b939250505056fe4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465a2646970667358221220556f6ee723a54cde862bfaa9d1c8524bd821adc488cdf63bae4b1f8300ba741264736f6c634300081100334c69624469616d6f6e644375743a2043616e2774207265706c6163652066756ec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f646500000000000000000000000009b34e69363d37379e1c5e27fc793fdb5aca893d000000000000000000000000cb0da433790ccec9e9157e08ea4e781bad68eb18000000000000000000000000b591adcb70c980f06f7dc9d96d1353838c3668e2