Contract 0xd09b6fbace8c284b2a6633c74163e2520f585acf

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa5279ff77b84bf8c90f8bd316cd93b3f7ebe058359f9bd294551782cc59aa3380x31e0f925214578022021-11-17 1:11:5167 days 9 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0062794410
0x40ff1ed200ee7b596eb736e3701413c8c87f1037ab32a1a2ea41387e1fbe9fa60x31e0f925214542392021-11-16 22:51:3067 days 11 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0076748210
0x6d9b7050e5f62f4be60ea3f553b4d68ced19d5e27c38126ecf09003c955fe8490x31e0f925214542242021-11-16 22:50:3067 days 11 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0070483210
0xd7c65d22de32e0180682641c7bfa1589a5854d8e90b48a61d8108e8af1d4000a0x31e0f925214432132021-11-16 15:56:4167 days 18 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0066635810
0x8a5c54ca61d82f39be6d1abe11a659c1ad4a0b5a52049c7794ca4165aefe9bf10x31e0f925214375872021-11-16 12:23:4767 days 21 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0062794410
0xce54def0d4ced8337076d96c004f3b5cc4259704989e075ca6b9acc0fdc675fd0x31e0f925214352052021-11-16 10:53:4967 days 23 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0070480810
0xf132271626acedfcac70cfd5515639b873672efb10327b1df1e2e2a967df7d250x31e0f925214282182021-11-16 6:37:3268 days 3 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0062794410
0x78172509670aba40be4ceb71242c563bf1f0e031e456b4a458410bfe0a5bfd930x31e0f925214228522021-11-16 3:23:5568 days 6 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0062794410
0x832164a289e6ed324d13285fae2e485ae8969a6a8e037170e24b9fff2a1d3cdf0x31e0f925214187742021-11-16 0:49:5168 days 9 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0076873210
0x265c6567c9c254270c3e72a1a4b446c3b7c8c69e75f5377a23c95a16605daaf30x31e0f925214134982021-11-15 21:32:2068 days 12 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.00750210
0x55d154799c52c14e19ae9c30a5aa1b2f396fed92911ac97d5ade0d8b608b38c90x31e0f925214038792021-11-15 15:24:3968 days 18 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0061542810
0x81298f4e9abbf29237b2a3de2395261c8c25efacb96a6988fc09f0caa773ccc00x31e0f925214005542021-11-15 13:25:3368 days 20 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0067803610
0x18b0ced91ebd40d69a5a141605a34868e74b1ede1245ddddaa7f9da46555ec620x31e0f925213943182021-11-15 9:37:1869 days 43 mins ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0064642410
0xd7189f25eaa742e187c447130e20199c7c4e3219598c1bba1878366f53a603080x31e0f925213896742021-11-15 6:53:2269 days 3 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.006922810
0xbeae0337923807d4c28aa4ea1f85d605d65715330ee1affb02e4633ee4828ab70x31e0f925213841862021-11-15 3:43:1869 days 6 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0065381810
0x4c1c41a0bd414f3f892da205c1990aee67830a7d106663d92c29de9069dfa0ad0x31e0f925213791322021-11-15 0:48:1869 days 9 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0083914810
0xa9c0527d49f5f7ef78d9624fe3c08523312d9fd4675b86620357a50258f8129f0x31e0f925213733402021-11-14 21:19:0169 days 13 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0073117210
0xbca4e3bb5308b2d84aabcc9d8c19d881fc1589c9a98491d3f26932a83d371e090x31e0f925213692342021-11-14 18:45:0369 days 15 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0065381810
0x9d232ecbdf0767ce1c77ff46ed65200458933ef0d5f7370ef30195758ae6b8230x31e0f925213635442021-11-14 15:14:0269 days 19 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0071419810
0xad6d35ec57efe398952c3015b8756d0dfe81aa8711138b02f90804746240f5060x31e0f925213589892021-11-14 12:27:4469 days 21 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0066668410
0xe6babe4243235cc6c56eea3982e0c9d8aa55242d53e67a04f92b5934056704d80x31e0f925213535452021-11-14 9:16:0770 days 1 hr ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.006741810
0xdb7885dc3d47cdd31fc8af31529207a47bb7a3778ca28e7312cd5b1f948633380x31e0f925213486152021-11-14 6:17:3670 days 4 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0073174610
0x51d034c7441feed2cc611136c76a862e636faf66078cd6ed0f333a2d10085d4d0x31e0f925213443332021-11-14 3:46:0870 days 6 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0078172410
0xc337606f7fdf48ce0f14e9ee8b2503f5971db55e9465a79600c52a2da3876f0c0x31e0f925213393792021-11-14 0:47:1670 days 9 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.0061542810
0xcfdef4587a630d02013d2afd20724f320bbbb6057a4a2ee67f62a017c9f8f4450x31e0f925213348592021-11-13 21:38:4770 days 12 hrs ago0xac490f011cfa4676b64beca052f92a868b8827a9 IN  0xd09b6fbace8c284b2a6633c74163e2520f585acf0 MATIC0.008002410
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LootMirror

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 3 : LootMirror.sol
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

contract LootMirror is Ownable {
  // Mapping from token ID to owner address
  mapping(uint256 => address) private _owners;

  // Mapping owner address to token count
  mapping(address => uint256) private _balances;

  // Mapping from owner to list of owned token IDs
  mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

  // Mapping from owner to operator approvals
  mapping(address => mapping(address => bool)) private _operatorApprovals;

  // Struct for updating the owners
  struct OwnerUpdate {
    address owner;
    uint256[] tokenIds;
  }

  /**
   * @dev See {IERC721-balanceOf}.
   */
  function balanceOf(address owner) public view virtual returns (uint256) {
    require(owner != address(0), "ERC721: balance query for the zero address");
    return _balances[owner];
  }

  /**
   * @dev See {IERC721-ownerOf}.
   */
  function ownerOf(uint256 tokenId) public view virtual returns (address) {
    address owner = _owners[tokenId];
    require(owner != address(0), "ERC721: owner query for nonexistent token");
    return owner;
  }

  /**
   * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
   */
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    virtual
    returns (uint256)
  {
    require(
      index < balanceOf(owner),
      "ERC721Enumerable: owner index out of bounds"
    );
    return _ownedTokens[owner][index];
  }

  /**
   * @dev See {IERC721-setApprovalForAll}.
   */
  function setApprovalForAll(address operator, bool approved) public virtual {
    require(operator != _msgSender(), "ERC721: approve to caller");

    _operatorApprovals[_msgSender()][operator] = approved;
  }

  /**
   * @dev See {IERC721-isApprovedForAll}.
   */
  function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    returns (bool)
  {
    return _operatorApprovals[owner][operator];
  }

  /**
   * The owner of this contract can call this function to
   * update the owner states
   *
   * The update should include entries for incoming owners and
   * any existing owners whose balances have changed
   *
   * It can also include entries for owners whose balances
   * haven't yet been indexed by the contract
   *
   * It's not necessary to include entries for outgoing owners (they'll
   * be deleted automatically)
   */
  function setLootOwners(OwnerUpdate[] calldata _ownerUpdates)
    public
    onlyOwner
  {
    // For each of the owner updates
    for (uint256 i = 0; i < _ownerUpdates.length; i++) {
      address owner = _ownerUpdates[i].owner;
      uint256[] calldata tokenIds = _ownerUpdates[i].tokenIds;

      // Reset the owned tokens of the owner
      uint256 ownerBalance = _balances[owner];
      for (uint256 j = 0; j < ownerBalance; j++) {
        delete _ownedTokens[owner][j];
      }

      // Reset the balance of the owner
      delete _balances[owner];

      // For each of the token ids
      for (uint256 k = 0; k < tokenIds.length; k++) {
        address previousOwner = _owners[tokenIds[k]];

        // Reset the owned tokens of the previous owner
        uint256 previousOwnerBalance = _balances[previousOwner];
        for (uint256 l = 0; l < previousOwnerBalance; l++) {
          delete _ownedTokens[previousOwner][l];
        }

        // Reset the balances of the previous owner
        delete _balances[previousOwner];

        // Reset the owner of the token ids
        delete _owners[tokenIds[k]];
      }
    }

    // For each of the owner updates
    for (uint256 k = 0; k < _ownerUpdates.length; k++) {
      address owner = _ownerUpdates[k].owner;
      uint256[] calldata tokenIds = _ownerUpdates[k].tokenIds;

      // Set the balances of the owner
      _balances[owner] = tokenIds.length;

      for (uint256 l = 0; l < tokenIds.length; l++) {
        // Set the owner of the token ids
        _owners[tokenIds[l]] = owner;
        // Set the owned tokens of the owner
        _ownedTokens[owner][l] = tokenIds[l];
      }
    }
  }

  /**
   * Loot utils
   */
  string[] private weapons = [
    "Warhammer",
    "Quarterstaff",
    "Maul",
    "Mace",
    "Club",
    "Katana",
    "Falchion",
    "Scimitar",
    "Long Sword",
    "Short Sword",
    "Ghost Wand",
    "Grave Wand",
    "Bone Wand",
    "Wand",
    "Grimoire",
    "Chronicle",
    "Tome",
    "Book"
  ];

  string[] private chestArmor = [
    "Divine Robe",
    "Silk Robe",
    "Linen Robe",
    "Robe",
    "Shirt",
    "Demon Husk",
    "Dragonskin Armor",
    "Studded Leather Armor",
    "Hard Leather Armor",
    "Leather Armor",
    "Holy Chestplate",
    "Ornate Chestplate",
    "Plate Mail",
    "Chain Mail",
    "Ring Mail"
  ];

  string[] private headArmor = [
    "Ancient Helm",
    "Ornate Helm",
    "Great Helm",
    "Full Helm",
    "Helm",
    "Demon Crown",
    "Dragon's Crown",
    "War Cap",
    "Leather Cap",
    "Cap",
    "Crown",
    "Divine Hood",
    "Silk Hood",
    "Linen Hood",
    "Hood"
  ];

  string[] private waistArmor = [
    "Ornate Belt",
    "War Belt",
    "Plated Belt",
    "Mesh Belt",
    "Heavy Belt",
    "Demonhide Belt",
    "Dragonskin Belt",
    "Studded Leather Belt",
    "Hard Leather Belt",
    "Leather Belt",
    "Brightsilk Sash",
    "Silk Sash",
    "Wool Sash",
    "Linen Sash",
    "Sash"
  ];

  string[] private footArmor = [
    "Holy Greaves",
    "Ornate Greaves",
    "Greaves",
    "Chain Boots",
    "Heavy Boots",
    "Demonhide Boots",
    "Dragonskin Boots",
    "Studded Leather Boots",
    "Hard Leather Boots",
    "Leather Boots",
    "Divine Slippers",
    "Silk Slippers",
    "Wool Shoes",
    "Linen Shoes",
    "Shoes"
  ];

  string[] private handArmor = [
    "Holy Gauntlets",
    "Ornate Gauntlets",
    "Gauntlets",
    "Chain Gloves",
    "Heavy Gloves",
    "Demon's Hands",
    "Dragonskin Gloves",
    "Studded Leather Gloves",
    "Hard Leather Gloves",
    "Leather Gloves",
    "Divine Gloves",
    "Silk Gloves",
    "Wool Gloves",
    "Linen Gloves",
    "Gloves"
  ];

  string[] private necklaces = ["Necklace", "Amulet", "Pendant"];

  string[] private rings = [
    "Gold Ring",
    "Silver Ring",
    "Bronze Ring",
    "Platinum Ring",
    "Titanium Ring"
  ];

  string[] private suffixes = [
    "of Power",
    "of Giants",
    "of Titans",
    "of Skill",
    "of Perfection",
    "of Brilliance",
    "of Enlightenment",
    "of Protection",
    "of Anger",
    "of Rage",
    "of Fury",
    "of Vitriol",
    "of the Fox",
    "of Detection",
    "of Reflection",
    "of the Twins"
  ];

  string[] private namePrefixes = [
    "Agony",
    "Apocalypse",
    "Armageddon",
    "Beast",
    "Behemoth",
    "Blight",
    "Blood",
    "Bramble",
    "Brimstone",
    "Brood",
    "Carrion",
    "Cataclysm",
    "Chimeric",
    "Corpse",
    "Corruption",
    "Damnation",
    "Death",
    "Demon",
    "Dire",
    "Dragon",
    "Dread",
    "Doom",
    "Dusk",
    "Eagle",
    "Empyrean",
    "Fate",
    "Foe",
    "Gale",
    "Ghoul",
    "Gloom",
    "Glyph",
    "Golem",
    "Grim",
    "Hate",
    "Havoc",
    "Honour",
    "Horror",
    "Hypnotic",
    "Kraken",
    "Loath",
    "Maelstrom",
    "Mind",
    "Miracle",
    "Morbid",
    "Oblivion",
    "Onslaught",
    "Pain",
    "Pandemonium",
    "Phoenix",
    "Plague",
    "Rage",
    "Rapture",
    "Rune",
    "Skull",
    "Sol",
    "Soul",
    "Sorrow",
    "Spirit",
    "Storm",
    "Tempest",
    "Torment",
    "Vengeance",
    "Victory",
    "Viper",
    "Vortex",
    "Woe",
    "Wrath",
    "Light's",
    "Shimmering"
  ];

  string[] private nameSuffixes = [
    "Bane",
    "Root",
    "Bite",
    "Song",
    "Roar",
    "Grasp",
    "Instrument",
    "Glow",
    "Bender",
    "Shadow",
    "Whisper",
    "Shout",
    "Growl",
    "Tear",
    "Peak",
    "Form",
    "Sun",
    "Moon"
  ];

  function random(string memory input) internal pure returns (uint256) {
    return uint256(keccak256(abi.encodePacked(input)));
  }

  function getWeapon(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "WEAPON", weapons);
  }

  function getChest(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "CHEST", chestArmor);
  }

  function getHead(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "HEAD", headArmor);
  }

  function getWaist(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "WAIST", waistArmor);
  }

  function getFoot(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "FOOT", footArmor);
  }

  function getHand(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "HAND", handArmor);
  }

  function getNeck(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "NECK", necklaces);
  }

  function getRing(uint256 tokenId) public view returns (string memory) {
    return pluck(tokenId, "RING", rings);
  }

  function pluck(
    uint256 tokenId,
    string memory keyPrefix,
    string[] memory sourceArray
  ) internal view returns (string memory) {
    uint256 rand = random(
      string(abi.encodePacked(keyPrefix, toString(tokenId)))
    );
    string memory output = sourceArray[rand % sourceArray.length];
    uint256 greatness = rand % 21;
    if (greatness > 14) {
      output = string(
        abi.encodePacked(output, " ", suffixes[rand % suffixes.length])
      );
    }
    if (greatness >= 19) {
      string[2] memory name;
      name[0] = namePrefixes[rand % namePrefixes.length];
      name[1] = nameSuffixes[rand % nameSuffixes.length];
      if (greatness == 19) {
        output = string(
          abi.encodePacked('"', name[0], " ", name[1], '" ', output)
        );
      } else {
        output = string(
          abi.encodePacked('"', name[0], " ", name[1], '" ', output, " +1")
        );
      }
    }
    return output;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    returns (string memory)
  {
    string[17] memory parts;
    parts[
      0
    ] = '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base { fill: white; font-family: serif; font-size: 14px; }</style><rect width="100%" height="100%" fill="black" /><text x="10" y="20" class="base">';

    parts[1] = getWeapon(tokenId);

    parts[2] = '</text><text x="10" y="40" class="base">';

    parts[3] = getChest(tokenId);

    parts[4] = '</text><text x="10" y="60" class="base">';

    parts[5] = getHead(tokenId);

    parts[6] = '</text><text x="10" y="80" class="base">';

    parts[7] = getWaist(tokenId);

    parts[8] = '</text><text x="10" y="100" class="base">';

    parts[9] = getFoot(tokenId);

    parts[10] = '</text><text x="10" y="120" class="base">';

    parts[11] = getHand(tokenId);

    parts[12] = '</text><text x="10" y="140" class="base">';

    parts[13] = getNeck(tokenId);

    parts[14] = '</text><text x="10" y="160" class="base">';

    parts[15] = getRing(tokenId);

    parts[16] = "</text></svg>";

    string memory output = string(
      abi.encodePacked(
        parts[0],
        parts[1],
        parts[2],
        parts[3],
        parts[4],
        parts[5],
        parts[6],
        parts[7],
        parts[8]
      )
    );
    output = string(
      abi.encodePacked(
        output,
        parts[9],
        parts[10],
        parts[11],
        parts[12],
        parts[13],
        parts[14],
        parts[15],
        parts[16]
      )
    );

    string memory json = Base64.encode(
      bytes(
        string(
          abi.encodePacked(
            '{"name": "Bag #',
            toString(tokenId),
            '", "description": "Loot is randomized adventurer gear generated and stored on chain. Stats, images, and other functionality are intentionally omitted for others to interpret. Feel free to use Loot in any way you want.", "image": "data:image/svg+xml;base64,',
            Base64.encode(bytes(output)),
            '"}'
          )
        )
      )
    );
    output = string(abi.encodePacked("data:application/json;base64,", json));

    return output;
  }

  function toString(uint256 value) internal pure returns (string memory) {
    // Inspired by OraclizeAPI's implementation - MIT license
    // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

    if (value == 0) {
      return "0";
    }
    uint256 temp = value;
    uint256 digits;
    while (temp != 0) {
      digits++;
      temp /= 10;
    }
    bytes memory buffer = new bytes(digits);
    while (value != 0) {
      digits -= 1;
      buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
      value /= 10;
    }
    return string(buffer);
  }
}

/// [MIT License]
/// @title Base64
/// @notice Provides a function for encoding some bytes in base64
/// @author Brecht Devos <[email protected]>
library Base64 {
  bytes internal constant TABLE =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

  /// @notice Encodes some bytes to the base64 representation
  function encode(bytes memory data) internal pure returns (string memory) {
    uint256 len = data.length;
    if (len == 0) return "";

    // multiply by 4/3 rounded up
    uint256 encodedLen = 4 * ((len + 2) / 3);

    // Add some extra buffer at the end
    bytes memory result = new bytes(encodedLen + 32);

    bytes memory table = TABLE;

    assembly {
      let tablePtr := add(table, 1)
      let resultPtr := add(result, 32)

      for {
        let i := 0
      } lt(i, len) {

      } {
        i := add(i, 3)
        let input := and(mload(add(data, i)), 0xffffff)

        let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
        out := shl(8, out)
        out := add(
          out,
          and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)
        )
        out := shl(8, out)
        out := add(
          out,
          and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)
        )
        out := shl(8, out)
        out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
        out := shl(224, out)

        mstore(resultPtr, out)

        resultPtr := add(resultPtr, 4)
      }

      switch mod(len, 3)
      case 1 {
        mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
      }
      case 2 {
        mstore(sub(resultPtr, 1), shl(248, 0x3d))
      }

      mstore(result, encodedLen)
    }

    return string(result);
  }
}

File 2 of 3 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 3 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getChest","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getFoot","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getHand","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getHead","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getNeck","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getRing","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getWaist","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getWeapon","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"internalType":"struct LootMirror.OwnerUpdate[]","name":"_ownerUpdates","type":"tuple[]"}],"name":"setLootOwners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518061024001604052806040518060400160405280600981526020017f57617268616d6d6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f517561727465727374616666000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4d61756c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4d6163650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436c75620000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4b6174616e61000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f46616c6368696f6e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5363696d6974617200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4c6f6e672053776f72640000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f53686f72742053776f726400000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f47686f73742057616e640000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f47726176652057616e640000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f426f6e652057616e64000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57616e640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4772696d6f69726500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4368726f6e69636c65000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f546f6d650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426f6f6b0000000000000000000000000000000000000000000000000000000081525081525060059060126200044692919062003145565b50604051806101e001604052806040518060400160405280600b81526020017f446976696e6520526f626500000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f53696c6b20526f6265000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4c696e656e20526f62650000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f526f62650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f536869727400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f44656d6f6e204875736b0000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f447261676f6e736b696e2041726d6f720000000000000000000000000000000081525081526020016040518060400160405280601581526020017f53747564646564204c6561746865722041726d6f72000000000000000000000081525081526020016040518060400160405280601281526020017f48617264204c6561746865722041726d6f72000000000000000000000000000081525081526020016040518060400160405280600d81526020017f4c6561746865722041726d6f720000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f486f6c79204368657374706c617465000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f4f726e617465204368657374706c61746500000000000000000000000000000081525081526020016040518060400160405280600a81526020017f506c617465204d61696c0000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f436861696e204d61696c0000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f52696e67204d61696c0000000000000000000000000000000000000000000000815250815250600690600f620007d8929190620031ac565b50604051806101e001604052806040518060400160405280600c81526020017f416e6369656e742048656c6d000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4f726e6174652048656c6d00000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f47726561742048656c6d0000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46756c6c2048656c6d000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f48656c6d0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f44656d6f6e2043726f776e00000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f447261676f6e27732043726f776e00000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f576172204361700000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4c6561746865722043617000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f436170000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f43726f776e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f446976696e6520486f6f6400000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f53696c6b20486f6f64000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4c696e656e20486f6f640000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f486f6f6400000000000000000000000000000000000000000000000000000000815250815250600790600f62000b6a929190620031ac565b50604051806101e001604052806040518060400160405280600b81526020017f4f726e6174652042656c7400000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5761722042656c7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f506c617465642042656c7400000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4d6573682042656c74000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f48656176792042656c740000000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f44656d6f6e686964652042656c7400000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f447261676f6e736b696e2042656c74000000000000000000000000000000000081525081526020016040518060400160405280601481526020017f53747564646564204c6561746865722042656c7400000000000000000000000081525081526020016040518060400160405280601181526020017f48617264204c6561746865722042656c7400000000000000000000000000000081525081526020016040518060400160405280600c81526020017f4c6561746865722042656c74000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f42726967687473696c6b2053617368000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f53696c6b2053617368000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f576f6f6c2053617368000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4c696e656e20536173680000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f5361736800000000000000000000000000000000000000000000000000000000815250815250600890600f62000efc929190620031ac565b50604051806101e001604052806040518060400160405280600c81526020017f486f6c792047726561766573000000000000000000000000000000000000000081525081526020016040518060400160405280600e81526020017f4f726e617465204772656176657300000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f477265617665730000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f436861696e20426f6f747300000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f486561767920426f6f747300000000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f44656d6f6e6869646520426f6f7473000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f447261676f6e736b696e20426f6f74730000000000000000000000000000000081525081526020016040518060400160405280601581526020017f53747564646564204c65617468657220426f6f7473000000000000000000000081525081526020016040518060400160405280601281526020017f48617264204c65617468657220426f6f7473000000000000000000000000000081525081526020016040518060400160405280600d81526020017f4c65617468657220426f6f74730000000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f446976696e6520536c697070657273000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f53696c6b20536c6970706572730000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f576f6f6c2053686f65730000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4c696e656e2053686f657300000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f53686f6573000000000000000000000000000000000000000000000000000000815250815250600990600f6200128e929190620031ac565b50604051806101e001604052806040518060400160405280600e81526020017f486f6c79204761756e746c65747300000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f4f726e617465204761756e746c6574730000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4761756e746c657473000000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f436861696e20476c6f766573000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f486561767920476c6f766573000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f44656d6f6e27732048616e64730000000000000000000000000000000000000081525081526020016040518060400160405280601181526020017f447261676f6e736b696e20476c6f76657300000000000000000000000000000081525081526020016040518060400160405280601681526020017f53747564646564204c65617468657220476c6f7665730000000000000000000081525081526020016040518060400160405280601381526020017f48617264204c65617468657220476c6f7665730000000000000000000000000081525081526020016040518060400160405280600e81526020017f4c65617468657220476c6f76657300000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f446976696e6520476c6f7665730000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f53696c6b20476c6f76657300000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f576f6f6c20476c6f76657300000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f4c696e656e20476c6f766573000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f476c6f7665730000000000000000000000000000000000000000000000000000815250815250600a90600f62001620929190620031ac565b5060405180606001604052806040518060400160405280600881526020017f4e65636b6c61636500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f416d756c6574000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f50656e64616e7400000000000000000000000000000000000000000000000000815250815250600b906003620016ed92919062003213565b506040518060a001604052806040518060400160405280600981526020017f476f6c642052696e67000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f53696c7665722052696e6700000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f42726f6e7a652052696e6700000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f506c6174696e756d2052696e670000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f546974616e69756d2052696e6700000000000000000000000000000000000000815250815250600c906005620018309291906200327a565b506040518061020001604052806040518060400160405280600881526020017f6f6620506f77657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f6f66204769616e7473000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f6f6620546974616e73000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f6f6620536b696c6c00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f662050657266656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f66204272696c6c69616e63650000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f6f6620456e6c69676874656e6d656e740000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f662050726f74656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f6f6620416e67657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6f6620526167650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6f6620467572790000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f6f662056697472696f6c0000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f6f662074686520466f780000000000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f6f6620446574656374696f6e000000000000000000000000000000000000000081525081526020016040518060400160405280600d81526020017f6f66205265666c656374696f6e0000000000000000000000000000000000000081525081526020016040518060400160405280600c81526020017f6f6620746865205477696e730000000000000000000000000000000000000000815250815250600d90601062001bfd929190620032e1565b50604051806108a001604052806040518060400160405280600581526020017f41676f6e7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f41706f63616c797073650000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f41726d61676564646f6e0000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f426561737400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f426568656d6f746800000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f426c69676874000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f426c6f6f6400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f4272616d626c650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4272696d73746f6e65000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f42726f6f6400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f43617272696f6e0000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f43617461636c79736d000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4368696d6572696300000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436f72707365000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f436f7272757074696f6e0000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f44616d6e6174696f6e000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f446561746800000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f44656d6f6e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f446972650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f447261676f6e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f447265616400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f446f6f6d0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4475736b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4561676c6500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f456d70797265616e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f466174650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f466f65000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f47616c650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f47686f756c00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f476c6f6f6d00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f476c79706800000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f476f6c656d00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4772696d0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f486174650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4861766f6300000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f486f6e6f7572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f486f72726f72000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4879706e6f74696300000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4b72616b656e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4c6f61746800000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4d61656c7374726f6d000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4d696e640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f4d697261636c650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4d6f72626964000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4f626c6976696f6e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4f6e736c6175676874000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f5061696e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f50616e64656d6f6e69756d00000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f50686f656e69780000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f506c61677565000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f526167650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f526170747572650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f52756e650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f536b756c6c00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f536f6c000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f536f756c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f536f72726f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f537069726974000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f53746f726d00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f54656d706573740000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f546f726d656e740000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f56656e6765616e6365000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f566963746f72790000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f566970657200000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f566f72746578000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f576f65000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f577261746800000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f4c6967687427730000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f5368696d6d6572696e6700000000000000000000000000000000000000000000815250815250600e90604562002c0192919062003348565b506040518061024001604052806040518060400160405280600481526020017f42616e650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f526f6f740000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426974650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f536f6e670000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f526f61720000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f477261737000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f496e737472756d656e740000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f476c6f770000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f42656e646572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f536861646f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f576869737065720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f53686f757400000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f47726f776c00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f546561720000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f5065616b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f466f726d0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f53756e000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4d6f6f6e00000000000000000000000000000000000000000000000000000000815250815250600f9060126200304492919062003145565b503480156200305257600080fd5b5062003073620030676200307960201b60201c565b6200308160201b60201c565b62003532565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805482825590600052602060002090810192821562003199579160200282015b828111156200319857825182908051906020019062003187929190620033af565b509160200191906001019062003166565b5b509050620031a8919062003440565b5090565b82805482825590600052602060002090810192821562003200579160200282015b82811115620031ff578251829080519060200190620031ee929190620033af565b5091602001919060010190620031cd565b5b5090506200320f919062003440565b5090565b82805482825590600052602060002090810192821562003267579160200282015b828111156200326657825182908051906020019062003255929190620033af565b509160200191906001019062003234565b5b50905062003276919062003440565b5090565b828054828255906000526020600020908101928215620032ce579160200282015b82811115620032cd578251829080519060200190620032bc929190620033af565b50916020019190600101906200329b565b5b509050620032dd919062003440565b5090565b82805482825590600052602060002090810192821562003335579160200282015b828111156200333457825182908051906020019062003323929190620033af565b509160200191906001019062003302565b5b50905062003344919062003440565b5090565b8280548282559060005260206000209081019282156200339c579160200282015b828111156200339b5782518290805190602001906200338a929190620033af565b509160200191906001019062003369565b5b509050620033ab919062003440565b5090565b828054620033bd90620034cd565b90600052602060002090601f016020900481019282620033e157600085556200342d565b82601f10620033fc57805160ff19168380011785556200342d565b828001600101855582156200342d579182015b828111156200342c5782518255916020019190600101906200340f565b5b5090506200343c919062003468565b5090565b5b808211156200346457600081816200345a919062003487565b5060010162003441565b5090565b5b808211156200348357600081600090555060010162003469565b5090565b5080546200349590620034cd565b6000825580601f10620034a95750620034ca565b601f016020900490600052602060002090810190620034c9919062003468565b5b50565b60006002820490506001821680620034e657607f821691505b60208210811415620034fd57620034fc62003503565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613f8980620035426000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639bdc1b69116100a2578063c87b56dd11610071578063c87b56dd1461032b578063d47f269e1461035b578063e985e9c51461038b578063ef68075a146103bb578063f2fde38b146103eb57610116565b80639bdc1b691461027f5780639e41b73f146102af578063a22cb465146102df578063c08a5dd5146102fb57610116565b806367209aa8116100e957806367209aa8146101c757806370a08231146101f7578063715018a6146102275780638da5cb5b146102315780639720c9691461024f57610116565b80630e99990d1461011b5780632f745c591461014b57806331e0f9251461017b5780636352211e14610197575b600080fd5b61013560048036038101906101309190612ee7565b610407565b6040516101429190613447565b60405180910390f35b61016560048036038101906101609190612e66565b610521565b6040516101729190613529565b60405180910390f35b61019560048036038101906101909190612ea2565b6105c6565b005b6101b160048036038101906101ac9190612ee7565b610ca7565b6040516101be9190613411565b60405180910390f35b6101e160048036038101906101dc9190612ee7565b610d59565b6040516101ee9190613447565b60405180910390f35b610211600480360381019061020c9190612dc5565b610e73565b60405161021e9190613529565b60405180910390f35b61022f610f2b565b005b610239610fb3565b6040516102469190613411565b60405180910390f35b61026960048036038101906102649190612ee7565b610fdc565b6040516102769190613447565b60405180910390f35b61029960048036038101906102949190612ee7565b6110f6565b6040516102a69190613447565b60405180910390f35b6102c960048036038101906102c49190612ee7565b611210565b6040516102d69190613447565b60405180910390f35b6102f960048036038101906102f49190612e2a565b61132a565b005b61031560048036038101906103109190612ee7565b61143f565b6040516103229190613447565b60405180910390f35b61034560048036038101906103409190612ee7565b611559565b6040516103529190613447565b60405180910390f35b61037560048036038101906103709190612ee7565b611ffb565b6040516103829190613447565b60405180910390f35b6103a560048036038101906103a09190612dee565b612115565b6040516103b2919061342c565b60405180910390f35b6103d560048036038101906103d09190612ee7565b6121a9565b6040516103e29190613447565b60405180910390f35b61040560048036038101906104009190612dc5565b6122c3565b005b606061051a826040518060400160405280600481526020017f464f4f54000000000000000000000000000000000000000000000000000000008152506009805480602002602001604051908101604052809291908181526020016000905b828210156105115783829060005260206000200180546104849061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546104b09061378b565b80156104fd5780601f106104d2576101008083540402835291602001916104fd565b820191906000526020600020905b8154815290600101906020018083116104e057829003601f168201915b505050505081526020019060010190610465565b505050506123bb565b9050919050565b600061052c83610e73565b821061056d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056490613469565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6105ce612883565b73ffffffffffffffffffffffffffffffffffffffff166105ec610fb3565b73ffffffffffffffffffffffffffffffffffffffff1614610642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063990613509565b60405180910390fd5b60005b82829050811015610a2d57600083838381811061068b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200281019061069d919061359b565b60000160208101906106af9190612dc5565b90503660008585858181106106ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906106ff919061359b565b806020019061070e9190613544565b915091506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b818110156107c857600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000206000905580806107c0906137bd565b915050610759565b50600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560005b83839050811015610a1557600060016000868685818110610859577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b8181101561094757600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009055808061093f906137bd565b9150506108d8565b50600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600160008787868181106109c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550508080610a0d906137bd565b91505061080f565b50505050508080610a25906137bd565b915050610645565b5060005b82829050811015610ca2576000838383818110610a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610a89919061359b565b6000016020810190610a9b9190612dc5565b9050366000858585818110610ad9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610aeb919061359b565b8060200190610afa9190613544565b9150915081819050600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b82829050811015610c8b578360016000858585818110610b91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828282818110610c1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055508080610c83906137bd565b915050610b48565b505050508080610c9a906137bd565b915050610a31565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d47906134e9565b60405180910390fd5b80915050919050565b6060610e6c826040518060400160405280600481526020017f4e45434b00000000000000000000000000000000000000000000000000000000815250600b805480602002602001604051908101604052809291908181526020016000905b82821015610e63578382906000526020600020018054610dd69061378b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e029061378b565b8015610e4f5780601f10610e2457610100808354040283529160200191610e4f565b820191906000526020600020905b815481529060010190602001808311610e3257829003601f168201915b505050505081526020019060010190610db7565b505050506123bb565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906134c9565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f33612883565b73ffffffffffffffffffffffffffffffffffffffff16610f51610fb3565b73ffffffffffffffffffffffffffffffffffffffff1614610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e90613509565b60405180910390fd5b610fb1600061288b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606110ef826040518060400160405280600481526020017f48454144000000000000000000000000000000000000000000000000000000008152506007805480602002602001604051908101604052809291908181526020016000905b828210156110e65783829060005260206000200180546110599061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546110859061378b565b80156110d25780601f106110a7576101008083540402835291602001916110d2565b820191906000526020600020905b8154815290600101906020018083116110b557829003601f168201915b50505050508152602001906001019061103a565b505050506123bb565b9050919050565b6060611209826040518060400160405280600581526020017f57414953540000000000000000000000000000000000000000000000000000008152506008805480602002602001604051908101604052809291908181526020016000905b828210156112005783829060005260206000200180546111739061378b565b80601f016020809104026020016040519081016040528092919081815260200182805461119f9061378b565b80156111ec5780601f106111c1576101008083540402835291602001916111ec565b820191906000526020600020905b8154815290600101906020018083116111cf57829003601f168201915b505050505081526020019060010190611154565b505050506123bb565b9050919050565b6060611323826040518060400160405280600681526020017f574541504f4e00000000000000000000000000000000000000000000000000008152506005805480602002602001604051908101604052809291908181526020016000905b8282101561131a57838290600052602060002001805461128d9061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546112b99061378b565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b50505050508152602001906001019061126e565b505050506123bb565b9050919050565b611332612883565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611397906134a9565b60405180910390fd5b80600460006113ad612883565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6060611552826040518060400160405280600481526020017f52494e4700000000000000000000000000000000000000000000000000000000815250600c805480602002602001604051908101604052809291908181526020016000905b828210156115495783829060005260206000200180546114bc9061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546114e89061378b565b80156115355780601f1061150a57610100808354040283529160200191611535565b820191906000526020600020905b81548152906001019060200180831161151857829003601f168201915b50505050508152602001906001019061149d565b505050506123bb565b9050919050565b6060611563612ced565b60405180610120016040528060fd8152602001613dc660fd9139816000601181106115b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506115c883611210565b81600160118110611602577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060288152602001613f2c602891398160026011811061165d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525061166e836121a9565b816003601181106116a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060288152602001613cfb6028913981600460118110611703577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525061171483610fdc565b8160056011811061174e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060288152602001613d7560289139816006601181106117a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506117ba836110f6565b816007601181106117f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060298152602001613d9d602991398160086011811061184f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525061186083610407565b8160096011811061189a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060298152602001613d4c6029913981600a601181106118f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525061190683611ffb565b81600b60118110611940577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060298152602001613ec36029913981600c6011811061199b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506119ac83610d59565b81600d601181106119e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250604051806060016040528060298152602001613d236029913981600e60118110611a41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250611a528361143f565b81600f60118110611a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201819052506040518060400160405280600d81526020017f3c2f746578743e3c2f7376673e0000000000000000000000000000000000000081525081601060118110611b04577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600081600060118110611b48577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015182600160118110611b87577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600260118110611bc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600360118110611c05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015185600460118110611c44577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600560118110611c83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600660118110611cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015188600760118110611d01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015189600860118110611d40577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151604051602001611d5d9998979695949392919061324d565b60405160208183030381529060405290508082600960118110611da9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600a60118110611de8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600b60118110611e27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015185600c60118110611e66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600d60118110611ea5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600e60118110611ee4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015188600f60118110611f23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015189601060118110611f62577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151604051602001611f7f9998979695949392919061324d565b60405160208183030381529060405290506000611fcc611f9e8661294f565b611fa784612afc565b604051602001611fb89291906133aa565b604051602081830303815290604052612afc565b905080604051602001611fdf91906133ef565b6040516020818303038152906040529150819350505050919050565b606061210e826040518060400160405280600481526020017f48414e4400000000000000000000000000000000000000000000000000000000815250600a805480602002602001604051908101604052809291908181526020016000905b828210156121055783829060005260206000200180546120789061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546120a49061378b565b80156120f15780601f106120c6576101008083540402835291602001916120f1565b820191906000526020600020905b8154815290600101906020018083116120d457829003601f168201915b505050505081526020019060010190612059565b505050506123bb565b9050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606122bc826040518060400160405280600581526020017f43484553540000000000000000000000000000000000000000000000000000008152506006805480602002602001604051908101604052809291908181526020016000905b828210156122b35783829060005260206000200180546122269061378b565b80601f01602080910402602001604051908101604052809291908181526020018280546122529061378b565b801561229f5780601f106122745761010080835404028352916020019161229f565b820191906000526020600020905b81548152906001019060200180831161228257829003601f168201915b505050505081526020019060010190612207565b505050506123bb565b9050919050565b6122cb612883565b73ffffffffffffffffffffffffffffffffffffffff166122e9610fb3565b73ffffffffffffffffffffffffffffffffffffffff161461233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233690613509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a690613489565b60405180910390fd5b6123b88161288b565b50565b606060006123f1846123cc8761294f565b6040516020016123dd929190613229565b604051602081830303815290604052612cba565b90506000838451836124039190613806565b8151811061243a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006015836124539190613806565b9050600e8111156124d55781600d8080549050856124719190613806565b815481106124a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016040516020016124c39291906132cc565b60405160208183030381529060405291505b60138110612876576124e5612d15565b600e8080549050856124f79190613806565b8154811061252e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546125439061378b565b80601f016020809104026020016040519081016040528092919081815260200182805461256f9061378b565b80156125bc5780601f10612591576101008083540402835291602001916125bc565b820191906000526020600020905b81548152906001019060200180831161259f57829003601f168201915b5050505050816000600281106125fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181905250600f8080549050856126159190613806565b8154811061264c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180546126619061378b565b80601f016020809104026020016040519081016040528092919081815260200182805461268d9061378b565b80156126da5780601f106126af576101008083540402835291602001916126da565b820191906000526020600020905b8154815290600101906020018083116126bd57829003601f168201915b505050505081600160028110612719577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018190525060138214156127d15780600060028110612764577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151816001600281106127a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846040516020016127bb939291906132fb565b6040516020818303038152906040529250612874565b8060006002811061280b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518160016002811061284a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846040516020016128629392919061334d565b60405160208183030381529060405292505b505b8193505050509392505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606000821415612997576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612af7565b600082905060005b600082146129c95780806129b2906137bd565b915050600a826129c29190613651565b915061299f565b60008167ffffffffffffffff811115612a0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612a3d5781602001600182028036833780820191505090505b5090505b60008514612af057600182612a5691906136dc565b9150600a85612a659190613806565b6030612a7191906135fb565b60f81b818381518110612aad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ae99190613651565b9450612a41565b8093505050505b919050565b60606000825190506000811415612b255760405180602001604052806000815250915050612cb5565b60006003600283612b3691906135fb565b612b409190613651565b6004612b4c9190613682565b90506000602082612b5d91906135fb565b67ffffffffffffffff811115612b9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612bce5781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613eec604091399050600181016020830160005b86811015612c725760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050612bf9565b506003860660018114612c8c5760028114612c9c57612ca7565b613d3d60f01b6002830352612ca7565b603d60f81b60018303525b508484525050819450505050505b919050565b600081604051602001612ccd9190613212565b6040516020818303038152906040528051906020012060001c9050919050565b6040518061022001604052806011905b6060815260200190600190039081612cfd5790505090565b60405180604001604052806002905b6060815260200190600190039081612d245790505090565b600081359050612d4b81613cb5565b92915050565b60008083601f840112612d6357600080fd5b8235905067ffffffffffffffff811115612d7c57600080fd5b602083019150836020820283011115612d9457600080fd5b9250929050565b600081359050612daa81613ccc565b92915050565b600081359050612dbf81613ce3565b92915050565b600060208284031215612dd757600080fd5b6000612de584828501612d3c565b91505092915050565b60008060408385031215612e0157600080fd5b6000612e0f85828601612d3c565b9250506020612e2085828601612d3c565b9150509250929050565b60008060408385031215612e3d57600080fd5b6000612e4b85828601612d3c565b9250506020612e5c85828601612d9b565b9150509250929050565b60008060408385031215612e7957600080fd5b6000612e8785828601612d3c565b9250506020612e9885828601612db0565b9150509250929050565b60008060208385031215612eb557600080fd5b600083013567ffffffffffffffff811115612ecf57600080fd5b612edb85828601612d51565b92509250509250929050565b600060208284031215612ef957600080fd5b6000612f0784828501612db0565b91505092915050565b612f1981613710565b82525050565b612f2881613722565b82525050565b6000612f39826135d4565b612f4381856135df565b9350612f53818560208601613758565b612f5c816138c4565b840191505092915050565b6000612f72826135d4565b612f7c81856135f0565b9350612f8c818560208601613758565b80840191505092915050565b60008154612fa58161378b565b612faf81866135f0565b94506001821660008114612fca5760018114612fdb5761300e565b60ff1983168652818601935061300e565b612fe4856135bf565b60005b8381101561300657815481890152600182019150602081019050612fe7565b838801955050505b50505092915050565b6000613024602b836135df565b915061302f826138d5565b604082019050919050565b60006130476026836135df565b915061305282613924565b604082019050919050565b600061306a6019836135df565b915061307582613973565b602082019050919050565b600061308d6002836135f0565b91506130988261399c565b600282019050919050565b60006130b06001836135f0565b91506130bb826139c5565b600182019050919050565b60006130d36001836135f0565b91506130de826139ee565b600182019050919050565b60006130f6602a836135df565b915061310182613a17565b604082019050919050565b60006131196029836135df565b915061312482613a66565b604082019050919050565b600061313c6002836135f0565b915061314782613ab5565b600282019050919050565b600061315f600f836135f0565b915061316a82613ade565b600f82019050919050565b60006131826020836135df565b915061318d82613b07565b602082019050919050565b60006131a6610100836135f0565b91506131b182613b30565b61010082019050919050565b60006131ca601d836135f0565b91506131d582613c63565b601d82019050919050565b60006131ed6003836135f0565b91506131f882613c8c565b600382019050919050565b61320c8161374e565b82525050565b600061321e8284612f67565b915081905092915050565b60006132358285612f67565b91506132418284612f67565b91508190509392505050565b6000613259828c612f67565b9150613265828b612f67565b9150613271828a612f67565b915061327d8289612f67565b91506132898288612f67565b91506132958287612f67565b91506132a18286612f67565b91506132ad8285612f67565b91506132b98284612f67565b91508190509a9950505050505050505050565b60006132d88285612f67565b91506132e3826130a3565b91506132ef8284612f98565b91508190509392505050565b6000613306826130c6565b91506133128286612f67565b915061331d826130a3565b91506133298285612f67565b915061333482613080565b91506133408284612f67565b9150819050949350505050565b6000613358826130c6565b91506133648286612f67565b915061336f826130a3565b915061337b8285612f67565b915061338682613080565b91506133928284612f67565b915061339d826131e0565b9150819050949350505050565b60006133b582613152565b91506133c18285612f67565b91506133cc82613198565b91506133d88284612f67565b91506133e38261312f565b91508190509392505050565b60006133fa826131bd565b91506134068284612f67565b915081905092915050565b60006020820190506134266000830184612f10565b92915050565b60006020820190506134416000830184612f1f565b92915050565b600060208201905081810360008301526134618184612f2e565b905092915050565b6000602082019050818103600083015261348281613017565b9050919050565b600060208201905081810360008301526134a28161303a565b9050919050565b600060208201905081810360008301526134c28161305d565b9050919050565b600060208201905081810360008301526134e2816130e9565b9050919050565b600060208201905081810360008301526135028161310c565b9050919050565b6000602082019050818103600083015261352281613175565b9050919050565b600060208201905061353e6000830184613203565b92915050565b6000808335600160200384360303811261355d57600080fd5b80840192508235915067ffffffffffffffff82111561357b57600080fd5b60208301925060208202360383131561359357600080fd5b509250929050565b6000823560016040038336030381126135b357600080fd5b80830191505092915050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006136068261374e565b91506136118361374e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561364657613645613837565b5b828201905092915050565b600061365c8261374e565b91506136678361374e565b92508261367757613676613866565b5b828204905092915050565b600061368d8261374e565b91506136988361374e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136d1576136d0613837565b5b828202905092915050565b60006136e78261374e565b91506136f28361374e565b92508282101561370557613704613837565b5b828203905092915050565b600061371b8261372e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561377657808201518184015260208101905061375b565b83811115613785576000848401525b50505050565b600060028204905060018216806137a357607f821691505b602082108114156137b7576137b6613895565b5b50919050565b60006137c88261374e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137fb576137fa613837565b5b600182019050919050565b60006138118261374e565b915061381c8361374e565b92508261382c5761382b613866565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f2220000000000000000000000000000000000000000000000000000000000000600082015250565b7f2000000000000000000000000000000000000000000000000000000000000000600082015250565b7f2200000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f7b226e616d65223a202242616720230000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f222c20226465736372697074696f6e223a20224c6f6f742069732072616e646f60008201527f6d697a656420616476656e747572657220676561722067656e6572617465642060208201527f616e642073746f726564206f6e20636861696e2e2053746174732c20696d616760408201527f65732c20616e64206f746865722066756e6374696f6e616c697479206172652060608201527f696e74656e74696f6e616c6c79206f6d697474656420666f72206f746865727360808201527f20746f20696e746572707265742e204665656c206672656520746f207573652060a08201527f4c6f6f7420696e20616e792077617920796f752077616e742e222c2022696d6160c08201527f6765223a2022646174613a696d6167652f7376672b786d6c3b6261736536342c60e082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f202b310000000000000000000000000000000000000000000000000000000000600082015250565b613cbe81613710565b8114613cc957600080fd5b50565b613cd581613722565b8114613ce057600080fd5b50565b613cec8161374e565b8114613cf757600080fd5b5056fe3c2f746578743e3c7465787420783d2231302220793d2236302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223136302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223132302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d2238302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223130302220636c6173733d2262617365223e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223134302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f746578743e3c7465787420783d2231302220793d2234302220636c6173733d2262617365223ea26469706673582212204acbcfcfeab50b1ed5e262385460b2d7f02ac1347459b06cd46e614953f6de1164736f6c63430008040033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.