0x60c06040523480156200001157600080fd5b506040516200441b3803806200441b833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a0516141e8620002336000396000818161015f0152818161036d01528181610522015281816105710152818161062d0152818161085001528181610b8901528181610cc40152818161103201528181611115015281816111cf01528181611262015281816113800152818161140e015281816116650152818161172c015281816117bd0152818161183a015281816118ae01528181611d3101528181611f3101528181611f8701528181611fbb01528181612050015281816121a7015281816122b9015261234701526000818161042c015281816106a90152818161077b015281816109360152818161096f01528181610a6601528181610c0501528181610ca201528181610dd9015281816112dd015281816114400152818161159a015281816118e001528181611b1d01528181611cdf01528181611d0f01528181611e3801528181611f65015281816122220152818161237901528181612bef01528181612c3f01528181612f0a0152818161308101528181613414015281816134c6015261354c01526141e86000f3fe60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a01551461041a578063d06ca61f1461044e578063ded9382a1461046e578063e8e337001461048e578063f305d719146104c9578063fb3bdb41146104dc57600080fd5b80638803dbee1461033b578063ad5c46481461035b578063ad615dec146103a7578063af2979eb146103c7578063b6f9de95146103e7578063baa2abde146103fa57600080fd5b80634a25d94a116101085780634a25d94a146102885780635b0d5984146102a85780635c11d795146102c8578063791ac947146102e85780637ff36ab51461030857806385f8c2591461031b57600080fd5b806302751cec14610193578063054d50d4146101cd57806318cbafe5146101fb5780631f00ca74146102285780632195995c1461024857806338ed17391461026857600080fd5b3661018e57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018c5761018c6137be565b005b600080fd5b34801561019f57600080fd5b506101b36101ae3660046137fc565b6104ef565b604080519283526020830191909152015b60405180910390f35b3480156101d957600080fd5b506101ed6101e836600461385a565b6105eb565b6040519081526020016101c4565b34801561020757600080fd5b5061021b6102163660046138cb565b610600565b6040516101c4919061393e565b34801561023457600080fd5b5061021b610243366004613998565b61092f565b34801561025457600080fd5b506101b3610263366004613a88565b610965565b34801561027457600080fd5b5061021b6102833660046138cb565b610a3e565b34801561029457600080fd5b5061021b6102a33660046138cb565b610b5c565b3480156102b457600080fd5b506101ed6102c3366004613b32565b610c9a565b3480156102d457600080fd5b5061018c6102e33660046138cb565b610d87565b3480156102f457600080fd5b5061018c6103033660046138cb565b611007565b61021b610316366004613bc8565b61123d565b34801561032757600080fd5b506101ed61033636600461385a565b611565565b34801561034757600080fd5b5061021b6103563660046138cb565b611572565b34801561036757600080fd5b5061038f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c4565b3480156103b357600080fd5b506101ed6103c236600461385a565b61162f565b3480156103d357600080fd5b506101ed6103e23660046137fc565b61163c565b61018c6103f5366004613bc8565b61179a565b34801561040657600080fd5b506101b3610415366004613c2f565b611af2565b34801561042657600080fd5b5061038f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045a57600080fd5b5061021b610469366004613998565b611cd8565b34801561047a57600080fd5b506101b3610489366004613b32565b611d05565b34801561049a57600080fd5b506104ae6104a9366004613ca1565b611df8565b604080519384526020840192909252908201526060016101c4565b6104ae6104d73660046137fc565b611f05565b61021b6104ea366004613bc8565b612182565b600080824281101561051c5760405162461bcd60e51b815260040161051390613d1d565b60405180910390fd5b61054b897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611af2565b909350915061055b8986856124e0565b604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b505050506105df8583612611565b50965096945050505050565b60006105f88484846126f0565b949350505050565b606081428110156106235760405162461bcd60e51b815260040161051390613d1d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868661065a600182613d6a565b81811061066957610669613d81565b905060200201602081019061067e9190613d97565b6001600160a01b0316146106a45760405162461bcd60e51b815260040161051390613dbb565b6107027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127be92505050565b91508682600184516107149190613d6a565b8151811061072457610724613d81565b6020026020010151101561074a5760405162461bcd60e51b815260040161051390613df2565b61080f8686600081811061076057610760613d81565b90506020020160208101906107759190613d97565b336107ef7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106107ad576107ad613d81565b90506020020160208101906107c29190613d97565b8b8b60018181106107d5576107d5613d81565b90506020020160208101906107ea9190613d97565b612949565b8560008151811061080257610802613d81565b60200260200101516129ce565b61084e82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612b0c915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855161088c9190613d6a565b8151811061089c5761089c613d81565b60200260200101516040518263ffffffff1660e01b81526004016108c291815260200190565b600060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506109248483600185516109079190613d6a565b8151811061091757610917613d81565b6020026020010151612611565b509695505050505050565b606061095c7f00000000000000000000000000000000000000000000000000000000000000008484612d14565b90505b92915050565b60008060006109957f00000000000000000000000000000000000000000000000000000000000000008f8f612949565b90506000876109a4578c6109a8565b6000195b60405163d505accf60e01b81529091506001600160a01b0383169063d505accf906109e3903390309086908f908e908e908e90600401613e3f565b600060405180830381600087803b1580156109fd57600080fd5b505af1158015610a11573d6000803e3d6000fd5b50505050610a248f8f8f8f8f8f8f611af2565b809450819550505050509b509b9950505050505050505050565b60608142811015610a615760405162461bcd60e51b815260040161051390613d1d565b610abf7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127be92505050565b9150868260018451610ad19190613d6a565b81518110610ae157610ae1613d81565b60200260200101511015610b075760405162461bcd60e51b815260040161051390613df2565b610b1d8686600081811061076057610760613d81565b61092482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612b0c915050565b60608142811015610b7f5760405162461bcd60e51b815260040161051390613d1d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686610bb6600182613d6a565b818110610bc557610bc5613d81565b9050602002016020810190610bda9190613d97565b6001600160a01b031614610c005760405162461bcd60e51b815260040161051390613dbb565b610c5e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1492505050565b91508682600081518110610c7457610c74613d81565b6020026020010151111561074a5760405162461bcd60e51b815260040161051390613e80565b600080610ce87f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000612949565b9050600086610cf7578b610cfb565b6000195b60405163d505accf60e01b81529091506001600160a01b0383169063d505accf90610d36903390309086908e908d908d908d90600401613e3f565b600060405180830381600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b50505050610d768d8d8d8d8d8d61163c565b9d9c50505050505050505050505050565b8042811015610da85760405162461bcd60e51b815260040161051390613d1d565b610e3985856000818110610dbe57610dbe613d81565b9050602002016020810190610dd39190613d97565b33610e337f000000000000000000000000000000000000000000000000000000000000000089896000818110610e0b57610e0b613d81565b9050602002016020810190610e209190613d97565b8a8a60018181106107d5576107d5613d81565b8a6129ce565b60008585610e48600182613d6a565b818110610e5757610e57613d81565b9050602002016020810190610e6c9190613d97565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a082319060240160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190613ec9565b9050610f27868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612e95915050565b86610fdf828888610f39600182613d6a565b818110610f4857610f48613d81565b9050602002016020810190610f5d9190613d97565b6040516370a0823160e01b81526001600160a01b03898116600483015291909116906370a08231906024015b60206040518083038186803b158015610fa157600080fd5b505afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190613ec9565b9061313d565b1015610ffd5760405162461bcd60e51b815260040161051390613df2565b5050505050505050565b80428110156110285760405162461bcd60e51b815260040161051390613d1d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858561105f600182613d6a565b81811061106e5761106e613d81565b90506020020160208101906110839190613d97565b6001600160a01b0316146110a95760405162461bcd60e51b815260040161051390613dbb565b6110bf85856000818110610dbe57610dbe613d81565b6110fd858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612e95915050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111979190613ec9565b9050868110156111b95760405162461bcd60e51b815260040161051390613df2565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561121b57600080fd5b505af115801561122f573d6000803e3d6000fd5b50505050610ffd8482612611565b606081428110156112605760405162461bcd60e51b815260040161051390613d1d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061129d5761129d613d81565b90506020020160208101906112b29190613d97565b6001600160a01b0316146112d85760405162461bcd60e51b815260040161051390613dbb565b6113367f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127be92505050565b91508682600184516113489190613d6a565b8151811061135857611358613d81565b6020026020010151101561137e5760405162461bcd60e51b815260040161051390613df2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106113c0576113c0613d81565b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6114727f000000000000000000000000000000000000000000000000000000000000000089896000818110610e0b57610e0b613d81565b8460008151811061148557611485613d81565b60200260200101516040518363ffffffff1660e01b81526004016114be9291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b1580156114d857600080fd5b505af11580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190613ee2565b61151c5761151c6137be565b61155b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612b0c915050565b5095945050505050565b60006105f8848484613193565b606081428110156115955760405162461bcd60e51b815260040161051390613d1d565b6115f37f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1492505050565b9150868260008151811061160957611609613d81565b60200260200101511115610b075760405162461bcd60e51b815260040161051390613e80565b60006105f884848461325c565b6000814281101561165f5760405162461bcd60e51b815260040161051390613d1d565b61168e887f00000000000000000000000000000000000000000000000000000000000000008989893089611af2565b6040516370a0823160e01b81523060048201529093506117169150899086906001600160a01b038316906370a082319060240160206040518083038186803b1580156116d957600080fd5b505afa1580156116ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117119190613ec9565b6124e0565b604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561177857600080fd5b505af115801561178c573d6000803e3d6000fd5b505050506109248483612611565b80428110156117bb5760405162461bcd60e51b815260040161051390613d1d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560008181106117f8576117f8613d81565b905060200201602081019061180d9190613d97565b6001600160a01b0316146118335760405162461bcd60e51b815260040161051390613dbb565b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561189357600080fd5b505af11580156118a7573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6119127f000000000000000000000000000000000000000000000000000000000000000089896000818110610e0b57610e0b613d81565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119929190613ee2565b61199e5761199e6137be565b600086866119ad600182613d6a565b8181106119bc576119bc613d81565b90506020020160208101906119d19190613d97565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a082319060240160206040518083038186803b158015611a1457600080fd5b505afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613ec9565b9050611a8c878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612e95915050565b87610fdf828989611a9e600182613d6a565b818110611aad57611aad613d81565b9050602002016020810190611ac29190613d97565b6040516370a0823160e01b81526001600160a01b038a8116600483015291909116906370a0823190602401610f89565b6000808242811015611b165760405162461bcd60e51b815260040161051390613d1d565b6000611b437f00000000000000000000000000000000000000000000000000000000000000008c8c612949565b6040516323b872dd60e01b81523360048201526001600160a01b03821660248201819052604482018c90529192506323b872dd90606401602060405180830381600087803b158015611b9457600080fd5b505af1158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc9190613ee2565b5060405163226bf2d160e21b81526001600160a01b03878116600483015260009182918416906389afcb44906024016040805180830381600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c9190613eff565b915091506000611c5c8e8e6132ec565b509050806001600160a01b03168e6001600160a01b031614611c7f578183611c82565b82825b90975095508a871015611ca75760405162461bcd60e51b815260040161051390613f23565b89861015611cc75760405162461bcd60e51b815260040161051390613f6b565b505050505097509795505050505050565b606061095c7f000000000000000000000000000000000000000000000000000000000000000084846127be565b6000806000611d557f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612949565b9050600087611d64578c611d68565b6000195b60405163d505accf60e01b81529091506001600160a01b0383169063d505accf90611da3903390309086908f908e908e908e90600401613e3f565b600060405180830381600087803b158015611dbd57600080fd5b505af1158015611dd1573d6000803e3d6000fd5b50505050611de38e8e8e8e8e8e6104ef565b909f909e509c50505050505050505050505050565b60008060008342811015611e1e5760405162461bcd60e51b815260040161051390613d1d565b611e2c8c8c8c8c8c8c6133e6565b90945092506000611e5e7f00000000000000000000000000000000000000000000000000000000000000008e8e612949565b9050611e6c8d3383886129ce565b611e788c3383876129ce565b6040516335313c2160e11b81526001600160a01b038881166004830152821690636a62784290602401602060405180830381600087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef39190613ec9565b92505050985098509895505050505050565b60008060008342811015611f2b5760405162461bcd60e51b815260040161051390613d1d565b611f598a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c6133e6565b90945092506000611fab7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612949565b9050611fb98b3383886129ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038581166004830152602482018990527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb92506044019050602060405180830381600087803b15801561209857600080fd5b505af11580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d09190613ee2565b6120dc576120dc6137be565b6040516335313c2160e11b81526001600160a01b038881166004830152821690636a62784290602401602060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121579190613ec9565b925083341115612174576121743361216f8634613d6a565b612611565b505096509650969350505050565b606081428110156121a55760405162461bcd60e51b815260040161051390613d1d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106121e2576121e2613d81565b90506020020160208101906121f79190613d97565b6001600160a01b03161461221d5760405162461bcd60e51b815260040161051390613dbb565b61227b7f000000000000000000000000000000000000000000000000000000000000000088888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1492505050565b9150348260008151811061229157612291613d81565b602002602001015111156122b75760405162461bcd60e51b815260040161051390613e80565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106122f9576122f9613d81565b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561232c57600080fd5b505af1158015612340573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6123ab7f000000000000000000000000000000000000000000000000000000000000000089896000818110610e0b57610e0b613d81565b846000815181106123be576123be613d81565b60200260200101516040518363ffffffff1660e01b81526004016123f79291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b15801561241157600080fd5b505af1158015612425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124499190613ee2565b612455576124556137be565b61249482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612b0c915050565b816000815181106124a7576124a7613d81565b602002602001015134111561155b5761155b33836000815181106124cd576124cd613d81565b60200260200101513461216f9190613d6a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161253c9190613fdf565b6000604051808303816000865af19150503d8060008114612579576040519150601f19603f3d011682016040523d82523d6000602084013e61257e565b606091505b50915091508180156125a85750805115806125a85750808060200190518101906125a89190613ee2565b61260a5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610513565b5050505050565b604080516000808252602082019092526001600160a01b03841690839060405161263b9190613fdf565b60006040518083038185875af1925050503d8060008114612678576040519150601f19603f3d011682016040523d82523d6000602084013e61267d565b606091505b50509050806126eb5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610513565b505050565b60008084116127455760405162461bcd60e51b815260206004820152602d602482015260008051602061419383398151915260448201526c17d25394155517d05353d55395609a1b6064820152608401610513565b6000831180156127555750600082115b6127715760405162461bcd60e51b815260040161051390613ffb565b600061277f856103e5613629565b9050600061278d8285613629565b905060006127a7836127a1886103e8613629565b90613690565b90506127b38183614033565b979650505050505050565b60606002825110156128125760405162461bcd60e51b815260206004820181905260248201527f54696465426974537761704c6962726172793a20494e56414c49445f504154486044820152606401610513565b815167ffffffffffffffff81111561282c5761282c613982565b604051908082528060200260200182016040528015612855578160200160208202803683370190505b509050828160008151811061286c5761286c613d81565b60200260200101818152505060005b600183516128899190613d6a565b811015612941576000806128dc878685815181106128a9576128a9613d81565b6020026020010151878660016128bf9190614055565b815181106128cf576128cf613d81565b60200260200101516136e5565b915091506129048484815181106128f5576128f5613d81565b602002602001015183836126f0565b84612910856001614055565b8151811061292057612920613d81565b602002602001018181525050505080806129399061406d565b91505061287b565b509392505050565b60405163e6a4390560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e6a439059060440160206040518083038186803b15801561299657600080fd5b505afa1580156129aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f89190614088565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612a329190613fdf565b6000604051808303816000865af19150503d8060008114612a6f576040519150601f19603f3d011682016040523d82523d6000602084013e612a74565b606091505b5091509150818015612a9e575080511580612a9e575080806020019051810190612a9e9190613ee2565b612b045760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608401610513565b505050505050565b60005b60018351612b1d9190613d6a565b811015612d0e57600080848381518110612b3957612b39613d81565b602002602001015185846001612b4f9190614055565b81518110612b5f57612b5f613d81565b6020026020010151915091506000612b7783836132ec565b509050600087612b88866001614055565b81518110612b9857612b98613d81565b60200260200101519050600080836001600160a01b0316866001600160a01b031614612bc657826000612bca565b6000835b91509150600060028a51612bde9190613d6a565b8810612bea5788612c38565b612c387f0000000000000000000000000000000000000000000000000000000000000000878c612c1b8c6002614055565b81518110612c2b57612c2b613d81565b6020026020010151612949565b9050612c657f00000000000000000000000000000000000000000000000000000000000000008888612949565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015612ca2576020820181803683370190505b506040518563ffffffff1660e01b8152600401612cc294939291906140a5565b600060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b50505050505050505050508080612d069061406d565b915050612b0f565b50505050565b6060600282511015612d685760405162461bcd60e51b815260206004820181905260248201527f54696465426974537761704c6962726172793a20494e56414c49445f504154486044820152606401610513565b815167ffffffffffffffff811115612d8257612d82613982565b604051908082528060200260200182016040528015612dab578160200160208202803683370190505b509050828160018351612dbe9190613d6a565b81518110612dce57612dce613d81565b602002602001018181525050600060018351612dea9190613d6a565b90505b801561294157600080612e308786612e06600187613d6a565b81518110612e1657612e16613d81565b60200260200101518786815181106128cf576128cf613d81565b91509150612e58848481518110612e4957612e49613d81565b60200260200101518383613193565b84612e64600186613d6a565b81518110612e7457612e74613d81565b60200260200101818152505050508080612e8d906140f5565b915050612ded565b60005b60018351612ea69190613d6a565b8110156126eb57600080848381518110612ec257612ec2613d81565b602002602001015185846001612ed89190614055565b81518110612ee857612ee8613d81565b6020026020010151915091506000612f0083836132ec565b5090506000612f307f00000000000000000000000000000000000000000000000000000000000000008585612949565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612f7157600080fd5b505afa158015612f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa99190614123565b506001600160701b031691506001600160701b03169150600080876001600160a01b03168a6001600160a01b031614612fe3578284612fe6565b83835b6040516370a0823160e01b81526001600160a01b038a81166004830152929450909250613021918491908d16906370a0823190602401610f89565b955061302e8683836126f0565b945050505050600080856001600160a01b0316886001600160a01b0316146130585782600061305c565b6000835b91509150600060028c516130709190613d6a565b8a1061307c578a6130ad565b6130ad7f0000000000000000000000000000000000000000000000000000000000000000898e612c1b8e6002614055565b6040805160008152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f906130ef90869086908690602481016140a5565b600060405180830381600087803b15801561310957600080fd5b505af115801561311d573d6000803e3d6000fd5b5050505050505050505050505080806131359061406d565b915050612e98565b60008261314a8382613d6a565b915081111561095f5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b6044820152606401610513565b60008084116131e95760405162461bcd60e51b815260206004820152602e602482015260008051602061419383398151915260448201526d17d3d55514155517d05353d5539560921b6064820152608401610513565b6000831180156131f95750600082115b6132155760405162461bcd60e51b815260040161051390613ffb565b600061322d6103e86132278688613629565b90613629565b905060006132416103e5613227868961313d565b905061325260016127a18385614033565b9695505050505050565b60008084116132ab5760405162461bcd60e51b8152602060048201526027602482015260008051602061419383398151915260448201526617d05353d5539560ca1b6064820152608401610513565b6000831180156132bb5750600082115b6132d75760405162461bcd60e51b815260040161051390613ffb565b826132e28584613629565b6105f89190614033565b600080826001600160a01b0316846001600160a01b031614156133615760405162461bcd60e51b815260206004820152602760248201527f54696465426974537761704c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b6064820152608401610513565b826001600160a01b0316846001600160a01b031610613381578284613384565b83835b90925090506001600160a01b0382166133df5760405162461bcd60e51b815260206004820181905260248201527f54696465426974537761704c6962726172793a205a45524f5f414444524553536044820152606401610513565b9250929050565b60405163e6a4390560e01b81526001600160a01b0387811660048301528681166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a439059060440160206040518083038186803b15801561345857600080fd5b505afa15801561346c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134909190614088565b6001600160a01b03161415613544576040516364e329cb60e11b81526001600160a01b03898116600483015288811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c9c6539690604401602060405180830381600087803b15801561350a57600080fd5b505af115801561351e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135429190614088565b505b6000806135727f00000000000000000000000000000000000000000000000000000000000000008b8b6136e5565b91509150816000148015613584575080155b156135945787935086925061361c565b60006135a189848461325c565b90508781116135d557858110156135ca5760405162461bcd60e51b815260040161051390613f6b565b88945092508261361a565b60006135e289848661325c565b9050898111156135f4576135f46137be565b878110156136145760405162461bcd60e51b815260040161051390613f23565b94508793505b505b5050965096945050505050565b600081158061364d5750828261363f8183614173565b925061364b9083614033565b145b61095f5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b6044820152606401610513565b60008261369d8382614055565b915081101561095f5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b6044820152606401610513565b60008060006136f485856132ec565b509050600080613705888888612949565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561373d57600080fd5b505afa158015613751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137759190614123565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b0316146137ac5780826137af565b81815b90999098509650505050505050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146137e957600080fd5b50565b80356137f7816137d4565b919050565b60008060008060008060c0878903121561381557600080fd5b8635613820816137d4565b95506020870135945060408701359350606087013592506080870135613845816137d4565b8092505060a087013590509295509295509295565b60008060006060848603121561386f57600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261389857600080fd5b50813567ffffffffffffffff8111156138b057600080fd5b6020830191508360208260051b85010111156133df57600080fd5b60008060008060008060a087890312156138e457600080fd5b8635955060208701359450604087013567ffffffffffffffff81111561390957600080fd5b61391589828a01613886565b9095509350506060870135613929816137d4565b80925050608087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156139765783518352928401929184019160010161395a565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156139ab57600080fd5b8235915060208084013567ffffffffffffffff808211156139cb57600080fd5b818601915086601f8301126139df57600080fd5b8135818111156139f1576139f1613982565b8060051b604051601f19603f83011681018181108582111715613a1657613a16613982565b604052918252848201925083810185019189831115613a3457600080fd5b938501935b82851015613a5957613a4a856137ec565b84529385019392850192613a39565b8096505050505050509250929050565b80151581146137e957600080fd5b803560ff811681146137f757600080fd5b60008060008060008060008060008060006101608c8e031215613aaa57600080fd5b8b35613ab5816137d4565b9a5060208c0135613ac5816137d4565b995060408c0135985060608c0135975060808c0135965060a08c0135613aea816137d4565b955060c08c0135945060e08c0135613b0181613a69565b9350613b106101008d01613a77565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000806000806000806000806000806101408b8d031215613b5257600080fd5b8a35613b5d816137d4565b995060208b0135985060408b0135975060608b0135965060808b0135613b82816137d4565b955060a08b0135945060c08b0135613b9981613a69565b9350613ba760e08c01613a77565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600060808688031215613be057600080fd5b85359450602086013567ffffffffffffffff811115613bfe57600080fd5b613c0a88828901613886565b9095509350506040860135613c1e816137d4565b949793965091946060013592915050565b600080600080600080600060e0888a031215613c4a57600080fd5b8735613c55816137d4565b96506020880135613c65816137d4565b955060408801359450606088013593506080880135925060a0880135613c8a816137d4565b8092505060c0880135905092959891949750929550565b600080600080600080600080610100898b031215613cbe57600080fd5b8835613cc9816137d4565b97506020890135613cd9816137d4565b965060408901359550606089013594506080890135935060a0890135925060c0890135613d05816137d4565b8092505060e089013590509295985092959890939650565b6020808252601a908201527f5469646542697453776170526f757465723a2045585049524544000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015613d7c57613d7c613d54565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613da957600080fd5b8135613db4816137d4565b9392505050565b6020808252601f908201527f5469646542697453776170526f757465723a20494e56414c49445f5041544800604082015260600190565b6020808252602d908201527f5469646542697453776170526f757465723a20494e53554646494349454e545f60408201526c13d55514155517d05353d55395609a1b606082015260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b60208082526029908201527f5469646542697453776170526f757465723a204558434553534956455f494e50604082015268155517d05353d5539560ba1b606082015260800190565b600060208284031215613edb57600080fd5b5051919050565b600060208284031215613ef457600080fd5b8151613db481613a69565b60008060408385031215613f1257600080fd5b505080516020909101519092909150565b60208082526028908201527f5469646542697453776170526f757465723a20494e53554646494349454e545f6040820152671057d05353d5539560c21b606082015260800190565b60208082526028908201527f5469646542697453776170526f757465723a20494e53554646494349454e545f6040820152671097d05353d5539560c21b606082015260800190565b60005b83811015613fce578181015183820152602001613fb6565b83811115612d0e5750506000910152565b60008251613ff1818460208701613fb3565b9190910192915050565b6020808252602a908201526000805160206141938339815191526040820152695f4c495155494449545960b01b606082015260800190565b60008261405057634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561406857614068613d54565b500190565b600060001982141561408157614081613d54565b5060010190565b60006020828403121561409a57600080fd5b8151613db4816137d4565b84815283602082015260018060a01b038316604082015260806060820152600082518060808401526140de8160a0850160208701613fb3565b601f01601f19169190910160a00195945050505050565b60008161410457614104613d54565b506000190190565b80516001600160701b03811681146137f757600080fd5b60008060006060848603121561413857600080fd5b6141418461410c565b925061414f6020850161410c565b9150604084015163ffffffff8116811461416857600080fd5b809150509250925092565b600081600019048311821515161561418d5761418d613d54565b50029056fe54696465426974537761704c6962726172793a20494e53554646494349454e54a2646970667358221220380d9495c9fd375b4a9f8d620b4950b6e19977c0173b2098499d9b0ab2a4918164736f6c634300080900330000000000000000000000009dc3f2cda54554fadf20b2139d10b935912a2bd5000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2