608060405266038d7ea4c68000600c556000600d60006101000a81548160ff0219169083151502179055503480156200003757600080fd5b50604051620042513803806200425183398181016040528101906200005d9190620002c9565b806040518060400160405280600f81526020017f5461696b6f207820426c617a70617900000000000000000000000000000000008152506040518060400160405280600581526020017f544b424c5a0000000000000000000000000000000000000000000000000000008152508160009081620000db919062000575565b508060019081620000ed919062000575565b5050506000600a60006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001805760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200017791906200066d565b60405180910390fd5b62000191816200019960201b60201c565b50506200068a565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002918262000264565b9050919050565b620002a38162000284565b8114620002af57600080fd5b50565b600081519050620002c38162000298565b92915050565b600060208284031215620002e257620002e16200025f565b5b6000620002f284828501620002b2565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200037d57607f821691505b60208210810362000393576200039262000335565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003be565b620004098683620003be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000456620004506200044a8462000421565b6200042b565b62000421565b9050919050565b6000819050919050565b620004728362000435565b6200048a62000481826200045d565b848454620003cb565b825550505050565b600090565b620004a162000492565b620004ae81848462000467565b505050565b5b81811015620004d657620004ca60008262000497565b600181019050620004b4565b5050565b601f8211156200052557620004ef8162000399565b620004fa84620003ae565b810160208510156200050a578190505b620005226200051985620003ae565b830182620004b3565b50505b505050565b600082821c905092915050565b60006200054a600019846008026200052a565b1980831691505092915050565b600062000565838362000537565b9150826002028217905092915050565b6200058082620002fb565b67ffffffffffffffff8111156200059c576200059b62000306565b5b620005a8825462000364565b620005b5828285620004da565b600060209050601f831160018114620005ed5760008415620005d8578287015190505b620005e4858262000557565b86555062000654565b601f198416620005fd8662000399565b60005b82811015620006275784890151825560018201915060208501945060208101905062000600565b8683101562000647578489015162000643601f89168262000537565b8355505b6001600288020188555050505b505050505050565b620006678162000284565b82525050565b60006020820190506200068460008301846200065c565b92915050565b613bb7806200069a6000396000f3fe60806040526004361061023b5760003560e01c8063715018a61161012e578063b23d4854116100ab578063d2d7231f1161006f578063d2d7231f14610817578063d5a44f8614610854578063e985e9c514610892578063f2fde38b146108cf578063f6e53b93146108f85761023b565b8063b23d485414610736578063b88d4fde1461075f578063c18ebc6a14610788578063c7d1ac38146107b1578063c87b56dd146107da5761023b565b80638d6cc56d116100f25780638d6cc56d146106635780638da5cb5b1461068c57806395d89b41146106b7578063a035b1fe146106e2578063a22cb4651461070d5761023b565b8063715018a6146105a457806372378554146105bb57806382edaf94146105e45780638456cb591461060f5780638462151c146106265761023b565b806340d097c3116101bc5780634f6ccce7116101805780634f6ccce714610497578063509c7180146104d45780635c975abb146104ff5780636352211e1461052a57806370a08231146105675761023b565b806340d097c3146103f657806342842e0e1461041257806342966c681461043b57806343508b051461046457806346738b25146104805761023b565b806323b872dd1161020357806323b872dd146103395780632e17de78146103625780632f745c591461038b5780633ccfd60b146103c85780633f4ba83a146103df5761023b565b806301ffc9a71461024057806306fdde031461027d578063081812fc146102a8578063095ea7b3146102e557806318160ddd1461030e575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190612dfa565b610935565b6040516102749190612e42565b60405180910390f35b34801561028957600080fd5b50610292610947565b60405161029f9190612eed565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612f45565b6109d9565b6040516102dc9190612fb3565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612ffa565b6109f5565b005b34801561031a57600080fd5b50610323610a0b565b6040516103309190613049565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190613064565b610a18565b005b34801561036e57600080fd5b5061038960048036038101906103849190612f45565b610b1a565b005b34801561039757600080fd5b506103b260048036038101906103ad9190612ffa565b610cbe565b6040516103bf9190613049565b60405180910390f35b3480156103d457600080fd5b506103dd610d67565b005b3480156103eb57600080fd5b506103f4610e08565b005b610410600480360381019061040b91906130b7565b610e1a565b005b34801561041e57600080fd5b5061043960048036038101906104349190613064565b610e9d565b005b34801561044757600080fd5b50610462600480360381019061045d9190612f45565b610ebd565b005b61047e60048036038101906104799190612ffa565b610ed4565b005b34801561048c57600080fd5b50610495610f82565b005b3480156104a357600080fd5b506104be60048036038101906104b99190612f45565b610fb6565b6040516104cb9190613049565b60405180910390f35b3480156104e057600080fd5b506104e961102c565b6040516104f69190612e42565b60405180910390f35b34801561050b57600080fd5b5061051461103f565b6040516105219190612e42565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c9190612f45565b611056565b60405161055e9190612fb3565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906130b7565b611068565b60405161059b9190613049565b60405180910390f35b3480156105b057600080fd5b506105b9611122565b005b3480156105c757600080fd5b506105e260048036038101906105dd91906130e4565b611136565b005b3480156105f057600080fd5b506105f96111ac565b6040516106069190612fb3565b60405180910390f35b34801561061b57600080fd5b506106246111d2565b005b34801561063257600080fd5b5061064d600480360381019061064891906130b7565b6111e4565b60405161065a91906131e2565b60405180910390f35b34801561066f57600080fd5b5061068a60048036038101906106859190612f45565b6112ed565b005b34801561069857600080fd5b506106a16112ff565b6040516106ae9190612fb3565b60405180910390f35b3480156106c357600080fd5b506106cc611329565b6040516106d99190612eed565b60405180910390f35b3480156106ee57600080fd5b506106f76113bb565b6040516107049190613049565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190613230565b6113c1565b005b34801561074257600080fd5b5061075d600480360381019061075891906130b7565b6113d7565b005b34801561076b57600080fd5b50610786600480360381019061078191906133a5565b611423565b005b34801561079457600080fd5b506107af60048036038101906107aa91906130b7565b611440565b005b3480156107bd57600080fd5b506107d860048036038101906107d391906130b7565b611471565b005b3480156107e657600080fd5b5061080160048036038101906107fc9190612f45565b611534565b60405161080e9190612eed565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190612f45565b6115cd565b60405161084b9190613049565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190612f45565b611675565b604051610889929190613428565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b49190613451565b6116b9565b6040516108c69190612e42565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f191906130b7565b61174d565b005b34801561090457600080fd5b5061091f600480360381019061091a9190612f45565b6117d3565b60405161092c9190613049565b60405180910390f35b6000610940826117e5565b9050919050565b606060008054610956906134c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610982906134c0565b80156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b5050505050905090565b60006109e48261185f565b506109ee826118e7565b9050919050565b610a078282610a02611924565b61192c565b5050565b6000600880549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8a5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610a819190612fb3565b60405180910390fd5b6000610a9e8383610a99611924565b61193e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b14578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610b0b939291906134f1565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590613574565b60405180910390fd5b6000610bc9826115cd565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401610c28929190613594565b600060405180830381600087803b158015610c4257600080fd5b505af1158015610c56573d6000803e3d6000fd5b50505050600e60008381526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050610cba30338460405180602001604052806000815250611954565b5050565b6000610cc983611068565b8210610d0e5782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610d05929190613594565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d6f611971565b600047905060008111610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90613609565b60405180910390fd5b610dbf6112ff565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e04573d6000803e3d6000fd5b5050565b610e10611971565b610e186119f8565b565b600d60009054906101000a900460ff1615610e7457600c543414610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613675565b60405180910390fd5b5b6000600b6000815480929190610e89906136c4565b919050559050610e998282611a5b565b5050565b610eb883838360405180602001604052806000815250611423565b505050565b610ed0600082610ecb611924565b61193e565b5050565b600d60009054906101000a900460ff1615610f395780600c54610ef7919061370c565b3414610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f906137c0565b60405180910390fd5b5b60005b81811015610f7d576000600b6000815480929190610f59906136c4565b919050559050610f698482611a5b565b508080610f75906136c4565b915050610f3c565b505050565b610f8a611971565b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6000610fc0610a0b565b8210611006576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610ffd929190613594565b60405180910390fd5b6008828154811061101a576110196137e0565b5b90600052602060002001549050919050565b600d60009054906101000a900460ff1681565b6000600a60009054906101000a900460ff16905090565b60006110618261185f565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110db5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016110d29190612fb3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61112a611971565b6111346000611a79565b565b611147611141611924565b83611b3f565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90613881565b60405180910390fd5b6111a8611191611924565b828460405180602001604052806000815250611954565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111da611971565b6111e2611bd4565b565b606060006111f183611068565b90506000810361124d57600067ffffffffffffffff8111156112165761121561327a565b5b6040519080825280602002602001820160405280156112445781602001602082028036833780820191505090505b509150506112e8565b60008167ffffffffffffffff8111156112695761126861327a565b5b6040519080825280602002602001820160405280156112975781602001602082028036833780820191505090505b50905060005b828110156112e1576112af8582610cbe565b8282815181106112c2576112c16137e0565b5b60200260200101818152505080806112d9906136c4565b91505061129d565b5080925050505b919050565b6112f5611971565b80600c8190555050565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611338906134c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611364906134c0565b80156113b15780601f10611386576101008083540402835291602001916113b1565b820191906000526020600020905b81548152906001019060200180831161139457829003601f168201915b5050505050905090565b600c5481565b6113d36113cc611924565b8383611c37565b5050565b6113df611971565b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61142e848484610a18565b61143a84848484611da6565b50505050565b611448611971565b6000600b600081548092919061145d906136c4565b91905055905061146d8282611a5b565b5050565b611479611971565b6000600b600081548092919061148e906136c4565b91905055905061149e8282611a5b565b60405180604001604052804281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600e60008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff1661155783611056565b73ffffffffffffffffffffffffffffffffffffffff16036115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a490613913565b60405180910390fd5b6040518060600160405280603c8152602001613b46603c91399050919050565b600080600e60008481526020019081526020016000206000015403611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e9061397f565b60405180910390fd5b6000600e6000848152602001908152602001600020600001544261164b919061399f565b905060006019610e108361165f9190613a02565b611669919061370c565b90508092505050919050565b600e6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611755611971565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117c75760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016117be9190612fb3565b60405180910390fd5b6117d081611a79565b50565b60006117de826115cd565b9050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611858575061185782611f5d565b5b9050919050565b60008061186b8361203f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118de57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016118d59190613049565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b611939838383600161207c565b505050565b600061194b848484612241565b90509392505050565b61195f84848461225f565b61196b84848484611da6565b50505050565b611979611924565b73ffffffffffffffffffffffffffffffffffffffff166119976112ff565b73ffffffffffffffffffffffffffffffffffffffff16146119f6576119ba611924565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016119ed9190612fb3565b60405180910390fd5b565b611a006123cc565b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611a44611924565b604051611a519190612fb3565b60405180910390a1565b611a7582826040518060200160405280600081525061240c565b5050565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611b4b83611056565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611bba57508373ffffffffffffffffffffffffffffffffffffffff16611ba2846109d9565b73ffffffffffffffffffffffffffffffffffffffff16145b80611bcb5750611bca81856116b9565b5b91505092915050565b611bdc612428565b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c20611924565b604051611c2d9190612fb3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca857816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611c9f9190612fb3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d999190612e42565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611f57578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611dea611924565b8685856040518563ffffffff1660e01b8152600401611e0c9493929190613a88565b6020604051808303816000875af1925050508015611e4857506040513d601f19601f82011682018060405250810190611e459190613ae9565b60015b611ecc573d8060008114611e78576040519150601f19603f3d011682016040523d82523d6000602084013e611e7d565b606091505b506000815103611ec457836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611ebb9190612fb3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f5557836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611f4c9190612fb3565b60405180910390fd5b505b50505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061202857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612038575061203782612469565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806120b55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121e95760006120c58461185f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561213057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612143575061214181846116b9565b155b1561218557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161217c9190612fb3565b60405180910390fd5b81156121e757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600061224b612428565b6122568484846124d3565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d15760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122c89190612fb3565b60405180910390fd5b60006122df8383600061193e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361235257816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016123499190613049565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123c6578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016123bd939291906134f1565b60405180910390fd5b50505050565b6123d461103f565b61240a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61241683836125f0565b6124236000848484611da6565b505050565b61243061103f565b15612467576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806124e18585856126e9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125255761252084612903565b612564565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461256357612562818561294c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125a6576125a184612aad565b6125e5565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125e4576125e38585612b7e565b5b5b809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126625760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016126599190612fb3565b60405180910390fd5b60006126708383600061193e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146126e45760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016126db9190612fb3565b60405180910390fd5b505050565b6000806126f58461203f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461273757612736818486612c09565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146127c85761277960008560008061207c565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461284b576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600061295783611068565b9050600060076000848152602001908152602001600020549050818114612a3c576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612ac1919061399f565b9050600060096000848152602001908152602001600020549050600060088381548110612af157612af06137e0565b5b906000526020600020015490508060088381548110612b1357612b126137e0565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612b6257612b61613b16565b5b6001900381819060005260206000200160009055905550505050565b60006001612b8b84611068565b612b95919061399f565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b612c14838383612ccd565b612cc857600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c8957806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612c809190613049565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612cbf929190613594565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d8557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d465750612d4584846116b9565b5b80612d8457508273ffffffffffffffffffffffffffffffffffffffff16612d6c836118e7565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612dd781612da2565b8114612de257600080fd5b50565b600081359050612df481612dce565b92915050565b600060208284031215612e1057612e0f612d98565b5b6000612e1e84828501612de5565b91505092915050565b60008115159050919050565b612e3c81612e27565b82525050565b6000602082019050612e576000830184612e33565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e97578082015181840152602081019050612e7c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ebf82612e5d565b612ec98185612e68565b9350612ed9818560208601612e79565b612ee281612ea3565b840191505092915050565b60006020820190508181036000830152612f078184612eb4565b905092915050565b6000819050919050565b612f2281612f0f565b8114612f2d57600080fd5b50565b600081359050612f3f81612f19565b92915050565b600060208284031215612f5b57612f5a612d98565b5b6000612f6984828501612f30565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f9d82612f72565b9050919050565b612fad81612f92565b82525050565b6000602082019050612fc86000830184612fa4565b92915050565b612fd781612f92565b8114612fe257600080fd5b50565b600081359050612ff481612fce565b92915050565b6000806040838503121561301157613010612d98565b5b600061301f85828601612fe5565b925050602061303085828601612f30565b9150509250929050565b61304381612f0f565b82525050565b600060208201905061305e600083018461303a565b92915050565b60008060006060848603121561307d5761307c612d98565b5b600061308b86828701612fe5565b935050602061309c86828701612fe5565b92505060406130ad86828701612f30565b9150509250925092565b6000602082840312156130cd576130cc612d98565b5b60006130db84828501612fe5565b91505092915050565b600080604083850312156130fb576130fa612d98565b5b600061310985828601612f30565b925050602061311a85828601612fe5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61315981612f0f565b82525050565b600061316b8383613150565b60208301905092915050565b6000602082019050919050565b600061318f82613124565b613199818561312f565b93506131a483613140565b8060005b838110156131d55781516131bc888261315f565b97506131c783613177565b9250506001810190506131a8565b5085935050505092915050565b600060208201905081810360008301526131fc8184613184565b905092915050565b61320d81612e27565b811461321857600080fd5b50565b60008135905061322a81613204565b92915050565b6000806040838503121561324757613246612d98565b5b600061325585828601612fe5565b92505060206132668582860161321b565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132b282612ea3565b810181811067ffffffffffffffff821117156132d1576132d061327a565b5b80604052505050565b60006132e4612d8e565b90506132f082826132a9565b919050565b600067ffffffffffffffff8211156133105761330f61327a565b5b61331982612ea3565b9050602081019050919050565b82818337600083830152505050565b6000613348613343846132f5565b6132da565b90508281526020810184848401111561336457613363613275565b5b61336f848285613326565b509392505050565b600082601f83011261338c5761338b613270565b5b813561339c848260208601613335565b91505092915050565b600080600080608085870312156133bf576133be612d98565b5b60006133cd87828801612fe5565b94505060206133de87828801612fe5565b93505060406133ef87828801612f30565b925050606085013567ffffffffffffffff8111156134105761340f612d9d565b5b61341c87828801613377565b91505092959194509250565b600060408201905061343d600083018561303a565b61344a6020830184612fa4565b9392505050565b6000806040838503121561346857613467612d98565b5b600061347685828601612fe5565b925050602061348785828601612fe5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134d857607f821691505b6020821081036134eb576134ea613491565b5b50919050565b60006060820190506135066000830186612fa4565b613513602083018561303a565b6135206040830184612fa4565b949350505050565b7f596f7520646f206e6f74206f776e207468697320746f6b656e2e000000000000600082015250565b600061355e601a83612e68565b915061356982613528565b602082019050919050565b6000602082019050818103600083015261358d81613551565b9050919050565b60006040820190506135a96000830185612fa4565b6135b6602083018461303a565b9392505050565b7f4e6f204554482062616c616e636520746f207769746864726177000000000000600082015250565b60006135f3601a83612e68565b91506135fe826135bd565b602082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b7f496e636f72726563742045746865722076616c75650000000000000000000000600082015250565b600061365f601583612e68565b915061366a82613629565b602082019050919050565b6000602082019050818103600083015261368e81613652565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136cf82612f0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361370157613700613695565b5b600182019050919050565b600061371782612f0f565b915061372283612f0f565b925082820261373081612f0f565b9150828204841483151761374757613746613695565b5b5092915050565b7f496e636f72726563742045746865722076616c756520666f722062617463682060008201527f6d696e74696e6700000000000000000000000000000000000000000000000000602082015250565b60006137aa602783612e68565b91506137b58261374e565b604082019050919050565b600060208201905081810360008301526137d98161379d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061386b603183612e68565b91506138768261380f565b604082019050919050565b6000602082019050818103600083015261389a8161385e565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006138fd602f83612e68565b9150613908826138a1565b604082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b7f546f6b656e206973206e6f74207374616b65642e000000000000000000000000600082015250565b6000613969601483612e68565b915061397482613933565b602082019050919050565b600060208201905081810360008301526139988161395c565b9050919050565b60006139aa82612f0f565b91506139b583612f0f565b92508282039050818111156139cd576139cc613695565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a0d82612f0f565b9150613a1883612f0f565b925082613a2857613a276139d3565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000613a5a82613a33565b613a648185613a3e565b9350613a74818560208601612e79565b613a7d81612ea3565b840191505092915050565b6000608082019050613a9d6000830187612fa4565b613aaa6020830186612fa4565b613ab7604083018561303a565b8181036060830152613ac98184613a4f565b905095945050505050565b600081519050613ae381612dce565b92915050565b600060208284031215613aff57613afe612d98565b5b6000613b0d84828501613ad4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe697066733a2f2f516d5032746d3764547551555637334d653450643838594358413366426534526e715a744b36706e7364507677482f312e6a736f6ea264697066735822122020d9c318e7b82025246ccd6b07a1d5980e25d2e7a276018f0bee99512e079d8264736f6c634300081400330000000000000000000000002ed05570214f6c0f7612b580ab37c163076e0162