0x60a06040523060805234801561001457600080fd5b50608051613a4061004c6000396000818161092e015281816109c401528181610ee501528181610f7b01526110720152613a406000f3fe6080604052600436106102855760003560e01c8063731ee50711610153578063c4d66de8116100cb578063d853015e1161007f578063edc550dc11610064578063edc550dc1461075c578063f72c0d8b1461077c578063fe7000cc146107b057600080fd5b8063d853015e146106f4578063e63ab1e91461072857600080fd5b8063cca74537116100b0578063cca745371461069f578063d2408b7c146106bf578063d547741f146106d457600080fd5b8063c4d66de81461065d578063cc2ee1961461067d57600080fd5b806391d1485411610122578063b44189ed11610107578063b44189ed146105f4578063b9830ff114610628578063c434ab2e1461063d57600080fd5b806391d1485414610599578063a217fddf146105df57600080fd5b8063731ee50714610522578063799e18c0146105445780638456cb59146105645780638d337b811461057957600080fd5b8063409e22051161020157806358cd1504116101b55780635fc64af71161019a5780635fc64af7146104a057806364697e2c146104d457806369c2bb09146104f457600080fd5b806358cd1504146104715780635c975abb1461048857600080fd5b806347a86e8c116101e657806347a86e8c146104295780634f1ef2861461044957806352d1902d1461045c57600080fd5b8063409e2205146103e657806343c14b221461041457600080fd5b806336568abe116102585780633b92eb231161023d5780633b92eb23146103765780633f4ba83a146103af5780633fad9ae0146103c457600080fd5b806336568abe146103365780633659cfe61461035657600080fd5b806301ffc9a71461028a5780631a1dbabb146102bf578063248a9ca3146102e45780632f2ff15d14610314575b600080fd5b34801561029657600080fd5b506102aa6102a536600461334a565b6107d0565b60405190151581526020015b60405180910390f35b3480156102cb57600080fd5b506102d66101635481565b6040519081526020016102b6565b3480156102f057600080fd5b506102d66102ff36600461338c565b60009081526097602052604090206001015490565b34801561032057600080fd5b5061033461032f3660046133c1565b610869565b005b34801561034257600080fd5b506103346103513660046133c1565b610893565b34801561036257600080fd5b506103346103713660046133ed565b610924565b34801561038257600080fd5b5061015f54610397906001600160a01b031681565b6040516001600160a01b0390911681526020016102b6565b3480156103bb57600080fd5b50610334610ac1565b3480156103d057600080fd5b506103d9610af3565b6040516102b69190613458565b3480156103f257600080fd5b5061040661040136600461338c565b610b82565b6040516102b692919061346b565b34801561042057600080fd5b50610334610c42565b34801561043557600080fd5b5061039761044436600461348f565b610ea2565b61033461045736600461355d565b610edb565b34801561046857600080fd5b506102d6611065565b34801561047d57600080fd5b506102d66101625481565b34801561049457600080fd5b5060335460ff166102aa565b3480156104ac57600080fd5b506102d67fe81b7fde06adf1242da26197bd147d2a1b7c0c31ac749e1d4b2c4a883f98614081565b3480156104e057600080fd5b506103346104ef36600461338c565b61112a565b34801561050057600080fd5b506102d661050f3660046133ed565b6101656020526000908152604090205481565b34801561052e57600080fd5b50610537611316565b6040516102b691906135ab565b34801561055057600080fd5b5061033461055f3660046135ef565b611555565b34801561057057600080fd5b50610334611600565b34801561058557600080fd5b506102d66105943660046133ed565b611632565b3480156105a557600080fd5b506102aa6105b43660046133c1565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105eb57600080fd5b506102d6600081565b34801561060057600080fd5b506102d67fd33c74d922fdd1de4ecf3dde8d2f5c208b0eb9d10bf44ad2b54e9c387c25e33681565b34801561063457600080fd5b5061033461168c565b34801561064957600080fd5b5061033461065836600461338c565b6117af565b34801561066957600080fd5b506103346106783660046133ed565b611897565b34801561068957600080fd5b50610692611bcb565b6040516102b69190613638565b3480156106ab57600080fd5b506103346106ba3660046136ce565b611ccc565b3480156106cb57600080fd5b50610334611eec565b3480156106e057600080fd5b506103346106ef3660046133c1565b612115565b34801561070057600080fd5b506102d67f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf081565b34801561073457600080fd5b506102d67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561076857600080fd5b506103346107773660046135ef565b61213a565b34801561078857600080fd5b506102d67f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b3480156107bc57600080fd5b506103346107cb3660046133ed565b612268565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061086357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281526097602052604090206001015461088481612347565b61088e8383612351565b505050565b6001600160a01b03811633146109165760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b61092082826123f3565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a995760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161090d565b610aa281612476565b60408051600080825260208201909252610abe918391906124a0565b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610aeb81612347565b610abe612640565b6101608054610b0190613725565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613725565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b505050505081565b6101618181548110610b9357600080fd5b9060005260206000209060020201600091509050806000018054610bb690613725565b80601f0160208091040260200160405190810160405280929190818152602001828054610be290613725565b8015610c2f5780601f10610c0457610100808354040283529160200191610c2f565b820191906000526020600020905b815481529060010190602001808311610c1257829003601f168201915b5050506001909301549192505060ff1682565b33610c4c81611632565b600003610cc15760405162461bcd60e51b815260206004820152602660248201527f5765656b6c79566f74696e673a2073656e64657220686173206e6f7420766f7460448201527f6564207965740000000000000000000000000000000000000000000000000000606482015260840161090d565b6001600160a01b0381166000818152610165602052604080822080549083905590519092839290917f1e5f5219ecc32b2bd8c5d65427056834bcb07c7fdaaa0b0b4c4bb835128805fe9190a360008181526101646020908152604080832080548251818502810185019093528083529192909190830182828015610d6e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d50575b5050505050905060005b8151811015610e9c57836001600160a01b0316828281518110610d9d57610d9d613759565b60200260200101516001600160a01b031603610e8a578160018351610dc29190613785565b81518110610dd257610dd2613759565b602002602001015161016460008581526020019081526020016000208281548110610dff57610dff613759565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03949094169390931790925584815261016490915260409020805480610e5557610e55613798565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff1916905501905550505050565b80610e94816137ae565b915050610d78565b50505050565b6101646020528160005260406000208181548110610ebf57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f795760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161090d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146110505760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161090d565b61105982612476565b610920828260016124a0565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111055760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161090d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610161818154811061113e5761113e613759565b600091825260209091206001600290920201015460ff166111ac5760405162461bcd60e51b815260206004820152602260248201527f5765656b6c79566f74696e673a206f7074696f6e206973206e6f742061637469604482015261766560f01b606482015260840161090d565b336111b681611632565b156112295760405162461bcd60e51b815260206004820152602660248201527f5765656b6c79566f74696e673a2073656e6465722068617320616c726561647960448201527f20766f7465640000000000000000000000000000000000000000000000000000606482015260840161090d565b61015f546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a0823190602401602060405180830381865afa158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906137c8565b1161130c5760405162461bcd60e51b815260206004820152602760248201527f5765656b6c79566f74696e673a2073656e64657220646f65736e27742068617660448201527f6520766f74657300000000000000000000000000000000000000000000000000606482015260840161090d565b6109208282612692565b6101615460609060009067ffffffffffffffff811115611338576113386134b1565b604051908082528060200260200182016040528015611361578160200160208202803683370190505b50905060005b6101615481101561154f57610161818154811061138657611386613759565b600091825260209091206001600290920201015460ff161561151c576000818152610164602090815260408083208054825181850281018501909352808352919290919083018282801561140357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113e5575b50505050509050600080600090505b82518110156114f557600083828151811061142f5761142f613759565b60200260200101519050846101656000836001600160a01b03166001600160a01b0316815260200190815260200160002054036114e25761015f546040516370a0823160e01b81526001600160a01b038381166004830152909116906370a0823190602401602060405180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d591906137c8565b6114df90846137e1565b92505b50806114ed816137ae565b915050611412565b508084848151811061150957611509613759565b602002602001018181525050505061153d565b600082828151811061153057611530613759565b6020026020010181815250505b80611547816137ae565b915050611367565b50919050565b7f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf061157f81612347565b81516115f35760405162461bcd60e51b815260206004820152602960248201527f5765656b6c79566f74696e673a207175657374696f6e20697320616e20656d7060448201527f747920737472696e670000000000000000000000000000000000000000000000606482015260840161090d565b61016061088e8382613842565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61162a81612347565b610abe612715565b6001600160a01b0381166000908152610165602052604081205461016180548290811061166157611661613759565b600091825260209091206001600290920201015460ff16156116835792915050565b50600092915050565b7f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf06116b681612347565b60005b610163548111610920576000818152610164602090815260408083208054825181850281018501909352808352919290919083018282801561172457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611706575b5050505050905060005b815181101561178357600082828151811061174b5761174b613759565b6020908102919091018101516001600160a01b031660009081526101659091526040812055508061177b816137ae565b91505061172e565b5060008281526101646020526040812061179c91613318565b50806117a7816137ae565b9150506116b9565b7f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf06117d981612347565b61016182815481106117ed576117ed613759565b600091825260209091206001600290920201015460ff1661185b5760405162461bcd60e51b815260206004820152602260248201527f5765656b6c79566f74696e673a206f7074696f6e206973206e6f742061637469604482015261766560f01b606482015260840161090d565b6000610161838154811061187157611871613759565b60009182526020909120600290910201600101805460ff19169115159190911790555050565b600054610100900460ff16158080156118b75750600054600160ff909116105b806118d15750303b1580156118d1575060005460ff166001145b6119435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161090d565b6000805460ff191660011790558015611966576000805461ff0019166101001790555b61196e612752565b6119766127c7565b61197e612832565b6119866127c7565b6001600160a01b038216611a025760405162461bcd60e51b815260206004820152602660248201527f5765656b6c79566f74696e673a205f7665546f6b656e206973207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161090d565b61015f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416179055611a36600033612351565b611a607f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33612351565b611a8a7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333612351565b611ab47f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf033612351565b611ade7fe81b7fde06adf1242da26197bd147d2a1b7c0c31ac749e1d4b2c4a883f98614033612351565b611b087fd33c74d922fdd1de4ecf3dde8d2f5c208b0eb9d10bf44ad2b54e9c387c25e33633612351565b60408051606081018252600091810182815281526020810182905261016180546001810182559252805190916002027fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b01908190611b669082613842565b50602091909101516001909101805460ff19169115159190911790558015610920576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6060610161805480602002602001604051908101604052809291908181526020016000905b82821015611cc35783829060005260206000209060020201604051806040016040529081600082018054611c2390613725565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4f90613725565b8015611c9c5780601f10611c7157610100808354040283529160200191611c9c565b820191906000526020600020905b815481529060010190602001808311611c7f57829003601f168201915b505050918352505060019182015460ff161515602091820152918352929092019101611bf0565b50505050905090565b7fd33c74d922fdd1de4ecf3dde8d2f5c208b0eb9d10bf44ad2b54e9c387c25e336611cf681612347565b6101618481548110611d0a57611d0a613759565b600091825260209091206001600290920201015460ff16611d785760405162461bcd60e51b815260206004820152602260248201527f5765656b6c79566f74696e673a206f7074696f6e206973206e6f742061637469604482015261766560f01b606482015260840161090d565b611d8182611632565b15611df45760405162461bcd60e51b815260206004820152602660248201527f5765656b6c79566f74696e673a2073656e6465722068617320616c726561647960448201527f20766f7465640000000000000000000000000000000000000000000000000000606482015260840161090d565b61015f546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a0823190602401602060405180830381865afa158015611e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6491906137c8565b11611ed75760405162461bcd60e51b815260206004820152602760248201527f5765656b6c79566f74696e673a2073656e64657220646f65736e27742068617660448201527f6520766f74657300000000000000000000000000000000000000000000000000606482015260840161090d565b611ee28484846128a5565b610e9c8483612692565b7fe81b7fde06adf1242da26197bd147d2a1b7c0c31ac749e1d4b2c4a883f986140611f1681612347565b60005b610161548110156120fb576101618181548110611f3857611f38613759565b600091825260209091206001600290920201015460ff16156120e95760008181526101646020908152604080832080548251818502810185019093528083529192909190830182828015611fb557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f97575b50505050509050600080600090505b82518110156120a7576000838281518110611fe157611fe1613759565b60200260200101519050846101656000836001600160a01b03166001600160a01b0316815260200190815260200160002054036120945761015f546040516370a0823160e01b81526001600160a01b038381166004830152909116906370a0823190602401602060405180830381865afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208791906137c8565b61209190846137e1565b92505b508061209f816137ae565b915050611fc4565b5082610162547fbb7fbc170254fe8592ed1c787fc412b4f446e10cb6eca2fb50f719e97b632ef9836040516120de91815260200190565b60405180910390a350505b806120f3816137ae565b915050611f19565b50610162805490600061210d836137ae565b919050555050565b60008281526097602052604090206001015461213081612347565b61088e83836123f3565b7f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf061216481612347565b81516121d85760405162461bcd60e51b815260206004820152602760248201527f5765656b6c79566f74696e673a206f7074696f6e20697320616e20656d70747960448201527f20737472696e6700000000000000000000000000000000000000000000000000606482015260840161090d565b6040805180820190915282815260016020820181905261016180549182018155600052815182916002027fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b019081906122319082613842565b50602091909101516001909101805460ff1916911515919091179055610163805490600061225e836137ae565b9190505550505050565b7f3b49a237fe2d18fa4d9642b8a0e065923cceb71b797783b619a030a61d848bf061229281612347565b61229a612950565b6001600160a01b0382166123165760405162461bcd60e51b815260206004820152602560248201527f5765656b6c79566f74696e673a207665546f6b656e206973207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161090d565b5061015f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610abe81336129a2565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff166109205760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123af3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16156109205760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361092081612347565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156124d35761088e83612a17565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561252d575060408051601f3d908101601f1916820190925261252a918101906137c8565b60015b61259f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161090d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146126345760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161090d565b5061088e838383612ae2565b612648612950565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600082815261016460209081526040808320805460018101825590845282842001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386169081179091558084526101659092528083208590555184927fb59fc76649c8c02a24dfedb2c7745babe6dcd3a7303cabc8c621cc20f1bd141f91a35050565b61271d612b07565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126753390565b600054610100900460ff166127bd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161090d565b6127c5612b5a565b565b600054610100900460ff166127c55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161090d565b600054610100900460ff1661289d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161090d565b6127c5612bd1565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b16602082015260348101849052600090605401604051602081830303815290604052805190602001209050612904818484612c43565b610e9c5760405162461bcd60e51b815260206004820152601f60248201527f5765656b6c79566f74696e673a20696e76616c6964207369676e617475726500604482015260640161090d565b60335460ff166127c55760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161090d565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16610920576129d581612cbc565b6129e0836020612cce565b6040516020016129f1929190613902565b60408051601f198184030181529082905262461bcd60e51b825261090d91600401613458565b6001600160a01b0381163b612a945760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161090d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b612aeb83612efe565b600082511180612af85750805b1561088e57610e9c8383612f3e565b60335460ff16156127c55760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161090d565b600054610100900460ff16612bc55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161090d565b6033805460ff19169055565b600054610100900460ff16612c3c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161090d565b600160c955565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018490526000908190605c0160408051601f19818403018152919052805160209091012090506001600160a01b038316612ca98286612f63565b6001600160a01b03161495945050505050565b60606108636001600160a01b03831660145b60606000612cdd836002613983565b612ce89060026137e1565b67ffffffffffffffff811115612d0057612d006134b1565b6040519080825280601f01601f191660200182016040528015612d2a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612d6157612d61613759565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612dc457612dc4613759565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612e00846002613983565b612e0b9060016137e1565b90505b6001811115612ea8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612e4c57612e4c613759565b1a60f81b828281518110612e6257612e62613759565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612ea18161399a565b9050612e0e565b508315612ef75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161090d565b9392505050565b612f0781612a17565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612ef783836040518060600160405280602781526020016139e460279139612f87565b6000806000612f728585612fff565b91509150612f7f81613044565b509392505050565b6060600080856001600160a01b031685604051612fa491906139b1565b600060405180830381855af49150503d8060008114612fdf576040519150601f19603f3d011682016040523d82523d6000602084013e612fe4565b606091505b5091509150612ff5868383876131a9565b9695505050505050565b60008082516041036130355760208301516040840151606085015160001a6130298782858561322a565b9450945050505061303d565b506000905060025b9250929050565b6000816004811115613058576130586139cd565b036130605750565b6001816004811115613074576130746139cd565b036130c15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161090d565b60028160048111156130d5576130d56139cd565b036131225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161090d565b6003816004811115613136576131366139cd565b03610abe5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161090d565b60608315613218578251600003613211576001600160a01b0385163b6132115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161090d565b5081613222565b61322283836132ee565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561326157506000905060036132e5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156132b5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132de576000600192509250506132e5565b9150600090505b94509492505050565b8151156132fe5781518083602001fd5b8060405162461bcd60e51b815260040161090d9190613458565b5080546000825590600052602060002090810190610abe91905b808211156133465760008155600101613332565b5090565b60006020828403121561335c57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ef757600080fd5b60006020828403121561339e57600080fd5b5035919050565b80356001600160a01b03811681146133bc57600080fd5b919050565b600080604083850312156133d457600080fd5b823591506133e4602084016133a5565b90509250929050565b6000602082840312156133ff57600080fd5b612ef7826133a5565b60005b8381101561342357818101518382015260200161340b565b50506000910152565b60008151808452613444816020860160208601613408565b601f01601f19169290920160200192915050565b602081526000612ef7602083018461342c565b60408152600061347e604083018561342c565b905082151560208301529392505050565b600080604083850312156134a257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156134e2576134e26134b1565b604051601f8501601f19908116603f0116810190828211818310171561350a5761350a6134b1565b8160405280935085815286868601111561352357600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261354e57600080fd5b612ef7838335602085016134c7565b6000806040838503121561357057600080fd5b613579836133a5565b9150602083013567ffffffffffffffff81111561359557600080fd5b6135a18582860161353d565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156135e3578351835292840192918401916001016135c7565b50909695505050505050565b60006020828403121561360157600080fd5b813567ffffffffffffffff81111561361857600080fd5b8201601f8101841361362957600080fd5b613222848235602084016134c7565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156136c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815180518785526136a18886018261342c565b918901511515948901949094529487019492509086019060010161365f565b509098975050505050505050565b6000806000606084860312156136e357600080fd5b83359250602084013567ffffffffffffffff81111561370157600080fd5b61370d8682870161353d565b92505061371c604085016133a5565b90509250925092565b600181811c9082168061373957607f821691505b60208210810361154f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108635761086361376f565b634e487b7160e01b600052603160045260246000fd5b600060001982036137c1576137c161376f565b5060010190565b6000602082840312156137da57600080fd5b5051919050565b808201808211156108635761086361376f565b601f82111561088e57600081815260208120601f850160051c8101602086101561381b5750805b601f850160051c820191505b8181101561383a57828155600101613827565b505050505050565b815167ffffffffffffffff81111561385c5761385c6134b1565b6138708161386a8454613725565b846137f4565b602080601f8311600181146138a5576000841561388d5750858301515b600019600386901b1c1916600185901b17855561383a565b600085815260208120601f198616915b828110156138d4578886015182559484019460019091019084016138b5565b50858210156138f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161393a816017850160208801613408565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613977816028840160208801613408565b01602801949350505050565b80820281158282048414176108635761086361376f565b6000816139a9576139a961376f565b506000190190565b600082516139c3818460208701613408565b9190910192915050565b634e487b7160e01b600052602160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122064a27e2e68be056b8297f39557fdbebead8fff7d507fdf27fa25a11c00c3cc4464736f6c63430008150033