0x60806040523480156200001157600080fd5b5060043610620000925760003560e01c806377114152116200006257806377114152146200010d5780637ac4ed64146200012e578063f363217e1462000167578063f6329585146200017e57600080fd5b8062435da5146200009757806315211d6314620000c857806317de2f1f14620000e15780634215d57314620000f9575b600080fd5b600054620000ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620000df620000d93660046200084d565b62000195565b005b620000ea600081565b604051908152602001620000bf565b600154620000ab906001600160a01b031681565b620000ea754e46544d616e616765724465706c6f796572526f6c6560501b81565b620000ab6200013f36600462000872565b6001600160a01b03918216600090815260026020908152604080832093835292905220541690565b620000df620001783660046200084d565b620002fb565b620000df6200018f3660046200089f565b6200045c565b600054604051632474521560e21b8152754e46544d616e616765724465706c6f796572526f6c6560501b60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002239190620008b9565b6200024b5760405162461bcd60e51b81526004016200024290620008dd565b60405180910390fd5b806001600160a01b0381163b620002a55760405162461bcd60e51b815260206004820181905260248201527f4e4d4465706c6f7965723a206e6176696761746f72206d757374206265206361604482015260640162000242565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f02a39e9533105de4d1b435f8c88df78499a7d43d8531efbacc79b0b0eb68d040906020015b60405180910390a15050565b600054604051632474521560e21b8152754e46544d616e616765724465706c6f796572526f6c6560501b60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801562000363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003899190620008b9565b620003a85760405162461bcd60e51b81526004016200024290620008dd565b806001600160a01b0381163b6200040d5760405162461bcd60e51b815260206004820152602260248201527f4e4d4465706c6f7965723a20726f6c654d616e61676572206d75737420626520604482015261636160f01b606482015260840162000242565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527fc1af5622742cba495bc672727cd888bf9126ea99146d650f7f8319575155879090602001620002ef565b600054604051632474521560e21b8152754e46544d616e616765724465706c6f796572526f6c6560501b60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015620004c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ea9190620008b9565b620005095760405162461bcd60e51b81526004016200024290620008dd565b60006200051c3683900383018362000989565b90506000306200053060208501856200084d565b6040516bffffffffffffffffffffffff19606093841b811660208301529190921b1660348201524360488201526068016040516020818303038152906040528051906020012090508082604051620005889062000822565b62000594919062000a4f565b8190604051809103906000f590508015620005ac5760015b6200068b57620005bb62000b31565b806308c379a01415620005fd5750620005d362000b4e565b80620005e057506200063d565b8060405163754fa69360e01b815260040162000242919062000c2e565b634e487b7114156200063d576200061362000c43565b906200062057506200063d565b60405163ed36b43760e01b81526004810182905260240162000242565b3d80801562000669576040519150601f19603f3d011682016040523d82523d6000602084013e6200066e565b606091505b50806040516274e0bd60e61b815260040162000242919062000c2e565b82516001600160a01b03908116600090815260026020908152604080832060e0880180518552925290912080546001600160a01b03191692841692909217909155835190518291620006de918362000760565b83602001516001600160a01b031684600001516001600160a01b03167fbf97fcf3454294bb0d408ec8b299650475ad7efbfa26ac8ccb2a8b49e454ce188660e0015184604051620007429291909182526001600160a01b0316602082015260400190565b60405180910390a35050505050565b6001600160a01b03163b151590565b600154604051635c37dfc760e11b81526001600160a01b0385811660048301526024820185905283811660448301529091169063b86fbf8e90606401600060405180830381600087803b158015620007b757600080fd5b505af1925050508015620007c9575060015b620007d857620005bb62000b31565b604080518381526001600160a01b0383811660208301528516917f70e437034e75c6dbbbc36958d12ebfaeb7c8567d11876b03419562c5234cdb2c910160405180910390a2505050565b6116818062000c6583390190565b80356001600160a01b03811681146200084857600080fd5b919050565b6000602082840312156200086057600080fd5b6200086b8262000830565b9392505050565b600080604083850312156200088657600080fd5b620008918362000830565b946020939093013593505050565b60006101408284031215620008b357600080fd5b50919050565b600060208284031215620008cc57600080fd5b815180151581146200086b57600080fd5b6020808252601e908201527f4e4d4465706c6f7965723a206e6f74204e4d4465706c6f796572526f6c650000604082015260600190565b601f8201601f1916810167ffffffffffffffff811182821017156200094957634e487b7160e01b600052604160045260246000fd5b6040525050565b604051610140810167ffffffffffffffff811182821017156200098357634e487b7160e01b600052604160045260246000fd5b60405290565b600061014082840312156200099d57600080fd5b620009a762000950565b620009b28362000830565b8152620009c26020840162000830565b6020820152620009d56040840162000830565b6040820152620009e86060840162000830565b6060820152620009fb6080840162000830565b608082015262000a0e60a0840162000830565b60a082015262000a2160c0840162000830565b60c082015260e083810135908201526101008084013590820152610120928301359281019290925250919050565b81516001600160a01b031681526101408101602083015162000a7c60208401826001600160a01b03169052565b50604083015162000a9860408401826001600160a01b03169052565b50606083015162000ab460608401826001600160a01b03169052565b50608083015162000ad060808401826001600160a01b03169052565b5060a083015162000aec60a08401826001600160a01b03169052565b5060c083015162000b0860c08401826001600160a01b03169052565b5060e083015160e083015261010080840151818401525061012080840151818401525092915050565b600060033d111562000b4b5760046000803e5060005160e01c5b90565b600060443d101562000b5d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171562000b8e57505050505090565b828501915081518181111562000ba75750505050505090565b843d870101602082850101111562000bc25750505050505090565b62000bd36020828601018762000914565b509095945050505050565b6000815180845260005b8181101562000c065760208185018101518683018201520162000be8565b8181111562000c19576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006200086b602083018462000bde565b60008060233d111562000c60576020600460003e50506000516001905b909156fe6101206040523480156200001257600080fd5b506040516200168138038062001681833981016040819052620000359162000228565b60608101516001600160a01b03908116608090815260c080840151600380549185166001600160a01b031992831617905560a0808601516004805491871691841691909117905592850151841690925260e080850151909152610100808501519091526101208401519052604083015160078054918416918316919091179055825160058054918416918316919091179055602083015160068054919093169116179055620000f3631b5a5b9d60e21b63742b009760e01b62000136565b6200010d63313ab93760e11b635ab7a8d160e11b62000136565b6200012f6b6368616e676553746174757360a01b630f92d62b60e41b62000136565b50620002ee565b816200015c8160009081526020819052604090205460e01b6001600160e01b0319161590565b620001ad5760405162461bcd60e51b815260206004820152601d60248201527f5665726966794b65793a20616c72656164792072656769737465726564000000604482015260640160405180910390fd5b6000908152602081905260409020805463ffffffff191660e09290921c91909117905550565b60405161014081016001600160401b03811182821017156200020557634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200022357600080fd5b919050565b600061014082840312156200023c57600080fd5b62000246620001d3565b62000251836200020b565b815262000261602084016200020b565b602082015262000274604084016200020b565b604082015262000287606084016200020b565b60608201526200029a608084016200020b565b6080820152620002ad60a084016200020b565b60a0820152620002c060c084016200020b565b60c082015260e083810151908201526101008084015190820152610120928301519281019290925250919050565b60805160a05160c05160e0516101005161131e620003636000396000818161017a015281816102bc01526104740152600081816101d60152610a3301526000818161025c01526106dd0152600081816101af015281816103e7015261059301526000818160fe01526107be015261131e6000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c8063647846a511610097578063d598d4c911610066578063d598d4c914610257578063f971fac61461027e578063fbfa77cf14610291578063fc0c546a146102a457600080fd5b8063647846a51461020b578063742b00971461021e578063b33ddcef14610231578063cdab73b51461024457600080fd5b80633f3108f7116100d35780633f3108f7146101755780634215d573146101aa57806342f7022e146101d157806360e232a9146101f857600080fd5b8062435da5146100f95780631a440de61461013d5780633d7ef89f14610152575b600080fd5b6101207f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61015061014b366004610f63565b6102b7565b005b610165610160366004610f96565b6103e2565b6040519015158152602001610134565b61019c7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610134565b6101207f000000000000000000000000000000000000000000000000000000000000000081565b61019c7f000000000000000000000000000000000000000000000000000000000000000081565b610150610206366004610f63565b61046f565b600654610120906001600160a01b031681565b61016561022c366004611003565b61058e565b600354610120906001600160a01b031681565b600454610120906001600160a01b031681565b61019c7f000000000000000000000000000000000000000000000000000000000000000081565b61019c61028c366004611075565b610771565b600754610120906001600160a01b031681565b600554610120906001600160a01b031681565b6102e17f000000000000000000000000000000000000000000000000000000000000000033610795565b6103325760405162461bcd60e51b815260206004820152601c60248201527f4e4d3a206d73672073656e646572206973206e6f74207365747465720000000060448201526064015b60405180910390fd5b6001600160a01b0381166103885760405162461bcd60e51b815260206004820152601d60248201527f4e4d3a20696e7661696c642066656520746f6b656e20616464726573730000006044820152606401610329565b600680546001600160a01b0319166001600160a01b038316908117909155604080519182524360208301527f2afb41c10e55d4eb53fdbb3999647648001df39aa4be5d0c33031149dcee123e91015b60405180910390a150565b6000337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461045c5760405162461bcd60e51b815260206004820152601f60248201527f4e4d3a206d73672073656e646572206973206e6f74206e6176696761746f72006044820152606401610329565b61046784848461082b565b949350505050565b6104997f000000000000000000000000000000000000000000000000000000000000000033610795565b6104e55760405162461bcd60e51b815260206004820152601c60248201527f4e4d3a206d73672073656e646572206973206e6f7420736574746572000000006044820152606401610329565b6001600160a01b03811661053b5760405162461bcd60e51b815260206004820152601960248201527f564d3a20696e76616c6964207661756c742061646472657373000000000000006044820152606401610329565b600780546001600160a01b0319166001600160a01b038316908117909155604080519182524360208301527fb203833ec18b2adbda3d053e2b5eb1e9e6ce0434914276a32066f21475e70d4091016103d7565b6000337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106085760405162461bcd60e51b815260206004820152601f60248201527f4e4d3a206d73672073656e646572206973206e6f74206e6176696761746f72006044820152606401610329565b600061061384611139565b60065490915083906001600160a01b03166106368763742b009760e01b8461082b565b50825115610764576003548351604051633950935160e01b81526001600160a01b0392831660048201526024810191909152908216906339509351906044016020604051808303816000875af1158015610694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b891906111ce565b506003548351604051639f812d6560e01b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000006024830152602086013560448301526064820192909252911690639f812d65906084016020604051808303816000875af115801561073e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076291906111ce565b505b5060019695505050505050565b60008181526020819052604081205461078e90849060e01b610aad565b9392505050565b604051632474521560e21b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906391d1485490604401602060405180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e91906111ce565b6000806108378361120b565b9050600080826040015151600014156109065782516001600160a01b038881169116146108a65760405162461bcd60e51b815260206004820152601a60248201527f4e4d3a20766572696679206d73672073656e646572206661696c0000000000006044820152606401610329565b825160608401519092506108ff906108be8489610aad565b6020808701516040516108db939201918252602082015260400190565b60405160208183030381529060405280519060200120610b2b90919063ffffffff16565b905061099b565b61091c83604001516108be856000015189610aad565b6001600160a01b031683600001516001600160a01b0316146109775760405162461bcd60e51b815260206004820152601460248201527313934e881d995c9a599e481d5cd95c8819985a5b60621b6044820152606401610329565b82516060840151604085015180516020909101209193506109989190610b2b565b90505b6109a482610b4f565b156109e25760405162461bcd60e51b815260206004820152600e60248201526d27269d10313630b1b5903ab9b2b960911b6044820152606401610329565b6109eb81610b4f565b15610a2e5760405162461bcd60e51b815260206004820152601360248201527227269d10313630b1b5903b30b634b230ba37b960691b6044820152606401610329565b610a587f000000000000000000000000000000000000000000000000000000000000000082610795565b610aa45760405162461bcd60e51b815260206004820152601960248201527f4e4d3a207665726966792076616c696461746f72206661696c000000000000006044820152606401610329565b61076482610bce565b6001600160a01b03821660009081526001602090815260409182902054825130606090811b6bffffffffffffffffffffffff199081168386015246603484015296901b90951660548601526001600160e01b03199093166068850152606c8085019390935281518085039093018352608c9093019052805191012090565b6000806000610b3a8585610bf6565b91509150610b4781610c66565b509392505050565b60048054604051631cf3c04f60e21b815230928101929092526001600160a01b0383811660248401526000929116906373cf013c90604401602060405180830381865afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc891906111ce565b92915050565b6001600160a01b0381166000908152600160205260409020610bf39080546001019055565b50565b600080825160411415610c2d5760208301516040840151606085015160001a610c2187828585610e21565b94509450505050610c5f565b825160401415610c575760208301516040840151610c4c868383610f0e565b935093505050610c5f565b506000905060025b9250929050565b6000816004811115610c7a57610c7a6112ac565b1415610c835750565b6001816004811115610c9757610c976112ac565b1415610ce55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610329565b6002816004811115610cf957610cf96112ac565b1415610d475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610329565b6003816004811115610d5b57610d5b6112ac565b1415610db45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610329565b6004816004811115610dc857610dc86112ac565b1415610bf35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610329565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e585750600090506003610f05565b8460ff16601b14158015610e7057508460ff16601c14155b15610e815750600090506004610f05565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ed5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610efe57600060019250925050610f05565b9150600090505b94509492505050565b6000806001600160ff1b03831681610f2b60ff86901c601b6112c2565b9050610f3987828885610e21565b935093505050935093915050565b80356001600160a01b0381168114610f5e57600080fd5b919050565b600060208284031215610f7557600080fd5b61078e82610f47565b600060808284031215610f9057600080fd5b50919050565b600080600060608486031215610fab57600080fd5b610fb484610f47565b925060208401356001600160e01b031981168114610fd157600080fd5b9150604084013567ffffffffffffffff811115610fed57600080fd5b610ff986828701610f7e565b9150509250925092565b60008060006060848603121561101857600080fd5b61102184610f47565b9250602084013567ffffffffffffffff8082111561103e57600080fd5b908501906060828803121561105257600080fd5b9092506040850135908082111561106857600080fd5b50610ff986828701610f7e565b6000806040838503121561108857600080fd5b61109183610f47565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610bf357600080fd5b600067ffffffffffffffff808411156110de576110de61109f565b604051601f8501601f19908116603f011681019082821181831017156111065761110661109f565b8160405280935085815286868601111561111f57600080fd5b858560208301376000602087830101525050509392505050565b60006060823603121561114b57600080fd5b6040516060810167ffffffffffffffff828210818311171561116f5761116f61109f565b816040528435835260208501359150611187826110b5565b81602084015260408501359150808211156111a157600080fd5b50830136601f8201126111b357600080fd5b6111c2368235602084016110c3565b60408301525092915050565b6000602082840312156111e057600080fd5b815161078e816110b5565b600082601f8301126111fc57600080fd5b61078e838335602085016110c3565b60006080823603121561121d57600080fd5b6040516080810167ffffffffffffffff82821081831117156112415761124161109f565b8160405261124e85610f47565b835260208501356020840152604085013591508082111561126e57600080fd5b61127a368387016111eb565b6040840152606085013591508082111561129357600080fd5b506112a0368286016111eb565b60608301525092915050565b634e487b7160e01b600052602160045260246000fd5b600082198211156112e357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f02e75465533e772142a83ca6b1a2a6153e89633eb03e362f84326796871eb1964736f6c634300080a0033a264697066735822122040ccabd3152af8a72f8a477cd3630fa904776862ed0762c85674ca79be636f2264736f6c634300080a0033