-- Generated by SQL Adventure Builder. Any changes will be overwritten.
-- See at the end of the file for more information.

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

DROP DATABASE IF EXISTS sqlab_island;
CREATE DATABASE sqlab_island DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE sqlab_island;

CREATE TABLE inhabitant (
  personid int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  villageid int(11) DEFAULT NULL,
  gender varchar(10) DEFAULT NULL,
  job varchar(255) DEFAULT NULL,
  gold int(11) DEFAULT NULL,
  state varchar(50) DEFAULT NULL,
  hash BIGINT,
  PRIMARY KEY (personid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE item (
  item varchar(255) NOT NULL,
  owner int(11) DEFAULT NULL,
  hash BIGINT,
  PRIMARY KEY (item)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE village (
  villageid int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  chief int(11) DEFAULT NULL,
  hash BIGINT,
  PRIMARY KEY (villageid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS sqlab_msg;
CREATE TABLE sqlab_msg (
  msg blob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

DROP TABLE IF EXISTS sqlab_metadata;
CREATE TABLE sqlab_metadata (
  name varchar(64) NOT NULL,
  value JSON NOT NULL,
  PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


CREATE FUNCTION nn(x BIGINT) RETURNS BIGINT DETERMINISTIC 
RETURN COALESCE(x, 42);

CREATE FUNCTION string_hash(string LONGTEXT)
RETURNS BIGINT DETERMINISTIC
RETURN CONV(LEFT(SHA2(string, 256), 10), 16, 10);

DELIMITER $$

CREATE FUNCTION decrypt(token BIGINT UNSIGNED)
RETURNS TEXT
DETERMINISTIC
BEGIN
    DECLARE message TEXT;
    DECLARE CONTINUE HANDLER FOR SQLWARNING
    BEGIN
        -- Just ignore the decoding warnings, since all are designed to fail (except at most one).
    END;

    SELECT
        COALESCE(
            MAX(CONVERT(UNCOMPRESS(AES_DECRYPT(msg, token)) USING utf8mb4)),
            CONVERT('🔴 No specific message is planned for this token. Possible reasons:
1. Copy-paste accident (double-click on the token to facilitate selection).
2. Formula for calculating the token not updated.
3. (0) still present, or replaced by the wrong value.
4. New logical error. Congratulations on your creativity! Now read the statement carefully and, if the symptoms persist, ask your teacher.' USING utf8mb4) -- fallback message
        ) INTO message
    FROM sqlab_msg;

    RETURN message;
END;
$$

DELIMITER ;


CREATE FUNCTION salt_064(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 62972894145922;
CREATE FUNCTION salt_002(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 137861041508951;
CREATE FUNCTION salt_048(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 277826442907816;
CREATE FUNCTION salt_073(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 254165502646708;
CREATE FUNCTION salt_060(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 111976707881159;
CREATE FUNCTION salt_069(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 70797235173812;
CREATE FUNCTION salt_090(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 30497399158554;
CREATE FUNCTION salt_099(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 8310057461616;
CREATE FUNCTION salt_013(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 156428465252470;
CREATE FUNCTION salt_093(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 107856286707972;
CREATE FUNCTION salt_033(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 137815747202516;
CREATE FUNCTION salt_023(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 44360048025875;
CREATE FUNCTION salt_091(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 34119642900974;
CREATE FUNCTION salt_080(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 17686269106982;
CREATE FUNCTION salt_078(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 33142678222518;
CREATE FUNCTION salt_010(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 156609923390892;
CREATE FUNCTION salt_029(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 255246805321529;
CREATE FUNCTION salt_086(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 229157153283997;
CREATE FUNCTION salt_045(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 241186399284601;
CREATE FUNCTION salt_012(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 237909826945914;
CREATE FUNCTION salt_032(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 40195087246763;
CREATE FUNCTION salt_036(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 123633025696313;
CREATE FUNCTION salt_046(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 203785028705431;
CREATE FUNCTION salt_071(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 224610948522906;
CREATE FUNCTION salt_018(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 193629355598867;
CREATE FUNCTION salt_051(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 216604063521296;
CREATE FUNCTION salt_004(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 57701753774249;
CREATE FUNCTION salt_019(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 148913404103171;
CREATE FUNCTION salt_035(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 151966162615799;
CREATE FUNCTION salt_015(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 57536827559801;
CREATE FUNCTION salt_089(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 231427542066705;
CREATE FUNCTION salt_061(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 210492708649341;
CREATE FUNCTION salt_088(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 199451542642387;
CREATE FUNCTION salt_030(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 91565974725697;
CREATE FUNCTION salt_081(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 186014430728385;
CREATE FUNCTION salt_009(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 252880031239136;
CREATE FUNCTION salt_057(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 89036539348634;
CREATE FUNCTION salt_042(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 281044000101397;
CREATE FUNCTION salt_054(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 64487734458809;
CREATE FUNCTION salt_047(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 77876336435184;
CREATE FUNCTION salt_014(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 121208939839792;
CREATE FUNCTION salt_017(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 202087216605079;
CREATE FUNCTION salt_067(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 135596661288730;
CREATE FUNCTION salt_087(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 53099498484831;
CREATE FUNCTION salt_084(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 136796738484217;
CREATE FUNCTION salt_100(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 52505842033539;
CREATE FUNCTION salt_043(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 80429528338601;
CREATE FUNCTION salt_027(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 39155947983344;
CREATE FUNCTION salt_006(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 52742326372974;
CREATE FUNCTION salt_040(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 37259991231134;
CREATE FUNCTION salt_003(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 78551615559390;
CREATE FUNCTION salt_076(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 11842676901531;
CREATE FUNCTION salt_079(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 37942724390356;
CREATE FUNCTION salt_058(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 1827309829283;
CREATE FUNCTION salt_085(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 266261277495711;
CREATE FUNCTION salt_066(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 134798869348095;
CREATE FUNCTION salt_026(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 108248540469695;
CREATE FUNCTION salt_016(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 213876884779281;
CREATE FUNCTION salt_056(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 165223576022761;
CREATE FUNCTION salt_044(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 78603334135774;
CREATE FUNCTION salt_082(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 156767328526125;
CREATE FUNCTION salt_039(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 225835030251516;
CREATE FUNCTION salt_005(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 17890350928281;
CREATE FUNCTION salt_024(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 165045079279857;
CREATE FUNCTION salt_011(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 89879946603453;
CREATE FUNCTION salt_083(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 273265872478375;
CREATE FUNCTION salt_021(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 258633179837392;
CREATE FUNCTION salt_068(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 44336719546230;
CREATE FUNCTION salt_065(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 204341354522673;
CREATE FUNCTION salt_095(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 103295775436641;
CREATE FUNCTION salt_007(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 130975966734475;
CREATE FUNCTION salt_074(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 139556892058007;
CREATE FUNCTION salt_041(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 119697795103447;
CREATE FUNCTION salt_077(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 4046805019318;
CREATE FUNCTION salt_070(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 92958338575792;
CREATE FUNCTION salt_075(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 36044330615759;
CREATE FUNCTION salt_092(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 61516222468702;
CREATE FUNCTION salt_094(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 78913360909949;
CREATE FUNCTION salt_038(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 31489738141241;
CREATE FUNCTION salt_025(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 203585150833345;
CREATE FUNCTION salt_020(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 24463305340287;
CREATE FUNCTION salt_096(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 260435128269849;
CREATE FUNCTION salt_072(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 210215670540430;
CREATE FUNCTION salt_055(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 191502459736723;
CREATE FUNCTION salt_037(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 182556230345007;
CREATE FUNCTION salt_059(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 59905828584047;
CREATE FUNCTION salt_034(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 260228475305711;
CREATE FUNCTION salt_050(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 90063864090052;
CREATE FUNCTION salt_001(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 62674909100445;
CREATE FUNCTION salt_049(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 86041550780213;
CREATE FUNCTION salt_098(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 55119678938787;
CREATE FUNCTION salt_008(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 236169707210998;
CREATE FUNCTION salt_052(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 263491931983769;
CREATE FUNCTION salt_028(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 213988589386448;
CREATE FUNCTION salt_062(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 90944912484449;
CREATE FUNCTION salt_063(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 275059687810107;
CREATE FUNCTION salt_053(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 141534329833897;
CREATE FUNCTION salt_022(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 70272263011973;
CREATE FUNCTION salt_031(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 200001037020680;
CREATE FUNCTION salt_097(x BIGINT) RETURNS BIGINT DETERMINISTIC RETURN nn(x) ^ 42438242280060;


DROP TRIGGER IF EXISTS before_insert_inhabitant;
CREATE TRIGGER before_insert_inhabitant
BEFORE INSERT ON inhabitant
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("inhabitant", NEW.name, NEW.villageid, NEW.gender, NEW.job, NEW.gold, NEW.state) AS CHAR));

DROP TRIGGER IF EXISTS before_update_inhabitant;
CREATE TRIGGER before_update_inhabitant
BEFORE UPDATE ON inhabitant
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("inhabitant", NEW.name, NEW.villageid, NEW.gender, NEW.job, NEW.gold, NEW.state) AS CHAR));

TRUNCATE TABLE inhabitant;

INSERT INTO inhabitant (name, villageid, gender, job, gold, state) VALUES
  ('Paul Bakerman', 1, 'm', 'baker', 850, 'friendly'),
  ('Ernest Perry', 3, 'm', 'weaponsmith', 280, 'friendly'),
  ('Rita Ox', 1, 'f', 'baker', 350, 'friendly'),
  ('Carl Ox', 1, 'm', 'merchant', 250, 'friendly'),
  ('Dirty Dieter', 3, 'm', 'smith', 650, 'evil'),
  ('Gerry Slaughterer', 2, 'm', 'butcher', 4850, 'evil'),
  ('Peter Slaughterer', 3, 'm', 'butcher', 3250, 'evil'),
  ('Arthur Tailor', 2, 'm', 'pilot', 490, 'kidnapped'),
  ('Tiffany Drummer', 1, 'f', 'baker', 550, 'evil'),
  ('Peter Drummer', 1, 'm', 'smith', 600, 'friendly'),
  ('Dirty Diane', 3, 'f', 'farmer', 10, 'evil'),
  ('Otto Alexander', 2, 'm', 'dealer', 680, 'friendly'),
  ('Fred Dix', 3, 'm', 'author', 420, 'friendly'),
  ('Enrico Carpenter', 3, 'm', 'weaponsmith', 510, 'evil'),
  ('Helen Grasshead', 2, 'f', 'dealer', 680, 'friendly'),
  ('Ivy Hatter', 1, 'f', 'dealer', 770, 'evil'),
  ('Edward Grasshead', 3, 'm', 'butcher', 990, 'friendly'),
  ('Ryan Horse', 3, 'm', 'blacksmith', 390, 'friendly'),
  ('Ann Meaty', 2, 'f', 'butcher', 2280, 'friendly')
;
DROP TRIGGER IF EXISTS before_insert_item;
CREATE TRIGGER before_insert_item
BEFORE INSERT ON item
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("item", NEW.item, NEW.owner) AS CHAR));

DROP TRIGGER IF EXISTS before_update_item;
CREATE TRIGGER before_update_item
BEFORE UPDATE ON item
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("item", NEW.item, NEW.owner) AS CHAR));

TRUNCATE TABLE item;

INSERT INTO item (item, owner) VALUES
  ('bucket', NULL),
  ('carton', NULL),
  ('coffee cup', NULL),
  ('lightbulb', NULL),
  ('ring', NULL),
  ('teapot', NULL),
  ('hammer', 2),
  ('cane', 5),
  ('rope', 17)
;
DROP TRIGGER IF EXISTS before_insert_village;
CREATE TRIGGER before_insert_village
BEFORE INSERT ON village
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("village", NEW.name, NEW.chief) AS CHAR));

DROP TRIGGER IF EXISTS before_update_village;
CREATE TRIGGER before_update_village
BEFORE UPDATE ON village
FOR EACH ROW
SET NEW.hash = string_hash(CAST(JSON_ARRAY("village", NEW.name, NEW.chief) AS CHAR));

TRUNCATE TABLE village;

INSERT INTO village (name, chief) VALUES
  ('Monkeycity', 1),
  ('Cucumbertown', 6),
  ('Onionville', 13)
;


ALTER TABLE inhabitant
  ADD CONSTRAINT inhabitant_ibfk_1 FOREIGN KEY (villageid) REFERENCES village (villageid);

ALTER TABLE item
  ADD CONSTRAINT item_ibfk_1 FOREIGN KEY (owner) REFERENCES inhabitant (personid)
  ON DELETE SET NULL;

ALTER TABLE village
  ADD CONSTRAINT village_ibfk_1 FOREIGN KEY (chief) REFERENCES inhabitant (personid);


DELETE FROM sqlab_msg;

INSERT INTO sqlab_msg (msg) VALUES
  (0xc0053f42934fc504ad06f7845b3dbd599c998772c27e0c82ade46d8aef161a8642c53e9cf7bed2c29c4a0ee9bf21b373a701aee4d3dd9bde42fe4a8ee79298f0f3fc68b7796ac267340519747003647b570cb1c123b7ab6cd5124f95ffcbc9f5bbca250cc39be176d28910c5a42822f7c68472a917aedd6176b365f447184ea61bef73815c952ccacef4bb3641a47ec08c538b9d9fb16e171171618456a7b30be01b7158b322603b9aff0e02822c985c6dd38faca57d8eb84864164e3e6d82d60c80f31d57653788e64e63dc8b13b61a94b505657d4bad002f6184a1ed249dea16003567bf4f4935155d13eb07b0698e66c44e7883d4ea08665282319f98a4497c98e30ec56bea42dccb6c2b32abd8bfab0981ee7bb2d2057957c36b5a1d866699c659611d13d8bfc4b25899785a8930957e3f34e3d67d5588b38248d297d82c),
  (0x40fa13036305bff0e73cfa63bbffc68ecabb6e38fd0fc70050a8d3274f104fcf4511530e4a6ce49fb1c18d77ce7b7d06cfdf2d5f1a579d9845fc4ad213f13367417f4df6308154f0d65d3b11c3c89ebb704ae00d4101880633d4a2e524d11a056996bc1e4ccdf08cf3bc14886c10ea167bd2147ddffdcf3172fcc982505d1b9065ac9e1f275a9484ae476e86ad431880adb8dcb02f3a3da062d55b67637562d2),
  (0xbfc7084421274fbe1d5074ac4a7da9b5d1f36ca625955192398a6b9b4ecec2eff6a749ff519734b9ac45c13f2efbde0d12bc42b9407a1392db5b272612718dda0ab90779a2a2d2e5b6f377b7276b41f9b13ade26376c6939b0cc2a4698ecef1f7f7bb0250b6031beff238e359c79d36f97fc449d4a5540622dac9eb6b22563d102e33c92c44f9206db411331711a611fb22a9b6715a7f69ad5f19c8f7f72e367),
  (0xdcf7316018f24a49a27bb7cef375bdcc018aee7cacb35d786dac0d13112160fb3845ddc39b88a0f16b5de033e1ecea4b64b5deed29041e8ead6637b4e45ac947af1425b94bd4de42f971c9173364bea008b2b55593b9214a031e1a29b6ca24a24c5604ed2b4bdb95a75a58234896f58975e6600aca96cf6bb1f2cc77008656c2f3d4fa0a4f92274375fcb8d081a5c194ddb3ff8cc5d4a2bc4d9dac21cd70b036eaa1ddab6248421deb16a1550f4d502be4447af8af9e766481c883e9c5ec63daee2dcf95d6885dfd918973dc25b122b7c037eb106307764bc1fdccc496d1d403e5dd0918eac96217b4cb5d8ce2dc1c5ca315322f034d9e838579de061296d98124aa02212d37b203272e49626f0877224f6ec210b15b6b7e239d0b6f5bbd4b6939ca7abf5f051d37af66cc6aaecd88970725ecef1edaf5b46f72cc0cbf5edaec),
  (0x255d2218e46fbdd5ae53fdcbd54a22e9a90f7b07427501c2616604bada34f6fce5bb53aed42f2c015f9a559b3a791b4268a51453ddadd9ac598aa8471f77536dcf4d8eb177f5ada2993c3fca3cf6f5db40f7ce7273f439a303fde811e7329146d1c6365d459ae37fd64f422a557b94148770a9c73f7f036885e2696150a1823a),
  (0xf3321cae2c02bed8b295ffc901f03ea6142ebbb9095869300f05864661d93e63a8b3424d5ed9f087bf80ec8501baf39e97333fdda9123648952a2418ddf198acb03366e18b19ca50268e566044e82c50693ae1b6b6ec62bf75392e74da38896d172ff86b3f781f5e4ee9f8bbf8aeb479c7dc7ba0d8d7f023fb3903daf91fae4d),
  (0x45da08f3a9c711d9a09f65f602dab2074d46c8c200f173e669766578a663819fe9d32987966b8c3d095714f5ee9e40d36c79a1b87b2ba2e7c14c62f228c7c9fd5b0033779e0a46e4f2130e7e80f463e2bf020865ebf5f4a5f81fb392f8ec954324f8e098d92ba997013c30a6f27881d53c4520d33ee510f896848a765ae384505e91f9373bbef0e75c8b2df58642b9473822034dd1bf67fe15361ecf881a2e867a0a69af9ca4b22506f535e9b63902c3eb6d97a216cb575a333ed6102299257ce39558aa87bc028781d9cf25b052595c5d96ba556ad3dfed2a65ac39a7e8bd5e5d47a787f60db696e65b92f1117730449b8cd17c83162976f46de660f20ddfe7ac2f76648f742c492facbc9f4370e256767be37bda0eb3b19080da66430d536309de836d0391ea5863b793316ec8cea07c64c8e81ff9c424627f6335ae89783752b0e8e52af42663e25ca1430cb947a79c70ee258a9fb4df2ee247ffeb0756e11e51603d8b178d2333f6a9558a81fd59065bc92f503ae3607a95cb7f534ebb8d99368f34035cc628d8c935a47cd5f735),
  (0xbd6f1f51ec1d9ca5b11ec08ad07f796eb5c68340d37f6b49afba7b6514b4d9ed58f301cb2dee59e1d208aab18dbe6a0372e65e7e2a85cbbfdde34a7b6c3e85b64ea46a8dd3c73b1fd0122eb441f70736fd4638116a989e3cd3fdc89341e66f359cb3d5198e5f19e052f3972cae88d5a1a869e1cf997c20a82b7eb80654c82738b6ae70b5d84f6ae1ba8956a2bf3084874f56237703455a3dcae56760c74c98bc35e3ab175d25b905db9fd110ef065d5501fc4ac7fa79ffcba189a0bcab7c917b36f1e601e94c091f8b51773af5b42af16b5ec2a4cb2bfa46f4a6d89afccff4d8263e04a6c744bc61aae664c663bb6ed4e876b6994d28dd2ea22bfda664a7bc4c05ef7a7ef8a4764d9f0a019589e8eb6076c57817f0b1c7add3926220bbe3c428b38096e9620d1ce577f3070016d99097092e9d7bbd509ae5a76d7ea50c865ac98329e076c90439267c1d007845e2b70196925a64e08bc185c21731c8dd5e0a8afb120e78225c41a9135fc16df4ac30d7129d54b4d4a530f8b66b74a6a61a3018fc0c23eed33870645f1904751dadf947b6ad2b78e82599d34ac404bb2d00a56dff793ad7ebd2f44f927438357f567dc0),
  (0xb7ad5b2b0862321986c3615e472292c5b3b2896cc28e387ab3cab723937e1527afd6ab9fb4240ba1059d4e0848546a724d0512e41653ec9b20e14db63c04fe0473adbbc23a7881473c242ec3c5f2b8229cae9fdeb3594c84a8f96e6c8d13c81f14256344b0292647351d7a3eff3235cd1850f6012b321077cebcef5416952570e96de1748a135ef80ecad6fbbcf4590b),
  (0xf4a2d645e3e7f4811160768bb45e99207b6fd1ff4b77a35aa6c9a1d79e605634b1d15b9da20469ce46c1d5ec2c41c170b47d1f0fa6dca8e30a5c3b17f0facd54bebfdc633ddb28d3a0635632ab47cfd7725b6056e734a008becf50931521e07d813722e1713b94d3e3952dae846b3233940964c36fe29ac327c56105628ea8bf68f6abff6b1dff87c0cc6f0be9f40584),
  (0xd6ff967e0e91b6ade2f15d8928cb0bd54957821ae8b3e8f60af88c167dd94e922709028906ea7692568944b84f16eb7e0bb645bb6717d7c68106e9126afa2ecfc3ec019cf1db6594505bea26aff32be7d5a73ce523b4119e8a8f975f3c9a22891bf6a78059f0d482d325de980cc6e3c443a5e8d0b74153299307df757f246a2f),
  (0xc799413ffddc1a8146e1c8a911674bb052c4a1926348b33ebb2b52d17a9a8100c42771b72f9ead9388d21b729b62a581c8f450fffb40f8ac149652e43f030d6d06e2ccf2585af8dfc48b651bd0dd731e88e8dcfe4a356d497a1a7d7c77ea1e5ad2fc255b8634cc50f9686eb192b4f56e74dfa31b988c7462fcaddb3b8560349cfa0fc2201ec16b7ada9d5f12f3f63f33f57359587dd8ed0e8e6024701abeb0d5ad3657672966d089bdf15729b780cc51e86688e67ef9cff88080739dae83f56c8a965f953080117404c532adb66ebc61f2bface100d78cf5bc0de78396299dc15c2006f148d88286b410aa958926a81f29c5e9ea1a95a67738f56d32ead4685d02c4a65c583878630327d95123a9e7914e466fc642756bdc59e9767aa7c0ddc2a19241cd2fa80c956b1f73622c3ed8b79a036e49429cc32fccc887ea2923ab5ad26a63eee73d24dd987eafb186db74847a5b40b8712d758e11f5edc87b85edd60607db50722de2e86ddbc33fa9bce18ed97cc1a99ad0ba29d8be04282931b3de3cd08ef13c7b7280115a3ce58b26a6da1aba2f85feb29454731d6563c99f0e6a),
  (0x38feeba69632ecd58bfb2bf2d7355de4e019a53f8bab8deb26a07f6ec52653c2af4c6203b70d27c2f668a5b3bce107e9a4f267263c14152d003a385a933ce3b78ed97b548431ab18907dfdde29eef8ee2a0f0386a998121a1061d8e19f99ca15bd24d28da4b5a52257ce0d9a6f28303ef10c09de7655f05fb983e37367ec6bd1360493eb38a2761f342ba8fde5e7e3c15f7cafcb61d75a1475646c6a16a8d77b08772f6edce2c4393b208ec7c1f05e0001e45e986d95abd67f0ed69c612501ad81a7e1e6d5fd14d22157a3c5267740d39cfa53c3b098c57e1353937526bf7076db023fa7026c118569428946a48f595acaac2188bc59b494dae0978b70042b98ff4be4b67eb686b287ad69d6e09838e9d112aac89511c0e03d783fea51ab468d2f475fd29b5fb9cfa46cdbfb09f0d4d23b147f1a0c74fbe87b9f9ec40ade44c2068d00c71c5b4145abb191a3e3a556384043fca2c668e90780836dfe4efd0b94d43be37bbc3f2c79550ccf19325cde68085777cf39eb919eab5f3a349ea7a9c3937cb8c3b8329a9f48c360efbeb0136643a21e8e876c601092525eb3966c29359d72acffeb682671c2618b200bd2de4c42c92a218a74ec4fa067f888ecf9ccfd),
  (0xa588566b0f7a4b9bc330f84c1b038cd76493e391ec32cba580a21ec4ec4f99885453d66b213912b7154513034876c4c3b2aa0893dceb1785745efa59455d5fb5dec4fc41886a18d11a3a130db96c8e5cff0fc39652d61ae0d51b3b315fd399f94ca87dd8c61e75553391406b539bec6f62571d924e6312fa364d09228bf6fe906963483af059c687d6704719238018ab36ddd94f0e44c08a3c2251ee89c6b840),
  (0xb2449587baa974045ce16c2ba7a3690832cc8cbdb3833795b6651f2f664f724cd44349b2bbd7b82ba42a397757d95c53df00e5dfdb2b5c4b7fc96bd9ec55798ba9643276c382cd30e04dbf9264add3a6a10e57ba54b6461f520a8bf8b007aba832c3930dabf9e42d433af528c2042caab3e66239e56929b49e30f5bed807cb2db173c864acd8b43a14baf54fd60aa00c76de1ebe73a7046ece6aab4b24884272),
  (0x2cd4aa2558963a2684aa6ea72cb0742344c75228929040c288af8532601f8375322863fe60faf42c22dbfcb263c00f9ad66e48853b32c20b7c37462e73f0ac8b1246a6d27c76e2b6eec6dc8539c1e8328aff636dc42bd261b6744e36e00425a15f691dc582c061102e299ae50dbf9265e50412297af3330f40b57ede8f58830750f1454ec7fcb7c5c1507dfaabeb4ddf),
  (0x4def595961d6e7694cd0b8b1ceb834feede5ed59279dbcf94be1d9423b978ea1c8bf6ee1cdf992ad847260aeb43b54c26e37bb8df1cd755025938a5bbad68d81a17210c74cff9540a3f79a337b45b54a6e21b880c6081c69e402481572501803cfa786c8e885ea2e0271a33c192cfd170a4368edcc7ec9122cd6034d16ca3ce09e78a3b5c9f30439988807d1c0e7b26d3eee2ecd5e894acccea64858fa0b2b995b12c80efb47b885da5a77dc0fb51bf00dce35a674ece243fe78317a279d60df1aa5c4441b23d6b4bef5dc4b1cd15b7928a51bce093f33f84ac0bba52e81e21901560d285b6305c77e4d4adc3db848f8e31070d6171e4ddec6e6094c0e52af8217f9764a9817c6b066b3d7c97fe98e733d3040dce837ba93655035cea3655873af15a8ff240310d1722fb3c9bc5254a08ffb117db7e6b8b56bf09b6365c03468203023800f9c932b86a894eb4c9d5d6fb2d0518772ad06a82f349e18620f5d9c683b4b6801558f3949e09068853d7e07555609f28cf80c70273bc3645b5f316e3d08c381ba52afb713c48a6e39cf23f2f30bf723243068b8fa3cd1c7039903bd3b1ca08b610c088eca9578d94f7060def46f95fefe44babcac355a762d0a81e8fc19bb4c4a6feceff1060d53f77bda24ecc104e8ca232ce9e319cd04829a928db9951438003936cd9928a1d1a037d4cf4bd91c5fd1d116e5528dc58a8f0b4eaf33d8dc5735f4bc48c805a12b0f6f2463be79a935e2a300b3f42239354afb17c17101eebe4149d6195d7c0f61641990119968987ade844d4fa98154eb77e7ec330a2a844ab9615b23f18d9ef72b1cf4b4773db027fb359b3e4e9127fab61fdd00eba9d07546a9c28cc8a6bbd928499ed6877f0c611056ebc389ebf321669e73c3b216be5013fd07b0e63a25fee97ace9e0b650eaa3646078855e422ab83229f1ba38f1d6b1fdb4040a5b7fa8a302f6094),
  (0xcd61526130a8ecf269f4f7a0bb1b3ad0c6fd53285c6b638655368518f1ffcb696c6715ab93d795f52799aecc84e19419b3eaec936476fe70aeafa2773011d2c2bfac8cb10f8fe14450f59debcb9926ef18fa86614b524612162f8b82f94180becf866534aea91fdf83b782c5d7728ea18448b3d34178067405713f30ca05e1a0f83c298b4ed08b4b7045f43410a746cee30653af7cef07f1d89e3159087d1d4e5501f6b2900b0796840f8e2ef5e8b50d7ee0d96df2ec9382cc38632441c4175c82ffd9eb5788da0e40dc238f67f536ae87c7c30d3fc0543aae0a7011584b5b6105663bccf4052785893b97e04b1d3e53a9010f70e9b5eba5999444e081ea24ee7bc3e8c91a0d05c9ec24a80ea69607e6),
  (0xf53b0a10a17e0e7a208b643121dd8f9c6e94af532efe27ef74a854ae0423ee3d6b176863920e42beb34635eb2581835102b3d699fa4c902c761977e85ba1a4f2156361298bd188769b698e83e4202108588c43a066621122bde30accda810261c78d5c8f470e880cc1555254163f7d25fc901e568ca62d0030937f450808a0eb52e16a5a7aba069401210ee140a38b8ca52ccd03c560fbd09ef8a1925f3aea9a357d0d18ef2952969535a2e99dba679fb4b064e181f346c6b54a76cc89264bb2cd5a06d5e5d93dd6f9ed9192d202c96caae4ec78dc5d542449359c5a6622c933f3459ca5d3f791927d92b72457e88f81fc9cb5cec3b73b22ab9bfdbb129fa994e26d8419b40d0f1eccdc27a317423c81),
  (0x4d0face01c8be61a92d10b394ff228db0d49f196ffc286746c56bca941399e677d9557559a35c9bd2713180ce4912c9411afd02062bfcfd18a5f35dfab6fa082701507cf0ea641aec53c4e3a5751cab6ad49bf6983254c76ffe3cc060ced0470ad41e216817a05440c60649c412406f6eba16393b4c123a54db5b74612dffc525199f3f3921b3bd59e4dda74f76c8a5e5a25e59f0057d2cf58fd41c3ad79341fe5188e512b652646ea8463c3443b42bdbb6f8a13c7ca3b7f502628a943c4300cc26e2299861e6a9de65afbc12bdc9b6c6ee765426ed5acd3b8c645f38d6c5e95bbf91a31a3ffc367432858dd495c7b48bc80e8bfaf3b3223a46b9100572715e3f5bd7d4ae6dd971737cc288ef31ceb60),
  (0xe80fbd50748b86d72ac52a19d36f05e2bf7c92c984a02df272b1722496a0109a3113e3c9afffbf1b0184ee55857243cd9e203df9d66956199c768c315c0ecd14accd57ba65879a8561ab5abde98a77e38ff027d487afc759fe25e0f38b7bd9c5e67f0e580e841f5ebc5c46e76a7e854e23498b7c475051c5f6d0c2f9cf8aed0e0eb11633926e0fb2dbed365c325bb84975ca2934665f67ca94b46ed307ce0067e41152a94434a631037b7d8146cf1e7d30145674baae3ec139719dec71a609c78f374ece5263e3aa2135b616d68f6f0492292adb91064c7eddee70164e53f32c5b77fdf011698e2052c35e4daa76eae4c6f08cb4838ffea29a0fc9aca27d7a335d6a96545193e483b020304fb15d20e4),
  (0x51f0656ba3372ed824693464f3ec5536896f905d3e1b1f36691e095b36283ad67dd7f643ad792bfc23772abc8169ba13b32ecf9ae6a51384c73f855d9174311c29c05c6c26460b069573eebf7cf45621bfc8d7ab0d062a10c8bc2ed5db6555d71f0822eea652819567b4109a429f20723a58603123b71ff9d8c8dbfdfac5a0d6ae9c0ec6da57bf8e9da93ac6bb7e7f93c09cb3871c8397cc11f89b602c93a48c097be541e2fe886024b92b443b615cf5076b5fcc71fdee29e8db3dc9d7bb8584df8541409701eb1e536f588ad018ff39b9e4755318a462af09f031db0f3b2280e066340b9dd006b4b2f8ce922cbc73de357f9acfce7d04415cdbf3db8077831ee727d54c7d32cba9a4e8c8309ead173a920fb72bf835dab9ec38611f8577bf44685ce7d1e6dae2a669785b9b62e7a94be306205987e60a29a05ad8c00c9bca9d688dbe31ba41688b06dd43d196b6448bcd6b390a1a79997a245a93c528ea98ecc7777ed32990a46aadead6093e738a49165ee10d6e2fc730d7e86bdfea565be7),
  (0x967fb999070d7dfc2acd68e4b1f64ed6c737372c54d9f9cbc6a4308c76862122f437fd989cd9d4bbd1ffa20d5b35defc163ae0e0fba9e45f03ac71871b04318133861bcbb83c56d97de4b7b549d95863cae160237b3ef0ea49972dfae610c2095ffce042d86571e74e2a322f5abfdcd7dfd9d25d00acc33d60c59800bb3a7cbd),
  (0x637656c9691d6ce010ed129929c8b051f6b19e218c576b351a71e510ed1b32ede2cd58cd97d45fafa0f408b7eb6312b3974e42b15dc396d7f549b9dc11a1d6eba00a2904222d7586c71af8207c3fc7bb4dc45c31d8acd54339485e17c1491d0c0ec7ade28b833e8a6052c5c90c808d0bc82283288f323cd659b89a0add71defea01c71934c42306d1803a08034e1b1cf17a3b6b8b5ce78eed0d174f985d587f778e1e6325a4a043f88cc19b65847c384b12d063f7443b58879d32a04b399c812c0d818feafa914b7819073442783694983a1aa1e137dd9a3e530d8712f24905c4cec2b6f3815a61ac23816ccb2f1d4eb490b0703eb2c9c371579a1668ab10b723704731f2770ae9c4b175c91a254fa7b5a0b8c1b9564803a480ccb153aaf5d5f269214918625ea50c1e006e73d8b9ff0d1dfd2ac9b5fe8687f07edfb4902d1a1c48cca7574c372835a5eee91caebd0010f9cb9af45aa69f825c169c9d2865a60dc6cde8348f110cbf26bec7b9da34978bc4d012330f8c5c6fc965e1424cb204e),
  (0x7b54ec01160367eb60f2dd8706f48edf61ccb2e9241aa079fbeb49047fdc97340a440f2af3826d6d01191c37cd8639dc4a5e694d4d51516b5822e3ebb49230322a9542bf0b8c3c0fffcc10794c2fbffefbf07ef4abebf22bafbfdebf0ab8a38e3acb0bf302fafdef5cc5f740f1f16a611a36707fb792ff0fde8f02323d0b8f9fa47560a98159e131041fa809477996d5),
  (0xe113c364f7c8020b73c53df1f0e4d26cc750de567da5aad2723783ee533250442937451ace5b1a4433053078d6bec88fb702ba5b8a0b28d80c940c75f675d25f2c2787ed7c4f9dfea70aee9b8d355f44fcb178dcdc31cef49e75999cfab4fab4baebbce63bcf984749f0d35589ba71bb17ef82049ae5d025db555ad72dcbf44b9287f444e93d86c5000da772e9f3f8cca7bb0d94f3b264e2db43922690bd79faf6c96ec08d9b12b811809e0cc35df8f26653358114c061117c507009e0a33a16493358753d284e6fbe5798fc0f39b21c1e48186c9d83f023871736318d7803da08ea31dfd7e6a854bf8c36c4a34f3f283081b83c90cee809a44705315b42aa18afea9473247dae4811c990dfba25abf5bd79a21ced03304ef17661d9059598a4af2b0ac03359fcdf77fcf109629fec04d322ea2b7654583b294ce9f96588d542d81032bf7decf46c5807e13e006d30f19a55991fb29bd4a89ba6c1d7d04fcf46e646ad0354601711f3b962229494c55ddd8aa06764ec094457ed743ea0c5c8a39527aa45e7fe0741561c878ca757b3dc65e4190ebabafb2e0589ff668f50922eae8403c01a8e0397415389676785ce70f260c8e7c5888dad6717bf50c27d84e247f2dadad41f1f3a71038edbf221686f671ce988f30600908fa9a857343eae06e23284b610e8529ec5b41d3c3afbee595e3addabeaab20d5852d7bfd3c260fe7),
  (0x121290d94dd3cca6a17435e23dceca17bb26ec58a808fe9c6940b55801cc898609d1556b3fd08c8be87ce7949f95e1066dc6efe76b463de1f480e3bb29a68c8e72ecc6adcd8df3fa4fe54fb335604bf489a92cead512b953addc90e69086f0d464a1517861f2aa1beab66e0d68a92eb56c26c9a7c20fa5f508a4eb504c346c1b46d02143e121f5da75f0b7514220493dd6334c2d657707c0a2f414c997b92d82cd32b011eb1fe816dd7ee08ea653fb1263cd5688a25d533d97de539953568924074e25586ece49a9dcdab88a5313b3978f29613f080e62d3a7c959bf3603eed61f1a0be315d69099269acf562db7b502f6009b564167e5095d3d7404d97e177a86b7b8ed7ad8113a26bc155187cb00fc0d15015bb44e0b37e4c5540493a325659485decd7d26eb74caa0ebb36f4728686817c7ca0fd15b7b63388e465a45d93a6e5e15234a7dde9330b7592b2546faf546be662b1a68a3c0f28c878efb4222976bf70610ecb0e5844b95cde767ee11002ff52a15c878570e667c06e98f520fde1eb3283cedb72566164e8c21de063283e2ee1f539508669ca4a8c68dd8325c775267fde9b3640ebf0cf38698d3433eef),
  (0xc0b73cab7c6da8ac6e094bc41b0d0d5a17b71d4000cb268b2a09f862b34960ae12af46c0446cfc05f8f1b13a32f33af601032a8016a995f92ebdc968faa288101f4b5818de1974b59440934950858bafa77a3399838a59c3d9049bcadd3ddbad4d3b9db797581625b27c187e8a411f02d60134cb51b5b73407bc08b376ed06c6ac38bb90eff5e5c222d70fe406569f369d51b7dc065eeddb85879a30ad77710968f6edaef2ee677c601f3fdd24ca7dc5d1339f92f5621ecfbaa9252c1758d1e114f436a147eda0e5a0910603eb611001ced22677a4048cb7c65665a49fd6271fab65d5382c651ab19f2c3537b5db6f28c3ef248421458043aae77dd226c458cd16f5609d37be82de1cad76fbcf264d6cbcd07b62a1833d73f2ab61a6ead15297bf235a8f23b82b177ef264e3cc098fdb9ee1d044994e13e0b4efa5977821c15854742c59566895cafefbedd6a017d1e518f7e8d0507c2035a26b1f55dcaf78bcc844799b51a14fab58b993741558133ec1e333f184cd74a651cf431c923af23d),
  (0xb92b29296fd1b908ba4cce3dc2ad81fdf7ebd7c8375f36a2ac85fca7dd8dbad47ee0e568887681e9b75a7bc015270fa3ba055611709f2a603a3a58365625eb3baa95dca9a659dede832dfb40a56e91e129e9e93fbe2cb296ad645b163c0e62c169fb25eac0850736261baf957cc1b1cad02409c4e8ec4e2bda1e8530fc27af68f42130800652ea7388ed1fe7c660aad3b37a18e8c7292da9a464f36d29e4bb71ccc468c92902892dbf6a778ba89c9f32cd932f3aac45e94ccc7f5545065f96dbf6a200890939a2c5d4876a62c94e48d6c9b8c87309a03ddd581e267941fc227a977d813d6982e30ec69e3a6222f2594d),
  (0x77cdcce58bc44e7ce834ceda82301d7515c5c840d15a6952f149eefb81817cb08ee44b7468d25e43580f07b7306f5079746924f655d6e91ac6781802de71fd744ba14417d3dcbbfe28ae023839dfad7c0961a76626347c1694f65c3ad7dc5ff691112c7ba4bfbf6f11e0d0649d4b37db8a1d055579bf5144420212106a27d4e8726e7026fbe3ba17d72ee8137d590375),
  (0x072b274f0f20c2034fcfb8cf7f0f242e18dd76aa9c991c3d67198846b38264633d34b76e483474a52c21c1ceb87eea11e0598607fef07e60b576fbd61d6eeac6119fbbe2190623c1f4f26dd72c774b91b37ec229a36f328bfcf29da2f508ad6f427ed14f913cbc0b0fa4351a19499f0b44761110a0cb3befd8a85ca38d339445521e2b7ab48fc4f82795bb18ab8973d5cf073cfb77f62b1490c0ece49602f273276b33c10da203c13a4122ff9e580db300495c21f70319fb533070324d2a9e87066311e2959c28661739086cd4d61411aa49bd5b05ba99eef461b26bc1250f0d208d3d4eaf43e6105422c6e597b48666eddf747438f1b69942370f5c781bcbf85bdb28d18f81a067bd781d97c369d612a717780f4cb3a83c6513beb8bda5cc2fec66cc52486ba8ae7d1c1ecc9658cfee427c41945ed4d193b3909bdac763db5d9a313b015df71cd68440c05d46f621cd93af4e0ba4b48a52d958522e88bba77bb95cb7a93de2549569064031164878b94efe2f79e45714b047e7840f21ced935b0aa3a2081b4db2f13040e76e34744a8c6566708730a77dee670fb5af7e494ee),
  (0xfc562f74794acee470c94f81ccb69d3985fd5c2f47a8e0112e5423be2def718885eddce6ea5df153536d3b70aa0ba464779ef96039eb754d24037fe9154c5943f764230d028c0234bfbde17f3f33473787b2b00ad3633be94fb0175339ea01e70df2a7fea8ddd707c0a6cef8f21e6d9ca2c4f493b06fb8c05e2af8486260f42cba35814e3a63eb708d00d5f4b6403400389b7cfef6084d88c29270d1341cb26a48051e7a371dbcd2eb1c4ca97bfc7c27d9540bfa0c4c9e3c4974c5069b2ef548612e2c47744c9773a3fdeb1f29671ced4c5ac0d8aac71d102b3d7b4670ad260e60ef21c0358fe510dbb49a87afbfc56a474c6d782b4940f45601a27d701afcabdf4701123f677ef971b489618f1adc0d3b3aade0ca570748b6bb48febc792d8c48e8a103920e6e706500ff61b63686918455808d9e80b47afa25fd4c7c134eb1e8df48da89abef17985147868111f6d29d50af75bd19b336cae1e41424b04867c359842405bdc1526060a0be8167dcd97db949620e1f7932933cd3ee0bc47556),
  (0x7e00935db23f39c404e9d604d1fb0377f9979cc1fb66b9757bd8009dbfe7ebe593a67da336d0b9898be41cb2ca93c05c23534fb693f278d785dbc086c74fd5f018ffd55c84272d6c541ad719ccb4b0cb9dda9f4c63b4fcea6a8151eaff62348eb5f91ab09435b6b00566aafb81a79c5682ac12c3a235f880e69cb9da754d360fddae8d3b7c3ae6e9e9886fdecae6703bf915021aac79e0df0d31faacac083b81eb0eabb6d3d10aff11a01579adf389214816ee3b6d23402b8242f46a4f98113e203f2f6d2a9753310dcfef63b3bb01484d0c323e0c48088cc99340a6bb32260c5ba483661937bee7881600c8927ff54457dd7d4338820ef6bcc5099e2d4290de128f76a647aeac4974c5cfe670defc69704a4d60250cb3756f6fa94b7207fd2c505bd053b51005789222e356468082966b419c8e492f221ccc9bc324cfaa5902cc8d61145508b8ce6a1c399c5557fb3db425803c033fccb76ab4c05249112f9d7016eb270a2da524dee2fc946d988c4b),
  (0x536ca4eccccc18e74d6d2e07a4143b24680c552c265ad9fc65f21f3b1f91afb38beb4538de2cb1a2277c566b97d70fc92b37312cb7496a0e89921b90daf375f500ac20c3f3fbeebcc69572f7516832715e6f6b0c0dc9a77fc81fdb6ac73c3cad2061e6c6c3b615ccb738f6d90233d243083935055a51e1ab12aa6fea1ba44d5d20a93b6d1a334d6729de37d2be1a299d906507dd07f4bf1f090cb0e49488b45efe348873a7c1b808e2bc0855edcc4b6bc22336937bacfbd1a78e38f5a3269f3b),
  (0x17b1659e10b865876affc803fc96b93c12f304e7c246ab9de1ef21c44eaacc67713f66189d4938965cc67117f607c83f0e47e8c0291d9f4d093e1113c3cd80e02b61cdec10425bb6050185aed61b59bb01334bfb47f40bebae53bd12e2955a3f46b1e839e96f17304c98869b3b15449315e83647f90ca30c0e5b76d94278cc177e89ab3c7fa4a9a8907beb4fea8b9e2fc401853711ef9fe0ae121233ef800b30ca4d4112ca3773b62572a9f963817eab),
  (0x01470f9b647940994d963cd700a224452b4fde930b707ed5f63e5608c1f51c6180c60a1f346bd90b3516cdde357a8fb6b975f78023d013857ecce6bb8698a96c4a307b01ad44a5c34f08393e53a12f49ed8f882aec135f3e5b84b2023818baf8f7f9c9ff25a9f2c5d22084a47e299ce6014d0d44b2a5598706ecdcf2fcc6b646),
  (0x85c805877bd77faad8f62a0fa5ac96e902b53a594317e018e7f0b0c2aa9e45153d23d272214828125636c8a6c7797e727e34694221d18bdc24105e8d828a9443ee86793e736755c8ee3e1c7b4cc498e9910388e8ae7b4b6e6b1d4976beb241dd38511ef0088ca6e435bf89c40cfff64af974a5751f110e8b4acf2e4fb914bf09),
  (0xb77fa61e2676d66ec57f73bf11cf6e75322c756e49cbd8f7fa3b9530c4aea683516e4003b8f8b4a6a52c565b16088e7d5a2981abaaa32c4e07a00b0279c69b3279276002b5033f5cb2a7a4d1b2a3df6526a21edee153ec2041f28a708d703585ce2f956e6b89797b203de610643c068f9013a92776269cacb8421755c190cc5b4efbd24f780295ea534ad07e50954859ccc19ff894600651d4ed5682aea4dfabbae248014658517877bf462144eca7fa7eb575b1a786db83912fd548da9e06abea237a7e9e5bb8156c39251cb66ce5125a1b44f62fefdf2b77ba20f4b8343a223608cf2f323283ae9a7f04a61716cee36c9b54be91fccd7098489c5939bab84fd43cef65c5cc2dc627968f036821188fe453447c46b78229cc3164e3abc3df87ea3583e5dd0f8457bb9cc54d2ca43772c60f8fc52dbcbe47d99f3d3f14806e94003715af6b55a0e4bcfcfc54eabc3d770a7f7eecae22a55d1bc11b9db6f43a26c4b08ada2ec85ebf3fc1957cbab2cbd921bdaf79e003899d327f2962b1690d8693eb0cc42c44e5a04a856e39f8a104e771db5d46e1a1164f0d4e5c9754588e236f179dcd5a752da17144d7e260067260a0197a051f4f458a8faab6b338fd4a69428afbf89760db350157aacf0e13b606f64db26132c29aa9c78ddd240a01149cc3bfa8a7cfee39170ce94335f975a309058c0c57b2f1355a51368e10b87b0f98c01c49bc3eb936a723c530f0e4dffcdcc9677061f4f26ad86625da4307596828fc0f1b10c5c6d89762048131359691b32f59f2fd91d2498fa281895ca41a1a54),
  (0x630022cae153e346449319775c51350fc9aa7556e9e5af4036611209abb6add6e2e8f539d095cf6a7a468235e60a788dc795225e7d211273a70f4802a8331fbfaa8d03d87d7f8c2a7cc9427df56a4b74f406634b2a56d1461c30ceb280fdb06cec49fa4bbc953a27ef2abd42234e8becd917a75dfe0974782c06fe8a7703cd3be02855499975a6076329c78edc07e90f760b6f03516f44410c4eafc83a5f95980a1d7497939ac2f4b605cc9645800b45028bbfb3fa87bceaec7008ac657c4be9429cd72a0664f6c289487ba6a24d0d1239886b43dddd52942c4f237b943b057bb6c32c96631b9f9f092386080a26ec67a8f3238b0c3e5d086c7e48e821a2e3f4ea5026b81f0a78396801f47269448444d56de2ab2cb99f68d8ad06b4b27c77d35ba067a689c8d8b5959efd138315b25918df4022a7bad8dfcb7897196c35118a796cae5eb36bcfe3372752214f51a3eeadd07b21fa3df3dfb6bdd6cd8b536907ed3523c58ffaf61d0d00b08bb6ad963e60af855f600d7903c8efd6e19557944fb36e0674697a5e3fdcc55d8ec4a20a84dc5acc94a527d3341c28558017a79297b8bdfb0f485bcb3fd8564abc8a03bd2f5f544cfaca3912b4802ec4f695c15cdc0a6020ed1e29c5ff30d6f57efd8dcf46bcff55b2d69e244785599592df6b598a),
  (0x201699c6632a4c3255d4fce06348cf96796b0a7be6eba43d620ebe904f93695fed91888fb9706b05fa63465890df1a07d1b42a3c35348c542ee5c5beba5d72c0ac919fd103dc2e6f1cca40a858f3655350e245c10178f0bc37d2ae04c156c15a26f73daa1cfccca791de464db5effc098eb6be773eef04304e80466f15ee8be8791f6ecee8839d3e313a81664f9d54b0f39eabac782f97fcb6ecf380e50f8803a14a322a888b0432ed3b0dfe187e694d284d0227c1e5259607bc18cd48c9d875d3674c6d6359bdb557aa5073f10f1afd193314166b7df3da755c51db7c165cd884b3bc6ad0c6d6bb603ffea6af431eea2f8c1408ab6207d54c3d366eb794c6416d8bd53efaef0e3370290238441b8109f6393ee57740e487794621f5874fe52238cc6e292cfd597c48b848a6c8c947fbbba2337fc8e250df3b2da7e948cec7c1edca8cea8fc1a4ab2ea7c6ef4ffc9658),
  (0xb3d7066dc641394b7dbab6833d7e64a647ead10d5e3199726cd34a7abd4eaa80bbbeaac9ec93656dd45727d75573aba964f871c065a6d0f5133ceabed3b692c56a7e8c1fc812f3aca4ef2193a9d6e54c5c7f4bb6d0681d0cacfd2afc578f1e41dfd2fda727a2c1189654906aa15fa3fece7ebe84d70d1811638704e65acaab2a466547a43a00fb8fe1f256a9e360b55bea913cc88f58bd7c070b974a21b57471deb4f40c709749c5a96f03e5a7e7eb665c500f9b6d7f5da2afc73aa70a32145c57890228ec3deef59b27ea9a1b97d89a944e5b52e2fedf8630f2fbe4728c2748f945192a5ae743dc00397ac16ddfa140659fa199029c7b3fcaf4fcb55a130f4d82e08e01cff715a2ab40ead23f0897262744df0a5457eb6c60f37ba3749841a48d64f660703016debe88463ffb9ad165f2d6a6c9bc3b5c985bc3cab0fc8ab811dc33f7ad88e72b0e22a0d8fff57c87df),
  (0x6f9fa954995afa9d0b04eb1b35219dd4e754d70693904c03e2a889773d286181baac3c7b2299150403199e79e6b558737f5267f990126b4b0e30d89b2c95e344861c1ffbbccf32c1d3eea03889c11946ea4d2b4d4e4c56ea6c18697bf979fe520f36022866778482c40fec68cf3fb114d8beca90e58a2bbd87ea3e190f6b43151e5dfa56c8e10d6d810c90210c1b3079038b8c2e90081db9e84cc0230e00e16685e6e07d2da7508141b65034a1ed55420e373a90a55589135a122082cfea8d5665418191b3a16d674454f53a1ed0c4b68e8567b8944a361bab7d6fc24be262c438719b1dd4d205012c8d477e7061fa34a05fb987052df2e261e790a64d7bd8b0e1e18b25c35315b265f1ecf82eb6b468a3c3cb9eb1815a592e5b08d37eba8c93a93df5f1145aafe4fe0d0d8bf01ef3726b73c322d70e62cda2752580d40aefcfb9fcf8038df0cd168251db10ce0dbb38533c4a243408a67bd454054469005ad2e5f2f577821d66e160b9f194223479057f8be5c6ebe0d54e112cc7648ffc88c0f19c9e7ce9928b3b54c4a40808e47c68189fa1af886c4ccb4662efcfef68d2228f008becbf1043b95cbf4b33ec26fba33009496022c76a60e7c61c5e7ee1d811cce50fcd7f75f7ea4198dcc50c2aed78e11a98745ee385ee8dc6898a14a94eb71cb862ae175696168a4e3e62d3163a8f),
  (0x455c3b77a1c39ba26dfaf18da815cb7a6c236ca561f8f330ae2f79ba49715eeaf225c16d4f2ad93bb1f801f6d00153cfe3d2f30714c27a7318f2c4ae6544102e2f211aa238a89e8580e8f68260e8b099094611ace91119608c550800ec68b813c07361faea0447f02322559ffe468163627fe65142f6eb22682052679a8cc85285f73dc814a7277e817a06079229b71dfa47d3e26d647ff84d734c0e8e15adbabbaff6f658445140c6c9e02cadbfb6c6f0163004b7729cbb163929203345e678e4058592603d5e6650a005a58855c1f5c3abeb067a0701b687322fb8eb4d77cbb2db787041a994cc46e0ec5f04997b5534750a6dbe27b08260eb2eeb7881580d959a471d2a7cb1b81da402412aa5874f0e60b65e26e353f48596a5028f73f4fe1d8d8a353507f69acd2129f61cf2de5eb20e066281230ad16553aee1f341e3e4961ffb6fb05d4044fdabf9a382754066dc6167f52a640a845232cc5d93e62f14132e92584808aacb7d5d1f01d640c650f2c55582d4b43e385584a6e325af5ee2857cae347e2f0df2ba43d3bdb9b205885c71156a6bb5b1707b2ecf3082a59b145ccaf5e938dd02271afd589b6691cb3e5759b0704eae5b58469b5ec5a6297990f745b9a5b01f820106d949cc823d8f0a450b0a2042a4567d27a4a370296c7bd912eb8d087a1c84937b639e6b0f59dc05),
  (0x28899e2a97736dbe564c9793b5811eb70cf2ffde945aed56e0a2d27184e4317f0484844e97c78552f9406384db8dc592f1ae7953fc1fe2b17caacdb83a8b3af8ce1033cc451d0d8a2fb214f2df0ddd4cbf43c583b3a0cf5b55a84ce3bd846ba81873991956df791ac0550e9ae409641ad44faacd34469c0cea0e6af16d81a64f525f87a2d9fec81a4ac44acfe8316c3e8bd3106614511552ecceb9f7f4bdc942ed5400774b72b290043f5c04fe32304b13b844ada8de78fd89510fb3e6642b4901a6caaf4c3896f2ae857bdc4828ff1cfdbfff6e19d80860b20983e86d442111869bf5a81a50b39a6923772afd697b0b0d5e7c80c6a0f0d5844e6c8e47256545193d6ad68965afe15b69c14f333578cf4542c2834d652832c812c1cba1c905e4073f7813d9fa39febaf070eaeaf6376bea245a476b5a075844f937392be1f7cb2776508b16adcf800b7ff8264d9df5e72c0d00573afc7092a633d0179fec1d6380de1805e9f33cac14dbdb6eb9439363acbf777ed96679f655e96b5109da4e3729a7fa45848eef5c5d172a50b42c370ebe38aa633c64d9352665464c27a901dc87fa1a5d12720d3127d9532a466fd44c81fbfc91037a79f18c895190551588f565a768ecf9543b6686356d63c853228b81b435f81a78b3d87af642f598ab2d3b7960e4adeaa7500d9959f7a6fe1042a3fce217c175d76822d239cc6f15d4aaaa),
  (0x52664c7f76bc980ff58903af068e120ef247521adef19072976ca76dd12344faa329b5d21281dcc5f7fb86dda9826f6e6e60afc0e6e13b90b09a29fdaa6af10cdb4944b26dfd373207c4633780cfe2a98d3ee71a3b99d16b7103952ea7319a29efe70dbdf3985283f0718e31158de44e720bb9ee02417b4c4c8d9770f0456bdc1d0419dcbdf1da476c1d92046f1a52c8),
  (0x03f47dab5f733cc88237b80ce1e43a73964b090523512bb0a467341113e26ac5f42eaae0dc137b51eb417b206377cd9b350d62d338a762fba2c6391dbe8efec41c1c07938b13a704fe1d0f8da600fcecf13df9ca3460f2a34758db1f45acbfd0f50edf48c0ac06a6f6606c3404fb3d4b6926529210572d603c53e9981d8dcceaa616711346cb71d47463155dd2528ca63701bea3554592e5ecdbbdb060eaba1bd721d957ad6c1580af505ea044d1baf30b18089a899d731cd8771088b03d00b9fb54c483b540583e3f49c6eebcb3328cc593492fb2cacb9c4bc1779f056f2fa541c61df02a972f8858e54489ecfd5f05b8eca71f3775534baeeec3e5377887363e7929b45353d03cba10144d55f72beb04f93c6cca812eafbd2b429c522722219baa3134cda3d50a6d110b56b9c3f80fb0d94ad25101fefbdc45333b4ec0acf213f0e3322fedc36737dc48544c06c4c62494a2c13d986ef6a1c52278194e3f62b91d40bf776c992c9b48eb16df83893626e8c56dd04b34b3ba70572d7359304531a54405e4b1d093df48a369d97c4a3b4f5160a4890944c9ecb02cc5b28637cf06aadda666c1d5874497546c83b93ea895ee63c43229793c9b55e206fc71b5081b5a3bf23cbd385c1fd48987213c61ae5ed12747d236d53732be23994b9a88b4d1f9bf7ceb40e1d0d0e37dbb5d01162a582cafb2b4290d47fb301180144b19e9),
  (0x8e13809ed81c5da006ac4e15d843f4821b057443fd7133c33a764e8e8cf66732dabdb5e35607a1ea80321237bf21048e4a3f22ea0cb4a645d0979806943653ab7c38753f7ac2832919b965ef369a1ff2a902f3091e502f050e1340141143da58a1fa1120e1e8819ed3baa982fce369f6e2dd79d11be79cfde1977e55ec5228740938ca1b1d7a9880c967dfc395dfd98b),
  (0xb8c4fb4932e971b9f6e31f39d8ad3078b8d9e89028e381c951646656837eb8ae78d0696a2e95c185ed89f46479175dc3e70b2b50e27eb5927be3a8874a039c7650ab2a61d06a8cabad9bddcace25dea4ab0a7f0580b5b50a6a836ca4796027c91e50bbe381bb460067878abde361194a9cc381b53389b8b575d5c6251ccff804905e1e8f858fd3f424193335667e2d7d),
  (0xab7b847f4262d51f9692f360e45bc0fa2e8dbe043b66dc04d84283ffe3756dff13170b9d86410c97bcc73aeb96072a2285ec307cf80843eb3803244f77b19d61990a5b5b772e0037d02c09894857903477a64867d94e2e9ad4c51adb639c038114f1dff839a74093cd34b145da94e0cbac3c9f437d987c025a8397720330eb5748b38e0b0272f01ed6b83955004729a9),
  (0xe1491d8fcdcbca9e1c8c8c0790c84ccb2e8501f3d9438d54d90c0f96c6638daea0923bc92e63aa477b63f9b31df655387b027ccbd42219cc50a8b64baf13d0d749c8006d6e8463f45a9ceb833e5dac8ea4195d70d7cf7cc3c1a6c14d28b2381eee0929f69086677695011b0eb4add9426912bb97029b8f2357767f93fe5e5c34a43f69404510e92f1b4a5b77ee1dabb91ab6e0b85953778a8ef45a7b8ff78c9cd0d5873652e52f0b10b6e97c11c6e9465db082b577a1adb7654376c10666ac3ec2cee82a124fe8ae1672cdef98669e9f4b003adcb20ea57fa8b475f61da5c85bb091a6bbf61b3fefbb36b84edcd67d9bd1611541b02b32950ac2b3e11308fcf9fe04d3ef3fc95350af7db73e06e9f137677b92678b7f730c49032d60d4160e5cf55a1bedcbf3de3c9864d2d30e8f128b07b6ea718b3f9ab80e51d91b1cae0a127a79b24351226624619277b38fc41247fb13cbc95047ecebc9b41bd6a350295c283b02cbc3649304cb44eb5ff81c049caf9b2fc12bfceebfb58412d6ef5fa2bb48f544756faa6c75d70935466e6bde9cbc4fca359c3af61b54d63272dfb070e32445ca2abda50884c292e506aa8810fcf22b04c36ac8cd022ff88c254992d114118d0ae4405145a0b052bdb70bbbc8519ab09358e6ef81fea77aedb8da968921a16f77a6c08ef5dff971a4f0f9f948e8a64c6d79e24f6ac8d3705b74d1dd097bd3881952dc82cb07fc248b8a58f3640886d1211d4fc74aba8cc7fb6fa8ad6dfc38e64c2375d2eda4336d09cd415825ddac0caf31cba799bdc96830f093bdd650b3504582d92ab467cd1672c53fee3bc615e8b6ca42299df4423d09e679474520e37022c90eb5a1b78c0453e7938e401c),
  (0xeb9a07f7b113208e40838583325fc6ca443315fc80c3112460f66d284fba0731303a539aa74236958843a07b3fe4655c44d4cfdf551f09aeb6ae10b299cb7a70ff44a84597df38317c6bd1f701bef0a544398cc413619806788967486d8caaba391e8cd1b9c8ba441127380c10177d168794f1d561d1bb954cc91c7f3462ec40421cc1f7d1296bfb84569e31f6a40c5d29347cd3079424795d854e1aa931aef157ff2f480b75cb19fe2e56a1f8815cad7b2a2f03e75774a445771e96678c92308b151ba976248c42c4a016e06c66276408706273ba097ac36cf68192af322c5b6a9592eabdfdf741f64c5fb61d305923547782a451419f91856e90bcbe3371780cdeed3be4aaeb539ab1570c5529476fe0620eac7118115d40a17377f981f77b52a7d3deeb2624001a9a2d47a38bb8b5aee952c29e659ba41ace280a859e7c08196632acd7fa4cc88afa14076e90af3a75eb291ba518e22c1ba28c4f2412e5ae389f23ec3f1eda6ada3c66a6396738b6224773745af0deec9021e79f9c9f466e70e6d79efbe661b5a7a1a6ba8a6591ac),
  (0xdd2ad5d3d3462e0cea6d449ddc84bc16e75ef186167ea345ca6def0c29049a8bd03249848249b38c169b5f0dedee8f179b17f2667b45bac78fb15d815c4ffeac7b0a58fb1b29c28fe5971e584830dc76ad77ca0ab724c03360ba4550990a43f57198fdc41c6e386c90c858c8f3ed137169d2ec0c279b31b46b605678b612a5fe0db10d2073ba13f22121320cd1a5e848d28c376570ded7b801427319109c8ea583524cf819b4ddef27ae3f055dd30862b9c217256f01c85c91a72f73aa22bf8d1a3975d4d8f46535b65fbc995aeeb0894970b37ca61c367a477653040a63b4852af22cecbd71c704f35ce58814224b5ac9ea9f9352e3458e66ca89898ba51b9ffd77749f561c3ac351bcb9f82afba80d65647fffe4185f67d0d2fe9385bc20fa9a960e16a457730a7d1b003913ac4ee6372b221cb5c1dc95708ee4f555b15f5297d693e4aaac0d247881d59bafffc30f9419115f0bf23a359cccad27627ceca67070d6efc49f432407fbf959ff12668644bb6e02053dc2f75c86f8c1e03d2458769948d9985766b5dcf20c549a704f5558abeef159574dd2fa4ade833d60498c69f34f65238f0f54066ed2c00462a1271b9e8bce6151fc2fd6079eeb8078b980ee76e2d468a03c680bc28dc1a072e5b6cfb591da074a480bd79c8a7e5427666b4267aacfa7d6471fc437ba2164e8285f),
  (0xaf7aea38bf197da39dcc2ec31edc0edaa32498471ef7880b423c00e11334d9b374f5988ecb5e7aeea327fa5705c0ef8706e635551c407d5b4253ae71dc242383bd60965435099242a827d6f88d58671a67a91350f75ebcaf01bb44cc69630fe3020940f01af175a6c753277eedfd269e43f351cdadf169f1c2c140dc1d4b1903b9286653123b2b09f4d96e9f45d8cc70e4c0675786c38e66a2bcf523f8af920da2ba859453d6b1b61bf3e0eb2958f7fc91a156b0f4ad928f72263feb0ba593cb5e3c67b2183416f62df8c3714f366d9f840b20779602b18dceb205e211aba69cd26b5246868b8055b302c99af94bb6ee681c00000d203e63f69ed05f6f1b17abee4a8f4553cc2d74ff15543a78d68d47462f1c9cfc29fd1c216b7a4949cd79e2191703ca4a4edf2ff8ee9c135f02519425e364b422fb441033527467fdbb1da4eebe719db876efff7c96344efafd2548d401d44563496e82dd24934daf8d3b75b092e1cbdde324a6cc2f0bd1f035d9f3309a5786df096fa922b744a54d17ec24e734b555e7704a1ad936c8fad06e8c11bd2d23ba14e5cd3b8f816d98a20502b1ee9edfccc2e69a66e203546206391c227ed53e1166cd214b4f04fc17efc18367b50f7a2c8be8da20393624f16d234595f4a7905d4e8ec4dc388354d4a2f94ac4d1a5618a6865af0c5704de66ce93a537a684e4934a521c8926ead109573aa52b06cd4b955da03b5592c726bbfcaec5975fd8b4911ec183abc27732f2b32bc965f5db0b29386219554e270fe332dd22343155f1e4b8d7beb8dfea8a13c962769adee0f0a5d204673b1651b5b0c39ce1957cf724d703123b1a279d58130df991f385e7c9032bdc85c5ec27178505583cc4a17d08c5add0a8032fc24745a5e3c6546ca1e398a7452c7a3fed45497b9223eeeb355f8e27d93e66e77ca0a5a40f790ddf19f0bfe3843f0e8fd69863e059c87269d7879708884286e2dade26e850d50924b7da36f57b8557290ce611e53a00c82a4c585f850ddc65b319b2b07a9c942c3032221bfc3207271b2fb2eeb24e2edfa318f566a2510c45b52cfe393d6aa3916620540a66050999ece7a653e12d0cb4),
  (0x558c408728f72104882d80bf2ab62e19f166c66f4321d173806b12d3f046e0f15cb5e08edb75423cad71c4bfea9e52356e33789fb78a7c10f033bc0bb4b38859c2e8c9c49e48654abd095ca629d7bf957bd9b0276d41a39efaab48b8a09c0678f487a4d085080473ab367d6ea31d7da037b974ead6614051b41d6eb8857c96b7180840e3825560a631e7394f035b03d4),
  (0x61db468ee0fdc6883cf87445e249c430f4df6fcfcef8dd4168829a900cb839a4fa5245a8b660bc251348a29b93287aa4f2a03ff708e8a6d0e25209e7085561c33bd522d35bc0ea1db0c39a383398005f13403fd5b4cfd56798932368cfa02aae209b8e76eccb44ec605127a616d4b5fa3d8f155f9b98edd961f301865da768193923b32e698d85ed59abbdae4edd818b495f4966a54cf25b061c3de1fbf3b228fd4f647d2ffa305149538ea8fcdf30a3),
  (0x80f9d611ada725f789ef367aa2157f80a398173f72f2188897d5b3fe0970624dbb261ee38291cec53b4bfd84c164901b30e9d86cb08a09b65e90855d89e334986e7c57eac26760a86f92d3d34829a948a0baf750c5a5e746b5f0331fda46c3474224d5a4257548cc045fb1ddd78905f451fa510cd7a699e1296ccf1a81b8bf1eb47a5c21ecfa0ad3505d19e53686584906a6295ebb19a4d0d18e1c98de8a9f5343fc0b10a0a6c7e36d033fdaeef51aea1ff1208dc35ea73202c72774bdd47caab8a447974c543c7c6ca643db7eea60e9562ff182246f32aa6a2be6932d9a5682ed50603048ae24404720dc18bff165f580b1837c5892985131717ffc0f85cd1bc8100e7534dffc2b69b12ea45c16c69b278b9eb37b94d708c5694940fa25a1376a74f2add8f49da7f04f4f948d26fbaf6786a497616e67f64e8aed4458cbfa19a9e9619be7f0771d82defd9b07db7ae67330a7eae7e8f8de4797a20e5f968e6222070c0846b73fecfa0bbd37d6afcab18ef0e5bbfa1e908777f378c94e66f0c595f3d2c9ef858e16f0bccfeff097ea0235f287bbb2e2edeb8d4d2c96d8a74164bca504d5c95f73e7f1095c1ebac359940cdddb7589f89555604ca10d29f06987fe6d799f4c6bbe0e5b5e3ccf870c68971b179d67e418abbc9943ea500a82b1611e81ec70d5b30b77b4a3745352f06d3e),
  (0x3d5211a9d03a241676e32eb7d96c0edabadfc1b8c68996ae8d6716a34c8668386134e4b46d095f6be6a412c8444424d3674bef73102ebd63c753d70407283f9bc63442951af5c088494fdb18869dad28ad180ea86ea2230c390af3e1a0321c2a9759987f2c1fff462a80efb063afe2fcadb29583ac577cdc19ee2b30e1ae7f4849bfc433848abf908119c7eda4462e71bf9651e4f9477647008d044a284acf5f62fd9bfaf2aa0e9fc61f8d24da1e9ba4c5ce5a9096722b8b3157e9bd7f147b66c30ba04b231d73f161ed7b7b65931dd6099ff01e286a52992fb528de159c9e19977b20c22349c91240a40e4be7f0d58af4b1ac740984322f237def21ed72bf66e06237fad88c83a8b2415d2220cd9e7a02f49d1ac61fa5126d879da7e512e59bed4946bfa124945988f5cdfd5f969db92cda9fb3bf7f11d931e9d312316f438ac08d91496a3685b552cec6a173f01297af552b3071548e6656118e6295810d04f9667dade176d1fb0bacf05bc27eefb59310852b597d5323d5d631ac865e77916f30c4af27508613299f810dec7c9e14cba9437f08f015d84dd7396da2bcde407e6f281263c4a0cb20e26655972fdf2e3fe236ce46eb7c02938a154dfe0430eff835ca0c3775fcbc5f3a03ce5a394aab073a48a18d7991d2df32591a422fd6135ef8880cae909c5ada4e460a42f70655c259adcdf0b9caae0ac877e865489e39),
  (0x7ddc1515d338b83da980d688c329eaefa275407b91ef35bf73071b880bfec4e1de6d1f55eacbc81d023d04359afa6b620a93ce6f3419748c37b58c972efe825c3bf4f3d0b937bd5ee648a0aabe2d7d7fe95963f195e2b49692626ace90bf9d4bc8726457142452eb1360af1faef36944c03f3e25848b1d02db521947d5a275ad2cfa4998cf89e130c68671bf753d18b8277a41dea4644a87237adc867996a36f),
  (0x91e7f017b13232738cd8747e53fc805cee84b1b696cc738f8835b9ec1210a2da2542fa14d52585e8cc63f6f7ea147986564180b78b272cd3aff0dc4deeb3cf9232a0670e7876186478b3d51cf7797104fe29fd6d408583a86866eaa37e6ecf5f475b80dd8fedef575ecfd5da609b0b8e2765e49420414d04687763e6e4a921d16a655b3262a6e20333fc013001af1826354e45ea22f9c709f860ebf7a56960e8),
  (0xb36ac266447aa6bcd15e3f208096992ffaa9850b274faac7a7e8e7bd804755b4102cdd8e885b64d966dd40893f68a8f2cc72ef8851e338608db6fce955145e4455d04b825c051bd9a4ec10a389c1093b1492e0cf6d0c74fd1dbcbffb20da63101fedc76b3e317c67b6cfd208e3c6969d0c4030c95696ae33f8567151322e7a0b5864625a1aaef957935fba94b596c950),
  (0xeaa41cade8f05930e68a89d44b575150fad63fca570605cad7bc94d2c767b938ddfab05c8abe7cb67da250c0d227fa452744596bc82ca4bf6e571dd5aec5394c36a09c452d67e922e33ccf4237f8c188a90729dd77e634c5c5318c94cb53d630adaab785e67339ffd941881ff2c1d3d0c148bcbc9832f344c1e6423e6de974b2af1b1b71db88ce0da26e721165974214465c371488318d188f0611f8715fb664dca0f66730d7a192620b3de03717b5f80e6e39d73b6d0ccf01afa042735de12eb3c93918334b52adbf77d8660ec69177065d2b9882d1fc514250b667174c5d6eecead7b9974c83eb87b472c99cbff41bc8c7b687a157ec79153586a6af0833989023479f1232c6426b549e3cb0a6ae9caf26788961e2c51c8bfd23b9d8462fd56b7b60a7e4f2b533e3fecd53b22c4ae2cab1d8a131a5c5ff08d670b17a0cf6a4b1a2426745fa47871a2e213a268294f2f9a216f5345f612cd6f2b051ee37e4655007294a34818bd4528c754bbe76090f),
  (0xf99269cdde0f0a3c9a336758132dcda7f4c7e585cfcc997ade5977efdab7c1d218c29dfd01d1bd2e4184551313f2d7370a4765a9f2abd152bebaed9816ea1063aedf14bf8df93a4d2f94be3d0a77ab0b111d01708c4fbb460b0d3e645b348046e81a91271656b3046a89ebc092944461b9cbce5415275a01c8d0d37e3ff3de88),
  (0x251d5edd9685bcc7c8979273ff9ded69ce14ac20d8cc196d2a734ddfc40a63746820f6f370b8c3a68544b3e7a925da2ce83e6dee88a67c54c2329400f7d671831591939f4ccb85262d8978cf3963bdaec007d42fbd1155535d16e3c93c992871fb7aa2e9b3ffd5a2f48405129d14f155ffd69223ddab00e900575484bf9439f5),
  (0xa52f1a204be851561f98628c07c5c5bb206c02e084b554c40703698a8474558db08c8f22e21793ba889475f6bebf57a53b4a51c56067362d02530ea0240f04ef1b1333fe1d5618f723eb10403fa42c34c36c83a2d5c98db27764537662d7ffbb0e161eb29db124eff253470d32cbfcd191a86fd38471ea1add442aabbc3bd101438bcb0c16d3f2c0ade727932809a9e043d54105426045496463275e1b1d4be734bb78a083f24abab7c21e0339dcc434426cf4662d994313330051acfe3983d0b95c3099738bea76faa2c86f65222dd65228eb54d3a42b468f1b420999f83fd57f60ec271d9d0d2ef2f15415253ea8c36148d83752e30bb66fbb0e8ba5cbd6c2648ce4918302d1aeee7a5f5b06a172157589bd507cbfd3ec25e8f859f121ef27d177906000e8d7de970001c4d7445c1eddba3eba4e739a1ec55d0f506c1734919ba05b201f69931635f3cd7621b7a951bb4e03b851e5437cf65d96716393074cd77eb936e315a65970652eafe9f050caadf1e873f63de35afa21e6e414ed4be8f6d8410040331d752e51088698dc1ad13838c69b08e37af65b4b2dcd37e22cd8866d7eaf9c45f4c9431510722700989c0d429482573158ca10a528141e5931cd9d2026f0a16c06f8bbba33d3d6adf7efd963c80e2856c0a3d1d417020104d6ffff86aa2c6314e8d872e9df841b035e6d7b0c632844a785137877aa329ac7ff50474089df4477f83d2868f565af4fdf38),
  (0x26ac2cf65ff113267c5a7e995143689d5dcb05744ee98f9b453bb6bc34c4666abf705278b6497d1956e91a9b3630dcef971c8cf0759c167fd51764ec536c2e85754632055ffb04f3d89bd20f8a70b8bfc3bb21d31508a88fc3d9748f24cdc43a3e55ae3d357c018436aa8d0a67e13b75863b69c6b6b01dceedac291c1e76ab8c12034f515448531afd7d701508be2e0ac5037f8caabe7ae1d0e5e33a31e632f6efc83fa48bce2a0ab1a8b2ee5abcfe941c9f60f8ebb63951c116449c3e882320929c2de60e1e6adea8b6aa597e4202ac1d7557132962e18bfb34e674f874bf89d6e6f19f2d84fd7322df08460ffdea12c368b5b6010703c84fa13a7bddd29fc48752e04606aba700d7948a2715e29a6cefea6acf0174095c63804df1171a0a4ab1e77f600a01b11a44b9b7240a5f17da7ef556fb2f3ecbd002d95a599bc0c9241a0e5738b06d1f56c97f3a01b3ae8d466ff0cb4237d4f8166e4783a4e98ee808656ffe3ca0ae5fe28b0a75d6de7045cb34e7eaed325a11b80d5d6255745e777c1952a5e0fbc6696e62aa4c0effe2e8815065e36be33f61685defc582f088dbbf0ffe87b23050201f429861938b660fe089018e760e6e1e59a311beadeb7e345423abdc7e4d902aa416dea6e4b0b34be49d9ce30c5d4320b84e3146906d4f575c64ac7f26c77903855c1db9e0c5948a99),
  (0xbefc11cd32f8d4bf991ebf9b6c2dd8ea8e481e3eab17cf52b2f93c2358d1f7f6ede502ecc0fe0b4cf47b4b1fa6e07f70aecd6405a50105a019525144a2d4c9879329a0121a60d4675c66aca850d7068ab537bc36b34b43e41c187aa06729c05f19459a9ea2419305f96ce4ea166284cd78ff0558391aa392694ebfc10df50ba17acb15c83c7c278e1831eba7b49c9192039eb8844fab323d7751f1e93059d2c7),
  (0x367859cd1d7ab7ad4c1f1877f16308c70d54a89d16bc98b6cb2e4baa229d1cec2644208f3d921cd4f734a3d69c6c14f783d17bc723b37ce6b5ca701dc59bb43dda68bf5b514039ef9601ed7dabc9182927c1f61d84205dae93dfe77973b8b388a10f2e7560f1e7c02b408d79c3be48385afabd2af06abccdd801198bcb118acb860b7f9fb5c404c07aa84329cb5aacaaa551a18863906da78261e2a3f4cbd1bdb3282f1afbd0cd9e3c3c46e5c94ce0183e613c09006358210181888078a62027eb9b6a5e9223fabf0d8a7bd62856f3baa44944a1d2ccd51e187b302e8050badc9c7101b65fd7b4e91063794c1b4b579cbe881ca38e1256e46adf5db2875359020f68bc70d6cc12567941b001bb2afdbc6365226366682eb43fa69567a79c53087791443fba328320c0bdac7e22c7c2a6d27f03b486dd4637408382c425e2d53741fdc9425658ca2bbfc8409237080109910270754b197aa3b4d5f5f3a5f1cd9f36fd2c9ae9dc956238019994c7731041432cb36eda24d72c79a97beab6ef5138b6342906a8a32d77b22806765c88219be9dce5485518ae58bf318f0b5927192708708d37f237ea8351de6bba11c1341780e6dba58f679457da22b094487a42d745630f8fd7cff97908d4f64656086423),
  (0x0cb90091a722c287c336a6f9365a70cf6d0012b55dc4d50d9e3f65e9200c4d477241b0d7764b8c62b36419f2eb48eb7b5851ed6388441b52c8e47678e23bab8d9c1eccc4a5322332baa6deda3cf46ab731e1ac05cb6fde477c5b3497380ac2a4880f33486b0ce690208a310201b293581b61df2dd06787773670d71cba44b9cfb330b17711a3ab79e18f348cce8a802efc9202f28d985c2146bc06e1b08b1ef85ae12536f3d179172ee3c97377002f6347a143b934a2ad305e668c6054e11d9057d3d0a7797ac362095ea35ca28d00cc4190767d7416feef2b90e32f5648f965e957f28b74d83076eac7505ea55d30fd76e9bdc09ee3f3b1c0aff7e45feb478267328b7f1c9ed7248c773ffad2e71b4d878145c8ff8abbdd34fb7c43d6b7ee2aca7bb552bc8b1fd91d53a559cef2960f5ddb1c58e2249b31f98cd6c5df1c5db9c684a387d25b9ea19635bfd10c50881eeb9a7d1b65456c24d18d7176de3232330952d9750d15b4f3b6d040e971d7435dc573d2303857f71ef30b53f4d22bec4fc9fbc87ffd479fc4e731816879a920824ba64ce0cfca17a7c6c08ec8b4db1419db028484c5aba0f614743187cc8e5377664ecaf6ddfb910640a7b8d4a6044f9c176a7d1e3faade585884b35c44328559ca76e498a9855f0ce4d0cf6eab4b9e870fba659613dd607ee35e309cb356154d),
  (0x2ffd9c0decdf1e5df2984d41b898bda15cd1f63a00837638fca2113786584c2d6fa51e8e619378d0637c6c66a3f6fc7cbce2ebe66fb4886c96714468342522b3a5948d5b788715802d2790df807ec3dd15a053a6206f9143ac88590519e2d60d66589caf7c798a4a4fa9031a2334ac5978fd36b0e3aa8117ca2d70e060743549dd3a979ee963884067473445cd92bfb06dad1ee86717877caf0facc48dd2a247fd1e73846d949da031ed1eb6485487dd5d25a893c50b9592259397da602e0dce1b6da4aca758b97f87f4fa2bf6edfc54931b158db2bae21f1c2f764fe7ece8b11a4735d4a8ede0605a46cd240dcb440a41ed9a9a780b72fc7938a4a3f7eb0bcc35f3aa10ab32fb6f7e195432cd4dde83ff6ab609cbb9bbdb8730c87bec02cb3dd4ddcfaf0bd72ac848082a1e3ebd891e23e80ac8b4a54b7a444c57775fc685c3439778456a3abb91be212f810a079a5d144b9f31885dabe8670650a7b2341614bf8c2f4a6c7894e9891ab5587be0d7772c81d0719d503e1f55c0e13dc3b21d5cab357a5e0db6a020dfa110ff094417bc939dce199f81ae4d3b7d3cb19bc31621),
  (0xb6da3df254287d6043c0cb7e20077d16e381569b4acc2543f8d185c737b5a6b1d51578499342aae5989eb1eed3a7becea2dc373eef58d12931829261553c6cd443f584d5304a232add9b8871e38631b9ec0c99855c2cc7a6afbf8bde53cfac9d320a4b12e16ad05e904c78d1ca2caf6e5333ddd5bb16f650b2111cb147c60db59759be930e0356bbb83887498479d7cde599bdc636b97c28d56e5be6d64972d80e5a2d693f19cd08947d72461428064311b75abd7ba14b9b17d5741e24c37618832af725e8aea2f5fc53fa3b65fa1d981a2820ef2bdff94406769189c6a8f48cb14d785cbbc0f283f01fcd8606e536a80f220127b04def5491499ec4d608f6ca701b73a2c50b7c53c3089b769a0a14ef6bdacc80221fc9b65546c3f9fcbb975d1e408591609db28a6df7e000e874091d8400233099339e3d903c95a9ef0b79e000d867ee46c8f3a36d9962463e4900500a8056a0acc97229ffc090f71acc63248cc5cd90efdcd55721ec4e356e45cdf66b391965773b5e2368d474efede9fba71cbfebfb0f7afa1420e5210b481c608d08ce34eed4714ff6c0501845a75feb501ae397236373a1d5c0f8cbc6faaf8e8272b30ef85fd066a22f4ef853b48adf291c1908bbdb55617c97df3d984b4bde82d81a97e911cdec65410866a37a8b816c11c458f728d0b276437ef96e8a7f7451),
  (0x0fd8b85636f76f4986d69b5c5aa599cd938ea8cfe02c2e3a6fd2a2dd2f1600cea6c6fa4e44c5d79dfee4aec9ac9e3fd58b0226b9e14bbca0a3000ebca1539caa6076cc9da30b601d3a09f557bde82e99087b78de4a40d782e226c85557b0966f235d61ddc9a4aad8c0673f2c4c00bb05a1a80f8eff5ec8e2cc47bf082c3d1630cb6db26d0e04854334c29ad709b31aae1266558fc323876d9362ae8027865faccda108ff6bbe09b551bd54947d065d376a482f0f1f7a79934598123aa37e113bc2888bbe457911a30591f5e061c430bc207616f4f0d3de03cac0c14e847b43233cdf838d7f12418f30f2b61a65f58a34ed6937f66706da05796a278c24fba30e521c9f727570a392e59660146380cd606129c36f736d41c680c6e57ee82b60ca7f5e971063f995fb15edad79bee3e2ec9c9ce3ffecef7a97506e026a1b5a0c5fd016898a6a8ba140a76324fcf561daca4a4616f8ad4cb46b9bab08859bd2e97ffd66e90cddad4a9a221a3abaec2f29dc814e5b8135566e51b69009bab2eaa8c61626003bb50ce426b189a77c0c4ae454),
  (0xbc6580adb81f26bd8862479a9eceab3fb263bf79c70749efa826e5b961d4f48c8a9bf83aa4b4fe7203922f3ac31f3da273790a9e63fc82b7d97175ef5d05fda1f778141184e822a1a38dd7f4b1524436a3b80c1b2639bdd13ae169405c704ea436ab519895c83f113799327a27a10d1ad7b8ab877deb2c1340925f8c43187fa85ba9e79a79e901196e163e48291241f5a2c89bd93b08115e56f0753d951a9dbd29024ecee3fb2122f0395d8c630ba9e2e79faff3e2e507ca4786c70b08c3b1ce54b588ea3264ebcfacb3cc3ec1f13a2db14498f4a20a9368a1ad6f251164b3f2031ef15efa9aa91a8de2978f3e781cf4974a424639f0afdfd869c21394085f580c32439cefa6c6496665185c0008972281871ad6895fd63a28e106eda1a342e8d2fe6152023962637561728e927ed41cfccfa5c55b9aab3c298385f2c70d978d5aa778dbebbcf48dbfd8cbc987ce1662152bbd77e8302907e6228ec2d4fd37c7810093b4a2fc9e87442501b93f7f9ae994961f66ec0ffa02f99774bad99ff32a5257bfa93f7caa23556a91d8c1001c13),
  (0x066c67d074bed7661a8b4d6fae7dba4b7b9f249adbd24f8a8d7894b26896a88c290be7be9d794ca525d7c0e4399e10201676af0eeb3114bed233fad778d2a645c3e3de95e03512d84aade6b4fe938261a320183e431854553a009238cb39ac4cfe2db3a1fa457dcc935e52921ce85474474097eecded11d40ebdce7d3e99db3dd8e30395506ee1cadaa5c6b7199a7c21e8e17cb5a754edae4ed685228590107128a74de0190aa0899d07a0d2f2c1223332af64b5f2e99dd8aad000460165a4d4c82fe619e64ca334e961fe50b6dd68222147f6d3eeae2a6321ce6decdc194272355b2eab30d9b1d6da3d754cabe5569006da6652714441eafb51ef1380a79d2a7490800a295977300a3841e4dd196cbd),
  (0xdb26744a63378d7141a82b532ffd7b7a1a9e2a4f78f57682710ad18e18bca7c59b90e57a0197bb1802412122179b3067dd85db1ca45196de091fc98d44504cff1d9689e95fa8a7052154eed7dbbde549abf9b158db48f34d505e77b801d5ede679065bdf7a34fd181fb6549de2e615724e68b5c91c1ee33ff35f94c2d03bfbed0703f76b68a4e92ef6ceb50e3097fa06b18c9da652d543052365d229765a6908aaa5c3a8189358e5d474ac92670eae718a0d03199bf93b391de861b967509223e3afa84de7c0377bfb8bfe7525280cff897d9ac31b47cec255ecf706ff4a2024b85ca2fb2a16995fec0da9d2b483f5b90cec83866ad13990b60ee793ec6f896800f607f353dd966b49f4e6be200370e9),
  (0x910f6d28e8dd9ae82b3c236a968f7dd6ed28c75d0ae5b2116cb455ce8b1f93f601825f7b72be9295beef33cabdd0f196c61e19d258f504a39639f34f35d299011b070474bf5047a1034443e36558ebc2c8b72fa3bd10f3cfce56a011312afbf215cf15534be166d8649dd51d9a5e0279c4a2856dc88f5b4371d823adc786459608fc163de10314f02c9deb08ee9cc692a0adda1366c89ae4c34005f05b126549c0af5205602bce9f6ea121225ff056814b219e16069dbc91ca279c2027f7490ff5d4d0ac0eb8f75049334641bd9cc79e345d0b3c96658588cb992544fc8197142e3f32c70ae55dd41ac4215be88a3b012a81bd9adb2bc7b31f6e4f3095641b6d9712e27693f53c82c87d2cda621039fac6c02bf4c72b2d62ce5a81014ed25f2c2381e3ae8850ef275c57890196053e35)
;


INSERT INTO sqlab_metadata (name, value) VALUES
  ('author_affiliation', '"LCOMS, Université de Lorraine, France"'),
  ('author_contact', '"first_name.last_name at univ-lorraine.fr"'),
  ('author_name', '"Aristide Grange"'),
  ('author_role', '"Adaptation for SQLab"'),
  ('created_at', '"2025-05-29T18:58:21.252314"'),
  ('dbms', '"MySQL"'),
  ('dbms_version', '"8.0.31"'),
  ('description', '"An SQLab adaptation of SQL Island for MySQL."'),
  ('license_name', '"CC BY-SA 4.0"'),
  ('license_url', '"https://creativecommons.org/licenses/by-sa/4.0/"'),
  ('message_count', '75'),
  ('original_author_affiliation', '"Ostbayerische Technische Hochschule (OTH) Regensburg, Germany"'),
  ('original_author_contact', '"https://www.johannesschildgen.de"'),
  ('original_author_name', '"Johannes Schildgen"'),
  ('original_author_role', '"Dataset and storyline creation"'),
  ('original_dbms', '"SQLite"'),
  ('original_license_name', '"MIT"'),
  ('original_license_url', '"https://opensource.org/licenses/MIT"'),
  ('original_repository', '"https://github.com/jschildgen/sql-island"'),
  ('relational_schema_dark', '"<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?>\\n<!-- Generated by Mocodo 4.3.2 -->\\n<svg width=\\"604\\" height=\\"180\\" viewBox=\\"0 0 604 180\\" xmlns=\\"http://www.w3.org/2000/svg\\">\\n<rect x=\\"0\\" y=\\"0\\" width=\\"604\\" height=\\"180\\" fill=\\"none\\" stroke=\\"none\\" stroke-width=\\"0\\"/>\\n\\n<!-- Entity VILLAGE -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"42\\" y=\\"45\\" width=\\"80\\" height=\\"28\\" fill=\\"#5F3C14\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"42\\" y=\\"73\\" width=\\"80\\" height=\\"62\\" fill=\\"#7C5020\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"42\\" y=\\"45\\" width=\\"80\\" height=\\"90\\" fill=\\"none\\" stroke=\\"#E5A04B\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"42\\" y1=\\"73\\" x2=\\"122\\" y2=\\"73\\" stroke=\\"#E5A04B\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"50\\" y=\\"65.3\\" fill=\\"#E3D5B3\\" font-family=\\"Arial Black\\" font-size=\\"13\\">VILLAGE</text>\\n\\t<text x=\\"50\\" y=\\"89.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">villageid</text>\\n\\t<line x1=\\"50\\" y1=\\"92\\" x2=\\"104\\" y2=\\"92\\" stroke=\\"#E3D5B3\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"50\\" y=\\"107.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">name</text>\\n\\t<text x=\\"50\\" y=\\"125.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">#chief</text>\\n</g>\\n\\n<!-- Entity INHABITANT -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"254\\" y=\\"9\\" width=\\"110\\" height=\\"28\\" fill=\\"#5F3C14\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"254\\" y=\\"37\\" width=\\"110\\" height=\\"134\\" fill=\\"#7C5020\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"254\\" y=\\"9\\" width=\\"110\\" height=\\"162\\" fill=\\"none\\" stroke=\\"#E5A04B\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"254\\" y1=\\"37\\" x2=\\"364\\" y2=\\"37\\" stroke=\\"#E5A04B\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"263\\" y=\\"29.3\\" fill=\\"#E3D5B3\\" font-family=\\"Arial Black\\" font-size=\\"13\\">INHABITANT</text>\\n\\t<text x=\\"262\\" y=\\"53.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">personid</text>\\n\\t<line x1=\\"262\\" y1=\\"56\\" x2=\\"319\\" y2=\\"56\\" stroke=\\"#E3D5B3\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"262\\" y=\\"71.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">name</text>\\n\\t<text x=\\"262\\" y=\\"89.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">#villageid</text>\\n\\t<text x=\\"262\\" y=\\"107.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">gender</text>\\n\\t<text x=\\"262\\" y=\\"125.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">job</text>\\n\\t<text x=\\"262\\" y=\\"143.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">gold</text>\\n\\t<text x=\\"262\\" y=\\"161.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">state</text>\\n</g>\\n\\n<!-- Entity ITEM -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"496\\" y=\\"54\\" width=\\"66\\" height=\\"28\\" fill=\\"#5F3C14\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"496\\" y=\\"82\\" width=\\"66\\" height=\\"44\\" fill=\\"#7C5020\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"496\\" y=\\"54\\" width=\\"66\\" height=\\"72\\" fill=\\"none\\" stroke=\\"#E5A04B\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"496\\" y1=\\"82\\" x2=\\"562\\" y2=\\"82\\" stroke=\\"#E5A04B\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"511\\" y=\\"74.3\\" fill=\\"#E3D5B3\\" font-family=\\"Arial Black\\" font-size=\\"13\\">ITEM</text>\\n\\t<text x=\\"504\\" y=\\"98.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">item</text>\\n\\t<line x1=\\"504\\" y1=\\"101\\" x2=\\"533\\" y2=\\"101\\" stroke=\\"#E3D5B3\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"504\\" y=\\"116.2\\" fill=\\"#E3D5B3\\" font-family=\\"Arial\\" font-size=\\"14\\">#owner</text>\\n</g>\\n\\n<!-- Link from &quot;personid&quot; (VILLAGE) to &quot;personid&quot; (INHABITANT) -->\\n<path d=\\"M122 123 C188 87 166 51 254 51\\" fill=\\"none\\" stroke=\\"#C6A664\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"254 51 242 57 246 51 242 45\\" fill=\\"#C6A664\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"122\\" cy=\\"123\\" r=\\"3\\" stroke=\\"#C6A664\\" stroke-width=\\"3\\" fill=\\"#C6A664\\"/>\\n\\n<!-- Link from &quot;villageid&quot; (INHABITANT) to &quot;villageid&quot; (VILLAGE) -->\\n<path d=\\"M254 87 C188 87 210 87 122 87\\" fill=\\"none\\" stroke=\\"#C6A664\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"122 87 134 81 130 87 134 93\\" fill=\\"#C6A664\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"254\\" cy=\\"87\\" r=\\"3\\" stroke=\\"#C6A664\\" stroke-width=\\"3\\" fill=\\"#C6A664\\"/>\\n\\n<!-- Link from &quot;personid&quot; (ITEM) to &quot;personid&quot; (INHABITANT) -->\\n<path d=\\"M496 114 C430 82.5 452 51 364 51\\" fill=\\"none\\" stroke=\\"#C6A664\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"364 51 376 45 372 51 376 57\\" fill=\\"#C6A664\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"496\\" cy=\\"114\\" r=\\"3\\" stroke=\\"#C6A664\\" stroke-width=\\"3\\" fill=\\"#C6A664\\"/>\\n</svg>"'),
  ('relational_schema_light', '"<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?>\\n<!-- Generated by Mocodo 4.3.2 -->\\n<svg width=\\"604\\" height=\\"180\\" viewBox=\\"0 0 604 180\\" xmlns=\\"http://www.w3.org/2000/svg\\">\\n<rect x=\\"0\\" y=\\"0\\" width=\\"604\\" height=\\"180\\" fill=\\"none\\" stroke=\\"none\\" stroke-width=\\"0\\"/>\\n\\n<!-- Entity VILLAGE -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"42\\" y=\\"45\\" width=\\"80\\" height=\\"28\\" fill=\\"#FAA945\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"42\\" y=\\"73\\" width=\\"80\\" height=\\"62\\" fill=\\"#FFB94E\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"42\\" y=\\"45\\" width=\\"80\\" height=\\"90\\" fill=\\"none\\" stroke=\\"#CB7E1F\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"42\\" y1=\\"73\\" x2=\\"122\\" y2=\\"73\\" stroke=\\"#CB7E1F\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"50\\" y=\\"65.3\\" fill=\\"#645530\\" font-family=\\"Arial Black\\" font-size=\\"13\\">VILLAGE</text>\\n\\t<text x=\\"50\\" y=\\"89.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">villageid</text>\\n\\t<line x1=\\"50\\" y1=\\"92\\" x2=\\"104\\" y2=\\"92\\" stroke=\\"#645530\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"50\\" y=\\"107.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">name</text>\\n\\t<text x=\\"50\\" y=\\"125.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">#chief</text>\\n</g>\\n\\n<!-- Entity INHABITANT -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"254\\" y=\\"9\\" width=\\"110\\" height=\\"28\\" fill=\\"#FAA945\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"254\\" y=\\"37\\" width=\\"110\\" height=\\"134\\" fill=\\"#FFB94E\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"254\\" y=\\"9\\" width=\\"110\\" height=\\"162\\" fill=\\"none\\" stroke=\\"#CB7E1F\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"254\\" y1=\\"37\\" x2=\\"364\\" y2=\\"37\\" stroke=\\"#CB7E1F\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"263\\" y=\\"29.3\\" fill=\\"#645530\\" font-family=\\"Arial Black\\" font-size=\\"13\\">INHABITANT</text>\\n\\t<text x=\\"262\\" y=\\"53.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">personid</text>\\n\\t<line x1=\\"262\\" y1=\\"56\\" x2=\\"319\\" y2=\\"56\\" stroke=\\"#645530\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"262\\" y=\\"71.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">name</text>\\n\\t<text x=\\"262\\" y=\\"89.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">#villageid</text>\\n\\t<text x=\\"262\\" y=\\"107.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">gender</text>\\n\\t<text x=\\"262\\" y=\\"125.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">job</text>\\n\\t<text x=\\"262\\" y=\\"143.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">gold</text>\\n\\t<text x=\\"262\\" y=\\"161.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">state</text>\\n</g>\\n\\n<!-- Entity ITEM -->\\n<g>\\n\\t<g>\\n\\t\\t<rect x=\\"496\\" y=\\"54\\" width=\\"66\\" height=\\"28\\" fill=\\"#FAA945\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"496\\" y=\\"82\\" width=\\"66\\" height=\\"44\\" fill=\\"#FFB94E\\" stroke=\\"none\\" stroke-width=\\"0\\" opacity=\\"1\\"/>\\n\\t\\t<rect x=\\"496\\" y=\\"54\\" width=\\"66\\" height=\\"72\\" fill=\\"none\\" stroke=\\"#CB7E1F\\" stroke-width=\\"3\\" opacity=\\"1\\"/>\\n\\t\\t<line x1=\\"496\\" y1=\\"82\\" x2=\\"562\\" y2=\\"82\\" stroke=\\"#CB7E1F\\" stroke-width=\\"1.5\\"/>\\n\\t</g>\\n\\t<text x=\\"511\\" y=\\"74.3\\" fill=\\"#645530\\" font-family=\\"Arial Black\\" font-size=\\"13\\">ITEM</text>\\n\\t<text x=\\"504\\" y=\\"98.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">item</text>\\n\\t<line x1=\\"504\\" y1=\\"101\\" x2=\\"533\\" y2=\\"101\\" stroke=\\"#645530\\" stroke-width=\\"1.2\\"/>\\n\\t<text x=\\"504\\" y=\\"116.2\\" fill=\\"#645530\\" font-family=\\"Arial\\" font-size=\\"14\\">#owner</text>\\n</g>\\n\\n<!-- Link from &quot;personid&quot; (VILLAGE) to &quot;personid&quot; (INHABITANT) -->\\n<path d=\\"M122 123 C188 87 166 51 254 51\\" fill=\\"none\\" stroke=\\"#4C3D30\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"254 51 242 57 246 51 242 45\\" fill=\\"#4C3D30\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"122\\" cy=\\"123\\" r=\\"3\\" stroke=\\"#4C3D30\\" stroke-width=\\"3\\" fill=\\"#4C3D30\\"/>\\n\\n<!-- Link from &quot;villageid&quot; (INHABITANT) to &quot;villageid&quot; (VILLAGE) -->\\n<path d=\\"M254 87 C188 87 210 87 122 87\\" fill=\\"none\\" stroke=\\"#4C3D30\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"122 87 134 81 130 87 134 93\\" fill=\\"#4C3D30\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"254\\" cy=\\"87\\" r=\\"3\\" stroke=\\"#4C3D30\\" stroke-width=\\"3\\" fill=\\"#4C3D30\\"/>\\n\\n<!-- Link from &quot;personid&quot; (ITEM) to &quot;personid&quot; (INHABITANT) -->\\n<path d=\\"M496 114 C430 82.5 452 51 364 51\\" fill=\\"none\\" stroke=\\"#4C3D30\\" stroke-width=\\"1.5\\"/>\\n<polygon points=\\"364 51 376 45 372 51 376 57\\" fill=\\"#4C3D30\\" stroke-width=\\"0\\"/>\\n<circle cx=\\"496\\" cy=\\"114\\" r=\\"3\\" stroke=\\"#4C3D30\\" stroke-width=\\"3\\" fill=\\"#4C3D30\\"/>\\n</svg>"'),
  ('repository', '"https://github.com/laowantong/sqlab_island"'),
  ('row_count', '31'),
  ('sqlab_database_language', '"en"'),
  ('sqlab_version', '"0.7.11"'),
  ('table_count', '3'),
  ('table_structures', '{"inhabitant": ["personid", "name", "villageid", "gender", "job", "gold", "state"], "item": ["item", "owner"], "village": ["villageid", "name", "chief"]}'),
  ('title', '"SQLab Island"'),
  ('version', '"3.2.0"')
;


