60806040526040518060600160405280603581526020016200453860359139600a90816200002e9190620006c2565b506040518060600160405280603581526020016200456d60359139600d9081620000599190620006c2565b506000600f60006101000a81548160ff021916908315150217905550612710601055600060115560036012553480156200009257600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600d81526020017f42656172697374617665727365000000000000000000000000000000000000008152506040518060400160405280600d81526020017f4245415249535441564552534500000000000000000000000000000000000000815250620001366200012a6200037760201b60201c565b6200037f60201b60201c565b8160039081620001479190620006c2565b508060049081620001599190620006c2565b506200016a6200044360201b60201c565b6001819055505050600160098190555060006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200036f57801562000235576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001fb929190620007ee565b600060405180830381600087803b1580156200021657600080fd5b505af11580156200022b573d6000803e3d6000fd5b505050506200036e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002ef576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002b5929190620007ee565b600060405180830381600087803b158015620002d057600080fd5b505af1158015620002e5573d6000803e3d6000fd5b505050506200036d565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200033891906200081b565b600060405180830381600087803b1580156200035357600080fd5b505af115801562000368573d6000803e3d6000fd5b505050505b5b5b505062000838565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004ca57607f821691505b602082108103620004e057620004df62000482565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200054a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200050b565b6200055686836200050b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005a36200059d62000597846200056e565b62000578565b6200056e565b9050919050565b6000819050919050565b620005bf8362000582565b620005d7620005ce82620005aa565b84845462000518565b825550505050565b600090565b620005ee620005df565b620005fb818484620005b4565b505050565b5b81811015620006235762000617600082620005e4565b60018101905062000601565b5050565b601f82111562000672576200063c81620004e6565b6200064784620004fb565b8101602085101562000657578190505b6200066f6200066685620004fb565b83018262000600565b50505b505050565b600082821c905092915050565b6000620006976000198460080262000677565b1980831691505092915050565b6000620006b2838362000684565b9150826002028217905092915050565b620006cd8262000448565b67ffffffffffffffff811115620006e957620006e862000453565b5b620006f58254620004b1565b6200070282828562000627565b600060209050601f8311600181146200073a576000841562000725578287015190505b620007318582620006a4565b865550620007a1565b601f1984166200074a86620004e6565b60005b8281101562000774578489015182556001820191506020850194506020810190506200074d565b8683101562000794578489015162000790601f89168262000684565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d682620007a9565b9050919050565b620007e881620007c9565b82525050565b6000604082019050620008056000830185620007dd565b620008146020830184620007dd565b9392505050565b6000602082019050620008326000830184620007dd565b92915050565b613cf080620008486000396000f3fe6080604052600436106101f95760003560e01c80638da5cb5b1161010d578063bfa457bc116100a0578063d8258d951161006f578063d8258d95146106ca578063dbddb26a146106f5578063e8a3d48514610720578063e985e9c51461074b578063f2fde38b14610788576101f9565b8063bfa457bc1461060e578063c002d23d14610637578063c87b56dd14610662578063cfdbf2541461069f576101f9565b8063a0712d68116100dc578063a0712d6814610582578063a22cb4651461059e578063a76a9587146105c7578063b88d4fde146105f2576101f9565b80638da5cb5b146104da578063938e3d7b1461050557806395d89b411461052e5780639e1f39d614610559576101f9565b806324600fc31161019057806356b4f6731161015f57806356b4f673146103f55780636352211e1461042057806370a082311461045d578063715018a61461049a578063818668d7146104b1576101f9565b806324600fc31461036e57806342842e0e1461038557806342966c68146103a1578063507862d1146103ca576101f9565b8063095ea7b3116101cc578063095ea7b3146102ce57806318160ddd146102ea5780631d9857781461031557806323b872dd14610352576101f9565b80630116bc2d146101fe57806301ffc9a71461022957806306fdde0314610266578063081812fc14610291575b600080fd5b34801561020a57600080fd5b506102136107b1565b6040516102209190612904565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b919061298b565b6107c4565b60405161025d9190612904565b60405180910390f35b34801561027257600080fd5b5061027b610856565b6040516102889190612a48565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612aa0565b6108e8565b6040516102c59190612b0e565b60405180910390f35b6102e860048036038101906102e39190612b55565b610967565b005b3480156102f657600080fd5b506102ff610aab565b60405161030c9190612ba4565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190612bbf565b610ac2565b6040516103499190612904565b60405180910390f35b61036c60048036038101906103679190612bec565b610ae2565b005b34801561037a57600080fd5b50610383610bee565b005b61039f600480360381019061039a9190612bec565b610cfa565b005b3480156103ad57600080fd5b506103c860048036038101906103c39190612aa0565b610e06565b005b3480156103d657600080fd5b506103df610e14565b6040516103ec9190612a48565b60405180910390f35b34801561040157600080fd5b5061040a610ea2565b6040516104179190612a48565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612aa0565b610f30565b6040516104549190612b0e565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190612bbf565b610f42565b6040516104919190612ba4565b60405180910390f35b3480156104a657600080fd5b506104af610ffa565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190612c6b565b61100e565b005b3480156104e657600080fd5b506104ef611033565b6040516104fc9190612b0e565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190612dcd565b61105c565b005b34801561053a57600080fd5b50610543611077565b6040516105509190612a48565b60405180910390f35b34801561056557600080fd5b50610580600480360381019061057b9190612e16565b611109565b005b61059c60048036038101906105979190612aa0565b61113f565b005b3480156105aa57600080fd5b506105c560048036038101906105c09190612e72565b611497565b005b3480156105d357600080fd5b506105dc6115a2565b6040516105e99190612904565b60405180910390f35b61060c60048036038101906106079190612f53565b6115b5565b005b34801561061a57600080fd5b5061063560048036038101906106309190612fd6565b6116c3565b005b34801561064357600080fd5b5061064c611730565b6040516106599190612ba4565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190612aa0565b611736565b6040516106969190612a48565b60405180910390f35b3480156106ab57600080fd5b506106b4611812565b6040516106c19190612ba4565b60405180910390f35b3480156106d657600080fd5b506106df611818565b6040516106ec9190612ba4565b60405180910390f35b34801561070157600080fd5b5061070a61181e565b6040516107179190612a48565b60405180910390f35b34801561072c57600080fd5b506107356118ac565b6040516107429190612a48565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d9190613016565b61193e565b60405161077f9190612904565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190612bbf565b6119d2565b005b600f60009054906101000a900460ff1681565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061081f57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061084f5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461086590613085565b80601f016020809104026020016040519081016040528092919081815260200182805461089190613085565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b60006108f382611a55565b610929576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097282610f30565b90508073ffffffffffffffffffffffffffffffffffffffff16610993611ab4565b73ffffffffffffffffffffffffffffffffffffffff16146109f6576109bf816109ba611ab4565b61193e565b6109f5576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610ab5611abc565b6002546001540303905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610bde576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610b599291906130b6565b6020604051808303816000875af1158015610b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9c91906130f4565b610bdd57336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610bd49190612b0e565b60405180910390fd5b5b610be9838383611ac1565b505050565b610bf6611de3565b600260095403610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c329061316d565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610c69906131be565b60006040518083038185875af1925050503d8060008114610ca6576040519150601f19603f3d011682016040523d82523d6000602084013e610cab565b606091505b5050905080610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce69061321f565b60405180910390fd5b506001600981905550565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610df6576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610d719291906130b6565b6020604051808303816000875af1158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db491906130f4565b610df557336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610dec9190612b0e565b60405180910390fd5b5b610e01838383611e61565b505050565b610e11816001611e81565b50565b600d8054610e2190613085565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4d90613085565b8015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b820191906000526020600020905b815481529060010190602001808311610e7d57829003601f168201915b505050505081565b600a8054610eaf90613085565b80601f0160208091040260200160405190810160405280929190818152602001828054610edb90613085565b8015610f285780601f10610efd57610100808354040283529160200191610f28565b820191906000526020600020905b815481529060010190602001808311610f0b57829003601f168201915b505050505081565b6000610f3b826120d3565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa9576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611002611de3565b61100c600061219f565b565b611016611de3565b80600f60006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611064611de3565b80600a908161107391906133eb565b5050565b60606004805461108690613085565b80601f01602080910402602001604051908101604052809291908181526020018280546110b290613085565b80156110ff5780601f106110d4576101008083540402835291602001916110ff565b820191906000526020600020905b8154815290600101906020018083116110e257829003601f168201915b5050505050905090565b611111611de3565b80600e908161112091906133eb565b5081600c60006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613509565b60405180910390fd5b6002600954036111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061316d565b60405180910390fd5b600260098190555060008160115461120a9190613558565b9050600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906135fe565b60405180910390fd5b60011515600f60009054906101000a900460ff161515146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061366a565b60405180910390fd5b601054826112fb610aab565b611305919061368a565b1115611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d9061370a565b60405180910390fd5b60125482111561138b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113829061379c565b60405180910390fd5b803410156113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c59061382e565b60405180910390fd5b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506114303383612263565b8034111561148b573373ffffffffffffffffffffffffffffffffffffffff166108fc823461145e919061384e565b9081150290604051600060405180830381858888f19350505050158015611489573d6000803e3d6000fd5b505b50600160098190555050565b80600860006114a4611ab4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611551611ab4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115969190612904565b60405180910390a35050565b600c60009054906101000a900460ff1681565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156116b1576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b815260040161162c9291906130b6565b6020604051808303816000875af115801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906130f4565b6116b057336040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016116a79190612b0e565b60405180910390fd5b5b6116bd84848484612281565b50505050565b6116cb611de3565b601054826116d7610aab565b6116e1919061368a565b1115611722576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611719906138ce565b60405180910390fd5b61172c8183612263565b5050565b60115481565b6060600c60009054906101000a900460ff161561177f57600e611758836122f4565b6040516020016117699291906139ad565b604051602081830303815290604052905061180d565b600d805461178c90613085565b80601f01602080910402602001604051908101604052809291908181526020018280546117b890613085565b80156118055780601f106117da57610100808354040283529160200191611805565b820191906000526020600020905b8154815290600101906020018083116117e857829003601f168201915b505050505090505b919050565b60125481565b60105481565b600e805461182b90613085565b80601f016020809104026020016040519081016040528092919081815260200182805461185790613085565b80156118a45780601f10611879576101008083540402835291602001916118a4565b820191906000526020600020905b81548152906001019060200180831161188757829003601f168201915b505050505081565b6060600a80546118bb90613085565b80601f01602080910402602001604051908101604052809291908181526020018280546118e790613085565b80156119345780601f1061190957610100808354040283529160200191611934565b820191906000526020600020905b81548152906001019060200180831161191757829003601f168201915b5050505050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119da611de3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613a43565b60405180910390fd5b611a528161219f565b50565b600081611a60611abc565b11158015611a6f575060015482105b8015611aad575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b6000611acc826120d3565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b33576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b3f84612454565b91509150611b558187611b50611ab4565b61247b565b611ba157611b6a86611b65611ab4565b61193e565b611ba0576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c07576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c1486868660016124bf565b8015611c1f57600082555b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550611ced85611cc98888876124c5565b7c0200000000000000000000000000000000000000000000000000000000176124ed565b600560008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603611d735760006001850190506000600560008381526020019081526020016000205403611d71576001548114611d70578360056000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ddb8686866001612518565b505050505050565b611deb61251e565b73ffffffffffffffffffffffffffffffffffffffff16611e09611033565b73ffffffffffffffffffffffffffffffffffffffff1614611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690613aaf565b60405180910390fd5b565b611e7c838383604051806020016040528060008152506115b5565b505050565b6000611e8c836120d3565b90506000819050600080611e9f86612454565b915091508415611f0857611ebb8184611eb6611ab4565b61247b565b611f0757611ed083611ecb611ab4565b61193e565b611f06576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b611f168360008860016124bf565b8015611f2157600082555b600160806001901b03600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611fc983611f86856000886124c5565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176124ed565b600560008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085160361204f576000600187019050600060056000838152602001908152602001600020540361204d57600154811461204c578460056000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120b9836000886001612518565b600260008154809291906001019190505550505050505050565b600080829050806120e2611abc565b11612168576001548110156121675760006005600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612165575b6000810361215b576005600083600190039350838152602001908152602001600020549050612131565b809250505061219a565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61227d828260405180602001604052806000815250612526565b5050565b61228c848484610ae2565b60008373ffffffffffffffffffffffffffffffffffffffff163b146122ee576122b7848484846125c4565b6122ed576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60606000820361233b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061244f565b600082905060005b6000821461236d57808061235690613acf565b915050600a826123669190613b46565b9150612343565b60008167ffffffffffffffff81111561238957612388612ca2565b5b6040519080825280601f01601f1916602001820160405280156123bb5781602001600182028036833780820191505090505b5090505b60008514612448576001826123d4919061384e565b9150600a856123e39190613b77565b60306123ef919061368a565b60f81b81838151811061240557612404613ba8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124419190613b46565b94506123bf565b8093505050505b919050565b60008060006007600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86124dc868684612714565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b612530838361271d565b60008373ffffffffffffffffffffffffffffffffffffffff163b146125bf5760006001549050600083820390505b61257160008683806001019450866125c4565b6125a7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061255e5781600154146125bc57600080fd5b50505b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125ea611ab4565b8786866040518563ffffffff1660e01b815260040161260c9493929190613c2c565b6020604051808303816000875af192505050801561264857506040513d601f19601f820116820180604052508101906126459190613c8d565b60015b6126c1573d8060008114612678576040519150601f19603f3d011682016040523d82523d6000602084013e61267d565b606091505b5060008151036126b9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b600060015490506000820361275e576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61276b60008483856124bf565b600160406001901b178202600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127e2836127d360008660006124c5565b6127dc856128d9565b176124ed565b6005600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461288357808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612848565b50600082036128be576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060018190555050506128d46000848385612518565b505050565b60006001821460e11b9050919050565b60008115159050919050565b6128fe816128e9565b82525050565b600060208201905061291960008301846128f5565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61296881612933565b811461297357600080fd5b50565b6000813590506129858161295f565b92915050565b6000602082840312156129a1576129a0612929565b5b60006129af84828501612976565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129f25780820151818401526020810190506129d7565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a1a826129b8565b612a2481856129c3565b9350612a348185602086016129d4565b612a3d816129fe565b840191505092915050565b60006020820190508181036000830152612a628184612a0f565b905092915050565b6000819050919050565b612a7d81612a6a565b8114612a8857600080fd5b50565b600081359050612a9a81612a74565b92915050565b600060208284031215612ab657612ab5612929565b5b6000612ac484828501612a8b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612af882612acd565b9050919050565b612b0881612aed565b82525050565b6000602082019050612b236000830184612aff565b92915050565b612b3281612aed565b8114612b3d57600080fd5b50565b600081359050612b4f81612b29565b92915050565b60008060408385031215612b6c57612b6b612929565b5b6000612b7a85828601612b40565b9250506020612b8b85828601612a8b565b9150509250929050565b612b9e81612a6a565b82525050565b6000602082019050612bb96000830184612b95565b92915050565b600060208284031215612bd557612bd4612929565b5b6000612be384828501612b40565b91505092915050565b600080600060608486031215612c0557612c04612929565b5b6000612c1386828701612b40565b9350506020612c2486828701612b40565b9250506040612c3586828701612a8b565b9150509250925092565b612c48816128e9565b8114612c5357600080fd5b50565b600081359050612c6581612c3f565b92915050565b600060208284031215612c8157612c80612929565b5b6000612c8f84828501612c56565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cda826129fe565b810181811067ffffffffffffffff82111715612cf957612cf8612ca2565b5b80604052505050565b6000612d0c61291f565b9050612d188282612cd1565b919050565b600067ffffffffffffffff821115612d3857612d37612ca2565b5b612d41826129fe565b9050602081019050919050565b82818337600083830152505050565b6000612d70612d6b84612d1d565b612d02565b905082815260208101848484011115612d8c57612d8b612c9d565b5b612d97848285612d4e565b509392505050565b600082601f830112612db457612db3612c98565b5b8135612dc4848260208601612d5d565b91505092915050565b600060208284031215612de357612de2612929565b5b600082013567ffffffffffffffff811115612e0157612e0061292e565b5b612e0d84828501612d9f565b91505092915050565b60008060408385031215612e2d57612e2c612929565b5b6000612e3b85828601612c56565b925050602083013567ffffffffffffffff811115612e5c57612e5b61292e565b5b612e6885828601612d9f565b9150509250929050565b60008060408385031215612e8957612e88612929565b5b6000612e9785828601612b40565b9250506020612ea885828601612c56565b9150509250929050565b600067ffffffffffffffff821115612ecd57612ecc612ca2565b5b612ed6826129fe565b9050602081019050919050565b6000612ef6612ef184612eb2565b612d02565b905082815260208101848484011115612f1257612f11612c9d565b5b612f1d848285612d4e565b509392505050565b600082601f830112612f3a57612f39612c98565b5b8135612f4a848260208601612ee3565b91505092915050565b60008060008060808587031215612f6d57612f6c612929565b5b6000612f7b87828801612b40565b9450506020612f8c87828801612b40565b9350506040612f9d87828801612a8b565b925050606085013567ffffffffffffffff811115612fbe57612fbd61292e565b5b612fca87828801612f25565b91505092959194509250565b60008060408385031215612fed57612fec612929565b5b6000612ffb85828601612a8b565b925050602061300c85828601612b40565b9150509250929050565b6000806040838503121561302d5761302c612929565b5b600061303b85828601612b40565b925050602061304c85828601612b40565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061309d57607f821691505b6020821081036130b0576130af613056565b5b50919050565b60006040820190506130cb6000830185612aff565b6130d86020830184612aff565b9392505050565b6000815190506130ee81612c3f565b92915050565b60006020828403121561310a57613109612929565b5b6000613118848285016130df565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613157601f836129c3565b915061316282613121565b602082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b600081905092915050565b50565b60006131a860008361318d565b91506131b382613198565b600082019050919050565b60006131c98261319b565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b60006132096010836129c3565b9150613214826131d3565b602082019050919050565b60006020820190508181036000830152613238816131fc565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613264565b6132ab8683613264565b95508019841693508086168417925050509392505050565b6000819050919050565b60006132e86132e36132de84612a6a565b6132c3565b612a6a565b9050919050565b6000819050919050565b613302836132cd565b61331661330e826132ef565b848454613271565b825550505050565b600090565b61332b61331e565b6133368184846132f9565b505050565b5b8181101561335a5761334f600082613323565b60018101905061333c565b5050565b601f82111561339f576133708161323f565b61337984613254565b81016020851015613388578190505b61339c61339485613254565b83018261333b565b50505b505050565b600082821c905092915050565b60006133c2600019846008026133a4565b1980831691505092915050565b60006133db83836133b1565b9150826002028217905092915050565b6133f4826129b8565b67ffffffffffffffff81111561340d5761340c612ca2565b5b6134178254613085565b61342282828561335e565b600060209050601f8311600181146134555760008415613443578287015190505b61344d85826133cf565b8655506134b5565b601f1984166134638661323f565b60005b8281101561348b57848901518255600182019150602085019450602081019050613466565b868310156134a857848901516134a4601f8916826133b1565b8355505b6001600288020188555050505b505050505050565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b60006134f3601e836129c3565b91506134fe826134bd565b602082019050919050565b60006020820190508181036000830152613522816134e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061356382612a6a565b915061356e83612a6a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135a7576135a6613529565b5b828202905092915050565b7f43616e206f6e6c79206d696e74206f6e63650000000000000000000000000000600082015250565b60006135e86012836129c3565b91506135f3826135b2565b602082019050919050565b60006020820190508181036000830152613617816135db565b9050919050565b7f7075626c69632073616c6520686173206e6f7420626567756e20796574000000600082015250565b6000613654601d836129c3565b915061365f8261361e565b602082019050919050565b6000602082019050818103600083015261368381613647565b9050919050565b600061369582612a6a565b91506136a083612a6a565b92508282019050808211156136b8576136b7613529565b5b92915050565b7f4d617820436f6c6c656374696f6e2053697a6520726561636865642100000000600082015250565b60006136f4601c836129c3565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f547269656420746f206d696e74207175616e697479206f766572206c696d697460008201527f2c20726574727920776974682072656475636564207175616e74697479000000602082015250565b6000613786603d836129c3565b91506137918261372a565b604082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f4d7573742073656e6420656e6f7567682065746820666f72207075626c69632060008201527f6d696e7400000000000000000000000000000000000000000000000000000000602082015250565b60006138186024836129c3565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b600061385982612a6a565b915061386483612a6a565b925082820390508181111561387c5761387b613529565b5b92915050565b7f4d617820636f6c6c656374696f6e2073697a6520726561636865642100000000600082015250565b60006138b8601c836129c3565b91506138c382613882565b602082019050919050565b600060208201905081810360008301526138e7816138ab565b9050919050565b600081905092915050565b6000815461390681613085565b61391081866138ee565b9450600182166000811461392b576001811461394057613973565b60ff1983168652811515820286019350613973565b6139498561323f565b60005b8381101561396b5781548189015260018201915060208101905061394c565b838801955050505b50505092915050565b6000613987826129b8565b61399181856138ee565b93506139a18185602086016129d4565b80840191505092915050565b60006139b982856138f9565b91506139c5828461397c565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a2d6026836129c3565b9150613a38826139d1565b604082019050919050565b60006020820190508181036000830152613a5c81613a20565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a996020836129c3565b9150613aa482613a63565b602082019050919050565b60006020820190508181036000830152613ac881613a8c565b9050919050565b6000613ada82612a6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b0c57613b0b613529565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b5182612a6a565b9150613b5c83612a6a565b925082613b6c57613b6b613b17565b5b828204905092915050565b6000613b8282612a6a565b9150613b8d83612a6a565b925082613b9d57613b9c613b17565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613bfe82613bd7565b613c088185613be2565b9350613c188185602086016129d4565b613c21816129fe565b840191505092915050565b6000608082019050613c416000830187612aff565b613c4e6020830186612aff565b613c5b6040830185612b95565b8181036060830152613c6d8184613bf3565b905095945050505050565b600081519050613c878161295f565b92915050565b600060208284031215613ca357613ca2612929565b5b6000613cb184828501613c78565b9150509291505056fea2646970667358221220c36745748b7c2c8ef6ce070e48f8220c4862eb7494b894e95dbe4cc84a9075ac64736f6c63430008100033697066733a2f2f516d6241623542546d6858714e747053747a5739314869454679774a52677971356d564e70354736554e62356451697066733a2f2f516d5035674d436856414845646e5246746a79705a356a333972514d58735732416d366a4c5077576959524c7a6d