6080604052604051806060016040528060218152602001620048fe60219139600a90816200002e9190620006fd565b50604051806060016040528060218152602001620048fe60219139600d9081620000599190620006fd565b50604051806060016040528060218152602001620048fe60219139600e9081620000849190620006fd565b506000600f60006101000a81548160ff02191690831515021790555061115c6010556605dcaa8fe12000601155601560125560156013556001601455348015620000cd57600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600d81526020017f42616420436174732047616e67000000000000000000000000000000000000008152506040518060400160405280600381526020017f42434700000000000000000000000000000000000000000000000000000000008152506200017162000165620003b260201b60201c565b620003ba60201b60201c565b8160039081620001829190620006fd565b508060049081620001949190620006fd565b50620001a56200047e60201b60201c565b6001819055505050600160098190555060006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620003aa57801562000270576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200023692919062000829565b600060405180830381600087803b1580156200025157600080fd5b505af115801562000266573d6000803e3d6000fd5b50505050620003a9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200032a576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002f092919062000829565b600060405180830381600087803b1580156200030b57600080fd5b505af115801562000320573d6000803e3d6000fd5b50505050620003a8565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040162000373919062000856565b600060405180830381600087803b1580156200038e57600080fd5b505af1158015620003a3573d6000803e3d6000fd5b505050505b5b5b505062000873565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200050557607f821691505b6020821081036200051b576200051a620004bd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000546565b62000591868362000546565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005de620005d8620005d284620005a9565b620005b3565b620005a9565b9050919050565b6000819050919050565b620005fa83620005bd565b620006126200060982620005e5565b84845462000553565b825550505050565b600090565b620006296200061a565b62000636818484620005ef565b505050565b5b818110156200065e57620006526000826200061f565b6001810190506200063c565b5050565b601f821115620006ad57620006778162000521565b620006828462000536565b8101602085101562000692578190505b620006aa620006a18562000536565b8301826200063b565b50505b505050565b600082821c905092915050565b6000620006d260001984600802620006b2565b1980831691505092915050565b6000620006ed8383620006bf565b9150826002028217905092915050565b620007088262000483565b67ffffffffffffffff8111156200072457620007236200048e565b5b620007308254620004ec565b6200073d82828562000662565b600060209050601f83116001811462000775576000841562000760578287015190505b6200076c8582620006df565b865550620007dc565b601f198416620007858662000521565b60005b82811015620007af5784890151825560018201915060208501945060208101905062000788565b86831015620007cf5784890151620007cb601f891682620006bf565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081182620007e4565b9050919050565b620008238162000804565b82525050565b600060408201905062000840600083018562000818565b6200084f602083018462000818565b9392505050565b60006020820190506200086d600083018462000818565b92915050565b61407b80620008836000396000f3fe6080604052600436106102515760003560e01c80638da5cb5b11610139578063b88d4fde116100b6578063dbddb26a1161007a578063dbddb26a14610835578063e113ad9514610860578063e757223014610889578063e8a3d485146108c6578063e985e9c5146108f1578063f2fde38b1461092e57610251565b8063b88d4fde1461075b578063c002d23d14610777578063c87b56dd146107a2578063cfdbf254146107df578063d8258d951461080a57610251565b8063a0712d68116100fd578063a0712d68146106ab578063a22cb465146106c7578063a4cdd719146106f0578063a76a958714610707578063a9527e821461073257610251565b80638da5cb5b146105da57806391b7f5ed14610605578063938e3d7b1461062e57806395d89b41146106575780639e1f39d61461068257610251565b8063336f5ec3116101d25780635fe75587116101965780635fe75587146104cc5780636352211e146104f757806363fa5bde14610534578063696576321461055d57806370a0823114610586578063715018a6146105c357610251565b8063336f5ec31461040857806342842e0e1461043157806342966c681461044d578063507862d11461047657806356b4f673146104a157610251565b80631422374f116102195780631422374f1461034257806318160ddd1461036d5780631d9857781461039857806323b872dd146103d557806324600fc3146103f157610251565b80630116bc2d1461025657806301ffc9a71461028157806306fdde03146102be578063081812fc146102e9578063095ea7b314610326575b600080fd5b34801561026257600080fd5b5061026b610957565b6040516102789190612c96565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612d1d565b61096a565b6040516102b59190612c96565b60405180910390f35b3480156102ca57600080fd5b506102d36109fc565b6040516102e09190612dda565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190612e32565b610a8e565b60405161031d9190612ea0565b60405180910390f35b610340600480360381019061033b9190612ee7565b610b0d565b005b34801561034e57600080fd5b50610357610c51565b6040516103649190612f36565b60405180910390f35b34801561037957600080fd5b50610382610c57565b60405161038f9190612f36565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612f51565b610c6e565b6040516103cc9190612f36565b60405180910390f35b6103ef60048036038101906103ea9190612f7e565b610c86565b005b3480156103fd57600080fd5b50610406610d92565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612e32565b610e9e565b005b61044b60048036038101906104469190612f7e565b610eb0565b005b34801561045957600080fd5b50610474600480360381019061046f9190612e32565b610fbc565b005b34801561048257600080fd5b5061048b610fca565b6040516104989190612dda565b60405180910390f35b3480156104ad57600080fd5b506104b6611058565b6040516104c39190612dda565b60405180910390f35b3480156104d857600080fd5b506104e16110e6565b6040516104ee9190612f36565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190612e32565b6110ec565b60405161052b9190612ea0565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612e32565b6110fe565b005b34801561056957600080fd5b50610584600480360381019061057f9190612fd1565b611110565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612f51565b61117d565b6040516105ba9190612f36565b60405180910390f35b3480156105cf57600080fd5b506105d8611235565b005b3480156105e657600080fd5b506105ef611249565b6040516105fc9190612ea0565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190612e32565b611272565b005b34801561063a57600080fd5b5061065560048036038101906106509190613146565b611284565b005b34801561066357600080fd5b5061066c61129f565b6040516106799190612dda565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906131bb565b611331565b005b6106c560048036038101906106c09190612e32565b611367565b005b3480156106d357600080fd5b506106ee60048036038101906106e99190613217565b6117b4565b005b3480156106fc57600080fd5b506107056118bf565b005b34801561071357600080fd5b5061071c6118f3565b6040516107299190612c96565b60405180910390f35b34801561073e57600080fd5b5061075960048036038101906107549190612e32565b611906565b005b610775600480360381019061077091906132f8565b611918565b005b34801561078357600080fd5b5061078c611a26565b6040516107999190612f36565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190612e32565b611a2c565b6040516107d69190612dda565b60405180910390f35b3480156107eb57600080fd5b506107f4611b08565b6040516108019190612f36565b60405180910390f35b34801561081657600080fd5b5061081f611b0e565b60405161082c9190612f36565b60405180910390f35b34801561084157600080fd5b5061084a611b14565b6040516108579190612dda565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190612e32565b611ba2565b005b34801561089557600080fd5b506108b060048036038101906108ab9190612e32565b611bb4565b6040516108bd9190612f36565b60405180910390f35b3480156108d257600080fd5b506108db611c3e565b6040516108e89190612dda565b60405180910390f35b3480156108fd57600080fd5b506109186004803603810190610913919061337b565b611cd0565b6040516109259190612c96565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190612f51565b611d64565b005b600f60009054906101000a900460ff1681565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109c557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109f55750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060038054610a0b906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610a37906133ea565b8015610a845780601f10610a5957610100808354040283529160200191610a84565b820191906000526020600020905b815481529060010190602001808311610a6757829003601f168201915b5050505050905090565b6000610a9982611de7565b610acf576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b18826110ec565b90508073ffffffffffffffffffffffffffffffffffffffff16610b39611e46565b73ffffffffffffffffffffffffffffffffffffffff1614610b9c57610b6581610b60611e46565b611cd0565b610b9b576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60145481565b6000610c61611e4e565b6002546001540303905090565b600b6020528060005260406000206000915090505481565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610d82576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610cfd92919061341b565b6020604051808303816000875af1158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190613459565b610d8157336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610d789190612ea0565b60405180910390fd5b5b610d8d838383611e53565b505050565b610d9a612175565b600260095403610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd6906134d2565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610e0d90613523565b60006040518083038185875af1925050503d8060008114610e4a576040519150601f19603f3d011682016040523d82523d6000602084013e610e4f565b606091505b5050905080610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90613584565b60405180910390fd5b506001600981905550565b610ea6612175565b8060128190555050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610fac576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610f2792919061341b565b6020604051808303816000875af1158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190613459565b610fab57336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610fa29190612ea0565b60405180910390fd5b5b610fb78383836121f3565b505050565b610fc7816001612213565b50565b600d8054610fd7906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611003906133ea565b80156110505780601f1061102557610100808354040283529160200191611050565b820191906000526020600020905b81548152906001019060200180831161103357829003601f168201915b505050505081565b600a8054611065906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611091906133ea565b80156110de5780601f106110b3576101008083540402835291602001916110de565b820191906000526020600020905b8154815290600101906020018083116110c157829003601f168201915b505050505081565b60135481565b60006110f782612465565b9050919050565b611106612175565b8060108190555050565b611118612175565b60105482611124610c57565b61112e91906135d3565b111561116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690613653565b60405180910390fd5b6111798183612531565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61123d612175565b611247600061254f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61127a612175565b8060118190555050565b61128c612175565b80600a908161129b919061381f565b5050565b6060600480546112ae906133ea565b80601f01602080910402602001604051908101604052809291908181526020018280546112da906133ea565b80156113275780601f106112fc57610100808354040283529160200191611327565b820191906000526020600020905b81548152906001019060200180831161130a57829003601f168201915b5050505050905090565b611339612175565b80600e9081611348919061381f565b5081600c60006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc9061393d565b60405180910390fd5b60026009540361141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906134d2565b60405180910390fd5b6002600981905550600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601454611472919061395d565b9050808310611529578083611487919061395d565b6011546114949190613991565b915080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e191906135d3565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115bc565b6000915082600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157891906135d3565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff1661160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613a37565b60405180910390fd5b60105483611617610c57565b61162191906135d3565b1115611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613aa3565b60405180910390fd5b6013548361166f3361117d565b61167991906135d3565b11156116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613b35565b60405180910390fd5b6012548311156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613bc7565b60405180910390fd5b81341015611742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173990613c59565b60405180910390fd5b61174c3384612531565b813411156117a7573373ffffffffffffffffffffffffffffffffffffffff166108fc833461177a919061395d565b9081150290604051600060405180830381858888f193505050501580156117a5573d6000803e3d6000fd5b505b5050600160098190555050565b80600860006117c1611e46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661186e611e46565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118b39190612c96565b60405180910390a35050565b6118c7612175565b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b600c60009054906101000a900460ff1681565b61190e612175565b8060148190555050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611a14576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b815260040161198f92919061341b565b6020604051808303816000875af11580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d29190613459565b611a1357336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611a0a9190612ea0565b60405180910390fd5b5b611a2084848484612613565b50505050565b60115481565b6060600c60009054906101000a900460ff1615611a7557600e611a4e83612686565b604051602001611a5f929190613d38565b6040516020818303038152906040529050611b03565b600d8054611a82906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611aae906133ea565b8015611afb5780601f10611ad057610100808354040283529160200191611afb565b820191906000526020600020905b815481529060010190602001808311611ade57829003601f168201915b505050505090505b919050565b60125481565b60105481565b600e8054611b21906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4d906133ea565b8015611b9a5780601f10611b6f57610100808354040283529160200191611b9a565b820191906000526020600020905b815481529060010190602001808311611b7d57829003601f168201915b505050505081565b611baa612175565b8060138190555050565b6000806000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601454611c06919061395d565b9050808410611c2f578084611c1b919061395d565b601154611c289190613991565b9150611c34565b600091505b8192505050919050565b6060600a8054611c4d906133ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611c79906133ea565b8015611cc65780601f10611c9b57610100808354040283529160200191611cc6565b820191906000526020600020905b815481529060010190602001808311611ca957829003601f168201915b5050505050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d6c612175565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd290613dce565b60405180910390fd5b611de48161254f565b50565b600081611df2611e4e565b11158015611e01575060015482105b8015611e3f575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b6000611e5e82612465565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ec5576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611ed1846127e6565b91509150611ee78187611ee2611e46565b61280d565b611f3357611efc86611ef7611e46565b611cd0565b611f32576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f99576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa68686866001612851565b8015611fb157600082555b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001019190508190555061207f8561205b888887612857565b7c02000000000000000000000000000000000000000000000000000000001761287f565b600560008681526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008416036121055760006001850190506000600560008381526020019081526020016000205403612103576001548114612102578360056000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461216d86868660016128aa565b505050505050565b61217d6128b0565b73ffffffffffffffffffffffffffffffffffffffff1661219b611249565b73ffffffffffffffffffffffffffffffffffffffff16146121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e890613e3a565b60405180910390fd5b565b61220e83838360405180602001604052806000815250611918565b505050565b600061221e83612465565b90506000819050600080612231866127e6565b91509150841561229a5761224d8184612248611e46565b61280d565b612299576122628361225d611e46565b611cd0565b612298576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b6122a8836000886001612851565b80156122b357600082555b600160806001901b03600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061235b8361231885600088612857565b7c02000000000000000000000000000000000000000000000000000000007c0100000000000000000000000000000000000000000000000000000000171761287f565b600560008881526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008516036123e157600060018701905060006005600083815260200190815260200160002054036123df5760015481146123de578460056000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461244b8360008860016128aa565b600260008154809291906001019190505550505050505050565b60008082905080612474611e4e565b116124fa576001548110156124f95760006005600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216036124f7575b600081036124ed5760056000836001900393508381526020019081526020016000205490506124c3565b809250505061252c565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b61254b8282604051806020016040528060008152506128b8565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61261e848484610c86565b60008373ffffffffffffffffffffffffffffffffffffffff163b146126805761264984848484612956565b61267f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600082036126cd576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127e1565b600082905060005b600082146126ff5780806126e890613e5a565b915050600a826126f89190613ed1565b91506126d5565b60008167ffffffffffffffff81111561271b5761271a61301b565b5b6040519080825280601f01601f19166020018201604052801561274d5781602001600182028036833780820191505090505b5090505b600085146127da57600182612766919061395d565b9150600a856127759190613f02565b603061278191906135d3565b60f81b81838151811061279757612796613f33565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127d39190613ed1565b9450612751565b8093505050505b919050565b60008060006007600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861286e868684612aa6565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b6128c28383612aaf565b60008373ffffffffffffffffffffffffffffffffffffffff163b146129515760006001549050600083820390505b6129036000868380600101945086612956565b612939576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106128f057816001541461294e57600080fd5b50505b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261297c611e46565b8786866040518563ffffffff1660e01b815260040161299e9493929190613fb7565b6020604051808303816000875af19250505080156129da57506040513d601f19601f820116820180604052508101906129d79190614018565b60015b612a53573d8060008114612a0a576040519150601f19603f3d011682016040523d82523d6000602084013e612a0f565b606091505b506000815103612a4b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b6000600154905060008203612af0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612afd6000848385612851565b600160406001901b178202600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612b7483612b656000866000612857565b612b6e85612c6b565b1761287f565b6005600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114612c1557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612bda565b5060008203612c50576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055505050612c6660008483856128aa565b505050565b60006001821460e11b9050919050565b60008115159050919050565b612c9081612c7b565b82525050565b6000602082019050612cab6000830184612c87565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612cfa81612cc5565b8114612d0557600080fd5b50565b600081359050612d1781612cf1565b92915050565b600060208284031215612d3357612d32612cbb565b5b6000612d4184828501612d08565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d84578082015181840152602081019050612d69565b60008484015250505050565b6000601f19601f8301169050919050565b6000612dac82612d4a565b612db68185612d55565b9350612dc6818560208601612d66565b612dcf81612d90565b840191505092915050565b60006020820190508181036000830152612df48184612da1565b905092915050565b6000819050919050565b612e0f81612dfc565b8114612e1a57600080fd5b50565b600081359050612e2c81612e06565b92915050565b600060208284031215612e4857612e47612cbb565b5b6000612e5684828501612e1d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8a82612e5f565b9050919050565b612e9a81612e7f565b82525050565b6000602082019050612eb56000830184612e91565b92915050565b612ec481612e7f565b8114612ecf57600080fd5b50565b600081359050612ee181612ebb565b92915050565b60008060408385031215612efe57612efd612cbb565b5b6000612f0c85828601612ed2565b9250506020612f1d85828601612e1d565b9150509250929050565b612f3081612dfc565b82525050565b6000602082019050612f4b6000830184612f27565b92915050565b600060208284031215612f6757612f66612cbb565b5b6000612f7584828501612ed2565b91505092915050565b600080600060608486031215612f9757612f96612cbb565b5b6000612fa586828701612ed2565b9350506020612fb686828701612ed2565b9250506040612fc786828701612e1d565b9150509250925092565b60008060408385031215612fe857612fe7612cbb565b5b6000612ff685828601612e1d565b925050602061300785828601612ed2565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61305382612d90565b810181811067ffffffffffffffff821117156130725761307161301b565b5b80604052505050565b6000613085612cb1565b9050613091828261304a565b919050565b600067ffffffffffffffff8211156130b1576130b061301b565b5b6130ba82612d90565b9050602081019050919050565b82818337600083830152505050565b60006130e96130e484613096565b61307b565b90508281526020810184848401111561310557613104613016565b5b6131108482856130c7565b509392505050565b600082601f83011261312d5761312c613011565b5b813561313d8482602086016130d6565b91505092915050565b60006020828403121561315c5761315b612cbb565b5b600082013567ffffffffffffffff81111561317a57613179612cc0565b5b61318684828501613118565b91505092915050565b61319881612c7b565b81146131a357600080fd5b50565b6000813590506131b58161318f565b92915050565b600080604083850312156131d2576131d1612cbb565b5b60006131e0858286016131a6565b925050602083013567ffffffffffffffff81111561320157613200612cc0565b5b61320d85828601613118565b9150509250929050565b6000806040838503121561322e5761322d612cbb565b5b600061323c85828601612ed2565b925050602061324d858286016131a6565b9150509250929050565b600067ffffffffffffffff8211156132725761327161301b565b5b61327b82612d90565b9050602081019050919050565b600061329b61329684613257565b61307b565b9050828152602081018484840111156132b7576132b6613016565b5b6132c28482856130c7565b509392505050565b600082601f8301126132df576132de613011565b5b81356132ef848260208601613288565b91505092915050565b6000806000806080858703121561331257613311612cbb565b5b600061332087828801612ed2565b945050602061333187828801612ed2565b935050604061334287828801612e1d565b925050606085013567ffffffffffffffff81111561336357613362612cc0565b5b61336f878288016132ca565b91505092959194509250565b6000806040838503121561339257613391612cbb565b5b60006133a085828601612ed2565b92505060206133b185828601612ed2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061340257607f821691505b602082108103613415576134146133bb565b5b50919050565b60006040820190506134306000830185612e91565b61343d6020830184612e91565b9392505050565b6000815190506134538161318f565b92915050565b60006020828403121561346f5761346e612cbb565b5b600061347d84828501613444565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006134bc601f83612d55565b91506134c782613486565b602082019050919050565b600060208201905081810360008301526134eb816134af565b9050919050565b600081905092915050565b50565b600061350d6000836134f2565b9150613518826134fd565b600082019050919050565b600061352e82613500565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b600061356e601083612d55565b915061357982613538565b602082019050919050565b6000602082019050818103600083015261359d81613561565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135de82612dfc565b91506135e983612dfc565b9250828201905080821115613601576136006135a4565b5b92915050565b7f4e6f206d6f7265204361747320696e2073746f636b2100000000000000000000600082015250565b600061363d601683612d55565b915061364882613607565b602082019050919050565b6000602082019050818103600083015261366c81613630565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026136d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613698565b6136df8683613698565b95508019841693508086168417925050509392505050565b6000819050919050565b600061371c61371761371284612dfc565b6136f7565b612dfc565b9050919050565b6000819050919050565b61373683613701565b61374a61374282613723565b8484546136a5565b825550505050565b600090565b61375f613752565b61376a81848461372d565b505050565b5b8181101561378e57613783600082613757565b600181019050613770565b5050565b601f8211156137d3576137a481613673565b6137ad84613688565b810160208510156137bc578190505b6137d06137c885613688565b83018261376f565b50505b505050565b600082821c905092915050565b60006137f6600019846008026137d8565b1980831691505092915050565b600061380f83836137e5565b9150826002028217905092915050565b61382882612d4a565b67ffffffffffffffff8111156138415761384061301b565b5b61384b82546133ea565b613856828285613792565b600060209050601f8311600181146138895760008415613877578287015190505b6138818582613803565b8655506138e9565b601f19841661389786613673565b60005b828110156138bf5784890151825560018201915060208501945060208101905061389a565b868310156138dc57848901516138d8601f8916826137e5565b8355505b6001600288020188555050505b505050505050565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b6000613927601e83612d55565b9150613932826138f1565b602082019050919050565b600060208201905081810360008301526139568161391a565b9050919050565b600061396882612dfc565b915061397383612dfc565b925082820390508181111561398b5761398a6135a4565b5b92915050565b600061399c82612dfc565b91506139a783612dfc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139e0576139df6135a4565b5b828202905092915050565b7f43617473206e6f74207265616479207965742100000000000000000000000000600082015250565b6000613a21601383612d55565b9150613a2c826139eb565b602082019050919050565b60006020820190508181036000830152613a5081613a14565b9050919050565b7f4e6f206d6f726520426164204361747321000000000000000000000000000000600082015250565b6000613a8d601183612d55565b9150613a9882613a57565b602082019050919050565b60006020820190508181036000830152613abc81613a80565b9050919050565b7f547269656420746f20746f74616c206d696e74207175616e697479207065722060008201527f77616c6c6574206f766572206c696d6974000000000000000000000000000000602082015250565b6000613b1f603183612d55565b9150613b2a82613ac3565b604082019050919050565b60006020820190508181036000830152613b4e81613b12565b9050919050565b7f547269656420746f206d696e74207175616e697479206f766572206c696d697460008201527f2c20726574727920776974682072656475636564207175616e74697479000000602082015250565b6000613bb1603d83612d55565b9150613bbc82613b55565b604082019050919050565b60006020820190508181036000830152613be081613ba4565b9050919050565b7f4d7573742073656e6420656e6f7567682065746820746f2061646f707420636160008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c43602183612d55565b9150613c4e82613be7565b604082019050919050565b60006020820190508181036000830152613c7281613c36565b9050919050565b600081905092915050565b60008154613c91816133ea565b613c9b8186613c79565b94506001821660008114613cb65760018114613ccb57613cfe565b60ff1983168652811515820286019350613cfe565b613cd485613673565b60005b83811015613cf657815481890152600182019150602081019050613cd7565b838801955050505b50505092915050565b6000613d1282612d4a565b613d1c8185613c79565b9350613d2c818560208601612d66565b80840191505092915050565b6000613d448285613c84565b9150613d508284613d07565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db8602683612d55565b9150613dc382613d5c565b604082019050919050565b60006020820190508181036000830152613de781613dab565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e24602083612d55565b9150613e2f82613dee565b602082019050919050565b60006020820190508181036000830152613e5381613e17565b9050919050565b6000613e6582612dfc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e9757613e966135a4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613edc82612dfc565b9150613ee783612dfc565b925082613ef757613ef6613ea2565b5b828204905092915050565b6000613f0d82612dfc565b9150613f1883612dfc565b925082613f2857613f27613ea2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613f8982613f62565b613f938185613f6d565b9350613fa3818560208601612d66565b613fac81612d90565b840191505092915050565b6000608082019050613fcc6000830187612e91565b613fd96020830186612e91565b613fe66040830185612f27565b8181036060830152613ff88184613f7e565b905095945050505050565b60008151905061401281612cf1565b92915050565b60006020828403121561402e5761402d612cbb565b5b600061403c84828501614003565b9150509291505056fea2646970667358221220c978fd5744856d15f76ef469e8f20443d559b98cc5c620b92170671dc38728a064736f6c6343000810003368747470733a2f2f6f70656e7365612e6261646361747367616e672e636c75622f