0x6080604052600436106102ad5760003560e01c80638096f29f11610175578063a65c6515116100dc578063ca7628bb11610095578063e09eb4dd1161006f578063e09eb4dd146108be578063e4725288146108de578063ecc7982714610929578063f2fde38b1461093e57600080fd5b8063ca7628bb1461085a578063cf88807314610871578063d37c47511461089e57600080fd5b8063a65c651514610783578063a7a78885146107a3578063afa960e3146107c3578063b19b01c1146107e3578063b6ca116914610803578063c6c00a111461084557600080fd5b80638f6599281161012e5780638f659928146106dc5780639175c2e7146106fc57806397fde06c1461070f5780639e265e4614610730578063a03ffa6114610750578063a3700b1e1461076357600080fd5b80638096f29f146106155780638392a3fe1461063557806384f1c582146106555780638a819178146106755780638ba91f84146106955780638da5cb5b146106aa57600080fd5b80634ddc825a116102195780636e777b8b116101d25780636e777b8b146104fe5780636ff7b0e714610548578063715018a6146105685780637985627e1461057d5780637d902352146105b95780637fb12e6b146105f557600080fd5b80634ddc825a1461046c5780634f1ef2861461048157806352d1902d146104945780635645c4a4146104a957806360b31035146104c957806362eeecbc146104de57600080fd5b80631224903c1161026b5780631224903c1461039b57806312fbe7f6146103bb5780631fb1344b146103db5780633659cfe61461040c57806344e9826c1461042c57806349d7965f1461044c57600080fd5b80627b0bcf146102b257806301ffc9a7146102d45780630b16c144146103095780630b6d703a146103295780630c0de4691461034957806311f6f05814610384575b600080fd5b3480156102be57600080fd5b506102d26102cd3660046132d9565b61095e565b005b3480156102e057600080fd5b506102f46102ef366004613337565b6109f5565b60405190151581526020015b60405180910390f35b34801561031557600080fd5b506102d2610324366004613354565b610a21565b34801561033557600080fd5b506102d2610344366004613371565b610b59565b34801561035557600080fd5b50610376610364366004613337565b60666020526000908152604090205481565b604051908152602001610300565b34801561039057600080fd5b506103766102295481565b3480156103a757600080fd5b506102d26103b63660046133d5565b610c3d565b3480156103c757600080fd5b506102d26103d63660046132d9565b610d9f565b3480156103e757600080fd5b506102f46103f6366004613337565b6101c36020526000908152604090205460ff1681565b34801561041857600080fd5b506102d2610427366004613354565b610e5b565b34801561043857600080fd5b506102d2610447366004613429565b610f3b565b34801561045857600080fd5b506102d2610467366004613459565b61103f565b34801561047857600080fd5b50610376600681565b6102d261048f3660046134f4565b611078565b3480156104a057600080fd5b50610376611145565b3480156104b557600080fd5b506102d26104c43660046132d9565b6111f8565b3480156104d557600080fd5b506102d26112b4565b3480156104ea57600080fd5b506102d26104f9366004613371565b61137d565b34801561050a57600080fd5b506102f4610519366004613543565b6001600160a01b0391821660009081526101936020908152604080832093909416825291909152205460ff1690565b34801561055457600080fd5b506102d26105633660046133d5565b611432565b34801561057457600080fd5b506102d261158c565b34801561058957600080fd5b506102f4610598366004613459565b61012d60209081526000928352604080842090915290825290205460ff1681565b3480156105c557600080fd5b506102f46105d4366004613571565b6101c460209081526000928352604080842090915290825290205460ff1681565b34801561060157600080fd5b506102f461061036600461359f565b6115a0565b34801561062157600080fd5b506102d26106303660046135bd565b6115fe565b34801561064157600080fd5b506102d26106503660046135ff565b611746565b34801561066157600080fd5b506102d2610670366004613571565b611913565b34801561068157600080fd5b506102d2610690366004613543565b611a10565b3480156106a157600080fd5b50610376600c81565b3480156106b657600080fd5b506033546001600160a01b03165b6040516001600160a01b039091168152602001610300565b3480156106e857600080fd5b506102d26106f7366004613354565b611b04565b6102d261070a36600461366e565b611ba8565b34801561071b57600080fd5b50610228546106c4906001600160a01b031681565b34801561073c57600080fd5b506102d261074b3660046132d9565b611c78565b6102d261075e36600461366e565b611d01565b34801561076f57600080fd5b506102f461077e366004613543565b611d99565b34801561078f57600080fd5b506102d261079e366004613337565b611ded565b3480156107af57600080fd5b506102f46107be366004613543565b611eae565b3480156107cf57600080fd5b506102f46107de366004613745565b611f02565b3480156107ef57600080fd5b506102f46107fe366004613571565b611f53565b34801561080f57600080fd5b506102f461081e366004613801565b61012e60209081526000938452604080852082529284528284209052825290205460ff1681565b34801561085157600080fd5b50610376600981565b34801561086657600080fd5b506103766102275481565b34801561087d57600080fd5b5061037661088c366004613354565b60656020526000908152604090205481565b3480156108aa57600080fd5b506102f46108b9366004613842565b611f5f565b3480156108ca57600080fd5b506102d26108d9366004613872565b611f6b565b3480156108ea57600080fd5b506102f46108f9366004613890565b61012f60209081526000948552604080862082529385528385208152918452828420909152825290205460ff1681565b34801561093557600080fd5b50610376600381565b34801561094a57600080fd5b506102d2610959366004613354565b611fa4565b33627b0bcf60e01b610970828261201a565b6109955760405162461bcd60e51b815260040161098c906138e1565b60405180910390fd5b61022754835111156109b95760405162461bcd60e51b815260040161098c90613928565b60005b83518110156109ef576109e78482815181106109da576109da61396e565b602002602001015161208d565b6001016109bc565b50505050565b6000610a0082612170565b80610a1b57506001600160e01b03198216635f17d0d760e11b145b92915050565b600054610100900460ff1615808015610a415750600054600160ff909116105b80610a5b5750303b158015610a5b575060005460ff166001145b610a775760405162461bcd60e51b815260040161098c90613984565b6000805460ff191660011790558015610a9a576000805461ff0019166101001790555b610aa261223d565b6001600160a01b038216610ac85760405162461bcd60e51b815260040161098c906139d2565b61022880546001600160a01b0319166001600160a01b038416179055600a61022955610afc6311ecb32560e31b6006612375565b610b0e6305b6b81d60e11b6006612375565b8015610b55576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b336305b6b81d60e11b610b6c828261201a565b610b885760405162461bcd60e51b815260040161098c906138e1565b60008311610bfe5760405162461bcd60e51b815260206004820152603860248201527f5269736b4d616e616765724c6f6769633a20696e76616c6964206d617820706160448201527f727469616c20636f6e7472616374206c6973742073697a650000000000000000606482015260840161098c565b6102298390556040518381527f501504ff5239caec53ec26ea095def9248d032ec5691500ed63052179541b220906020015b60405180910390a1505050565b336000908152606560209081526040822054630489240f60e21b9283905260669091527f14753b0abaf7f3f92356cc8350974091267bd6e3985a3a135801f5da37fa25ad54859291108015610c9d57506033546001600160a01b03163314155b15610d0c576001600160a01b038216610cc85760405162461bcd60e51b815260040161098c90613a1f565b336000908152610193602090815260408083206001600160a01b038616845290915290205460ff16610d0c5760405162461bcd60e51b815260040161098c90613a6a565b61022754831115610d2f5760405162461bcd60e51b815260040161098c90613928565b60005b83811015610d9757610d8f6040518060400160405280878785818110610d5a57610d5a61396e565b9050602002016020810190610d6f9190613354565b6001600160a01b03168152602001886001600160a01b0316815250612428565b600101610d32565b505050505050565b3363097df3fb60e11b610db2828261201a565b610dce5760405162461bcd60e51b815260040161098c906138e1565b6102275483511115610df25760405162461bcd60e51b815260040161098c90613abd565b7f5b2e9777e9209522b248e8ba036d3430f8efc2dadb6ff58ede93d12da9e72d585433600090815260656020526040812054905b8551811015610d9757610e538383888481518110610e4657610e4661396e565b6020026020010151612511565b600101610e26565b306001600160a01b037f000000000000000000000000641bc4fcb85a9eff5826b7ac21c9ddf04a504e03161415610ea45760405162461bcd60e51b815260040161098c90613b03565b7f000000000000000000000000641bc4fcb85a9eff5826b7ac21c9ddf04a504e036001600160a01b0316610eed60008051602061400d833981519152546001600160a01b031690565b6001600160a01b031614610f135760405162461bcd60e51b815260040161098c90613b4f565b610f1c816126a9565b60408051600080825260208201909252610f38918391906126b1565b50565b3363113a609b60e21b610f4e828261201a565b610f6a5760405162461bcd60e51b815260040161098c906138e1565b6001600160a01b038316610f905760405162461bcd60e51b815260040161098c90613b9b565b6000848152610130602052604090205460ff16610fbf5760405162461bcd60e51b815260040161098c90613be9565b6001600160a01b038316600081815261012d60209081526040808320888452825291829020805460ff8116801560ff19909216821790925583518981529283019490945291810192909252907febbfad9d863c7c8a78b79ef65e363b0bdeb90834dff46550a3308a3713710ece9060600160405180910390a15050505050565b336349d7965f60e01b611052828261201a565b61106e5760405162461bcd60e51b815260040161098c906138e1565b6109ef8484612821565b306001600160a01b037f000000000000000000000000641bc4fcb85a9eff5826b7ac21c9ddf04a504e031614156110c15760405162461bcd60e51b815260040161098c90613b03565b7f000000000000000000000000641bc4fcb85a9eff5826b7ac21c9ddf04a504e036001600160a01b031661110a60008051602061400d833981519152546001600160a01b031690565b6001600160a01b0316146111305760405162461bcd60e51b815260040161098c90613b4f565b611139826126a9565b610b55828260016126b1565b6000306001600160a01b037f000000000000000000000000641bc4fcb85a9eff5826b7ac21c9ddf04a504e0316146111e55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161098c565b5060008051602061400d83398151915290565b33631591712960e21b61120b828261201a565b6112275760405162461bcd60e51b815260040161098c906138e1565b610227548351111561124b5760405162461bcd60e51b815260040161098c90613abd565b7fb7946d105fc650693502493c0d08c883e193d87d3ae58e423e193cdf2ca71ebc5433600090815260656020526040812054905b8551811015610d97576112ac838388848151811061129f5761129f61396e565b60200260200101516128d4565b60010161127f565b600054610100900460ff16158080156112d45750600054600160ff909116105b806112ee5750303b1580156112ee575060005460ff166001145b61130a5760405162461bcd60e51b815260040161098c90613984565b6000805460ff19166001179055801561132d576000805461ff0019166101001790555b61133561223d565b8015610f38576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336318bbbb2f60e21b611390828261201a565b6113ac5760405162461bcd60e51b815260040161098c906138e1565b600083116113fc5760405162461bcd60e51b815260206004820152601f60248201527f5269736b4d616e616765723a20696e76616c69642061727261792073697a6500604482015260640161098c565b6102278390556040518381527fe99ec792c43fd8b6d7c6cbf0fc7668b268911a4877d6c21aa1d2f5e477635a0590602001610c30565b336000908152606560209081526040822054636ff7b0e760e01b9283905260669091527fddb5fd27c131ff671bba93c01d741a1a69f5535b960e18969c3fd52e28215bcd5485929110801561149257506033546001600160a01b03163314155b15611501576001600160a01b0382166114bd5760405162461bcd60e51b815260040161098c90613a1f565b336000908152610193602090815260408083206001600160a01b038616845290915290205460ff166115015760405162461bcd60e51b815260040161098c90613a6a565b610227548311156115245760405162461bcd60e51b815260040161098c90613928565b60005b83811015610d9757611584604051806040016040528087878581811061154f5761154f61396e565b90506020020160208101906115649190613354565b6001600160a01b03168152602001886001600160a01b031681525061208d565b600101611527565b611594612a66565b61159e6000612ac0565b565b6001600160e01b0319821660009081526101c3602052604081205460ff16806115f757506001600160a01b03821660009081526101c4602090815260408083206001600160e01b03198716845290915290205460ff165b9392505050565b33638096f29f60e01b611611828261201a565b61162d5760405162461bcd60e51b815260040161098c906138e1565b6001600160a01b0384166116535760405162461bcd60e51b815260040161098c90613b9b565b6000858152610130602052604090205460ff166116825760405162461bcd60e51b815260040161098c90613be9565b6001600160e01b031983166116a95760405162461bcd60e51b815260040161098c90613c36565b6001600160a01b038416600081815261012e602090815260408083206001600160e01b031988168085529083528184208a8552835292819020805460ff8116801560ff19909216821790925582518b815293840195909552908201929092526060810192909252907f90beb7fb734337a5315571ea12839f67c89df5849c0834fd382c328922ba7ee49060800160405180910390a1505050505050565b336341c951ff60e11b611759828261201a565b6117755760405162461bcd60e51b815260040161098c906138e1565b6001600160a01b03851661179b5760405162461bcd60e51b815260040161098c90613b9b565b6000868152610130602052604090205460ff166117ca5760405162461bcd60e51b815260040161098c90613be9565b6001600160e01b031984166117f15760405162461bcd60e51b815260040161098c90613c36565b6001600160a01b03831661185f5760405162461bcd60e51b815260206004820152602f60248201527f5269736b446574656374696e674d616e616765723a20696e76616c696420726560448201526e71756573746572206164647265737360881b606482015260840161098c565b6001600160a01b03858116600081815261012f602090815260408083206001600160e01b03198a168085529083528184209589168085529583528184208c8552835292819020805460ff8116801560ff19909216821790925582518d8152938401959095529082019290925260608101939093526080830191909152907f95acb73ecbb7d58145cd487a15723fb9d47c238ee194ae825e78452cab918e0b9060a0015b60405180910390a150505050505050565b816001600160a01b03811661193a5760405162461bcd60e51b815260040161098c90613c7c565b816001600160e01b031981166119625760405162461bcd60e51b815260040161098c90613cbd565b33634278e2c160e11b611975828261201a565b6119915760405162461bcd60e51b815260040161098c906138e1565b6001600160a01b03861660008181526101c4602090815260408083206001600160e01b03198a1680855290835292819020805460ff8116801560ff199092168217909255915191825293917fb5fe6e435fc348b44adb8312fb41810d50e4a1ef227b79dd6c993af4c02a0e8d910160405180910390a350505050505050565b33631150322f60e31b611a23828261201a565b611a3f5760405162461bcd60e51b815260040161098c906138e1565b836001600160a01b038116611a665760405162461bcd60e51b815260040161098c90613c7c565b836001600160a01b038116611a8d5760405162461bcd60e51b815260040161098c90613c7c565b6001600160a01b03868116600081815261019360209081526040808320948a1680845294825291829020805460ff8116801560ff199092168217909255835194855291840194909452908201527f72960f001c0e82c0c1b73e1011891dba552ab43ba29e998a45ebcb8a47f4323090606001611902565b336311ecb32560e31b611b17828261201a565b611b335760405162461bcd60e51b815260040161098c906138e1565b6001600160a01b038316611b595760405162461bcd60e51b815260040161098c906139d2565b61022880546001600160a01b0319166001600160a01b0385169081179091556040519081527f53daf22222cc35f33b895db644db3fc6732344fe3cc4cb45a9ea265fe0a76eb690602001610c30565b6102295484511115611bcc5760405162461bcd60e51b815260040161098c90613d04565b60005b8451811015611c0457611bfc858281518110611bed57611bed61396e565b60200260200101518484611432565b600101611bcf565b5061022854604051632f4747fb60e01b81526001600160a01b0390911690632f4747fb903490611c409033908990899089908990600401613d4e565b6000604051808303818588803b158015611c5957600080fd5b505af1158015611c6d573d6000803e3d6000fd5b505050505050505050565b33634f132f2360e11b611c8b828261201a565b611ca75760405162461bcd60e51b815260040161098c906138e1565b6102275483511115611ccb5760405162461bcd60e51b815260040161098c90613928565b60005b83518110156109ef57611cf9848281518110611cec57611cec61396e565b6020026020010151612428565b600101611cce565b6102295484511115611d255760405162461bcd60e51b815260040161098c90613d04565b60005b8451811015611d5d57611d55858281518110611d4657611d4661396e565b60200260200101518484610c3d565b600101611d28565b5061022854604051637332711f60e01b81526001600160a01b0390911690637332711f903490611c409033908990899089908990600401613d4e565b6001600160a01b0382166000908152610191602052604081205460ff16806115f75750506001600160a01b039081166000908152610192602090815260408083209490931682529290925290205460ff1690565b806001600160e01b03198116611e155760405162461bcd60e51b815260040161098c90613cbd565b3363a65c651560e01b611e28828261201a565b611e445760405162461bcd60e51b815260040161098c906138e1565b6001600160e01b0319841660008181526101c36020908152604091829020805460ff8116801560ff199092168217909255925192835292917f5ac23ed2f91f8299b9b13a09684a4e2a907b882481487b590ec987cea465b5ee910160405180910390a25050505050565b6001600160a01b03821660009081526101f5602052604081205460ff16806115f75750506001600160a01b0390811660009081526101f6602090815260408083209490931682529290925290205460ff1690565b6000805b8251811015611f4957611f3284848381518110611f2557611f2561396e565b6020026020010151612b12565b15611f41576001915050610a1b565b600101611f06565b5060009392505050565b60006115f7838361201a565b60006115f78383612b12565b3363e09eb4dd60e01b611f7e828261201a565b611f9a5760405162461bcd60e51b815260040161098c906138e1565b6109ef8484612375565b611fac612a66565b6001600160a01b0381166120115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098c565b610f3881612ac0565b6001600160e01b03198116600090815260666020526040812054806120515750506033546001600160a01b03838116911614610a1b565b6033546001600160a01b038581169116148061208557506001600160a01b0384166000908152606560205260409020548111155b915050610a1b565b80516001600160a01b0381166120b55760405162461bcd60e51b815260040161098c90613c7c565b60208201516001600160a01b03166120ee5781516001600160a01b0316600090815261019160205260409020805460ff19169055612124565b6020808301516001600160a01b0390811660009081526101928352604080822086519093168252919092529020805460ff191690555b815160208301516040517f7dc2fe3c36bbcf972016f5785ffabdf76809ac9bf53e5a4e4859b06d076f446392610b4c9290916001600160a01b0392831681529116602082015260400190565b600061217b82612ca4565b8061219657506001600160e01b031982166352d1902d60e01b145b806121b157506001600160e01b0319821663db57475960e01b145b806121cc57506001600160e01b031982166347edd30d60e01b145b806121e757506001600160e01b03198216636cb54b0b60e01b145b8061220257506001600160e01b0319821663174723bf60e21b145b8061221d57506001600160e01b03198216639211c06d60e01b145b80610a1b57506001600160e01b03198216633e6a93d960e11b1492915050565b612245612cbf565b61224d612cc7565b61226a70213630b1b5a634b9ba2232ba32b1ba37b960791b612d26565b61228b7422bc32b1baba30b134b634ba3ca232ba32b1ba37b960591b612d26565b6122a8702bb434ba32a634b9ba2232ba32b1ba37b960791b612d26565b6122ba634f132f2360e11b6006612375565b6122cb627b0bcf60e01b6006612375565b6122dd630489240f60e21b6003612375565b6122ef636ff7b0e760e01b6003612375565b61230163a65c651560e01b6006612375565b612313634278e2c160e11b6006612375565b612325631591712960e21b6006612375565b61233763097df3fb60e11b6006612375565b61234963113a609b60e21b6006612375565b61235b6341c951ff60e11b6006612375565b61236d6318bbbb2f60e21b6006612375565b606461022755565b6001600160e01b031982166123d65760405162461bcd60e51b815260206004820152602160248201527f556e61416363657373436f6e74726f6c3a20696e76616c6964207265717565736044820152601d60fa1b606482015260840161098c565b6001600160e01b03198216600081815260666020908152604091829020849055815192835282018390527f327a75f9c17ea1a5899d659c50167f4c4bab78d5c6dc6011aa9b035e2f2044509101610b4c565b80516001600160a01b0381166124505760405162461bcd60e51b815260040161098c90613c7c565b60208201516001600160a01b031661248c5781516001600160a01b0316600090815261019160205260409020805460ff191660011790556124c5565b6020808301516001600160a01b0390811660009081526101928352604080822086519093168252919092529020805460ff191660011790555b815160208301516040517f99557e90336b6637a5ea82977849ee60477a371747dd56ff6cf882a03e2c130792610b4c9290916001600160a01b0392831681529116602082015260400190565b80516001600160a01b0381166125395760405162461bcd60e51b815260040161098c90613c7c565b60208201516001600160a01b03166125cc578284141561256b5760405162461bcd60e51b815260040161098c90613df7565b81516001600160a01b031660009081526101f5602052604090205460ff166125a55760405162461bcd60e51b815260040161098c90613e41565b81516001600160a01b031660009081526101f560205260409020805460ff1916905561264f565b6020808301516001600160a01b0390811660009081526101f683526040808220865190931682529190925290205460ff166126195760405162461bcd60e51b815260040161098c90613e41565b6020808301516001600160a01b0390811660009081526101f68352604080822086519093168252919092529020805460ff191690555b815160208301516040517f770bbbe6c5c3cb4131aa0eafa060578bf4f20f6de6d6fb8d7a1f854ebabd54c79261269b9290916001600160a01b0392831681529116602082015260400190565b60405180910390a150505050565b610f38612a66565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156126e9576126e483612dbc565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612743575060408051601f3d908101601f1916820190925261274091810190613e83565b60015b6127a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161098c565b60008051602061400d83398151915281146128155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161098c565b506126e4838383612e58565b6001600160a01b0382166128835760405162461bcd60e51b815260206004820152602360248201527f556e61416363657373436f6e74726f6c3a20696e76616c6964207265717565736044820152623a32b960e91b606482015260840161098c565b6001600160a01b038216600081815260656020908152604091829020849055815192835282018390527f50d1ca5c51c2948c6a6867082e49db77eb17f3db2d5687ee76226dc4945dc6ab9101610b4c565b80516001600160a01b0381166128fc5760405162461bcd60e51b815260040161098c90613c7c565b60208201516001600160a01b0316612993578284141561292e5760405162461bcd60e51b815260040161098c90613df7565b81516001600160a01b031660009081526101f5602052604090205460ff16156129695760405162461bcd60e51b815260040161098c90613e9c565b81516001600160a01b031660009081526101f560205260409020805460ff19166001179055612a1a565b6020808301516001600160a01b0390811660009081526101f683526040808220865190931682529190925290205460ff16156129e15760405162461bcd60e51b815260040161098c90613e9c565b6020808301516001600160a01b0390811660009081526101f68352604080822086519093168252919092529020805460ff191660011790555b815160208301516040517f0524c357a562b6619a62a8c97cc795054c0cbf86435705bfe61f1e9b62884ca59261269b9290916001600160a01b0392831681529116602082015260400190565b6033546001600160a01b0316331461159e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080612bb3612bae8460c96000886001811115612b3257612b32613ee1565b6001811115612b4357612b43613ee1565b6001811115612b5457612b54613ee1565b81526020019081526020016000206000612b6c600190565b6001811115612b7d57612b7d613ee1565b6001811115612b8e57612b8e613ee1565b815260208101919091526040016000205480156131a5021763ffffffff16565b612e7d565b90506000612be370213630b1b5a634b9ba2232ba32b1ba37b960791b836020015184600001518560600151612eb3565b612bf557612bf082612f73565b612bf8565b60005b90506000612c2c7422bc32b1baba30b134b634ba3ca232ba32b1ba37b960591b846020015185600001518660600151612eb3565b612c3e57612c3983612f87565b612c41565b60005b90506000612c71702bb434ba32a634b9ba2232ba32b1ba37b960791b856020015186600001518760600151612eb3565b612c8357612c7e84612f9b565b612c86565b60005b90508280612c915750815b80612c995750805b979650505050505050565b60006301ffc9a760e01b6001600160e01b0319831614610a1b565b61159e612fb6565b60016000527fec506dfa273b51989632259ed9c63e160e61bff5202e6a55d2c8927ffef177ed6020527fabfeded7d460e3c64620232497cac9cd394cef729518b0dd07dc98a13bf42162805467ffffffffffffffff191661308f179055565b6000818152610130602052604090205460ff1615612da05760405162461bcd60e51b815260206004820152603160248201527f5269736b446574656374696e674d616e616765723a206465746563746f7220616044820152701b1c9958591e481c9959da5cdd195c9959607a1b606482015260840161098c565b600090815261013060205260409020805460ff19166001179055565b6001600160a01b0381163b612e295760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161098c565b60008051602061400d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612e618361302a565b600082511180612e6e5750805b156126e4576109ef838361306a565b6040805160808101825260008082526020808301829052928201819052606082015282519091610a1b9184018101908401613ef7565b6001600160a01b038316600090815261012d6020908152604080832087845290915281205460ff161580612f2757506001600160a01b03808516600090815261012f602090815260408083206001600160e01b031988168452825280832093861683529281528282208883529052205460ff165b80612f6857506001600160a01b038416600090815261012e602090815260408083206001600160e01b031987168452825280832088845290915290205460ff165b90505b949350505050565b6000610a1b82604001518360200151611d99565b6000610a1b826000015183602001516115a0565b6000612faf82604001518360200151611eae565b1592915050565b600054610100900460ff166130215760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161098c565b61159e33612ac0565b61303381612dbc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115f7838360405180606001604052806027815260200161402d60279139613092565b90565b6060600080856001600160a01b0316856040516130af9190613fa7565b600060405180830381855af49150503d80600081146130ea576040519150601f19603f3d011682016040523d82523d6000602084013e6130ef565b606091505b50915091506131008683838761310a565b9695505050505050565b6060831561317657825161316f576001600160a01b0385163b61316f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161098c565b5081612f6b565b612f6b838381511561318b5781518083602001fd5b8060405162461bcd60e51b815260040161098c9190613fc3565b61159e613ff6565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156131eb576131eb6131ad565b604052919050565b60006001600160401b0382111561320c5761320c6131ad565b5060051b60200190565b6001600160a01b0381168114610f3857600080fd5b600061323e613239846131f3565b6131c3565b8381529050602080820190600685901b84018681111561325d57600080fd5b845b818110156132ce57604080828a0312156132795760008081fd5b80518181018181106001600160401b0382111715613299576132996131ad565b9091528135906132a882613216565b90815281840135906132b982613216565b8085019190915284529282019260400161325f565b505050509392505050565b6000602082840312156132eb57600080fd5b81356001600160401b0381111561330157600080fd5b8201601f8101841361331257600080fd5b612f6b8482356020840161322b565b6001600160e01b031981168114610f3857600080fd5b60006020828403121561334957600080fd5b81356115f781613321565b60006020828403121561336657600080fd5b81356115f781613216565b60006020828403121561338357600080fd5b5035919050565b60008083601f84011261339c57600080fd5b5081356001600160401b038111156133b357600080fd5b6020830191508360208260051b85010111156133ce57600080fd5b9250929050565b6000806000604084860312156133ea57600080fd5b83356133f581613216565b925060208401356001600160401b0381111561341057600080fd5b61341c8682870161338a565b9497909650939450505050565b6000806040838503121561343c57600080fd5b82359150602083013561344e81613216565b809150509250929050565b6000806040838503121561346c57600080fd5b823561347781613216565b946020939093013593505050565b600082601f83011261349657600080fd5b81356001600160401b038111156134af576134af6131ad565b6134c2601f8201601f19166020016131c3565b8181528460208386010111156134d757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561350757600080fd5b823561351281613216565b915060208301356001600160401b0381111561352d57600080fd5b61353985828601613485565b9150509250929050565b6000806040838503121561355657600080fd5b823561356181613216565b9150602083013561344e81613216565b6000806040838503121561358457600080fd5b823561358f81613216565b9150602083013561344e81613321565b600080604083850312156135b257600080fd5b823561356181613321565b6000806000606084860312156135d257600080fd5b8335925060208401356135e481613216565b915060408401356135f481613321565b809150509250925092565b6000806000806080858703121561361557600080fd5b84359350602085013561362781613216565b9250604085013561363781613321565b9150606085013561364781613216565b939692955090935050565b80356001600160401b038116811461366957600080fd5b919050565b6000806000806060858703121561368457600080fd5b84356001600160401b038082111561369b57600080fd5b818701915087601f8301126136af57600080fd5b813560206136bf613239836131f3565b82815260059290921b8401810191818101908b8411156136de57600080fd5b948201945b838610156137055785356136f681613216565b825294820194908201906136e3565b98506137149050898201613652565b96505050604087013591508082111561372c57600080fd5b506137398782880161338a565b95989497509550505050565b6000806040838503121561375857600080fd5b823591506020808401356001600160401b038082111561377757600080fd5b818601915086601f83011261378b57600080fd5b8135613799613239826131f3565b81815260059190911b830184019084810190898311156137b857600080fd5b8585015b838110156137f0578035858111156137d45760008081fd5b6137e28c89838a0101613485565b8452509186019186016137bc565b508096505050505050509250929050565b60008060006060848603121561381657600080fd5b833561382181613216565b9250602084013561383181613321565b929592945050506040919091013590565b6000806040838503121561385557600080fd5b8235915060208301356001600160401b0381111561352d57600080fd5b6000806040838503121561388557600080fd5b823561347781613321565b600080600080608085870312156138a657600080fd5b84356138b181613216565b935060208501356138c181613321565b925060408501356138d181613216565b9396929550929360600135925050565b60208082526027908201527f556e61416363657373436f6e74726f6c3a2072657175657374206e6f742070656040820152661c9b5a5d1d195960ca1b606082015260800190565b60208082526026908201527f426c61636b4c6973744465746563746f723a206f766572206172726179206d61604082015265782073697a6560d01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602d908201527f5269736b4d616e616765724c6f6769633a20696e76616c69642063636970206d60408201526c32b9b9b0b3b29039b2b73232b960991b606082015260800190565b6020808252602b908201527f426c61636b4c6973744465746563746f723a20696e76616c696420706172746960408201526a185b0818dbdb9d1c9858dd60aa1b606082015260800190565b60208082526033908201527f426c61636b4c6973744465746563746f723a20636f6e747261637420626c61636040820152721adb1a5cdd081858d8d95cdcc819195b9a5959606a1b606082015260800190565b60208082526026908201527f57686974654c6973744465746563746f723a206f766572206172726179206d61604082015265782073697a6560d01b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f5269736b446574656374696e674d616e616765723a20696e76616c696420636f60408201526d6e7472616374206164647265737360901b606082015260800190565b6020808252602d908201527f5269736b446574656374696e674d616e616765723a206465746563746f72206e60408201526c1bdd081c9959da5cdd195c9959609a1b606082015260800190565b60208082526026908201527f5269736b446574656374696e674d616e616765723a20696e76616c69642073656040820152653632b1ba37b960d11b606082015260800190565b60208082526021908201527f5269736b4465746563746f72426173653a20696e76616c6964206164647265736040820152607360f81b606082015260800190565b60208082526027908201527f4578656375746162696c6974794465746563746f723a20696e76616c6964207360408201526632b632b1ba37b960c91b606082015260800190565b6020808252602a908201527f5269736b4d616e616765723a20696e76616c6964207061727469616c436f6e7460408201526972616374732073697a6560b01b606082015260800190565b6001600160a01b0386811682526080602080840182905287519184018290526000928882019290919060a0860190855b81811015613d9c578551851683529483019491830191600101613d7e565b50506001600160401b03891660408701528581036060870152868152810192508660005b87811015613de7578135613dd381613216565b841685529382019390820190600101613dc0565b50929a9950505050505050505050565b6020808252602a908201527f57686974654c6973744465746563746f723a20696e76616c69642072657175656040820152691cdd195c881b195d995b60b21b606082015260800190565b60208082526022908201527f57686974654c6973744465746563746f723a20616c72656164792072656d6f76604082015261195960f21b606082015260800190565b600060208284031215613e9557600080fd5b5051919050565b60208082526025908201527f57686974654c6973744465746563746f723a20616c72656164792072656769736040820152641d195c995960da1b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b600060808284031215613f0957600080fd5b604051608081018181106001600160401b0382111715613f2b57613f2b6131ad565b6040528251613f3981613321565b81526020830151613f4981613216565b60208201526040830151613f5c81613216565b60408201526060830151613f6f81613216565b60608201529392505050565b60005b83811015613f96578181015183820152602001613f7e565b838111156109ef5750506000910152565b60008251613fb9818460208701613f7b565b9190910192915050565b6020815260008251806020840152613fe2816040850160208701613f7b565b601f01601f19169190910160400192915050565b634e487b7160e01b600052605160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220661e301bc7e687a8ed9496b4db6253af451a9765fc39732ea73917fc11d3422564736f6c634300080a0033