Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 30 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Governor | 20589438 | 91 days ago | IN | 0 ETH | 0.00002371 | ||||
Transfer | 11847224 | 1378 days ago | IN | 0 ETH | 0.00551162 | ||||
Transfer | 9602236 | 1724 days ago | IN | 0 ETH | 0.00007123 | ||||
Transfer | 6223216 | 2279 days ago | IN | 0 ETH | 0.00007337 | ||||
Transfer | 6126677 | 2295 days ago | IN | 0 ETH | 0.00009782 | ||||
Transfer | 6123772 | 2296 days ago | IN | 0 ETH | 0.00016141 | ||||
Transfer | 6118577 | 2296 days ago | IN | 0 ETH | 0.00024457 | ||||
Transfer | 5980524 | 2320 days ago | IN | 0 ETH | 0.00007337 | ||||
Transfer | 5978008 | 2320 days ago | IN | 0 ETH | 0.00010523 | ||||
Transfer | 5971579 | 2321 days ago | IN | 0 ETH | 0.00010523 | ||||
Add Pack | 5943953 | 2326 days ago | IN | 0 ETH | 0.00197776 | ||||
Add Pack | 5943941 | 2326 days ago | IN | 0 ETH | 0.00148332 | ||||
Add Pack | 5943907 | 2326 days ago | IN | 0 ETH | 0.00031006 | ||||
Add Pack | 5943895 | 2326 days ago | IN | 0 ETH | 0.00148332 | ||||
Add Pack | 5943886 | 2326 days ago | IN | 0 ETH | 0.00071553 | ||||
Add Pack | 5943882 | 2326 days ago | IN | 0 ETH | 0.00197776 | ||||
Add Pack | 5943838 | 2326 days ago | IN | 0 ETH | 0.00047702 | ||||
Set Governor | 5939605 | 2327 days ago | IN | 0 ETH | 0.00058952 | ||||
Add Pack | 5939078 | 2327 days ago | IN | 0 ETH | 0.0009876 | ||||
Add Pack | 5939078 | 2327 days ago | IN | 0 ETH | 0.00098888 | ||||
Add Pack | 5939078 | 2327 days ago | IN | 0 ETH | 0.0009876 | ||||
Add Pack | 5939078 | 2327 days ago | IN | 0 ETH | 0.00128888 | ||||
Add Protos | 5939059 | 2327 days ago | IN | 0 ETH | 0.03246836 | ||||
Add Protos | 5939058 | 2327 days ago | IN | 0 ETH | 0.10631842 | ||||
Add Protos | 5939051 | 2327 days ago | IN | 0 ETH | 0.1056697 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CardIntegration
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-10 */ pragma solidity 0.4.24; contract Governable { event Pause(); event Unpause(); address public governor; bool public paused = false; constructor() public { governor = msg.sender; } function setGovernor(address _gov) public onlyGovernor { governor = _gov; } modifier onlyGovernor { require(msg.sender == governor); _; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyGovernor whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyGovernor whenPaused public { paused = false; emit Unpause(); } } contract CardBase is Governable { struct Card { uint16 proto; uint16 purity; } function getCard(uint id) public view returns (uint16 proto, uint16 purity) { Card memory card = cards[id]; return (card.proto, card.purity); } function getShine(uint16 purity) public pure returns (uint8) { return uint8(purity / 1000); } Card[] public cards; } contract CardProto is CardBase { event NewProtoCard( uint16 id, uint8 season, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 cardType, uint8 tribe, bool packable ); struct Limit { uint64 limit; bool exists; } // limits for mythic cards mapping(uint16 => Limit) public limits; // can only set limits once function setLimit(uint16 id, uint64 limit) public onlyGovernor { Limit memory l = limits[id]; require(!l.exists); limits[id] = Limit({ limit: limit, exists: true }); } function getLimit(uint16 id) public view returns (uint64 limit, bool set) { Limit memory l = limits[id]; return (l.limit, l.exists); } // could make these arrays to save gas // not really necessary - will be update a very limited no of times mapping(uint8 => bool) public seasonTradable; mapping(uint8 => bool) public seasonTradabilityLocked; uint8 public currentSeason; function makeTradeable(uint8 season) public onlyGovernor { seasonTradable[season] = true; } function makeUntradable(uint8 season) public onlyGovernor { require(!seasonTradabilityLocked[season]); seasonTradable[season] = false; } function makePermanantlyTradable(uint8 season) public onlyGovernor { require(seasonTradable[season]); seasonTradabilityLocked[season] = true; } function isTradable(uint16 proto) public view returns (bool) { return seasonTradable[protos[proto].season]; } function nextSeason() public onlyGovernor { //Seasons shouldn't go to 0 if there is more than the uint8 should hold, the governor should know this ¯\_(ツ)_/¯ -M require(currentSeason <= 255); currentSeason++; mythic.length = 0; legendary.length = 0; epic.length = 0; rare.length = 0; common.length = 0; } enum Rarity { Common, Rare, Epic, Legendary, Mythic } uint8 constant SPELL = 1; uint8 constant MINION = 2; uint8 constant WEAPON = 3; uint8 constant HERO = 4; struct ProtoCard { bool exists; uint8 god; uint8 season; uint8 cardType; Rarity rarity; uint8 mana; uint8 attack; uint8 health; uint8 tribe; } // there is a particular design decision driving this: // need to be able to iterate over mythics only for card generation // don't store 5 different arrays: have to use 2 ids // better to bear this cost (2 bytes per proto card) // rather than 1 byte per instance uint16 public protoCount; mapping(uint16 => ProtoCard) protos; uint16[] public mythic; uint16[] public legendary; uint16[] public epic; uint16[] public rare; uint16[] public common; function addProtos( uint16[] externalIDs, uint8[] gods, Rarity[] rarities, uint8[] manas, uint8[] attacks, uint8[] healths, uint8[] cardTypes, uint8[] tribes, bool[] packable ) public onlyGovernor returns(uint16) { for (uint i = 0; i < externalIDs.length; i++) { ProtoCard memory card = ProtoCard({ exists: true, god: gods[i], season: currentSeason, cardType: cardTypes[i], rarity: rarities[i], mana: manas[i], attack: attacks[i], health: healths[i], tribe: tribes[i] }); _addProto(externalIDs[i], card, packable[i]); } } function addProto( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 cardType, uint8 tribe, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: cardType, rarity: rarity, mana: mana, attack: attack, health: health, tribe: tribe }); _addProto(externalID, card, packable); } function addWeapon( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 durability, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: WEAPON, rarity: rarity, mana: mana, attack: attack, health: durability, tribe: 0 }); _addProto(externalID, card, packable); } function addSpell(uint16 externalID, uint8 god, Rarity rarity, uint8 mana, bool packable) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: SPELL, rarity: rarity, mana: mana, attack: 0, health: 0, tribe: 0 }); _addProto(externalID, card, packable); } function addMinion( uint16 externalID, uint8 god, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe, bool packable ) public onlyGovernor returns(uint16) { ProtoCard memory card = ProtoCard({ exists: true, god: god, season: currentSeason, cardType: MINION, rarity: rarity, mana: mana, attack: attack, health: health, tribe: tribe }); _addProto(externalID, card, packable); } function _addProto(uint16 externalID, ProtoCard memory card, bool packable) internal { require(!protos[externalID].exists); card.exists = true; protos[externalID] = card; protoCount++; emit NewProtoCard( externalID, currentSeason, card.god, card.rarity, card.mana, card.attack, card.health, card.cardType, card.tribe, packable ); if (packable) { Rarity rarity = card.rarity; if (rarity == Rarity.Common) { common.push(externalID); } else if (rarity == Rarity.Rare) { rare.push(externalID); } else if (rarity == Rarity.Epic) { epic.push(externalID); } else if (rarity == Rarity.Legendary) { legendary.push(externalID); } else if (rarity == Rarity.Mythic) { mythic.push(externalID); } else { require(false); } } } function getProto(uint16 id) public view returns( bool exists, uint8 god, uint8 season, uint8 cardType, Rarity rarity, uint8 mana, uint8 attack, uint8 health, uint8 tribe ) { ProtoCard memory proto = protos[id]; return ( proto.exists, proto.god, proto.season, proto.cardType, proto.rarity, proto.mana, proto.attack, proto.health, proto.tribe ); } function getRandomCard(Rarity rarity, uint16 random) public view returns (uint16) { // modulo bias is fine - creates rarity tiers etc // will obviously revert is there are no cards of that type: this is expected - should never happen if (rarity == Rarity.Common) { return common[random % common.length]; } else if (rarity == Rarity.Rare) { return rare[random % rare.length]; } else if (rarity == Rarity.Epic) { return epic[random % epic.length]; } else if (rarity == Rarity.Legendary) { return legendary[random % legendary.length]; } else if (rarity == Rarity.Mythic) { // make sure a mythic is available uint16 id; uint64 limit; bool set; for (uint i = 0; i < mythic.length; i++) { id = mythic[(random + i) % mythic.length]; (limit, set) = getLimit(id); if (set && limit > 0){ return id; } } // if not, they get a legendary :( return legendary[random % legendary.length]; } require(false); return 0; } // can never adjust tradable cards // each season gets a 'balancing beta' // totally immutable: season, rarity function replaceProto( uint16 index, uint8 god, uint8 cardType, uint8 mana, uint8 attack, uint8 health, uint8 tribe ) public onlyGovernor { ProtoCard memory pc = protos[index]; require(!seasonTradable[pc.season]); protos[index] = ProtoCard({ exists: true, god: god, season: pc.season, cardType: cardType, rarity: pc.rarity, mana: mana, attack: attack, health: health, tribe: tribe }); } } interface ERC721Metadata /* is ERC721 */ { /// @notice A descriptive name for a collection of NFTs in this contract function name() external pure returns (string _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external pure returns (string _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string); } interface ERC721Enumerable /* is ERC721 */ { /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address function totalSupply() public view returns (uint256); /// @notice Enumerate valid NFTs /// @dev Throws if `_index` >= `totalSupply()`. /// @param _index A counter less than `totalSupply()` /// @return The token identifier for the `_index`th NFT, /// (sort order not specified) function tokenByIndex(uint256 _index) external view returns (uint256); /// @notice Enumerate NFTs assigned to an owner /// @dev Throws if `_index` >= `balanceOf(_owner)` or if /// `_owner` is the zero address, representing invalid NFTs. /// @param _owner An address where we are interested in NFTs owned by them /// @param _index A counter less than `balanceOf(_owner)` /// @return The token identifier for the `_index`th NFT assigned to `_owner`, /// (sort order not specified) function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 _tokenId); } interface ERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); } contract ERC721 { event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) public view returns (uint256 _balance); function ownerOf(uint256 _tokenId) public view returns (address _owner); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) public payable; function safeTransferFrom(address _from, address _to, uint256 _tokenId) public payable; function transfer(address _to, uint256 _tokenId) public payable; function transferFrom(address _from, address _to, uint256 _tokenId) public payable; function approve(address _to, uint256 _tokenId) public payable; function setApprovalForAll(address _to, bool _approved) public; function getApproved(uint256 _tokenId) public view returns (address); function isApprovedForAll(address _owner, address _operator) public view returns (bool); } contract NFT is ERC721, ERC165, ERC721Metadata, ERC721Enumerable {} contract CardOwnership is NFT, CardProto { // doing this strategy doesn't save gas // even setting the length to the max and filling in // unfortunately - maybe if we stop it boundschecking // address[] owners; mapping(uint => address) owners; mapping(uint => address) approved; // support multiple operators mapping(address => mapping(address => bool)) operators; // save space, limits us to 2^40 tokens (>1t) mapping(address => uint40[]) public ownedTokens; mapping(uint => string) uris; // save space, limits us to 2^24 tokens per user (~17m) uint24[] indices; uint public burnCount; /** * @return the name of this token */ function name() public view returns (string) { return "Gods Unchained"; } /** * @return the symbol of this token */ function symbol() public view returns (string) { return "GODS"; } /** * @return the total number of cards in circulation */ function totalSupply() public view returns (uint) { return cards.length - burnCount; } /** * @param to : the address to which the card will be transferred * @param id : the id of the card to be transferred */ function transfer(address to, uint id) public payable { require(owns(msg.sender, id)); require(isTradable(cards[id].proto)); require(to != address(0)); _transfer(msg.sender, to, id); } /** * internal transfer function which skips checks - use carefully * @param from : the address from which the card will be transferred * @param to : the address to which the card will be transferred * @param id : the id of the card to be transferred */ function _transfer(address from, address to, uint id) internal { approved[id] = address(0); owners[id] = to; _addToken(to, id); _removeToken(from, id); emit Transfer(from, to, id); } /** * initial internal transfer function which skips checks and saves gas - use carefully * @param to : the address to which the card will be transferred * @param id : the id of the card to be transferred */ function _create(address to, uint id) internal { owners[id] = to; _addToken(to, id); emit Transfer(address(0), to, id); } /** * @param to : the address to which the cards will be transferred * @param ids : the ids of the cards to be transferred */ function transferAll(address to, uint[] ids) public payable { for (uint i = 0; i < ids.length; i++) { transfer(to, ids[i]); } } /** * @param proposed : the claimed owner of the cards * @param ids : the ids of the cards to check * @return whether proposed owns all of the cards */ function ownsAll(address proposed, uint[] ids) public view returns (bool) { for (uint i = 0; i < ids.length; i++) { if (!owns(proposed, ids[i])) { return false; } } return true; } /** * @param proposed : the claimed owner of the card * @param id : the id of the card to check * @return whether proposed owns the card */ function owns(address proposed, uint id) public view returns (bool) { return ownerOf(id) == proposed; } /** * @param id : the id of the card * @return the address of the owner of the card */ function ownerOf(uint id) public view returns (address) { return owners[id]; } /** * @param id : the index of the token to burn */ function burn(uint id) public { // require(isTradable(cards[id].proto)); require(owns(msg.sender, id)); burnCount++; // use the internal transfer function as the external // has a guard to prevent transfers to 0x0 _transfer(msg.sender, address(0), id); } /** * @param ids : the indices of the tokens to burn */ function burnAll(uint[] ids) public { for (uint i = 0; i < ids.length; i++){ burn(ids[i]); } } /** * @param to : the address to approve for transfer * @param id : the index of the card to be approved */ function approve(address to, uint id) public payable { require(owns(msg.sender, id)); require(isTradable(cards[id].proto)); approved[id] = to; emit Approval(msg.sender, to, id); } /** * @param to : the address to approve for transfer * @param ids : the indices of the cards to be approved */ function approveAll(address to, uint[] ids) public payable { for (uint i = 0; i < ids.length; i++) { approve(to, ids[i]); } } /** * @param id : the index of the token to check * @return the address approved to transfer this token */ function getApproved(uint id) public view returns(address) { return approved[id]; } /** * @param owner : the address to check * @return the number of tokens controlled by owner */ function balanceOf(address owner) public view returns (uint) { return ownedTokens[owner].length; } /** * @param id : the index of the proposed token * @return whether the token is owned by a non-zero address */ function exists(uint id) public view returns (bool) { return owners[id] != address(0); } /** * @param to : the address to which the token should be transferred * @param id : the index of the token to transfer */ function transferFrom(address from, address to, uint id) public payable { require(to != address(0)); require(to != address(this)); // TODO: why is this necessary // if you're approved, why does it matter where it comes from? require(ownerOf(id) == from); require(isSenderApprovedFor(id)); require(isTradable(cards[id].proto)); _transfer(ownerOf(id), to, id); } /** * @param to : the address to which the tokens should be transferred * @param ids : the indices of the tokens to transfer */ function transferAllFrom(address to, uint[] ids) public payable { for (uint i = 0; i < ids.length; i++) { transferFrom(address(0), to, ids[i]); } } /** * @return the number of cards which have been burned */ function getBurnCount() public view returns (uint) { return burnCount; } function isApprovedForAll(address owner, address operator) public view returns (bool) { return operators[owner][operator]; } function setApprovalForAll(address to, bool toApprove) public { require(to != msg.sender); operators[msg.sender][to] = toApprove; emit ApprovalForAll(msg.sender, to, toApprove); } bytes4 constant magic = bytes4(keccak256("onERC721Received(address,uint256,bytes)")); function safeTransferFrom(address from, address to, uint id, bytes data) public payable { require(to != address(0)); transferFrom(from, to, id); if (_isContract(to)) { bytes4 response = ERC721TokenReceiver(to).onERC721Received.gas(50000)(from, id, data); require(response == magic); } } function safeTransferFrom(address from, address to, uint id) public payable { safeTransferFrom(from, to, id, ""); } function _addToken(address to, uint id) private { uint pos = ownedTokens[to].push(uint40(id)) - 1; indices.push(uint24(pos)); } function _removeToken(address from, uint id) public payable { uint24 index = indices[id]; uint lastIndex = ownedTokens[from].length - 1; uint40 lastId = ownedTokens[from][lastIndex]; ownedTokens[from][index] = lastId; ownedTokens[from][lastIndex] = 0; ownedTokens[from].length--; } function isSenderApprovedFor(uint256 id) internal view returns (bool) { return owns(msg.sender, id) || getApproved(id) == msg.sender || isApprovedForAll(ownerOf(id), msg.sender); } function _isContract(address test) internal view returns (bool) { uint size; assembly { size := extcodesize(test) } return (size > 0); } function tokenURI(uint id) public view returns (string) { return uris[id]; } function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 _tokenId){ return ownedTokens[owner][index]; } function tokenByIndex(uint256 index) external view returns (uint256){ return index; } function supportsInterface(bytes4 interfaceID) public view returns (bool) { return ( interfaceID == this.supportsInterface.selector || // ERC165 interfaceID == 0x5b5e139f || // ERC721Metadata interfaceID == 0x6466353c || // ERC-721 on 3/7/2018 interfaceID == 0x780e9d63 ); // ERC721Enumerable } function implementsERC721() external pure returns (bool) { return true; } function getOwnedTokens(address user) public view returns (uint40[]) { return ownedTokens[user]; } } /// @dev Note: the ERC-165 identifier for this interface is 0xf0b9e5ba interface ERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. This function MUST use 50,000 gas or less. Return of other /// than the magic value MUST result in the transaction being reverted. /// Note: the contract address is always the message sender. /// @param _from The sending address /// @param _tokenId The NFT identifier which is being transfered /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))` /// unless throwing function onERC721Received(address _from, uint256 _tokenId, bytes _data) external returns(bytes4); } contract CardIntegration is CardOwnership { CardPack[] packs; event CardCreated(uint indexed id, uint16 proto, uint16 purity, address owner); function addPack(CardPack approved) public onlyGovernor { packs.push(approved); } modifier onlyApprovedPacks { require(_isApprovedPack()); _; } function _isApprovedPack() private view returns (bool) { for (uint i = 0; i < packs.length; i++) { if (msg.sender == address(packs[i])) { return true; } } return false; } function createCard(address owner, uint16 proto, uint16 purity) public whenNotPaused onlyApprovedPacks returns (uint) { ProtoCard memory card = protos[proto]; require(card.season == currentSeason); if (card.rarity == Rarity.Mythic) { uint64 limit; bool exists; (limit, exists) = getLimit(proto); require(!exists || limit > 0); limits[proto].limit--; } return _createCard(owner, proto, purity); } function _createCard(address owner, uint16 proto, uint16 purity) internal returns (uint) { Card memory card = Card({ proto: proto, purity: purity }); uint id = cards.push(card) - 1; _create(owner, id); emit CardCreated(id, proto, purity, owner); return id; } /*function combineCards(uint[] ids) public whenNotPaused { require(ids.length == 5); require(ownsAll(msg.sender, ids)); Card memory first = cards[ids[0]]; uint16 proto = first.proto; uint8 shine = _getShine(first.purity); require(shine < shineLimit); uint16 puritySum = first.purity - (shine * 1000); burn(ids[0]); for (uint i = 1; i < ids.length; i++) { Card memory next = cards[ids[i]]; require(next.proto == proto); require(_getShine(next.purity) == shine); puritySum += (next.purity - (shine * 1000)); burn(ids[i]); } uint16 newPurity = uint16(((shine + 1) * 1000) + (puritySum / ids.length)); _createCard(msg.sender, proto, newPurity); }*/ // PURITY NOTES // currently, we only // however, to protect rarity, you'll never be abl // this is enforced by the restriction in the create-card function // no cards above this point can be found in packs } contract CardPack { CardIntegration public integration; uint public creationBlock; constructor(CardIntegration _integration) public payable { integration = _integration; creationBlock = block.number; } event Referral(address indexed referrer, uint value, address purchaser); /** * purchase 'count' of this type of pack */ function purchase(uint16 packCount, address referrer) public payable; // store purity and shine as one number to save users gas function _getPurity(uint16 randOne, uint16 randTwo) internal pure returns (uint16) { if (randOne >= 998) { return 3000 + randTwo; } else if (randOne >= 988) { return 2000 + randTwo; } else if (randOne >= 938) { return 1000 + randTwo; } else { return randTwo; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint16"}],"name":"getProto","outputs":[{"name":"exists","type":"bool"},{"name":"god","type":"uint8"},{"name":"season","type":"uint8"},{"name":"cardType","type":"uint8"},{"name":"rarity","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"attack","type":"uint8"},{"name":"health","type":"uint8"},{"name":"tribe","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"id","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"governor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ids","type":"uint256[]"}],"name":"burnAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"season","type":"uint8"}],"name":"makePermanantlyTradable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"externalID","type":"uint16"},{"name":"god","type":"uint8"},{"name":"rarity","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"packable","type":"bool"}],"name":"addSpell","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"common","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"id","type":"uint256"}],"name":"_removeToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mythic","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint16"},{"name":"god","type":"uint8"},{"name":"cardType","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"attack","type":"uint8"},{"name":"health","type":"uint8"},{"name":"tribe","type":"uint8"}],"name":"replaceProto","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"seasonTradabilityLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint16"},{"name":"limit","type":"uint64"}],"name":"setLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"ids","type":"uint256[]"}],"name":"transferAll","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"season","type":"uint8"}],"name":"makeTradeable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"seasonTradable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"proposed","type":"address"},{"name":"id","type":"uint256"}],"name":"owns","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"approved","type":"address"}],"name":"addPack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"purity","type":"uint16"}],"name":"getShine","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cards","outputs":[{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getCard","outputs":[{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint16"}],"name":"getLimit","outputs":[{"name":"limit","type":"uint64"},{"name":"set","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint16"}],"name":"limits","outputs":[{"name":"limit","type":"uint64"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"toApprove","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rare","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"proto","type":"uint16"}],"name":"isTradable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"id","type":"uint256"}],"name":"transfer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"proposed","type":"address"},{"name":"ids","type":"uint256[]"}],"name":"ownsAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"id","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"nextSeason","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentSeason","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gov","type":"address"}],"name":"setGovernor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"season","type":"uint8"}],"name":"makeUntradable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"rarity","type":"uint8"},{"name":"random","type":"uint16"}],"name":"getRandomCard","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"externalID","type":"uint16"},{"name":"god","type":"uint8"},{"name":"rarity","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"attack","type":"uint8"},{"name":"durability","type":"uint8"},{"name":"packable","type":"bool"}],"name":"addWeapon","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"externalID","type":"uint16"},{"name":"god","type":"uint8"},{"name":"rarity","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"attack","type":"uint8"},{"name":"health","type":"uint8"},{"name":"cardType","type":"uint8"},{"name":"tribe","type":"uint8"},{"name":"packable","type":"bool"}],"name":"addProto","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"protoCount","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"epic","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getOwnedTokens","outputs":[{"name":"","type":"uint40[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"externalID","type":"uint16"},{"name":"god","type":"uint8"},{"name":"rarity","type":"uint8"},{"name":"mana","type":"uint8"},{"name":"attack","type":"uint8"},{"name":"health","type":"uint8"},{"name":"tribe","type":"uint8"},{"name":"packable","type":"bool"}],"name":"addMinion","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"ownedTokens","outputs":[{"name":"","type":"uint40"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"externalIDs","type":"uint16[]"},{"name":"gods","type":"uint8[]"},{"name":"rarities","type":"uint8[]"},{"name":"manas","type":"uint8[]"},{"name":"attacks","type":"uint8[]"},{"name":"healths","type":"uint8[]"},{"name":"cardTypes","type":"uint8[]"},{"name":"tribes","type":"uint8[]"},{"name":"packable","type":"bool[]"}],"name":"addProtos","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBurnCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"legendary","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"ids","type":"uint256[]"}],"name":"approveAll","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"ids","type":"uint256[]"}],"name":"transferAllFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"proto","type":"uint16"},{"name":"purity","type":"uint16"}],"name":"createCard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"proto","type":"uint16"},{"indexed":false,"name":"purity","type":"uint16"},{"indexed":false,"name":"owner","type":"address"}],"name":"CardCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint16"},{"indexed":false,"name":"season","type":"uint8"},{"indexed":false,"name":"god","type":"uint8"},{"indexed":false,"name":"rarity","type":"uint8"},{"indexed":false,"name":"mana","type":"uint8"},{"indexed":false,"name":"attack","type":"uint8"},{"indexed":false,"name":"health","type":"uint8"},{"indexed":false,"name":"cardType","type":"uint8"},{"indexed":false,"name":"tribe","type":"uint8"},{"indexed":false,"name":"packable","type":"bool"}],"name":"NewProtoCard","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
608060405260008060146101000a81548160ff021916908315150217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061549f8061006d6000396000f30060806040526004361061030c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461031157806305c4af9d1461037557806306fdde031461042e578063081812fc146104be578063095ea7b31461052b5780630c340a241461056b578063100cdd91146105c25780631051db341461062857806318160ddd146106575780631fa24aa71461068257806323b872dd146106b257806324a96d70146107125780632f745c5914610792578063396ed600146107f35780633f4ba83a1461083c57806342842e0e1461085357806342966c68146108b35780634c5a94fe146108e05780634cc90115146109205780634f558e79146109695780634f6ccce7146109ae5780634fb31a6a146109ef578063524773ce14610a6e5780635bd9d9a514610a995780635c975abb14610ae15780635dcbd8bb14610b105780636352211e14610b5557806367025dcf14610bc2578063681f811614610c3b57806370a0823114610c6b5780637a8b9b8514610cc2578063818d4b5d14610d0a578063821f830f14610d6f5780638456cb5914610db2578063850e376014610dc95780638dc1076814610e145780639188d31214610e6c578063943b82f114610ec457806395d89b4114610f28578063986e82f214610fb8578063a22cb4651461101c578063a5487e511461106b578063a71aec73146110b4578063a9059cbb146110fd578063ad94d9011461113d578063b88d4fde146111db578063bc734f0f14611281578063bcb3962114611298578063c42cf535146112c9578063c87b56dd1461130c578063c968aab3146113b2578063caa19168146113e2578063ce9fdb701461143c578063ced28d77146114d6578063d7643e181461158a578063d80f8621146115bd578063d9d6165514611606578063dfb6a75f1461169e578063e149f03614611745578063e3c7336b146117b4578063e7cf548c14611a4e578063e985e9c514611a79578063eeffbe4e14611af4578063f030345214611b3d578063f3d47d1b14611bb6578063fb36eba114611c2f575b600080fd5b34801561031d57600080fd5b5061035b60048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611ca2565b604051808215151515815260200191505060405180910390f35b34801561038157600080fd5b506103a4600480360381019080803561ffff169060200190929190505050611df3565b604051808a1515151581526020018960ff1660ff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660048111156103e257fe5b60ff1681526020018560ff1660ff1681526020018460ff1660ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001995050505050505050505060405180910390f35b34801561043a57600080fd5b50610443611f94565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610483578082015181840152602081019050610468565b50505050905090810190601f1680156104b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104ca57600080fd5b506104e960048036038101908080359060200190929190505050611fd1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610569600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061200e565b005b34801561057757600080fd5b5061058061211c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105ce57600080fd5b5061062660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612141565b005b34801561063457600080fd5b5061063d612181565b604051808215151515815260200191505060405180910390f35b34801561066357600080fd5b5061066c61218a565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b506106b0600480360381019080803560ff16906020019092919050505061219b565b005b610710600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061225d565b005b34801561071e57600080fd5b50610774600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050612380565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561079e57600080fd5b506107dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612473565b6040518082815260200191505060405180910390f35b3480156107ff57600080fd5b5061081e600480360381019080803590602001909291905050506124f7565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561084857600080fd5b5061085161252e565b005b6108b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125ec565b005b3480156108bf57600080fd5b506108de6004803603810190808035906020019092919050505061260d565b005b61091e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612643565b005b34801561092c57600080fd5b5061094b6004803603810190808035906020019092919050505061289f565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561097557600080fd5b50610994600480360381019080803590602001909291905050506128d6565b604051808215151515815260200191505060405180910390f35b3480156109ba57600080fd5b506109d960048036038101908080359060200190929190505050612942565b6040518082815260200191505060405180910390f35b3480156109fb57600080fd5b50610a6c600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff16906020019092919050505061294c565b005b348015610a7a57600080fd5b50610a83612ce8565b6040518082815260200191505060405180910390f35b348015610aa557600080fd5b50610ac7600480360381019080803560ff169060200190929190505050612cee565b604051808215151515815260200191505060405180910390f35b348015610aed57600080fd5b50610af6612d0e565b604051808215151515815260200191505060405180910390f35b348015610b1c57600080fd5b50610b53600480360381019080803561ffff169060200190929190803567ffffffffffffffff169060200190929190505050612d21565b005b348015610b6157600080fd5b50610b8060048036038101908080359060200190929190505050612e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c39600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612edb565b005b348015610c4757600080fd5b50610c69600480360381019080803560ff169060200190929190505050612f1d565b005b348015610c7757600080fd5b50610cac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fad565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610cf0600480360381019080803560ff169060200190929190505050612ff9565b604051808215151515815260200191505060405180910390f35b348015610d1657600080fd5b50610d55600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613019565b604051808215151515815260200191505060405180910390f35b348015610d7b57600080fd5b50610db0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061305a565b005b348015610dbe57600080fd5b50610dc761311e565b005b348015610dd557600080fd5b50610df8600480360381019080803561ffff1690602001909291905050506131de565b604051808260ff1660ff16815260200191505060405180910390f35b348015610e2057600080fd5b50610e3f600480360381019080803590602001909291905050506131f9565b604051808361ffff1661ffff1681526020018261ffff1661ffff1681526020019250505060405180910390f35b348015610e7857600080fd5b50610e9760048036038101908080359060200190929190505050613244565b604051808361ffff1661ffff1681526020018261ffff1661ffff1681526020019250505060405180910390f35b348015610ed057600080fd5b50610ef3600480360381019080803561ffff1690602001909291905050506132c9565b604051808367ffffffffffffffff1667ffffffffffffffff168152602001821515151581526020019250505060405180910390f35b348015610f3457600080fd5b50610f3d61335d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f7d578082015181840152602081019050610f62565b50505050905090810190601f168015610faa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fc457600080fd5b50610fe7600480360381019080803561ffff16906020019092919050505061339a565b604051808367ffffffffffffffff1667ffffffffffffffff168152602001821515151581526020019250505060405180910390f35b34801561102857600080fd5b50611069600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506133df565b005b34801561107757600080fd5b506110966004803603810190808035906020019092919050505061351b565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156110c057600080fd5b506110e3600480360381019080803561ffff169060200190929190505050613552565b604051808215151515815260200191505060405180910390f35b61113b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506135ad565b005b34801561114957600080fd5b506111c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061364b565b604051808215151515815260200191505060405180910390f35b61127f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506136a5565b005b34801561128d57600080fd5b506112966138fb565b005b3480156112a457600080fd5b506112ad6139fc565b604051808260ff1660ff16815260200191505060405180910390f35b3480156112d557600080fd5b5061130a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a0f565b005b34801561131857600080fd5b5061133760048036038101908080359060200190929190505050613aad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561137757808201518184015260208101905061135c565b50505050905090810190601f1680156113a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156113be57600080fd5b506113e0600480360381019080803560ff169060200190929190505050613b62565b005b3480156113ee57600080fd5b5061141e600480360381019080803560ff169060200190929190803561ffff169060200190929190505050613c25565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561144857600080fd5b506114b8600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050613f01565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156114e257600080fd5b5061156c600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050613ff4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561159657600080fd5b5061159f6140e7565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156115c957600080fd5b506115e8600480360381019080803590602001909291905050506140fb565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561161257600080fd5b50611647600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614132565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561168a57808201518184015260208101905061166f565b505050509050019250505060405180910390f35b3480156116aa57600080fd5b50611727600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff1690602001909291908035151590602001909291905050506141f7565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561175157600080fd5b50611790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506142ea565b604051808264ffffffffff1664ffffffffff16815260200191505060405180910390f35b3480156117c057600080fd5b50611a30600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050614333565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015611a5a57600080fd5b50611a63614512565b6040518082815260200191505060405180910390f35b348015611a8557600080fd5b50611ada600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061451c565b604051808215151515815260200191505060405180910390f35b348015611b0057600080fd5b50611b1f600480360381019080803590602001909291905050506145b0565b604051808261ffff1661ffff16815260200191505060405180910390f35b611bb4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506145e7565b005b611c2d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050614629565b005b348015611c3b57600080fd5b50611c8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff169060200190929190803561ffff16906020019092919050505061466d565b6040518082815260200191505060405180910390f35b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d545750635b5e139f7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611da05750636466353c7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611dec575063780e9d637c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000806000806000806000806000611e09615323565b600660008c61ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff166004811115611ec157fe5b6004811115611ecc57fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff16815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e00151886101000151995099509950995099509950995099509950509193959799909294969850565b60606040805190810160405280600e81526020017f476f647320556e636861696e6564000000000000000000000000000000000000815250905090565b6000600d600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6120183382613019565b151561202357600080fd5b61205660018281548110151561203557fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561206157600080fd5b81600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b815181101561217d57612170828281518110151561216157fe5b9060200190602002015161260d565b8080600101915050612147565b5050565b60006001905090565b600060125460018054905003905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121f657600080fd5b600360008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16151561222857600080fd5b6001600460008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561229957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156122d457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166122f482612e9e565b73ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61231f816148de565b151561232a57600080fd5b61235d60018281548110151561233c57fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561236857600080fd5b61237b61237482612e9e565b8383614948565b505050565b600061238a615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e557600080fd5b610120604051908101604052806001151581526020018760ff168152602001600560009054906101000a900460ff1660ff168152602001600160ff16815260200186600481111561243257fe5b81526020018560ff168152602001600060ff168152602001600060ff168152602001600060ff168152509050612469878285614a6b565b5095945050505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156124c157fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1664ffffffffff16905092915050565b600b8181548110151561250657fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561258957600080fd5b600060149054906101000a900460ff1615156125a457600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61260883838360206040519081016040528060008152506136a5565b505050565b6126173382613019565b151561262257600080fd5b60126000815480929190600101919050555061264033600083614948565b50565b600080600060118481548110151561265757fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1692506001600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050039150600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561271257fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff16905080600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208462ffffff1681548110151561278d57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506000600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561281057fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036128979190615392565b505050505050565b6007818154811015156128ae57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000819050919050565b612954615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129af57600080fd5b600660008961ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff166004811115612a6757fe5b6004811115612a7257fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff1681525050905060036000826040015160ff1660ff16815260200190815260200160002060009054906101000a900460ff16151515612b2357600080fd5b610120604051908101604052806001151581526020018860ff168152602001826040015160ff1681526020018760ff16815260200182608001516004811115612b6857fe5b81526020018660ff1681526020018560ff1681526020018460ff1681526020018360ff16815250600660008a61ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff02191690836004811115612c5157fe5b021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff1602179055509050505050505050505050565b60125481565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b612d296153cc565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d8457600080fd5b600260008461ffff1661ffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff16151515158152505090508060200151151515612e0a57600080fd5b60408051908101604052808367ffffffffffffffff16815260200160011515815250600260008561ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548160ff021916908315150217905550905050505050565b6000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008090505b8151811015612f1857612f0b838383815181101515612efc57fe5b906020019060200201516135ad565b8080600101915050612ee1565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f7857600080fd5b6001600360008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60036020528060005260406000206000915054906101000a900460ff1681565b60008273ffffffffffffffffffffffffffffffffffffffff1661303b83612e9e565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130b557600080fd5b60138190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561317957600080fd5b600060149054906101000a900460ff1615151561319557600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60006103e88261ffff168115156131f157fe5b049050919050565b60018181548110151561320857fe5b906000526020600020016000915090508060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008061324f6153f2565b60018481548110151561325e57fe5b906000526020600020016040805190810160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509050806000015181602001519250925050915091565b6000806132d46153cc565b600260008561ffff1661ffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60606040805190810160405280600481526020017f474f445300000000000000000000000000000000000000000000000000000000815250905090565b60026020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900460ff16905082565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561341a57600080fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600a8181548110151561352a57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b600060036000600660008561ffff1661ffff16815260200190815260200160002060000160029054906101000a900460ff1660ff1660ff16815260200190815260200160002060009054906101000a900460ff169050919050565b6135b73382613019565b15156135c257600080fd5b6135f56001828154811015156135d457fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561360057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561363c57600080fd5b613647338383614948565b5050565b600080600090505b82518110156136995761367d84848381518110151561366e57fe5b90602001906020020151613019565b151561368c576000915061369e565b8080600101915050613653565b600191505b5092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156136e257600080fd5b6136ed85858561225d565b6136f684614f84565b156138f4578373ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba61c3508786866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137c05780820151818401526020810190506137a5565b50505050905090810190601f1680156137ed5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b15801561380e57600080fd5b5087f1158015613822573d6000803e3d6000fd5b50505050506040513d602081101561383957600080fd5b8101908080519060200190929190505050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156138f357600080fd5b5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561395657600080fd5b60ff600560009054906101000a900460ff1660ff161115151561397857600080fd5b6005600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff1602179055505060006007816139b99190615414565b5060006008816139c99190615414565b5060006009816139d99190615414565b506000600a816139e99190615414565b506000600b816139f99190615414565b50565b600560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a6a57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060601060008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613b565780601f10613b2b57610100808354040283529160200191613b56565b820191906000526020600020905b815481529060010190602001808311613b3957829003601f168201915b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613bbd57600080fd5b600460008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16151515613bf057600080fd5b6000600360008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806000806000806004811115613c3957fe5b876004811115613c4557fe5b1415613c9857600b80805490508761ffff16811515613c6057fe5b06815481101515613c6d57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60016004811115613ca557fe5b876004811115613cb157fe5b1415613d0457600a80805490508761ffff16811515613ccc57fe5b06815481101515613cd957fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60026004811115613d1157fe5b876004811115613d1d57fe5b1415613d7057600980805490508761ffff16811515613d3857fe5b06815481101515613d4557fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60036004811115613d7d57fe5b876004811115613d8957fe5b1415613ddc57600880805490508761ffff16811515613da457fe5b06815481101515613db157fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b600480811115613de857fe5b876004811115613df457fe5b1415613ee557600090505b600780549050811015613e985760078080549050828861ffff1601811515613e2357fe5b06815481101515613e3057fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169350613e5f846132c9565b8093508194505050818015613e7e575060008367ffffffffffffffff16115b15613e8b57839450613ef7565b8080600101915050613dff565b600880805490508761ffff16811515613ead57fe5b06815481101515613eba57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60001515613ef257600080fd5b600094505b5050505092915050565b6000613f0b615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f6657600080fd5b610120604051908101604052806001151581526020018960ff168152602001600560009054906101000a900460ff1660ff168152602001600360ff168152602001886004811115613fb357fe5b81526020018760ff1681526020018660ff1681526020018560ff168152602001600060ff168152509050613fe8898285614a6b565b50979650505050505050565b6000613ffe615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561405957600080fd5b610120604051908101604052806001151581526020018b60ff168152602001600560009054906101000a900460ff1660ff1681526020018660ff1681526020018a60048111156140a557fe5b81526020018960ff1681526020018860ff1681526020018760ff1681526020018560ff1681525090506140d98b8285614a6b565b509998505050505050505050565b600560019054906101000a900461ffff1681565b60098181548110151561410a57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6060600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156141eb57602002820191906000526020600020906000905b82829054906101000a900464ffffffffff1664ffffffffff16815260200190600501906020826004010492830192600103820291508084116141ac5790505b50505050509050919050565b6000614201615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561425c57600080fd5b610120604051908101604052806001151581526020018a60ff168152602001600560009054906101000a900460ff1660ff168152602001600260ff1681526020018960048111156142a957fe5b81526020018860ff1681526020018760ff1681526020018660ff1681526020018560ff1681525090506142dd8a8285614a6b565b5098975050505050505050565b600f6020528160005260406000208181548110151561430557fe5b9060005260206000209060069182820401919006600502915091509054906101000a900464ffffffffff1681565b60008061433e615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561439957600080fd5b600091505b8b5182101561450357610120604051908101604052806001151581526020018c848151811015156143cb57fe5b9060200190602002015160ff168152602001600560009054906101000a900460ff1660ff168152602001878481518110151561440357fe5b9060200190602002015160ff1681526020018b8481518110151561442357fe5b90602001906020020151600481111561443857fe5b81526020018a8481518110151561444b57fe5b9060200190602002015160ff168152602001898481518110151561446b57fe5b9060200190602002015160ff168152602001888481518110151561448b57fe5b9060200190602002015160ff16815260200186848151811015156144ab57fe5b9060200190602002015160ff1681525090506144f68c838151811015156144ce57fe5b906020019060200201518286858151811015156144e757fe5b90602001906020020151614a6b565b818060010192505061439e565b50509998505050505050505050565b6000601254905090565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6008818154811015156145bf57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b60008090505b81518110156146245761461783838381518110151561460857fe5b9060200190602002015161200e565b80806001019150506145ed565b505050565b60008090505b81518110156146685761465b600084848481518110151561464c57fe5b9060200190602002015161225d565b808060010191505061462f565b505050565b6000614677615323565b600080600060149054906101000a900460ff1615151561469657600080fd5b61469e614f97565b15156146a957600080fd5b600660008761ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff16600481111561476157fe5b600481111561476c57fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff16815250509250600560009054906101000a900460ff1660ff16836040015160ff1614151561480d57600080fd5b60048081111561481957fe5b8360800151600481111561482957fe5b14156148c757614838866132c9565b8092508193505050801580614857575060008267ffffffffffffffff16115b151561486257600080fd5b600260008761ffff1661ffff168152602001908152602001600020600001600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6148d2878787615038565b93505050509392505050565b60006148ea3383613019565b8061492857503373ffffffffffffffffffffffffffffffffffffffff1661491083611fd1565b73ffffffffffffffffffffffffffffffffffffffff16145b80614941575061494061493a83612e9e565b3361451c565b5b9050919050565b6000600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149f78282615173565b614a018382612643565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600660008561ffff1661ffff16815260200190815260200160002060000160009054906101000a900460ff16151515614aa557600080fd5b600183600001901515908115158152505082600660008661ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff02191690836004811115614b7957fe5b021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff1602179055509050506005600181819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff160217905550507f2f7e8f79713fd202353aaa4d413bb73a3bc66d59a540f646415fd9acee7e59c684600560009054906101000a900460ff16856020015186608001518760a001518860c001518960e001518a606001518b61010001518b604051808b61ffff1661ffff1681526020018a60ff1660ff1681526020018960ff1660ff168152602001886004811115614cc857fe5b60ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018460ff1660ff1681526020018360ff1660ff168152602001821515151581526020019a505050505050505050505060405180910390a18115614f7e578260800151905060006004811115614d4457fe5b816004811115614d5057fe5b1415614da857600b84908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7d565b60016004811115614db557fe5b816004811115614dc157fe5b1415614e1957600a84908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7c565b60026004811115614e2657fe5b816004811115614e3257fe5b1415614e8a57600984908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7b565b60036004811115614e9757fe5b816004811115614ea357fe5b1415614efb57600884908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7a565b600480811115614f0757fe5b816004811115614f1357fe5b1415614f6b57600784908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f79565b60001515614f7857600080fd5b5b5b5b5b5b5b50505050565b600080823b905060008111915050919050565b600080600090505b60138054905081101561502f57601381815481101515614fbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156150225760019150615034565b8080600101915050614f9f565b600091505b5090565b60006150426153f2565b600060408051908101604052808661ffff1681526020018561ffff1681525091506001808390806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555050500390506150e3868261525d565b807fe8a3345b7ca502cc541c08a705987fa4c03d9f59c0427175387a64cbd8f46594868689604051808461ffff1661ffff1681526020018361ffff1661ffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a280925050509392505050565b60006001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083908060018154018082558091505090600182039060005260206000209060069182820401919006600502909192909190916101000a81548164ffffffffff021916908364ffffffffff1602179055500390506011819080600181540180825580915050906001820390600052602060002090600a9182820401919006600302909192909190916101000a81548162ffffff021916908362ffffff16021790555050505050565b81600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506152b98282615173565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61012060405190810160405280600015158152602001600060ff168152602001600060ff168152602001600060ff1681526020016000600481111561536457fe5b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8154818355818111156153c75760050160069004816005016006900483600052602060002091820191016153c6919061544e565b5b505050565b6040805190810160405280600067ffffffffffffffff1681526020016000151581525090565b6040805190810160405280600061ffff168152602001600061ffff1681525090565b81548183558181111561544957600f016010900481600f01601090048360005260206000209182019101615448919061544e565b5b505050565b61547091905b8082111561546c576000816000905550600101615454565b5090565b905600a165627a7a72305820c8069c2ac22ba1f7a118db5e6bba1fa58500c5769b9ce6483d1dc9db2a01c4cc0029
Deployed Bytecode
0x60806040526004361061030c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461031157806305c4af9d1461037557806306fdde031461042e578063081812fc146104be578063095ea7b31461052b5780630c340a241461056b578063100cdd91146105c25780631051db341461062857806318160ddd146106575780631fa24aa71461068257806323b872dd146106b257806324a96d70146107125780632f745c5914610792578063396ed600146107f35780633f4ba83a1461083c57806342842e0e1461085357806342966c68146108b35780634c5a94fe146108e05780634cc90115146109205780634f558e79146109695780634f6ccce7146109ae5780634fb31a6a146109ef578063524773ce14610a6e5780635bd9d9a514610a995780635c975abb14610ae15780635dcbd8bb14610b105780636352211e14610b5557806367025dcf14610bc2578063681f811614610c3b57806370a0823114610c6b5780637a8b9b8514610cc2578063818d4b5d14610d0a578063821f830f14610d6f5780638456cb5914610db2578063850e376014610dc95780638dc1076814610e145780639188d31214610e6c578063943b82f114610ec457806395d89b4114610f28578063986e82f214610fb8578063a22cb4651461101c578063a5487e511461106b578063a71aec73146110b4578063a9059cbb146110fd578063ad94d9011461113d578063b88d4fde146111db578063bc734f0f14611281578063bcb3962114611298578063c42cf535146112c9578063c87b56dd1461130c578063c968aab3146113b2578063caa19168146113e2578063ce9fdb701461143c578063ced28d77146114d6578063d7643e181461158a578063d80f8621146115bd578063d9d6165514611606578063dfb6a75f1461169e578063e149f03614611745578063e3c7336b146117b4578063e7cf548c14611a4e578063e985e9c514611a79578063eeffbe4e14611af4578063f030345214611b3d578063f3d47d1b14611bb6578063fb36eba114611c2f575b600080fd5b34801561031d57600080fd5b5061035b60048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611ca2565b604051808215151515815260200191505060405180910390f35b34801561038157600080fd5b506103a4600480360381019080803561ffff169060200190929190505050611df3565b604051808a1515151581526020018960ff1660ff1681526020018860ff1660ff1681526020018760ff1660ff1681526020018660048111156103e257fe5b60ff1681526020018560ff1660ff1681526020018460ff1660ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001995050505050505050505060405180910390f35b34801561043a57600080fd5b50610443611f94565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610483578082015181840152602081019050610468565b50505050905090810190601f1680156104b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104ca57600080fd5b506104e960048036038101908080359060200190929190505050611fd1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610569600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061200e565b005b34801561057757600080fd5b5061058061211c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105ce57600080fd5b5061062660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612141565b005b34801561063457600080fd5b5061063d612181565b604051808215151515815260200191505060405180910390f35b34801561066357600080fd5b5061066c61218a565b6040518082815260200191505060405180910390f35b34801561068e57600080fd5b506106b0600480360381019080803560ff16906020019092919050505061219b565b005b610710600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061225d565b005b34801561071e57600080fd5b50610774600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050612380565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561079e57600080fd5b506107dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612473565b6040518082815260200191505060405180910390f35b3480156107ff57600080fd5b5061081e600480360381019080803590602001909291905050506124f7565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561084857600080fd5b5061085161252e565b005b6108b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125ec565b005b3480156108bf57600080fd5b506108de6004803603810190808035906020019092919050505061260d565b005b61091e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612643565b005b34801561092c57600080fd5b5061094b6004803603810190808035906020019092919050505061289f565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561097557600080fd5b50610994600480360381019080803590602001909291905050506128d6565b604051808215151515815260200191505060405180910390f35b3480156109ba57600080fd5b506109d960048036038101908080359060200190929190505050612942565b6040518082815260200191505060405180910390f35b3480156109fb57600080fd5b50610a6c600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff16906020019092919050505061294c565b005b348015610a7a57600080fd5b50610a83612ce8565b6040518082815260200191505060405180910390f35b348015610aa557600080fd5b50610ac7600480360381019080803560ff169060200190929190505050612cee565b604051808215151515815260200191505060405180910390f35b348015610aed57600080fd5b50610af6612d0e565b604051808215151515815260200191505060405180910390f35b348015610b1c57600080fd5b50610b53600480360381019080803561ffff169060200190929190803567ffffffffffffffff169060200190929190505050612d21565b005b348015610b6157600080fd5b50610b8060048036038101908080359060200190929190505050612e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c39600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612edb565b005b348015610c4757600080fd5b50610c69600480360381019080803560ff169060200190929190505050612f1d565b005b348015610c7757600080fd5b50610cac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fad565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610cf0600480360381019080803560ff169060200190929190505050612ff9565b604051808215151515815260200191505060405180910390f35b348015610d1657600080fd5b50610d55600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613019565b604051808215151515815260200191505060405180910390f35b348015610d7b57600080fd5b50610db0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061305a565b005b348015610dbe57600080fd5b50610dc761311e565b005b348015610dd557600080fd5b50610df8600480360381019080803561ffff1690602001909291905050506131de565b604051808260ff1660ff16815260200191505060405180910390f35b348015610e2057600080fd5b50610e3f600480360381019080803590602001909291905050506131f9565b604051808361ffff1661ffff1681526020018261ffff1661ffff1681526020019250505060405180910390f35b348015610e7857600080fd5b50610e9760048036038101908080359060200190929190505050613244565b604051808361ffff1661ffff1681526020018261ffff1661ffff1681526020019250505060405180910390f35b348015610ed057600080fd5b50610ef3600480360381019080803561ffff1690602001909291905050506132c9565b604051808367ffffffffffffffff1667ffffffffffffffff168152602001821515151581526020019250505060405180910390f35b348015610f3457600080fd5b50610f3d61335d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f7d578082015181840152602081019050610f62565b50505050905090810190601f168015610faa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fc457600080fd5b50610fe7600480360381019080803561ffff16906020019092919050505061339a565b604051808367ffffffffffffffff1667ffffffffffffffff168152602001821515151581526020019250505060405180910390f35b34801561102857600080fd5b50611069600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506133df565b005b34801561107757600080fd5b506110966004803603810190808035906020019092919050505061351b565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156110c057600080fd5b506110e3600480360381019080803561ffff169060200190929190505050613552565b604051808215151515815260200191505060405180910390f35b61113b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506135ad565b005b34801561114957600080fd5b506111c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061364b565b604051808215151515815260200191505060405180910390f35b61127f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506136a5565b005b34801561128d57600080fd5b506112966138fb565b005b3480156112a457600080fd5b506112ad6139fc565b604051808260ff1660ff16815260200191505060405180910390f35b3480156112d557600080fd5b5061130a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a0f565b005b34801561131857600080fd5b5061133760048036038101908080359060200190929190505050613aad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561137757808201518184015260208101905061135c565b50505050905090810190601f1680156113a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156113be57600080fd5b506113e0600480360381019080803560ff169060200190929190505050613b62565b005b3480156113ee57600080fd5b5061141e600480360381019080803560ff169060200190929190803561ffff169060200190929190505050613c25565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561144857600080fd5b506114b8600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050613f01565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156114e257600080fd5b5061156c600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803515159060200190929190505050613ff4565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561159657600080fd5b5061159f6140e7565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156115c957600080fd5b506115e8600480360381019080803590602001909291905050506140fb565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561161257600080fd5b50611647600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614132565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561168a57808201518184015260208101905061166f565b505050509050019250505060405180910390f35b3480156116aa57600080fd5b50611727600480360381019080803561ffff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff1690602001909291908035151590602001909291905050506141f7565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561175157600080fd5b50611790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506142ea565b604051808264ffffffffff1664ffffffffff16815260200191505060405180910390f35b3480156117c057600080fd5b50611a30600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050614333565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015611a5a57600080fd5b50611a63614512565b6040518082815260200191505060405180910390f35b348015611a8557600080fd5b50611ada600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061451c565b604051808215151515815260200191505060405180910390f35b348015611b0057600080fd5b50611b1f600480360381019080803590602001909291905050506145b0565b604051808261ffff1661ffff16815260200191505060405180910390f35b611bb4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506145e7565b005b611c2d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050614629565b005b348015611c3b57600080fd5b50611c8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff169060200190929190803561ffff16906020019092919050505061466d565b6040518082815260200191505060405180910390f35b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d545750635b5e139f7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611da05750636466353c7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611dec575063780e9d637c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000806000806000806000806000611e09615323565b600660008c61ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff166004811115611ec157fe5b6004811115611ecc57fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff16815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e00151886101000151995099509950995099509950995099509950509193959799909294969850565b60606040805190810160405280600e81526020017f476f647320556e636861696e6564000000000000000000000000000000000000815250905090565b6000600d600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6120183382613019565b151561202357600080fd5b61205660018281548110151561203557fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561206157600080fd5b81600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b815181101561217d57612170828281518110151561216157fe5b9060200190602002015161260d565b8080600101915050612147565b5050565b60006001905090565b600060125460018054905003905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121f657600080fd5b600360008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16151561222857600080fd5b6001600460008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561229957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156122d457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166122f482612e9e565b73ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61231f816148de565b151561232a57600080fd5b61235d60018281548110151561233c57fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561236857600080fd5b61237b61237482612e9e565b8383614948565b505050565b600061238a615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e557600080fd5b610120604051908101604052806001151581526020018760ff168152602001600560009054906101000a900460ff1660ff168152602001600160ff16815260200186600481111561243257fe5b81526020018560ff168152602001600060ff168152602001600060ff168152602001600060ff168152509050612469878285614a6b565b5095945050505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156124c157fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1664ffffffffff16905092915050565b600b8181548110151561250657fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561258957600080fd5b600060149054906101000a900460ff1615156125a457600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61260883838360206040519081016040528060008152506136a5565b505050565b6126173382613019565b151561262257600080fd5b60126000815480929190600101919050555061264033600083614948565b50565b600080600060118481548110151561265757fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1692506001600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050039150600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561271257fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff16905080600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208462ffffff1681548110151561278d57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506000600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561281057fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036128979190615392565b505050505050565b6007818154811015156128ae57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000819050919050565b612954615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129af57600080fd5b600660008961ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff166004811115612a6757fe5b6004811115612a7257fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff1681525050905060036000826040015160ff1660ff16815260200190815260200160002060009054906101000a900460ff16151515612b2357600080fd5b610120604051908101604052806001151581526020018860ff168152602001826040015160ff1681526020018760ff16815260200182608001516004811115612b6857fe5b81526020018660ff1681526020018560ff1681526020018460ff1681526020018360ff16815250600660008a61ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff02191690836004811115612c5157fe5b021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff1602179055509050505050505050505050565b60125481565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b612d296153cc565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d8457600080fd5b600260008461ffff1661ffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff16151515158152505090508060200151151515612e0a57600080fd5b60408051908101604052808367ffffffffffffffff16815260200160011515815250600260008561ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548160ff021916908315150217905550905050505050565b6000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008090505b8151811015612f1857612f0b838383815181101515612efc57fe5b906020019060200201516135ad565b8080600101915050612ee1565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f7857600080fd5b6001600360008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60036020528060005260406000206000915054906101000a900460ff1681565b60008273ffffffffffffffffffffffffffffffffffffffff1661303b83612e9e565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130b557600080fd5b60138190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561317957600080fd5b600060149054906101000a900460ff1615151561319557600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60006103e88261ffff168115156131f157fe5b049050919050565b60018181548110151561320857fe5b906000526020600020016000915090508060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008061324f6153f2565b60018481548110151561325e57fe5b906000526020600020016040805190810160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509050806000015181602001519250925050915091565b6000806132d46153cc565b600260008561ffff1661ffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff1615151515815250509050806000015181602001519250925050915091565b60606040805190810160405280600481526020017f474f445300000000000000000000000000000000000000000000000000000000815250905090565b60026020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900460ff16905082565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561341a57600080fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600a8181548110151561352a57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b600060036000600660008561ffff1661ffff16815260200190815260200160002060000160029054906101000a900460ff1660ff1660ff16815260200190815260200160002060009054906101000a900460ff169050919050565b6135b73382613019565b15156135c257600080fd5b6135f56001828154811015156135d457fe5b9060005260206000200160000160009054906101000a900461ffff16613552565b151561360057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561363c57600080fd5b613647338383614948565b5050565b600080600090505b82518110156136995761367d84848381518110151561366e57fe5b90602001906020020151613019565b151561368c576000915061369e565b8080600101915050613653565b600191505b5092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156136e257600080fd5b6136ed85858561225d565b6136f684614f84565b156138f4578373ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba61c3508786866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137c05780820151818401526020810190506137a5565b50505050905090810190601f1680156137ed5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b15801561380e57600080fd5b5087f1158015613822573d6000803e3d6000fd5b50505050506040513d602081101561383957600080fd5b8101908080519060200190929190505050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156138f357600080fd5b5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561395657600080fd5b60ff600560009054906101000a900460ff1660ff161115151561397857600080fd5b6005600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff1602179055505060006007816139b99190615414565b5060006008816139c99190615414565b5060006009816139d99190615414565b506000600a816139e99190615414565b506000600b816139f99190615414565b50565b600560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a6a57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060601060008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613b565780601f10613b2b57610100808354040283529160200191613b56565b820191906000526020600020905b815481529060010190602001808311613b3957829003601f168201915b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613bbd57600080fd5b600460008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16151515613bf057600080fd5b6000600360008360ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806000806000806004811115613c3957fe5b876004811115613c4557fe5b1415613c9857600b80805490508761ffff16811515613c6057fe5b06815481101515613c6d57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60016004811115613ca557fe5b876004811115613cb157fe5b1415613d0457600a80805490508761ffff16811515613ccc57fe5b06815481101515613cd957fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60026004811115613d1157fe5b876004811115613d1d57fe5b1415613d7057600980805490508761ffff16811515613d3857fe5b06815481101515613d4557fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60036004811115613d7d57fe5b876004811115613d8957fe5b1415613ddc57600880805490508761ffff16811515613da457fe5b06815481101515613db157fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b600480811115613de857fe5b876004811115613df457fe5b1415613ee557600090505b600780549050811015613e985760078080549050828861ffff1601811515613e2357fe5b06815481101515613e3057fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169350613e5f846132c9565b8093508194505050818015613e7e575060008367ffffffffffffffff16115b15613e8b57839450613ef7565b8080600101915050613dff565b600880805490508761ffff16811515613ead57fe5b06815481101515613eba57fe5b90600052602060002090601091828204019190066002029054906101000a900461ffff169450613ef7565b60001515613ef257600080fd5b600094505b5050505092915050565b6000613f0b615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f6657600080fd5b610120604051908101604052806001151581526020018960ff168152602001600560009054906101000a900460ff1660ff168152602001600360ff168152602001886004811115613fb357fe5b81526020018760ff1681526020018660ff1681526020018560ff168152602001600060ff168152509050613fe8898285614a6b565b50979650505050505050565b6000613ffe615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561405957600080fd5b610120604051908101604052806001151581526020018b60ff168152602001600560009054906101000a900460ff1660ff1681526020018660ff1681526020018a60048111156140a557fe5b81526020018960ff1681526020018860ff1681526020018760ff1681526020018560ff1681525090506140d98b8285614a6b565b509998505050505050505050565b600560019054906101000a900461ffff1681565b60098181548110151561410a57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b6060600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156141eb57602002820191906000526020600020906000905b82829054906101000a900464ffffffffff1664ffffffffff16815260200190600501906020826004010492830192600103820291508084116141ac5790505b50505050509050919050565b6000614201615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561425c57600080fd5b610120604051908101604052806001151581526020018a60ff168152602001600560009054906101000a900460ff1660ff168152602001600260ff1681526020018960048111156142a957fe5b81526020018860ff1681526020018760ff1681526020018660ff1681526020018560ff1681525090506142dd8a8285614a6b565b5098975050505050505050565b600f6020528160005260406000208181548110151561430557fe5b9060005260206000209060069182820401919006600502915091509054906101000a900464ffffffffff1681565b60008061433e615323565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561439957600080fd5b600091505b8b5182101561450357610120604051908101604052806001151581526020018c848151811015156143cb57fe5b9060200190602002015160ff168152602001600560009054906101000a900460ff1660ff168152602001878481518110151561440357fe5b9060200190602002015160ff1681526020018b8481518110151561442357fe5b90602001906020020151600481111561443857fe5b81526020018a8481518110151561444b57fe5b9060200190602002015160ff168152602001898481518110151561446b57fe5b9060200190602002015160ff168152602001888481518110151561448b57fe5b9060200190602002015160ff16815260200186848151811015156144ab57fe5b9060200190602002015160ff1681525090506144f68c838151811015156144ce57fe5b906020019060200201518286858151811015156144e757fe5b90602001906020020151614a6b565b818060010192505061439e565b50509998505050505050505050565b6000601254905090565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6008818154811015156145bf57fe5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b60008090505b81518110156146245761461783838381518110151561460857fe5b9060200190602002015161200e565b80806001019150506145ed565b505050565b60008090505b81518110156146685761465b600084848481518110151561464c57fe5b9060200190602002015161225d565b808060010191505061462f565b505050565b6000614677615323565b600080600060149054906101000a900460ff1615151561469657600080fd5b61469e614f97565b15156146a957600080fd5b600660008761ffff1661ffff16815260200190815260200160002061012060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff16600481111561476157fe5b600481111561476c57fe5b81526020016000820160059054906101000a900460ff1660ff1660ff1681526020016000820160069054906101000a900460ff1660ff1660ff1681526020016000820160079054906101000a900460ff1660ff1660ff1681526020016000820160089054906101000a900460ff1660ff1660ff16815250509250600560009054906101000a900460ff1660ff16836040015160ff1614151561480d57600080fd5b60048081111561481957fe5b8360800151600481111561482957fe5b14156148c757614838866132c9565b8092508193505050801580614857575060008267ffffffffffffffff16115b151561486257600080fd5b600260008761ffff1661ffff168152602001908152602001600020600001600081819054906101000a900467ffffffffffffffff16809291906001900391906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b6148d2878787615038565b93505050509392505050565b60006148ea3383613019565b8061492857503373ffffffffffffffffffffffffffffffffffffffff1661491083611fd1565b73ffffffffffffffffffffffffffffffffffffffff16145b80614941575061494061493a83612e9e565b3361451c565b5b9050919050565b6000600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149f78282615173565b614a018382612643565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600660008561ffff1661ffff16815260200190815260200160002060000160009054906101000a900460ff16151515614aa557600080fd5b600183600001901515908115158152505082600660008661ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff02191690836004811115614b7957fe5b021790555060a08201518160000160056101000a81548160ff021916908360ff16021790555060c08201518160000160066101000a81548160ff021916908360ff16021790555060e08201518160000160076101000a81548160ff021916908360ff1602179055506101008201518160000160086101000a81548160ff021916908360ff1602179055509050506005600181819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff160217905550507f2f7e8f79713fd202353aaa4d413bb73a3bc66d59a540f646415fd9acee7e59c684600560009054906101000a900460ff16856020015186608001518760a001518860c001518960e001518a606001518b61010001518b604051808b61ffff1661ffff1681526020018a60ff1660ff1681526020018960ff1660ff168152602001886004811115614cc857fe5b60ff1681526020018760ff1660ff1681526020018660ff1660ff1681526020018560ff1660ff1681526020018460ff1660ff1681526020018360ff1660ff168152602001821515151581526020019a505050505050505050505060405180910390a18115614f7e578260800151905060006004811115614d4457fe5b816004811115614d5057fe5b1415614da857600b84908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7d565b60016004811115614db557fe5b816004811115614dc157fe5b1415614e1957600a84908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7c565b60026004811115614e2657fe5b816004811115614e3257fe5b1415614e8a57600984908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7b565b60036004811115614e9757fe5b816004811115614ea357fe5b1415614efb57600884908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f7a565b600480811115614f0757fe5b816004811115614f1357fe5b1415614f6b57600784908060018154018082558091505090600182039060005260206000209060109182820401919006600202909192909190916101000a81548161ffff021916908361ffff16021790555050614f79565b60001515614f7857600080fd5b5b5b5b5b5b5b50505050565b600080823b905060008111915050919050565b600080600090505b60138054905081101561502f57601381815481101515614fbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156150225760019150615034565b8080600101915050614f9f565b600091505b5090565b60006150426153f2565b600060408051908101604052808661ffff1681526020018561ffff1681525091506001808390806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555050500390506150e3868261525d565b807fe8a3345b7ca502cc541c08a705987fa4c03d9f59c0427175387a64cbd8f46594868689604051808461ffff1661ffff1681526020018361ffff1661ffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a280925050509392505050565b60006001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083908060018154018082558091505090600182039060005260206000209060069182820401919006600502909192909190916101000a81548164ffffffffff021916908364ffffffffff1602179055500390506011819080600181540180825580915050906001820390600052602060002090600a9182820401919006600302909192909190916101000a81548162ffffff021916908362ffffff16021790555050505050565b81600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506152b98282615173565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61012060405190810160405280600015158152602001600060ff168152602001600060ff168152602001600060ff1681526020016000600481111561536457fe5b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff1681525090565b8154818355818111156153c75760050160069004816005016006900483600052602060002091820191016153c6919061544e565b5b505050565b6040805190810160405280600067ffffffffffffffff1681526020016000151581525090565b6040805190810160405280600061ffff168152602001600061ffff1681525090565b81548183558181111561544957600f016010900481600f01601090048360005260206000209182019101615448919061544e565b5b505050565b61547091905b8082111561546c576000816000905550600101615454565b5090565b905600a165627a7a72305820c8069c2ac22ba1f7a118db5e6bba1fa58500c5769b9ce6483d1dc9db2a01c4cc0029
Swarm Source
bzzr://c8069c2ac22ba1f7a118db5e6bba1fa58500c5769b9ce6483d1dc9db2a01c4cc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.