608060405234801561001057600080fd5b506133ed806100206000396000f3fe60806040526004361061026b5760003560e01c80637cf84bd711610144578063cb19ec67116100b6578063df8408fe1161007a578063df8408fe146107a5578063f11a24d3146107c5578063f2fde38b146107e7578063f637434214610807578063f8a25a9414610829578063fc59d23d1461084b57600080fd5b8063cb19ec6714610705578063cf089e1314610725578063cf188ad014610745578063d68f8cde14610765578063dd62ed3e1461078557600080fd5b8063941fa5cd11610108578063941fa5cd1461063e57806395d89b41146106605780639a7a23d614610675578063a457c2d714610695578063a9059cbb146106b5578063b62496f5146106d557600080fd5b80637cf84bd71461059e57806385af30c5146105be5780638da5cb5b146105de57806391c1004a146105fc578063921369131461061c57600080fd5b80634707c551116101dd578063715018a6116101a1578063715018a6146104d457806373b9e82c146104e957806375f0a87414610509578063764c86c3146105295780637bce5a04146105495780637c75ad3a1461057e57600080fd5b80634707c5511461040d5780635342acb41461042d57806357e62b981461045d57806365b8dbc01461047e57806370a082311461049e57600080fd5b806323b872dd1161022f57806323b872dd146103285780632dc0562d146103485780632e1a7d4d14610380578063313ce567146103a057806339509351146103cc5780633bb83006146103ec57600080fd5b806306fdde0314610277578063095ea7b3146102a257806312424e3f146102d257806318160ddd146102e95780631e9e33b51461030857600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028c610861565b6040516102999190612b64565b60405180910390f35b3480156102ae57600080fd5b506102c26102bd366004612bac565b6108f3565b6040519015158152602001610299565b3480156102de57600080fd5b506102e761090d565b005b3480156102f557600080fd5b506035545b604051908152602001610299565b34801561031457600080fd5b506102e7610323366004612bf6565b610c19565b34801561033457600080fd5b506102c2610343366004612c2f565b610d13565b34801561035457600080fd5b50609a54610368906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561038c57600080fd5b506102e761039b366004612c70565b610d37565b3480156103ac57600080fd5b50609754600160a01b900460ff1660405160ff9091168152602001610299565b3480156103d857600080fd5b506102c26103e7366004612bac565b610db6565b3480156103f857600080fd5b50609a546102c290600160a01b900460ff1681565b34801561041957600080fd5b506102e7610428366004612bf6565b610dd8565b34801561043957600080fd5b506102c2610448366004612c89565b609e6020526000908152604090205460ff1681565b34801561046957600080fd5b506099546102c290600160a01b900460ff1681565b34801561048a57600080fd5b506102e7610499366004612c89565b610ed5565b3480156104aa57600080fd5b506102fa6104b9366004612c89565b6001600160a01b031660009081526033602052604090205490565b3480156104e057600080fd5b506102e76110a3565b3480156104f557600080fd5b506102e7610504366004612c70565b6110b5565b34801561051557600080fd5b50609954610368906001600160a01b031681565b34801561053557600080fd5b506102e7610544366004612cbf565b611148565b34801561055557600080fd5b5060985461056b90600160d81b900461ffff1681565b60405161ffff9091168152602001610299565b34801561058a57600080fd5b50609754610368906001600160a01b031681565b3480156105aa57600080fd5b50609854610368906001600160a01b031681565b3480156105ca57600080fd5b50609d54610368906001600160a01b031681565b3480156105ea57600080fd5b506065546001600160a01b0316610368565b34801561060857600080fd5b506102e7610617366004612c89565b61128d565b34801561062857600080fd5b5060985461056b90600160c81b900461ffff1681565b34801561064a57600080fd5b5060995461056b90600160b81b900461ffff1681565b34801561066c57600080fd5b5061028c6113bd565b34801561068157600080fd5b506102e7610690366004612bf6565b6113cc565b3480156106a157600080fd5b506102c26106b0366004612bac565b6113de565b3480156106c157600080fd5b506102c26106d0366004612bac565b611459565b3480156106e157600080fd5b506102c26106f0366004612c89565b609f6020526000908152604090205460ff1681565b34801561071157600080fd5b506102e7610720366004612e76565b611467565b34801561073157600080fd5b506102e7610740366004612cbf565b611c03565b34801561075157600080fd5b50609c54610368906001600160a01b031681565b34801561077157600080fd5b506102e7610780366004612cbf565b611d46565b34801561079157600080fd5b506102fa6107a0366004612f44565b611e93565b3480156107b157600080fd5b506102e76107c0366004612bf6565b611ebe565b3480156107d157600080fd5b5060985461056b90600160b81b900461ffff1681565b3480156107f357600080fd5b506102e7610802366004612c89565b611f80565b34801561081357600080fd5b5060985461056b90600160a81b900461ffff1681565b34801561083557600080fd5b5060995461056b90600160a81b900461ffff1681565b34801561085757600080fd5b506102fa609b5481565b60606036805461087090612f72565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90612f72565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b5050505050905090565b600033610901818585611ff6565b60019150505b92915050565b3373193da35c71aaef49e6a7557fb952bb75cb5379ee1461092d57600080fd5b609c546109479030906001600160a01b0316600019611ff6565b47156109ad5760405160009073cc86ebcda2ad97356acd3a01367d4b6303ef1ded9047908381818185875af1925050503d80600081146109a3576040519150601f19603f3d011682016040523d82523d6000602084013e6109a8565b606091505b505050505b609c54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b9190612fac565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a859190612fc9565b1115610c0b57610c0b73cc86ebcda2ad97356acd3a01367d4b6303ef1ded609c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190612fac565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190612fc9565b609c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190612fac565b6001600160a01b0316919061211a565b610c1730600019612171565b565b610c21612232565b6001600160a01b038216610c745760405162461bcd60e51b815260206004820152601560248201527405461782077616c6c65742063616e2774206265203605c1b60448201526064015b60405180910390fd5b609a54604080518315158152600160a01b830460ff16151560208201526001600160a01b03928316928516917f962deed9443a25d870475ce212410b49610c676525c99c9871eaadfd8d459ecb910160405180910390a3609a8054911515600160a01b026001600160a81b03199092166001600160a01b039093169283179190911790556000908152609e60205260409020805460ff19166001179055565b600033610d2185828561228c565b610d2c858585612306565b506001949350505050565b3373193da35c71aaef49e6a7557fb952bb75cb5379ee14610d5757600080fd5b60005b81811015610db257609d546001600160a01b0316600090815260336020526040902054610da0906103e890610d91906103e7612ff8565b610d9b919061300f565b6123b0565b80610daa81613031565b915050610d5a565b5050565b600033610901818585610dc98383611e93565b610dd3919061304a565b611ff6565b610de0612232565b6001600160a01b038216610e365760405162461bcd60e51b815260206004820152601b60248201527f6d61726b6574696e672077616c6c65742063616e2774206265203000000000006044820152606401610c6b565b609954604080518315158152600160a01b830460ff16151560208201526001600160a01b03928316928516917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a360998054911515600160a01b026001600160a81b03199092166001600160a01b039093169283179190911790556000908152609e60205260409020805460ff19166001179055565b610edd612232565b609c546001600160a01b0390811690821603610f475760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610c6b565b609c546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3609c80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110029190612fac565b6098546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612fac565b609d80546001600160a01b0319166001600160a01b038316908117909155909150610db290600161259d565b6110ab612232565b610c17600061268b565b6110bd612232565b600081116111065760405162461bcd60e51b815260206004820152601660248201527506d696e416d6f756e74546f54616b65466565203e20360541b6044820152606401610c6b565b609b546040805183815260208101929092527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1609b55565b611150612232565b60985461012c9061ffff600160c81b820481169161117791600160a81b909104168561305d565b611181919061305d565b61ffff1611156111a35760405162461bcd60e51b8152600401610c6b9061307f565b60985461012c9061ffff600160d81b82048116916111ca91600160b81b909104168461305d565b6111d4919061305d565b61ffff1611156111f65760405162461bcd60e51b8152600401610c6b906130a8565b6099546040805161ffff85811682528481166020830152600160a81b8404811682840152600160b81b9093049092166060830152517f766731436a757f3f07425ba1e820b2c66ce4876deb2254ce340a26026889d3739181900360800190a16099805463ffffffff60a81b1916600160a81b61ffff9485160261ffff60b81b191617600160b81b9290931691909102919091179055565b611295612232565b609880546001600160a01b0319166001600160a01b0383811691909117909155609c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b9190612fac565b6098546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801561136c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113909190612fac565b609d80546001600160a01b0319166001600160a01b039290921691821790556113ba90600161259d565b50565b60606037805461087090612f72565b6113d4612232565b610db2828261259d565b600033816113ec8286611e93565b90508381101561144c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c6b565b610d2c8286868403611ff6565b600033610901818585612306565b600054610100900460ff16158080156114875750600054600160ff909116105b806114a15750303b1580156114a1575060005460ff166001145b6115045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c6b565b6000805460ff191660011790558015611527576000805461ff0019166101001790555b61153189896126dd565b61153961270e565b6097805460ff60a01b1916600160a01b60ff8a160217905561155b3387612171565b6080850151609780546001600160a01b03199081166001600160a01b03938416179091556060870151609880549092169083161790558551166115e05760405162461bcd60e51b815260206004820152601d60248201527f6d61726b6574696e672077616c6c65742063616e206e6f7420626520300000006044820152606401610c6b565b60208501516001600160a01b031661163a5760405162461bcd60e51b815260206004820152601b60248201527f526f7574657220616464726573732063616e206e6f74206265203000000000006044820152606401610c6b565b60808201516040830151835161012c92916116549161305d565b61165e919061305d565b61ffff1611156116805760405162461bcd60e51b8152600401610c6b9061307f565b60a08201516060830151602084015161012c929161169d9161305d565b6116a7919061305d565b61ffff1611156116c95760405162461bcd60e51b8152600401610c6b906130a8565b845160998054602080890151609a80548a1515600160a01b9081026001600160a01b039889166001600160a81b031997881681178217988990558c15158302979093169489169490941795909517909155604080519490950460ff1615158452600092840183905291941617917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a3609a5460408051600160a01b830460ff1615158152600060208201819052926001600160a01b0316917f962deed9443a25d870475ce212410b49610c676525c99c9871eaadfd8d459ecb910160405180910390a38460026020020151609c80546001600160a01b0319166001600160a01b039092169182179055604051600091907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908390a3609c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612fac565b6098546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190612fac565b609d80546001600160a01b0319166001600160a01b039290921691909117905581516098805460208086015163ffffffff60a81b1990921661ffff948516600160a81b90810261ffff60b81b191691909117600160b81b93861684021793849055604080519185048616825292909304909316928201929092526000818301819052606082015290517f95c5c99557725e816faf752c6675d63483841c28a7a009ed792470a9cb4dea239181900360800190a16040828101516098805460608087015163ffffffff60c81b1990921661ffff948516600160c81b90810261ffff60d81b191691909117600160d81b9386168402179384905585519084048516815291909204909216602083015260008284018190529082015290517f1d6b62961d401d548eb1549c97109c0b905ccd7af9c3777d3076cc8438fdfe659181900360800190a16080808301516099805460a086015161ffff908116600160b81b90810261ffff60b81b19600160a81b96841687021663ffffffff60a81b199094169390931792909217928390556040805194840482168552919092049091166020830152600090820181905260608201527f766731436a757f3f07425ba1e820b2c66ce4876deb2254ce340a26026889d373910160405180910390a1611ada6127108761300f565b609b81905560408051918252600060208301527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1306000908152609e60205260408082208054600160ff1991821681179092556099546001600160a01b0390811685528385208054831684179055609a54811685528385208054831684179055338552928420805482168317905561dead9093527f88f1e09e5b63c40ce12f3b2b115d6177c577a0641ae289ca360b09b8ed76deb080549093168117909255609d54611bb29291169061259d565b8015611bf8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b611c0b612232565b60995460985461012c9161ffff600160a81b91829004811692611c31929004168561305d565b611c3b919061305d565b61ffff161115611c5d5760405162461bcd60e51b8152600401610c6b9061307f565b60995460985461012c9161ffff600160b81b91829004811692611c83929004168461305d565b611c8d919061305d565b61ffff161115611caf5760405162461bcd60e51b8152600401610c6b906130a8565b6098546040805161ffff85811682528481166020830152600160c81b8404811682840152600160d81b9093049092166060830152517f1d6b62961d401d548eb1549c97109c0b905ccd7af9c3777d3076cc8438fdfe659181900360800190a16098805463ffffffff60c81b1916600160c81b61ffff9485160261ffff60d81b191617600160d81b9290931691909102919091179055565b611d4e612232565b60995460985461012c9161ffff600160a81b909104811691611d7991600160c81b909104168561305d565b611d83919061305d565b61ffff161115611da55760405162461bcd60e51b8152600401610c6b9061307f565b60995460985461012c9161ffff600160b81b909104811691611dd091600160d81b909104168461305d565b611dda919061305d565b61ffff161115611dfc5760405162461bcd60e51b8152600401610c6b906130a8565b6098546040805161ffff85811682528481166020830152600160a81b8404811682840152600160b81b9093049092166060830152517f95c5c99557725e816faf752c6675d63483841c28a7a009ed792470a9cb4dea239181900360800190a16098805463ffffffff60a81b1916600160a81b61ffff9485160261ffff60b81b191617600160b81b9290931691909102919091179055565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611ec6612232565b6001600160a01b0382166000908152609e602052604090205481151560ff909116151503611f205760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610c6b565b6001600160a01b0382166000818152609e6020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa991015b60405180910390a25050565b611f88612232565b6001600160a01b038116611fed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c6b565b6113ba8161268b565b6001600160a01b0383166120585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c6b565b6001600160a01b0382166120b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c6b565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261216c90849061273d565b505050565b6001600160a01b0382166121c75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c6b565b80603560008282546121d9919061304a565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6065546001600160a01b03163314610c175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c6b565b60006122988484611e93565b9050600019811461230057818110156122f35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c6b565b6123008484848403611ff6565b50505050565b6001600160a01b03831661232c5760405162461bcd60e51b8152600401610c6b906130e6565b6001600160a01b0382166123525760405162461bcd60e51b8152600401610c6b9061312b565b30600090815260336020908152604080832054609b546001600160a01b0387168552609f909352922054908210159060ff161561239e576001600160a01b038516301461239e57600080fd5b6123a985858561280f565b5050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123e5576123e56130d0565b6001600160a01b039283166020918202929092010152609854825191169082906001908110612416576124166130d0565b6001600160a01b03928316602091820292909201810191909152609c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561246f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124939190612fac565b6001600160a01b0316816001815181106124af576124af6130d0565b60200260200101516001600160a01b03160361254857609c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612512908590600090869073cc86ebcda2ad97356acd3a01367d4b6303ef1ded9042906004016131b2565b600060405180830381600087803b15801561252c57600080fd5b505af1158015612540573d6000803e3d6000fd5b505050505050565b6097546125609030906001600160a01b031684611ff6565b609754609c54604051637274ca1b60e11b81526001600160a01b039283169263e4e9943692612512929116908690600090879042906004016131ee565b6001600160a01b0382166000908152609f602052604090205481151560ff9091161515036126335760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610c6b565b6001600160a01b0382166000818152609f6020908152604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab9101611f74565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166127045760405162461bcd60e51b8152600401610c6b9061322d565b610db28282612940565b600054610100900460ff166127355760405162461bcd60e51b8152600401610c6b9061322d565b610c17612980565b6000612792826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b09092919063ffffffff16565b80519091501561216c57808060200190518101906127b09190613278565b61216c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c6b565b6001600160a01b0383166128355760405162461bcd60e51b8152600401610c6b906130e6565b6001600160a01b03821661285b5760405162461bcd60e51b8152600401610c6b9061312b565b6001600160a01b038316600090815260336020526040902054818110156128d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c6b565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129339086815260200190565b60405180910390a3612300565b600054610100900460ff166129675760405162461bcd60e51b8152600401610c6b9061322d565b603661297383826132db565b50603761216c82826132db565b600054610100900460ff166129a75760405162461bcd60e51b8152600401610c6b9061322d565b610c173361268b565b60606129bf84846000856129c7565b949350505050565b606082471015612a285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c6b565b600080866001600160a01b03168587604051612a44919061339b565b60006040518083038185875af1925050503d8060008114612a81576040519150601f19603f3d011682016040523d82523d6000602084013e612a86565b606091505b5091509150612a9787838387612aa2565b979650505050505050565b60608315612b11578251600003612b0a576001600160a01b0385163b612b0a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c6b565b50816129bf565b6129bf8383815115612b265781518083602001fd5b8060405162461bcd60e51b8152600401610c6b9190612b64565b60005b83811015612b5b578181015183820152602001612b43565b50506000910152565b6020815260008251806020840152612b83816040850160208701612b40565b601f01601f19169190910160400192915050565b6001600160a01b03811681146113ba57600080fd5b60008060408385031215612bbf57600080fd5b8235612bca81612b97565b946020939093013593505050565b80151581146113ba57600080fd5b8035612bf181612bd8565b919050565b60008060408385031215612c0957600080fd5b8235612c1481612b97565b91506020830135612c2481612bd8565b809150509250929050565b600080600060608486031215612c4457600080fd5b8335612c4f81612b97565b92506020840135612c5f81612b97565b929592945050506040919091013590565b600060208284031215612c8257600080fd5b5035919050565b600060208284031215612c9b57600080fd5b8135612ca681612b97565b9392505050565b803561ffff81168114612bf157600080fd5b60008060408385031215612cd257600080fd5b612cdb83612cad565b9150612ce960208401612cad565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612d1957600080fd5b813567ffffffffffffffff80821115612d3457612d34612cf2565b604051601f8301601f19908116603f01168101908282118183101715612d5c57612d5c612cf2565b81604052838152866020858801011115612d7557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600082601f830112612da657600080fd5b60405160a0810181811067ffffffffffffffff82111715612dc957612dc9612cf2565b6040528060a0840185811115612dde57600080fd5b845b81811015612e01578035612df381612b97565b835260209283019201612de0565b509195945050505050565b600082601f830112612e1d57600080fd5b60405160c0810181811067ffffffffffffffff82111715612e4057612e40612cf2565b6040528060c0840185811115612e5557600080fd5b845b81811015612e0157612e6881612cad565b835260209283019201612e57565b600080600080600080600080610220898b031215612e9357600080fd5b883567ffffffffffffffff80821115612eab57600080fd5b612eb78c838d01612d08565b995060208b0135915080821115612ecd57600080fd5b50612eda8b828c01612d08565b975050604089013560ff81168114612ef157600080fd5b955060608901359450612f078a60808b01612d95565b9350612f166101208a01612be6565b9250612f256101408a01612be6565b9150612f358a6101608b01612e0c565b90509295985092959890939650565b60008060408385031215612f5757600080fd5b8235612f6281612b97565b91506020830135612c2481612b97565b600181811c90821680612f8657607f821691505b602082108103612fa657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612fbe57600080fd5b8151612ca681612b97565b600060208284031215612fdb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761090757610907612fe2565b60008261302c57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161304357613043612fe2565b5060010190565b8082018082111561090757610907612fe2565b61ffff81811683821601908082111561307857613078612fe2565b5092915050565b6020808252600f908201526e73656c6c20666565203c3d2033302560881b604082015260600190565b6020808252600e908201526d62757920666565203c3d2033302560901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600081518084526020808501945080840160005b838110156131a75781516001600160a01b031687529582019590820190600101613182565b509495945050505050565b85815284602082015260a0604082015260006131d160a083018661316e565b6001600160a01b0394909416606083015250608001529392505050565b60018060a01b038616815284602082015283604082015260a06060820152600061321b60a083018561316e565b90508260808301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561328a57600080fd5b8151612ca681612bd8565b601f82111561216c57600081815260208120601f850160051c810160208610156132bc5750805b601f850160051c820191505b81811015612540578281556001016132c8565b815167ffffffffffffffff8111156132f5576132f5612cf2565b613309816133038454612f72565b84613295565b602080601f83116001811461333e57600084156133265750858301515b600019600386901b1c1916600185901b178555612540565b600085815260208120601f198616915b8281101561336d5788860151825594840194600190910190840161334e565b508582101561338b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516133ad818460208701612b40565b919091019291505056fea2646970667358221220611aea37ec420a859d43e2818cab9ddee5008f0a6e419aada8b55c0f9c5ba84b64736f6c63430008110033