{"_id":"547bd9984366a708001b3c1a","githubsync":"","updates":["55cb8b8a4153080d004467e3","55dc45f255be9f21004ee023","55dc4d8b7fa0290d00558ef1","55dc4d8c27c8180d00e68944","55dc4da227c8180d00e68945","55dc4da327c8180d00e68946","55dc4da56f16451700843bca","55dc4da66f16451700843bcb","55dc4da77fa0290d00558ef2","55dc4da96f16451700843bcc","55dc4daa7fa0290d00558ef3","55dc4dac6f16451700843bcd","55dc4dad27c8180d00e68947","55dc4daf7fa0290d00558ef4","55dc4db055be9f21004ee02b","55dc4db26f16451700843bce","55dc4db427c8180d00e68948","55dc4db56f16451700843bcf","55dc4db76f16451700843bd0","55dc4db855be9f21004ee02c","55dc4dba6f16451700843bd1","55dc4dbb6f16451700843bd2","55dc4dbd6f16451700843bd3","55dc4dbe55be9f21004ee02d","55dc4dbf7fa0290d00558ef5","55dc4dc155be9f21004ee02e","55dc4dc327c8180d00e68949","55dc4dc427c8180d00e6894a","55dc4dc527c8180d00e6894b","55dc4dc727c8180d00e6894c","55dc4dc955be9f21004ee02f","55dc4dcb6f16451700843bd4","55dc4dcd55be9f21004ee030","55dc4dce6f16451700843bd5","55dc4dcf7fa0290d00558ef6","55dc4dd127c8180d00e6894d","55dc4dd355be9f21004ee031","55dc4dd455be9f21004ee032","55dc4dd555be9f21004ee033","55dc4dd86f16451700843bd6","55dc4dd96f16451700843bd7","55dc4ddb27c8180d00e6894e","55dc4ddc6f16451700843bd8","55dc4ddd6f16451700843bd9","55dc4dde6f16451700843bda","55dc4de055be9f21004ee034","55dc4de155be9f21004ee035","55dc4de47fa0290d00558ef7","55dc4de66f16451700843bdc","55dc4de87fa0290d00558ef8","55dc4de97fa0290d00558ef9","55dc4dea6f16451700843bdd","55dc4dec7fa0290d00558efa","55dc4dee55be9f21004ee036","55dc4def7fa0290d00558efb","55dc4df027c8180d00e68950","55dc4df255be9f21004ee037","55dc4df36f16451700843bde","55dc4df555be9f21004ee038","55dc4df655be9f21004ee039","55dc4df827c8180d00e68951","55dc4dfa27c8180d00e68952","55dc4dfb55be9f21004ee03a","55dc4dfc55be9f21004ee03b","55dc4dfd55be9f21004ee03c","55dc4dff6f16451700843bdf","55dc4e0027c8180d00e68953","55dc4e0127c8180d00e68954","55dc4e0327c8180d00e68955","55dc4e047fa0290d00558efc","55dc4e0655be9f21004ee03d","55dc4e0855be9f21004ee03e","55dc4e0927c8180d00e68956","55dc4e0b27c8180d00e68957","55dc4e0c27c8180d00e68958","55dc4e0e7fa0290d00558efd","55dc4e0f55be9f21004ee03f","55dc4e106f16451700843be1","55dc4e1227c8180d00e68959","55dc4e147fa0290d00558efe","55dc4e1527c8180d00e6895a","55dc4e166f16451700843be2","55dc4e187fa0290d00558eff","55dc4e197fa0290d00558f00","55dc4e1a6f16451700843be3","55dc4e1b55be9f21004ee040","55dc4e1d27c8180d00e6895b","55dc4e1e6f16451700843be4","55dc4e1f55be9f21004ee041","55dc4e3427c8180d00e6895c","55dc4e3627c8180d00e6895d","55dc4e377fa0290d00558f02","55dc4e387fa0290d00558f03","55dc4e397fa0290d00558f04","55dc4e3b7fa0290d00558f05","55dc4e3c55be9f21004ee042","55dc4e3d7fa0290d00558f06","55dc4e3e6f16451700843be5","55dc4e416f16451700843be6","55dc4e4255be9f21004ee043","55dc4e4455be9f21004ee044","55dc4e457fa0290d00558f07","55dc4e477fa0290d00558f08","55dc4e4827c8180d00e6895e","55dc4e496f16451700843be7","55dc4e4b7fa0290d00558f09","55dc4e4d27c8180d00e6895f","55dc4e4f6f16451700843be8","55dc4e507fa0290d00558f0a","55dc4e5127c8180d00e68960","55dc4e5355be9f21004ee045","55dc4e547fa0290d00558f0b","55dc4e5555be9f21004ee046","55dc4e5727c8180d00e68961","55dc4e5827c8180d00e68962","55dc4e596f16451700843be9","55dc4e5a6f16451700843bea","55dc4e5c27c8180d00e68963","55dc4e5e27c8180d00e68964","55dc4e5f55be9f21004ee047","55dc4e6155be9f21004ee048","55dc4e6255be9f21004ee049","55dc4e6355be9f21004ee04a","55dc4e6555be9f21004ee04b","55dc4e666f16451700843beb","55dc4e6855be9f21004ee04c","55dc4e696f16451700843bec","55dc4e6a55be9f21004ee04d","55dc4e6d27c8180d00e68965","55dc4e6f6f16451700843bed","55dc4e7055be9f21004ee04e","55dc4e7127c8180d00e68966","55dc4e746f16451700843bee","55dc4e757fa0290d00558f0c","55dc4e7627c8180d00e68967","55dc4e786f16451700843bf0","55dc4e7955be9f21004ee04f","55dc4e7b7fa0290d00558f0d","55dc4e7c6f16451700843bf1","55dc4e7e27c8180d00e68968","55dc4e7f6f16451700843bf2","55dc4e8055be9f21004ee050","55dc4e826f16451700843bf3","55dc4e847fa0290d00558f0e","55dc4e856f16451700843bf4","55dc4e867fa0290d00558f0f","55dc4e8755be9f21004ee051","55dc4e8927c8180d00e68969","55dc4e8b7fa0290d00558f10","55dc4e8c27c8180d00e6896a","55dc4e8d6f16451700843bf5","55dc4e8e7fa0290d00558f11","55dc4e9027c8180d00e6896b","55dc4e916f16451700843bf6","55dc4e926f16451700843bf7","55dc4e9455be9f21004ee052","55dc4e9555be9f21004ee053","55dc4e966f16451700843bf8","55dc4e977fa0290d00558f12","55dc4e9927c8180d00e6896c","55dc4e9b27c8180d00e6896d","55dc4e9d55be9f21004ee054","55dc4e9e27c8180d00e6896e","55dc4e9f55be9f21004ee055","55dc4ea127c8180d00e6896f","55dc4ea227c8180d00e68970","55dc4ea455be9f21004ee056","55dc4ea527c8180d00e68971","55dc4ea655be9f21004ee057","55dc4ea76f16451700843bf9","55dc4ea955be9f21004ee058","55dc4eaa6f16451700843bfa","55dc4eac27c8180d00e68972","55dc4ead7fa0290d00558f14","55dc4eae27c8180d00e68973","55dc4eb055be9f21004ee059","55dc4eb16f16451700843bfb","55dc4eb36f16451700843bfc","55dc4eb427c8180d00e68974","55dc4eb627c8180d00e68975","55dc4eb727c8180d00e68976","55dc4eb87fa0290d00558f15","55dc4eba7fa0290d00558f16","55dc4ebc6f16451700843bfd","55dc4ebd27c8180d00e68977","55dc4ebf7fa0290d00558f17","55dc4ec055be9f21004ee05a","55dc4ec255be9f21004ee05b","55dc4ec455be9f21004ee05c","55dc4ec555be9f21004ee05d","55dc4ec76f16451700843bfe","55dc4ec86f16451700843bff","55dc4ec955be9f21004ee05e","55dc4eca7fa0290d00558f18","55dc4ecc6f16451700843c00","55dc4ecd27c8180d00e68979","55dc4ecf55be9f21004ee05f","55dc4ed155be9f21004ee060","55dc4ed26f16451700843c01","55dc4ed455be9f21004ee061","55dc4ed627c8180d00e6897a","55dc4ed727c8180d00e6897b","55dc4ed86f16451700843c02","55dc4eda55be9f21004ee062","55dc4edb6f16451700843c03","55dc4edc6f16451700843c04","55dc4edd7fa0290d00558f19","55dc4edf7fa0290d00558f1a","55dc4ee055be9f21004ee063","55dc4ee227c8180d00e6897c","55dc4ee355be9f21004ee064","55dc4ee56f16451700843c05","55dc4ee66f16451700843c06","55dc4ee755be9f21004ee065","55dc4ee96f16451700843c07","55dc4eeb55be9f21004ee066","55dc4eec7fa0290d00558f1b","55dc4eed7fa0290d00558f1c","55dc4eef7fa0290d00558f1d","55dc4ef027c8180d00e6897e","55dc4ef27fa0290d00558f1e","55dc4ef327c8180d00e6897f","55dc4ef555be9f21004ee067","55dc4ef627c8180d00e68980","55dc4ef855be9f21004ee068","55dc4ef927c8180d00e68981","55dc4efb6f16451700843c08","55dc4efc55be9f21004ee069","55dc4efd7fa0290d00558f1f","55dc4eff27c8180d00e68982","55dc4f007fa0290d00558f20","55dc4f0155be9f21004ee06a","55dc4f037fa0290d00558f21","55dc4f046f16451700843c09","55dc4f067fa0290d00558f22","55dc4f0727c8180d00e68983","55dc4f087fa0290d00558f23","55dc4f0b6f16451700843c0a","55dc4f0c27c8180d00e68984","55dc4f0d7fa0290d00558f24","55dc4f0f27c8180d00e68985","55dc4f106f16451700843c0b","55dc4f1127c8180d00e68986","55dc4f1327c8180d00e68987","55dc4f146f16451700843c0c","55dc4f157fa0290d00558f25","55dc4f1627c8180d00e68988","55dc4f187fa0290d00558f26","55dc4f196f16451700843c0d","55dc4f1b7fa0290d00558f27","55dc4f1c55be9f21004ee06c","55dc4f1d7fa0290d00558f28","55dc4f2027c8180d00e68989","55dc4f2155be9f21004ee06d","55dc4f237fa0290d00558f29","55dc4f2555be9f21004ee06f","55dc4f2627c8180d00e6898a","55dc4f277fa0290d00558f2a","55dc4f2955be9f21004ee070","55dc4f2a6f16451700843c0f","55dc4f2b7fa0290d00558f2b","55dc4f2d7fa0290d00558f2c","55dc4f2e55be9f21004ee071","55dc4f2f55be9f21004ee072","55dc4f3127c8180d00e6898c","55dc4f327fa0290d00558f2d","55dc4f347fa0290d00558f2e","55dc4f3555be9f21004ee073","55dc4f366f16451700843c10","55dc4f3855be9f21004ee074","55dc4f3955be9f21004ee075","55dc4f3b7fa0290d00558f2f","55dc4f3c7fa0290d00558f30","55dc4f3e27c8180d00e6898d","55dc4f3f6f16451700843c11","55dc4f407fa0290d00558f31","55dc4f417fa0290d00558f32","55dc4f4355be9f21004ee076","55dc4f4427c8180d00e6898e","55dc4f4527c8180d00e6898f","55dc4f476f16451700843c12","55dc4f486f16451700843c13","55dc4f4927c8180d00e68990","55dc4f4b7fa0290d00558f33","55dc4f4d27c8180d00e68991","55dc4f4e7fa0290d00558f34","55dc4f4f7fa0290d00558f35","55dc4f517fa0290d00558f36","55dc4f5255be9f21004ee077","55dc4f537fa0290d00558f37","55dc4f5527c8180d00e68992","55dc4f5655be9f21004ee078","55dc4f5755be9f21004ee079","55dc4f5927c8180d00e68993","55dc4f5a6f16451700843c14","55dc4f5b55be9f21004ee07a","55dc4f5d6f16451700843c15","55dc4f5f55be9f21004ee07b","55dc4f606f16451700843c16","55dc4f6255be9f21004ee07d","55dc4f637fa0290d00558f38","55dc4f6427c8180d00e68994","55dc4f666f16451700843c17","55dc4f676f16451700843c18","55dc4f6955be9f21004ee07e","55dc4f6b6f16451700843c19","55dc4f6c55be9f21004ee07f","55dc4f6e7fa0290d00558f39","55dc4f706f16451700843c1a","55dc4f7155be9f21004ee080","55dc4f7327c8180d00e68995","55dc4f757fa0290d00558f3a","55dc4f766f16451700843c1b","55dc4f7727c8180d00e68996","55dc4f797fa0290d00558f3b","55dc4f7a55be9f21004ee081","55dc4f7c27c8180d00e68997","55dc4f7d27c8180d00e68998","55dc4f7e55be9f21004ee082","55dc4f8027c8180d00e68999","55dc4f817fa0290d00558f3c","55dc4f837fa0290d00558f3d","55dc4f8427c8180d00e6899a","55dc4f8627c8180d00e6899b","55dc4f877fa0290d00558f3e","55dc4f897fa0290d00558f3f","55dc4f8b6f16451700843c1c","55dc4f8c6f16451700843c1d","55dc4f8d6f16451700843c1e","55dc4f8e27c8180d00e6899c","55dc4f9027c8180d00e6899d","55dc4f917fa0290d00558f40","55dc4f926f16451700843c1f","55dc4f9427c8180d00e6899e","55dc4f9655be9f21004ee083","55dc4f976f16451700843c20","55dc4f986f16451700843c21","55dc4f9955be9f21004ee084","55dc4f9b27c8180d00e6899f","55dc4f9c6f16451700843c23","55dc4f9d55be9f21004ee085","55dc4f9f6f16451700843c24","55dc4fa027c8180d00e689a0","55dc4fa17fa0290d00558f41","55dc4fa327c8180d00e689a1","55dc4fa455be9f21004ee086","55dc4fa555be9f21004ee087","55dc4fa755be9f21004ee088","55dc4fa855be9f21004ee089","55dc4fa97fa0290d00558f42","55dc4faa7fa0290d00558f43","55dc4fac7fa0290d00558f44","55dc4fad7fa0290d00558f45","55dc4fae7fa0290d00558f46","55dc4fb07fa0290d00558f47","55dc4fb155be9f21004ee08a","55dc4fb227c8180d00e689a2","55dc4fb355be9f21004ee08b","55dc4fb46f16451700843c26","55dc4fb627c8180d00e689a3","55dc4fb77fa0290d00558f48","55dc4fb827c8180d00e689a4","55dc4fba55be9f21004ee08c","55dc4fbb55be9f21004ee08d","55dc4fbc6f16451700843c27","55dc4fbe27c8180d00e689a5","55dc4fbf7fa0290d00558f49","55dc4fc027c8180d00e689a6","55dc4fc26f16451700843c28","55dc4fc36f16451700843c29","55dc4fc555be9f21004ee08e","55dc4fc76f16451700843c2a","55dc4fc855be9f21004ee08f","55dc4fc96f16451700843c2b","55dc4fcb6f16451700843c2c","55dc4fcc6f16451700843c2d","55dc4fcd7fa0290d00558f4a","55dc4fcf55be9f21004ee090","55dc4fd027c8180d00e689a7","55dc4fd16f16451700843c2e","55dc4fd26f16451700843c2f","55dc4fd46f16451700843c30","55dc4fd57fa0290d00558f4b","55dc4fd67fa0290d00558f4c","55dc4fd76f16451700843c31","55dc4fd955be9f21004ee091","55dc4fda6f16451700843c32","55dc4fdb7fa0290d00558f4d","55dc4fdc7fa0290d00558f4e","55dc4fde27c8180d00e689a8","55dc4fe07fa0290d00558f4f","55dc4fe155be9f21004ee092","55dc4fe455be9f21004ee093","55dc4fe527c8180d00e689a9","55dc4fe76f16451700843c33","55dc4fe87fa0290d00558f50","55dc4fea6f16451700843c34","55dc4feb55be9f21004ee094","55dc4fec7fa0290d00558f51","55dc4fef55be9f21004ee095","55dc4ff055be9f21004ee096","55dc4ff27fa0290d00558f52","55dc4ff355be9f21004ee097","55dc4ff427c8180d00e689aa","55dc4ff57fa0290d00558f53","55dc4ff655be9f21004ee098","55dc4ff87fa0290d00558f54","55dc4ff97fa0290d00558f55","55dc4ffa7fa0290d00558f56","55dc4ffc27c8180d00e689ab","55dc4ffd7fa0290d00558f57","55dc4ffe7fa0290d00558f58","55dc50007fa0290d00558f59","55dc500155be9f21004ee099","55dc50037fa0290d00558f5a","55dc500455be9f21004ee09a","55dc50057fa0290d00558f5b","55dc50067fa0290d00558f5c","55dc500827c8180d00e689ac","55dc500927c8180d00e689ad","55dc500b27c8180d00e689ae","55dc500c27c8180d00e689af","55dc500d27c8180d00e689b0","55dc500e55be9f21004ee09b","55dc500f6f16451700843c35","55dc501127c8180d00e689b1","55dc50126f16451700843c36","55dc501355be9f21004ee09c","55dc50156f16451700843c37","55dc50166f16451700843c38","55dc50177fa0290d00558f5d","55dc50196f16451700843c39","55dc501a7fa0290d00558f5e","55dc501c27c8180d00e689b2","55dc501e55be9f21004ee09d","55dc501f7fa0290d00558f5f","55dc50206f16451700843c3a","55dc50216f16451700843c3b","55dc50236f16451700843c3c","55dc50247fa0290d00558f60","55dc502655be9f21004ee09e","55dc50276f16451700843c3d","55dc502855be9f21004ee09f","55dc502a6f16451700843c3e","55dc502c7fa0290d00558f61","55dc502e27c8180d00e689b3","55dc502f55be9f21004ee0a0","55dc503055be9f21004ee0a1","55dc50326f16451700843c3f","55dc503327c8180d00e689b4","55dc50346f16451700843c40","55dc50356f16451700843c41","55dc50377fa0290d00558f62","55dc50387fa0290d00558f63","55dc503955be9f21004ee0a2","55dc503b6f16451700843c42","55dc503c55be9f21004ee0a3","55dc503d27c8180d00e689b5","55dc503e55be9f21004ee0a4","55dc50406f16451700843c43","55dc50426f16451700843c44","55dc504427c8180d00e689b6","55dc504527c8180d00e689b7","55dc50466f16451700843c45","55dc50486f16451700843c46","55dc50497fa0290d00558f64","55dc504a6f16451700843c47","55dc504c6f16451700843c48","55dc504d6f16451700843c49","55dc504f7fa0290d00558f65","55dc50506f16451700843c4a","55dc505155be9f21004ee0a5","55dc50536f16451700843c4b","55dc505455be9f21004ee0a6","55dc505555be9f21004ee0a7","55dc50566f16451700843c4c","55dc505827c8180d00e689b8","55dc505927c8180d00e689b9","55dc505a55be9f21004ee0a8","55dc505c27c8180d00e689ba","55dc505e6f16451700843c4d","55dc505f55be9f21004ee0a9","55dc50606f16451700843c4e","55dc50617fa0290d00558f66","55dc506355be9f21004ee0aa","55dc506427c8180d00e689bb","55dc50666f16451700843c4f","55dc50676f16451700843c50","55dc506827c8180d00e689bc","55dc506a7fa0290d00558f67","55dc506b55be9f21004ee0ab","55dc506d7fa0290d00558f68","55dc506e27c8180d00e689bd","55dc506f55be9f21004ee0ac","55dc50707fa0290d00558f69","55dc50717fa0290d00558f6a","55dc507327c8180d00e689be","55dc507427c8180d00e689bf","55dc507527c8180d00e689c0","55dc507627c8180d00e689c1","55dc50786f16451700843c51","55dc50797fa0290d00558f6b","55dc507b7fa0290d00558f6c","55dc507c7fa0290d00558f6d","55dc507d7fa0290d00558f6e","55dc507e55be9f21004ee0ae","55dc508055be9f21004ee0af","55dc50816f16451700843c52","55dc508327c8180d00e689c2","55dc50847fa0290d00558f70","55dc50856f16451700843c53","55dc508627c8180d00e689c3","55dc508855be9f21004ee0b0","55dc508955be9f21004ee0b1","55dc508a6f16451700843c54","55dc508b27c8180d00e689c4","55dc508d7fa0290d00558f71","55dc508e55be9f21004ee0b2","55dc509055be9f21004ee0b3","55dc509127c8180d00e689c5","55dc509255be9f21004ee0b4","55dc50937fa0290d00558f72","55dc50956f16451700843c55","55dc509627c8180d00e689c6","55dc509755be9f21004ee0b5","55dc50996f16451700843c56","55dc509a27c8180d00e689c7","55dc509b6f16451700843c57","55dc509d55be9f21004ee0b6","55dc509f7fa0290d00558f73","55dc50a07fa0290d00558f74","55dc50a16f16451700843c58","55dc50a36f16451700843c59","55dc50a427c8180d00e689c8","55dc50a66f16451700843c5a","55dc50a855be9f21004ee0b7","55dc50a955be9f21004ee0b8","55dc50aa55be9f21004ee0b9","55dc50ac7fa0290d00558f75","55dc50ad27c8180d00e689c9","55dc50af7fa0290d00558f76","55dc50b055be9f21004ee0ba","55dc50b127c8180d00e689ca","55dc50b255be9f21004ee0bb","55dc50b427c8180d00e689cb","55dc50b527c8180d00e689cc","55dc50b76f16451700843c5c","55dc50b955be9f21004ee0bc","55dc50ba6f16451700843c5d","55dc50bc55be9f21004ee0bd","55dc50be55be9f21004ee0be","55dc50bf6f16451700843c5e","55dc50c07fa0290d00558f77","55dc50c127c8180d00e689cd","55dc50c37fa0290d00558f78","55dc50c47fa0290d00558f79","55dc50c527c8180d00e689ce","55dc50c76f16451700843c5f","55dc50c927c8180d00e689d0","55dc50cb7fa0290d00558f7a","55dc50cc27c8180d00e689d1","55dc50ce27c8180d00e689d2","55dc50cf27c8180d00e689d3","55dc50d17fa0290d00558f7b","55dc50d37fa0290d00558f7c","55dc50d57fa0290d00558f7d","55dc50d66f16451700843c60","55dc50d827c8180d00e689d4","55dc50da6f16451700843c61","55dc50dc6f16451700843c62","55dc50dd55be9f21004ee0bf","55dc50df6f16451700843c63","55dc50e155be9f21004ee0c0","55dc50e327c8180d00e689d5","55dc50e555be9f21004ee0c1","55dc50e77fa0290d00558f7e","55dc50e87fa0290d00558f7f","55dc50ea27c8180d00e689d6","55dc50eb6f16451700843c64","55dc50ec27c8180d00e689d7","55dc50ef6f16451700843c65","55dc50f027c8180d00e689d8","55dc50f127c8180d00e689d9","55dc50f37fa0290d00558f80","55dc50f57fa0290d00558f81","55dc50f66f16451700843c66","55dc50f827c8180d00e689da","55dc50fa6f16451700843c67","55dc50fb7fa0290d00558f82","55dc50fd55be9f21004ee0c2","55dc50fe27c8180d00e689db","55dc50ff6f16451700843c68","55dc51017fa0290d00558f83","55dc510255be9f21004ee0c3","55dc51036f16451700843c69","55dc51056f16451700843c6a","55dc510755be9f21004ee0c4","55dc510827c8180d00e689dc","55dc510d6f16451700843c6b","55dc510e6f16451700843c6c","55dc511155be9f21004ee0c5","55dc511327c8180d00e689dd","55dc51146f16451700843c6d","55dc511655be9f21004ee0c6","55dc51177fa0290d00558f84","55dc511827c8180d00e689de","55dc511a7fa0290d00558f85","55dc511b27c8180d00e689df","55dc511c27c8180d00e689e0","55dc511e27c8180d00e689e1","55dc511f6f16451700843c6e","55dc512027c8180d00e689e2","55dc512155be9f21004ee0c7","55dc51237fa0290d00558f86","55dc51247fa0290d00558f87","55dc51256f16451700843c6f","55dc51276f16451700843c70","55dc512827c8180d00e689e3","55dc512a27c8180d00e689e4","55dc512b27c8180d00e689e5","55dc512c27c8180d00e689e6","55dc512e7fa0290d00558f88","55dc512f27c8180d00e689e7","55dc51317fa0290d00558f89","55dc513255be9f21004ee0c9","55dc51337fa0290d00558f8a","55dc513455be9f21004ee0ca","55dc513655be9f21004ee0cb","55dc51377fa0290d00558f8b","55dc51386f16451700843c71","55dc513a6f16451700843c72","55dc513b55be9f21004ee0cc","55dc513c6f16451700843c73","55dc513d27c8180d00e689e8","55dc514027c8180d00e689e9","55dc514155be9f21004ee0cd","55dc514355be9f21004ee0ce","55dc514427c8180d00e689ea","55dc51466f16451700843c74","55dc514755be9f21004ee0cf","55dc514827c8180d00e689eb","55dc514a27c8180d00e689ec","55dc514b6f16451700843c75","55dc514c7fa0290d00558f8c","55dc514e7fa0290d00558f8d","55dc514f55be9f21004ee0d0","55dc515055be9f21004ee0d1","55dc51526f16451700843c77","55dc515355be9f21004ee0d2","55dc515427c8180d00e689ed","55dc51557fa0290d00558f8e","55dc51577fa0290d00558f8f","55dc516327c8180d00e689ee","55dc516455be9f21004ee0d3","55dc516555be9f21004ee0d4","55dc516727c8180d00e689ef","55dc51697fa0290d00558f91","55dc516a7fa0290d00558f92","55dc516b6f16451700843c78","55dc516c55be9f21004ee0d5","55dc516e7fa0290d00558f93","55dc516f27c8180d00e689f0","55dc517055be9f21004ee0d6","55dc517227c8180d00e689f1","55dc51737fa0290d00558f94","55dc51757fa0290d00558f95","55dc517627c8180d00e689f2","55dc51776f16451700843c79","55dc51797fa0290d00558f96","55dc517b7fa0290d00558f97","55dc517c7fa0290d00558f98","55dc517d55be9f21004ee0d7","55dc517f55be9f21004ee0d8","55dc51806f16451700843c7a","55dc51826f16451700843c7b","55dc51837fa0290d00558f99","55dc518555be9f21004ee0d9","55dc51867fa0290d00558f9a","55dc518727c8180d00e689f3","55dc518927c8180d00e689f4","55dc518a7fa0290d00558f9b","55dc518b27c8180d00e689f5","55dc518c27c8180d00e689f6","55dc518e6f16451700843c7c","55dc518f6f16451700843c7d","55dc519155be9f21004ee0da","55dc51927fa0290d00558f9c","55dc51937fa0290d00558f9d","55dc519427c8180d00e689f7","55dc519627c8180d00e689f8","55dc51977fa0290d00558f9e","55dc519927c8180d00e689f9","55dc519a27c8180d00e689fa","55dc519b6f16451700843c7e","55dc519d6f16451700843c7f","55dc519f27c8180d00e689fb","55dc51a06f16451700843c80","55dc51a17fa0290d00558f9f","55dc51a36f16451700843c81","55dc51a455be9f21004ee0db","55dc51a66f16451700843c82","55dc51a755be9f21004ee0dc","55dc51a96f16451700843c83","55dc51aa27c8180d00e689fc","55dc51ab55be9f21004ee0dd","55dc51ad6f16451700843c84","55dc51ae55be9f21004ee0de","55dc51b055be9f21004ee0df","55dc51b16f16451700843c85","55dc51b37fa0290d00558fa0","55dc51b47fa0290d00558fa1","55dc51b66f16451700843c86","55dc51b77fa0290d00558fa2","55dc51b927c8180d00e689fd","55dc51bb55be9f21004ee0e0","55dc51bc6f16451700843c87","55dc51bd27c8180d00e689fe","55dc51bf7fa0290d00558fa3","55dc51c06f16451700843c88","55dc51c255be9f21004ee0e1","55dc51c355be9f21004ee0e2","55dc51c455be9f21004ee0e3","55dc51c655be9f21004ee0e4","55dc51c755be9f21004ee0e5","55dc51c827c8180d00e689ff","55dc51ca27c8180d00e68a00","55dc51cb7fa0290d00558fa4","55dc51cd7fa0290d00558fa5","55dc51ce7fa0290d00558fa6","55dc51d07fa0290d00558fa7","55dc51d16f16451700843c89","55dc51d27fa0290d00558fa8","55dc51d455be9f21004ee0e6","55dc51ee7fa0290d00558fa9","55dc51ef7fa0290d00558faa","55dc51f027c8180d00e68a01","55dc51f27fa0290d00558fab","55dc51f47fa0290d00558fac","55dc51f527c8180d00e68a02","55dc51f76f16451700843c8a","55dc51f86f16451700843c8b","55dc51fa27c8180d00e68a03","55dc51fb27c8180d00e68a04","55dc51fd55be9f21004ee0e7","55dc51fe27c8180d00e68a05","55dc52007fa0290d00558fad","55dc520127c8180d00e68a06","55dc52036f16451700843c8c","55dc520555be9f21004ee0e8","55dc52066f16451700843c8d","55dc520727c8180d00e68a07","55dc520955be9f21004ee0e9","55dc520a6f16451700843c8e","55dc520b7fa0290d00558fae","55dc520d55be9f21004ee0ea","55dc520e6f16451700843c8f","55dc521027c8180d00e68a08","55dc52117fa0290d00558faf","55dc52127fa0290d00558fb0","55dc521455be9f21004ee0eb","55dc52166f16451700843c90","55dc521755be9f21004ee0ec","55dc52187fa0290d00558fb1","55dc521a55be9f21004ee0ed","55dc521b27c8180d00e68a09","55dc521c6f16451700843c91","55dc521e27c8180d00e68a0a","55dc521f6f16451700843c92","55dc52216f16451700843c93","55dc522255be9f21004ee0ee","55dc522355be9f21004ee0ef","55dc522555be9f21004ee0f0","55dc522627c8180d00e68a0b","55dc522727c8180d00e68a0c","55dc52287fa0290d00558fb2","55dc522a27c8180d00e68a0d","55dc522c6f16451700843c94","55dc522d6f16451700843c95","55dc522f7fa0290d00558fb3","55dc523027c8180d00e68a0e","55dc523127c8180d00e68a0f","55dc52336f16451700843c96","55dc523455be9f21004ee0f1","55dc52356f16451700843c97","55dc523755be9f21004ee0f2","55dc523855be9f21004ee0f3","55dc523955be9f21004ee0f4","55dc523b6f16451700843c98","55dc523c7fa0290d00558fb4","55dc523e27c8180d00e68a10","55dc52407fa0290d00558fb9","55dc52416f16451700843c99","55dc52426f16451700843c9a","55dc524455be9f21004ee0f5","55dc52456f16451700843c9b","55dc52476f16451700843c9c","55dc524855be9f21004ee0f7","55dc524a6f16451700843c9d","55dc524b7fa0290d00558fbd","55dc524d7fa0290d00558fbe","55dc524e55be9f21004ee0f8","55dc525055be9f21004ee0f9","55dc525255be9f21004ee0fa","55dc52547fa0290d00558fbf","55dc52557fa0290d00558fc0","55dc52566f16451700843c9e","55dc52587fa0290d00558fc1","55dc525927c8180d00e68a11","55dc525b7fa0290d00558fc2","55dc525c27c8180d00e68a12","55dc525d27c8180d00e68a13","55dc525e27c8180d00e68a14","55dc52607fa0290d00558fc3","55dc526127c8180d00e68a15","55dc526327c8180d00e68a16","55dc526427c8180d00e68a17","55dc526655be9f21004ee0fb","55dc526755be9f21004ee0fc","55dc526955be9f21004ee0fd","55dc526b6f16451700843ca0","55dc526c6f16451700843ca1","55dc526d27c8180d00e68a18","55dc526e6f16451700843ca2","55dc527055be9f21004ee0fe","55dc527255be9f21004ee0ff","55dc527455be9f21004ee100","55dc527527c8180d00e68a19","55dc527755be9f21004ee101","55dc527827c8180d00e68a1a","55dc527a6f16451700843ca3","55dc527b55be9f21004ee102","55dc527c7fa0290d00558fc4","55dc527e27c8180d00e68a1b","55dc527f7fa0290d00558fc5","55dc52816f16451700843ca4","55dc52826f16451700843ca5","55dc52837fa0290d00558fc6","55dc52856f16451700843ca6","55dc528727c8180d00e68a1d","55dc52886f16451700843ca7","55dc528a6f16451700843ca8","55dc528c27c8180d00e68a1e","55dc528d27c8180d00e68a1f","55dc528f6f16451700843ca9","55dc529055be9f21004ee103","55dc52927fa0290d00558fc7","55dc529355be9f21004ee104","55dc52957fa0290d00558fc8","55dc52966f16451700843caa","55dc529755be9f21004ee105","55dc529955be9f21004ee106","55dc529a6f16451700843cab","55dc529c7fa0290d00558fc9","55dc529d6f16451700843cac","55dc529f7fa0290d00558fca","55dc52a027c8180d00e68a20","55dc52a27fa0290d00558fcb","55dc52a37fa0290d00558fcc","55dc52a56f16451700843cad","55dc52a66f16451700843cae","55dc52a755be9f21004ee107","55dc52aa6f16451700843caf","55dc52ab6f16451700843cb0","55dc52ac7fa0290d00558fcd","55dc52af27c8180d00e68a21","55dc52b055be9f21004ee108","55dc52b255be9f21004ee109","55dc52b427c8180d00e68a22","55dc52b655be9f21004ee10a","55dc52b727c8180d00e68a23","55dc52b955be9f21004ee10b","55dc52ba55be9f21004ee10c","55dc52bc7fa0290d00558fce","55dc52bd6f16451700843cb1","55dc52bf7fa0290d00558fcf","55dc52c055be9f21004ee10d","55dc52c27fa0290d00558fd0","55dc52c327c8180d00e68a24","55dc52c56f16451700843cb2","55dc52c67fa0290d00558fd1","55dc52c855be9f21004ee10e","55dc52c927c8180d00e68a25","55dc52cb6f16451700843cb3","55dc52cc6f16451700843cb4","55dc52cd7fa0290d00558fd2","55dc52cf27c8180d00e68a26","55dc52d155be9f21004ee10f","55dc52d37fa0290d00558fd3","55dc52d56f16451700843cb5","55dc52d67fa0290d00558fd4","55dc52d755be9f21004ee110","55dc52d97fa0290d00558fd5","55dc52da27c8180d00e68a27","55dc52dc6f16451700843cb6","55dc52dd55be9f21004ee111","55dc52df7fa0290d00558fd6","55dc52e06f16451700843cb7","55dc52e255be9f21004ee112","55dc52e355be9f21004ee113","55dc52e427c8180d00e68a28","55dc52e627c8180d00e68a29","55dc52e77fa0290d00558fd7","55dc52e97fa0290d00558fd8","55dc52ea7fa0290d00558fd9","55dc52eb27c8180d00e68a2a","55dc52ed27c8180d00e68a2b","55dc52ee27c8180d00e68a2c","55dc52ef7fa0290d00558fda","55dc52f127c8180d00e68a2d","55dc52f27fa0290d00558fdb","55dc52f37fa0290d00558fdc","55dc52f46f16451700843cb8","55dc52f627c8180d00e68a2e","55dc52f87fa0290d00558fdd","55dc52f97fa0290d00558fde","55dc52fb6f16451700843cb9","55dc52fc6f16451700843cba","55dc52fe55be9f21004ee114","55dc52ff55be9f21004ee115","55dc530055be9f21004ee116","55dc53027fa0290d00558fdf","55dc530327c8180d00e68a2f","55dc53057fa0290d00558fe0","55dc53066f16451700843cbb","55dc53077fa0290d00558fe1","55dc530927c8180d00e68a30","55dc530a6f16451700843cbc","55dc530c55be9f21004ee117","55dc530d6f16451700843cbd","55dc530e7fa0290d00558fe2","55dc531027c8180d00e68a31","55dc531255be9f21004ee118","55dc531455be9f21004ee119","55dc531527c8180d00e68a32","55dc531727c8180d00e68a33","55dc531955be9f21004ee11a","55dc531a6f16451700843cbe","55dc531b6f16451700843cbf","55dc531d55be9f21004ee11b","55dc531e27c8180d00e68a34","55dc531f27c8180d00e68a35","55dc532155be9f21004ee11c","55dc532227c8180d00e68a36","55dc53247fa0290d00558fe3","55dc53276f16451700843cc0","55dc53287fa0290d00558fe4","55dc53296f16451700843cc1","55dc532b27c8180d00e68a38","55dc532c6f16451700843cc2","55dc532d6f16451700843cc3","55dc532f55be9f21004ee11d","55dc53317fa0290d00558fe5","55dc533255be9f21004ee11e","55dc53347fa0290d00558fe6","55dc53357fa0290d00558fe7","55dc53366f16451700843cc4","55dc533827c8180d00e68a39","55dc53396f16451700843cc6","55dc533b27c8180d00e68a3a","55dc533c7fa0290d00558fe8","55dc533d27c8180d00e68a3b","55dc533f7fa0290d00558fe9","55dc534027c8180d00e68a3c","55dc534127c8180d00e68a3d","55dc534355be9f21004ee11f","55dc53466f16451700843cc7","55dc53477fa0290d00558fea","55dc534855be9f21004ee121","55dc534a55be9f21004ee122","55dc534b6f16451700843cc8","55dc534d6f16451700843cc9","55dc534e7fa0290d00558fed","55dc534f6f16451700843cca","55dc53516f16451700843ccb","55dc53526f16451700843ccc","55dc53546f16451700843ccd","55dc535555be9f21004ee123","55dc53577fa0290d00558fee","55dc53587fa0290d00558fef","55dc535a55be9f21004ee124","55dc535b55be9f21004ee125","55dc535d7fa0290d00558ff0","55dc535e6f16451700843cce","55dc536055be9f21004ee126","55dc536155be9f21004ee127","55dc53626f16451700843ccf","55dc53646f16451700843cd0","55dc53656f16451700843cd1","55dc536755be9f21004ee128","55dc536827c8180d00e68a3e","55dc536955be9f21004ee129","55dc536b55be9f21004ee12a","55dc536d55be9f21004ee12b","55dc536e6f16451700843cd2","55dc536f6f16451700843cd3","55dc53716f16451700843cd4","55dc537255be9f21004ee12c","55dc53747fa0290d00558ff8","55dc53757fa0290d00558ff9","55dc537755be9f21004ee12d","55dc537827c8180d00e68a3f","55dc537a27c8180d00e68a40","55dc537c27c8180d00e68a41","55dc537d7fa0290d00558ffa","55dc537f7fa0290d00558ffb","55dc538027c8180d00e68a42","55dc538155be9f21004ee12e","55dc538327c8180d00e68a43","55dc53856f16451700843cd5","55dc53867fa0290d00558ffc","55dc53877fa0290d00558ffd","55dc53896f16451700843cd6","55dc538a27c8180d00e68a44","55dc538b55be9f21004ee12f","55dc538d6f16451700843cd7","55dc538e27c8180d00e68a45","55dc53906f16451700843cd8","55dc53926f16451700843cd9","55dc539327c8180d00e68a46","55dc539527c8180d00e68a47","55dc539855be9f21004ee130","55dc539927c8180d00e68a48","55dc539a7fa0290d00558ffe","55dc539b27c8180d00e68a49","55dc539d55be9f21004ee131","55dc539e6f16451700843cda","55dc53a027c8180d00e68a4a","55dc53a27fa0290d00559000","55dc53a36f16451700843cdb","55dc53a427c8180d00e68a4b","55dc53a66f16451700843cdc","55dc53a77fa0290d00559001","55dc53a955be9f21004ee132","55dc53aa6f16451700843cdd","55dc53ac55be9f21004ee133","55dc53ae6f16451700843cde","55dc53af7fa0290d00559002","55dc53b16f16451700843cdf","55dc53b355be9f21004ee134","55dc53b427c8180d00e68a4c","55dc53b56f16451700843ce0","55dc53b76f16451700843ce1","55dc53b955be9f21004ee135","55dc53bb7fa0290d00559003","55dc53bc7fa0290d00559004","55dc53be6f16451700843ce2","55dc53bf55be9f21004ee136","55dc53c155be9f21004ee137","55dc53c26f16451700843ce3","55dc53c427c8180d00e68a4d","55dc53c56f16451700843ce4","55dc53c67fa0290d00559005","55dc53c855be9f21004ee138","55dc53c927c8180d00e68a4e","55dc53ca55be9f21004ee139","55dc53cc6f16451700843ce6","55dc53ce7fa0290d00559006","55dc53d07fa0290d00559007","55dc53d16f16451700843ce7","55dc53d255be9f21004ee13a","55dc53d427c8180d00e68a4f","55dc53d527c8180d00e68a50","55dc53d727c8180d00e68a51","55dc53d86f16451700843ce8","55dc53d96f16451700843ce9","55dc53db55be9f21004ee13b","55dc53dc55be9f21004ee13c","55dc53de6f16451700843cea","55dc53df27c8180d00e68a52","55dc53e127c8180d00e68a53","55dc53e255be9f21004ee13d","55dc53e46f16451700843ceb","55dc53e57fa0290d00559008","55dc53f66f16451700843cec","55dc53f76f16451700843ced","55dc53f855be9f21004ee13e","55dc53fa55be9f21004ee13f","55dc53fb7fa0290d0055900a","55dc53fd27c8180d00e68a54","55dc53ff6f16451700843cee","55dc540055be9f21004ee140","55dc540127c8180d00e68a55","55dc54036f16451700843cef","55dc540527c8180d00e68a56","55dc54067fa0290d0055900b","55dc540727c8180d00e68a57","55dc540955be9f21004ee141","55dc540a55be9f21004ee142","55dc540b7fa0290d0055900c","55dc540d27c8180d00e68a58","55dc540f7fa0290d0055900d","55dc54106f16451700843cf0","55dc541227c8180d00e68a59","55dc54136f16451700843cf1","55dc541427c8180d00e68a5a","55dc54167fa0290d0055900e","55dc54177fa0290d0055900f","55dc54197fa0290d00559010","55dc541b55be9f21004ee143","55dc541c55be9f21004ee144","55dc541e55be9f21004ee145","55dc541f27c8180d00e68a5b","55dc54206f16451700843cf3","55dc542227c8180d00e68a5c","55dc54237fa0290d00559011","55dc542427c8180d00e68a5d","55dc542627c8180d00e68a5e","55dc54276f16451700843cf4","55dc542855be9f21004ee146","55dc542a27c8180d00e68a5f","55dc542b6f16451700843cf5","55dc542d6f16451700843cf6","55dc542e6f16451700843cf7","55dc542f7fa0290d00559012","55dc54317fa0290d00559013","55dc543255be9f21004ee147","55dc543355be9f21004ee148","55dc543527c8180d00e68a60","55dc54366f16451700843cf8","55dc54377fa0290d00559014","55dc54396f16451700843cf9","55dc543a27c8180d00e68a61","55dc543c55be9f21004ee149","55dc543d27c8180d00e68a62","55dc543e6f16451700843cfa","55dc544055be9f21004ee14a","55dc544127c8180d00e68a63","55dc544355be9f21004ee14b","55dc544555be9f21004ee14c","55dc544755be9f21004ee14d","55dc54486f16451700843cfb","55dc544955be9f21004ee14e","55dc544b55be9f21004ee14f","55dc544c55be9f21004ee150","55dc544d27c8180d00e68a64","55dc544f7fa0290d00559015","55dc54516f16451700843cfc","55dc54527fa0290d00559016","55dc54547fa0290d00559017","55dc545527c8180d00e68a65","55dc54566f16451700843cfd","55dc54587fa0290d00559018","55dc54596f16451700843cfe","55dc545b55be9f21004ee151","55dc545c55be9f21004ee152","55dc545d27c8180d00e68a66","55dc545e6f16451700843cff","55dc54606f16451700843d00","55dc54617fa0290d00559019","55dc546327c8180d00e68a67","55dc546427c8180d00e68a68","55dc54667fa0290d0055901a","55dc546727c8180d00e68a69","55dc54696f16451700843d01","55dc546a55be9f21004ee153","55dc546c55be9f21004ee154","55dc546d55be9f21004ee155","55dc546f7fa0290d0055901b","55dc547027c8180d00e68a6a","55dc547155be9f21004ee156","55dc547327c8180d00e68a6b","55dc54746f16451700843d02","55dc547655be9f21004ee157","55dc54777fa0290d0055901c","55dc547827c8180d00e68a6c","55dc547a55be9f21004ee158","55dc547c27c8180d00e68a6d","55dc547d55be9f21004ee159","55dc547e7fa0290d0055901d","55dc54806f16451700843d03","55dc548255be9f21004ee15a","55dc54837fa0290d0055901f","55dc54857fa0290d00559020","55dc548627c8180d00e68a6e","55dc54887fa0290d00559021","55dc548a55be9f21004ee15b","55dc548c6f16451700843d04","55dc548d7fa0290d00559022","55dc548e6f16451700843d05","55dc548f55be9f21004ee15c","55dc54917fa0290d00559023","55dc54926f16451700843d06","55dc54947fa0290d00559024","55dc549655be9f21004ee15d","55dc54987fa0290d00559025","55dc549955be9f21004ee15e","55dc549b7fa0290d00559026","55dc549d7fa0290d00559027","55dc549e7fa0290d00559028","55dc549f6f16451700843d07","55dc54a155be9f21004ee15f","55dc54a355be9f21004ee160","55dc54a455be9f21004ee161","55dc54a66f16451700843d08","55dc54a77fa0290d00559029","55dc54aa55be9f21004ee162","55dc54ab7fa0290d0055902a","55dc54ac27c8180d00e68a6f","55dc54ae7fa0290d0055902b","55dc54af27c8180d00e68a70","55dc54b155be9f21004ee163","55dc54b26f16451700843d09","55dc54b355be9f21004ee164","55dc54b455be9f21004ee165","55dc54b66f16451700843d0a","55dc54b77fa0290d0055902c","55dc54b96f16451700843d0b","55dc54ba27c8180d00e68a71","55dc54bd55be9f21004ee166","55dc54be27c8180d00e68a72","55dc54bf27c8180d00e68a73","55dc54c127c8180d00e68a74","55dc54c26f16451700843d0c","55dc54c455be9f21004ee167","55dc54c555be9f21004ee168","55dc54c755be9f21004ee169","55dc54c87fa0290d0055902e","55dc54ca7fa0290d0055902f","55dc54cb27c8180d00e68a75","55dc54cd7fa0290d00559030","55dc54ce6f16451700843d0d","55dc54cf6f16451700843d0e","55dc54d027c8180d00e68a76","55dc54d227c8180d00e68a77","55dc54d355be9f21004ee16a","55dc54d455be9f21004ee16b","55dc54d67fa0290d00559031","55dc54d727c8180d00e68a78","55dc54d955be9f21004ee16c","55dc54da27c8180d00e68a79","55dc54db6f16451700843d0f","55dc54dd6f16451700843d10","55dc54de55be9f21004ee16d","55dc54e055be9f21004ee16e","55dc54e27fa0290d00559032","55dc54e46f16451700843d11","55dc54e57fa0290d00559033","55dc54e755be9f21004ee16f","55dc54e96f16451700843d12","55dc54ea27c8180d00e68a7a","55dc54eb6f16451700843d13","55dc54ed7fa0290d00559034","55dc54ee27c8180d00e68a7b","55dc54ef6f16451700843d14","55dc54f127c8180d00e68a7d","55dc54f255be9f21004ee170","55dc54f355be9f21004ee171","55dc54f555be9f21004ee172","55dc54f66f16451700843d15","55dc54f727c8180d00e68a7e","55dc54f927c8180d00e68a7f","55dc54fa55be9f21004ee173","55dc54fb6f16451700843d16","55dc54fd27c8180d00e68a80","55dc54fe27c8180d00e68a81","55dc550027c8180d00e68a82","55dc55026f16451700843d17","55dc55036f16451700843d18","55dc550555be9f21004ee174","55dc55067fa0290d00559035","55dc550755be9f21004ee175","55dc55086f16451700843d19","55dc550a6f16451700843d1a","55dc550c7fa0290d00559036","55dc550d55be9f21004ee176","55dc550f6f16451700843d1b","55dc551027c8180d00e68a83","55dc55127fa0290d00559037","55dc551327c8180d00e68a84","55dc551455be9f21004ee177","55dc551655be9f21004ee178","55dc55176f16451700843d1c","55dc551955be9f21004ee179","55dc551a7fa0290d00559038","55dc551c6f16451700843d1d","55dc551d27c8180d00e68a85","55dc551e7fa0290d00559039","55dc551f27c8180d00e68a86","55dc552127c8180d00e68a87","55dc55227fa0290d0055903a","55dc552455be9f21004ee17a","55dc55256f16451700843d1e","55dc552755be9f21004ee17b","55dc55286f16451700843d1f","55dc55296f16451700843d20","55dc552b6f16451700843d21","55dc552c7fa0290d0055903b","55dc552e7fa0290d0055903c","55dc552f7fa0290d0055903d","55dc55317fa0290d0055903e","55dc55327fa0290d0055903f","55dc553455be9f21004ee17c","55dc553527c8180d00e68a88","55dc553627c8180d00e68a89","55dc55376f16451700843d22","55dc553955be9f21004ee17d","55dc553a6f16451700843d23","55dc553c55be9f21004ee17e","55dc553d27c8180d00e68a8a","55dc553f6f16451700843d24","55dc554127c8180d00e68a8b","55dc55426f16451700843d25","55dc55447fa0290d00559040","55dc55456f16451700843d26","55dc55467fa0290d00559041","55dc55487fa0290d00559042","55dc55496f16451700843d28","55dc554a55be9f21004ee17f","55dc554b7fa0290d00559043","55dc554d6f16451700843d29","55dc554e27c8180d00e68a8c","55dc555055be9f21004ee180","55dc55526f16451700843d2a","55dc55536f16451700843d2b","55dc555455be9f21004ee181","55dc55567fa0290d00559045","55dc55577fa0290d00559046","55dc555927c8180d00e68a8d","55dc555a7fa0290d00559047","55dc555b7fa0290d00559048","55dc555c27c8180d00e68a8e","55dc555e55be9f21004ee182","55dc555f6f16451700843d2c","55dc55607fa0290d00559049","55dc55626f16451700843d2d","55dc55637fa0290d0055904a","55dc556455be9f21004ee183","55dc556655be9f21004ee184","55dc556727c8180d00e68a8f","55dc55687fa0290d0055904b","55dc556a6f16451700843d2e","55dc556b27c8180d00e68a90","55dc556c27c8180d00e68a91","55dc556e6f16451700843d2f","55dc556f6f16451700843d30","55dc55717fa0290d0055904c","55dc55726f16451700843d31","55dc55737fa0290d0055904d","55dc557555be9f21004ee185","55dc55776f16451700843d32","55dc557827c8180d00e68a92","55dc557955be9f21004ee186","55dc557b7fa0290d0055904e","55dc557c6f16451700843d33","55dc557d7fa0290d0055904f","55dc557f27c8180d00e68a93","55dc55807fa0290d00559050","55dc55816f16451700843d34","55dc558327c8180d00e68a94","55dc558427c8180d00e68a95","55dc558555be9f21004ee187","55dc558755be9f21004ee188","55dc558827c8180d00e68a96","55dc558a27c8180d00e68a97","55dc558b27c8180d00e68a98","55dc558c55be9f21004ee189","55dc558e7fa0290d00559051","55dc558f6f16451700843d35","55dc559127c8180d00e68a99","55dc559327c8180d00e68a9a","55dc559455be9f21004ee18a","55dc559627c8180d00e68a9b","55dc55976f16451700843d36","55dc559855be9f21004ee18b","55dc559a55be9f21004ee18c","55dc559b55be9f21004ee18d","55dc559c27c8180d00e68a9c","55dc559e7fa0290d00559052","55dc559f6f16451700843d37","55dc55a055be9f21004ee18e","55dc55a255be9f21004ee18f","55dc55a455be9f21004ee190","55dc55a527c8180d00e68a9d","55dc55a67fa0290d00559053","55dc55a855be9f21004ee191","55dc55aa6f16451700843d38","55dc55ab6f16451700843d39","55dc55ad6f16451700843d3a","55dc55ae55be9f21004ee192","55dc55af6f16451700843d3b","55dc55b17fa0290d00559054","55dc55b255be9f21004ee193","55dc55b427c8180d00e68a9e","55dc55b527c8180d00e68a9f","55dc55b76f16451700843d3c","55dc55b86f16451700843d3d","55dc55ba6f16451700843d3e","55dc55bb6f16451700843d3f","55dc55bc6f16451700843d40","55dc55be6f16451700843d41","55dc55bf6f16451700843d42","55dc55c07fa0290d00559055","55dc55ca55be9f21004ee194","55dc55cb55be9f21004ee195","55dc55cd27c8180d00e68aa0","55dc55ce55be9f21004ee196","55dc55cf55be9f21004ee197","55dc55d127c8180d00e68aa1","55dc55d255be9f21004ee198","55dc55d47fa0290d00559056","55dc55d56f16451700843d43","55dc55d67fa0290d00559057","55dc55d86f16451700843d44","55dc55da7fa0290d00559058","55dc55db27c8180d00e68aa2","55dc55dc6f16451700843d45","55dc55de55be9f21004ee199","55dc55df7fa0290d00559059","55dc55e155be9f21004ee19a","55dc55e27fa0290d0055905b","55dc55e355be9f21004ee19b","55dc55e56f16451700843d46","55dc55e66f16451700843d47","55dc55e855be9f21004ee19c","55dc55e96f16451700843d48","55dc55eb55be9f21004ee19d","55dc55ec6f16451700843d49","55dc55ed6f16451700843d4a","55dc55ef6f16451700843d4b","55dc55f055be9f21004ee1a2","55dc55f227c8180d00e68aa8","55dc55f427c8180d00e68aa9","55dc55f56f16451700843d4c","55dc55f655be9f21004ee1a4","55dc55f87fa0290d0055905c","55dc55f97fa0290d0055905d","55dc55fa7fa0290d0055905e","55dc55fb7fa0290d0055905f","55dc55fd27c8180d00e68aaa","55dc55fe27c8180d00e68aab","55dc55ff6f16451700843d4d","55dc56017fa0290d00559060","55dc560255be9f21004ee1a5","55dc56046f16451700843d4e","55dc56067fa0290d00559061","55dc56076f16451700843d4f","55dc56087fa0290d00559062","55dc560a55be9f21004ee1a6","55dc560b27c8180d00e68aac","55dc560d27c8180d00e68aad","55dc560e27c8180d00e68aae","55dc561055be9f21004ee1a7","55dc561155be9f21004ee1a8","55dc56126f16451700843d50","55dc561427c8180d00e68aaf","55dc56157fa0290d00559063","55dc56176f16451700843d51","55dc56196f16451700843d52","55dc561a6f16451700843d53","55dc561c6f16451700843d54","55dc561d7fa0290d00559064","55dc561f55be9f21004ee1a9","55dc562055be9f21004ee1aa","55dc56217fa0290d00559065","55dc562355be9f21004ee1ab","55dc562427c8180d00e68ab0","55dc562527c8180d00e68ab1","55dc56277fa0290d00559066","55dc562827c8180d00e68ab2","55dc562a6f16451700843d55","55dc562e7fa0290d00559067","55dc563027c8180d00e68ab3","55dc563155be9f21004ee1ac","55dc563355be9f21004ee1ad","55dc563427c8180d00e68ab4","55dc563527c8180d00e68ab5","55dc563755be9f21004ee1ae","55dc56387fa0290d00559068","55dc563955be9f21004ee1af","55dc563a7fa0290d00559069","55dc563c7fa0290d0055906a","55dc563d6f16451700843d56","55dc563e6f16451700843d57","55dc56407fa0290d0055906b","55dc564155be9f21004ee1b0","55dc56436f16451700843d58","55dc564555be9f21004ee1b1","55dc564655be9f21004ee1b2","55dc564727c8180d00e68ab6","55dc564955be9f21004ee1b3","55dc564a6f16451700843d59","55dc564c7fa0290d0055906c","55dc564d6f16451700843d5a","55dc564f27c8180d00e68ab7","55dc565027c8180d00e68ab8","55dc56526f16451700843d5b","55dc565327c8180d00e68ab9","55dc56556f16451700843d5c","55dc56566f16451700843d5d","55dc565755be9f21004ee1b4","55dc56597fa0290d0055906d","55dc565b55be9f21004ee1b5","55dc565c7fa0290d0055906e","55dc565d55be9f21004ee1b6","55dc565f7fa0290d0055906f","55dc56616f16451700843d5e","55dc566327c8180d00e68abb","55dc566555be9f21004ee1b7","55dc56667fa0290d00559070","55dc56677fa0290d00559071","55dc56687fa0290d00559072","55dc566a6f16451700843d5f","55dc566b6f16451700843d60","55dc566d27c8180d00e68abc","55dc566f7fa0290d00559073","55dc567127c8180d00e68abd","55dc567327c8180d00e68abe","55dc567427c8180d00e68abf","55dc567627c8180d00e68ac0","55dc56776f16451700843d63","55dc567855be9f21004ee1b8","55dc567a27c8180d00e68ac1","55dc567c6f16451700843d64","55dc567d6f16451700843d65","55dc567e6f16451700843d66","55dc568055be9f21004ee1b9","55dc56816f16451700843d67","55dc56857fa0290d00559076","55dc56876f16451700843d68","55dc56887fa0290d00559077","55dc56897fa0290d00559078","55dc568b27c8180d00e68ac2","55dc568c55be9f21004ee1ba","55dc568d27c8180d00e68ac3","55dc568f6f16451700843d69","55dc569027c8180d00e68ac4","55dc569155be9f21004ee1bb","55dc569355be9f21004ee1bc","55dc569527c8180d00e68ac5","55dc569627c8180d00e68ac6","55dc569727c8180d00e68ac7","55dc56987fa0290d00559079","55dc569a27c8180d00e68ac8","55dc569b7fa0290d0055907a","55dc569d55be9f21004ee1bd","55dc569f27c8180d00e68ac9","55dc56a06f16451700843d6a","55dc56a127c8180d00e68aca","55dc56a355be9f21004ee1be","55dc56a455be9f21004ee1bf","55dc56a67fa0290d0055907b","55dc56a77fa0290d0055907c","55dc56a955be9f21004ee1c0","55dc56aa7fa0290d0055907d","55dc56ac55be9f21004ee1c1","55dc56ae27c8180d00e68acb","55dc56af27c8180d00e68acc","55dc56b16f16451700843d6b","55dc56b255be9f21004ee1c2","55dc56b427c8180d00e68acd","55dc56b555be9f21004ee1c3","55dc56b755be9f21004ee1c4","55dc56b87fa0290d0055907e","55dc56ba55be9f21004ee1c5","55dc56bc6f16451700843d6c","55dc56bd7fa0290d0055907f","55dc56be6f16451700843d6d","55dc56bf7fa0290d00559080","55dc56c127c8180d00e68ace","55dc56c255be9f21004ee1c6","55dc56c46f16451700843d6e","55dc56c57fa0290d00559081","55dc56c67fa0290d00559082","55dc56c855be9f21004ee1c7","55dc56c96f16451700843d6f","55dc56cb27c8180d00e68acf","55dc56cd55be9f21004ee1c8","55dc56cf27c8180d00e68ad0","55dc56d07fa0290d00559083","55dc56d27fa0290d00559084","55dc56d36f16451700843d70","55dc56d555be9f21004ee1c9","55dc56d66f16451700843d71","55dc56d755be9f21004ee1ca","55dc56da27c8180d00e68ad1","55dc56db55be9f21004ee1cb","55dc56dd6f16451700843d72","55dc56de55be9f21004ee1cc","55dc56df27c8180d00e68ad2","55dc56e17fa0290d00559085","55dc56e355be9f21004ee1cd","55dc56e427c8180d00e68ad3","55dc56e56f16451700843d73","55dc56e76f16451700843d74","55dc56e827c8180d00e68ad4","55dc56ea55be9f21004ee1ce","55dc56eb7fa0290d00559086","55dc56ec27c8180d00e68ad5","55dc56ee6f16451700843d75","55dc56f255be9f21004ee1cf","55dc56f46f16451700843d76","55dc56f66f16451700843d77","55dc56f727c8180d00e68ad6","55dc56f86f16451700843d78","55dc56fa27c8180d00e68ad7","55dc56fb7fa0290d00559087","55dc56fc7fa0290d00559088","55dc56fe27c8180d00e68ad8","55dc57007fa0290d00559089","55dc57027fa0290d0055908a","55dc570427c8180d00e68ad9","55dc570527c8180d00e68ada","55dc570655be9f21004ee1d0","55dc570827c8180d00e68adb","55dc57097fa0290d0055908b","55dc570b55be9f21004ee1d1","55dc570c7fa0290d0055908c","55dc570e27c8180d00e68adc","55dc570f55be9f21004ee1d2","55dc57106f16451700843d79","55dc57116f16451700843d7a","55dc57136f16451700843d7b","55dc57147fa0290d0055908d","55dc57157fa0290d0055908e","55dc57177fa0290d0055908f","55dc571827c8180d00e68ade","55dc571927c8180d00e68adf","55dc571b27c8180d00e68ae0","55dc571c55be9f21004ee1d4","55dc571e7fa0290d00559090","55dc571f6f16451700843d7c","55dc572155be9f21004ee1d5","55dc572227c8180d00e68ae1","55dc57247fa0290d00559091","55dc57267fa0290d00559092","55dc57276f16451700843d7d","55dc572927c8180d00e68ae2","55dc572a27c8180d00e68ae3","55dc572c55be9f21004ee1d7","55dc572d27c8180d00e68ae4","55dc572f55be9f21004ee1d8","55dc57307fa0290d00559093","55dc57326f16451700843d7e","55dc57337fa0290d00559094","55dc573627c8180d00e68ae5","55dc57377fa0290d00559095","55dc573855be9f21004ee1da","55dc573a6f16451700843d7f","55dc573b6f16451700843d80","55dc573d7fa0290d00559096","55dc573e7fa0290d00559097","55dc574027c8180d00e68ae6","55dc57426f16451700843d81","55dc57436f16451700843d82","55dc574555be9f21004ee1db","55dc574627c8180d00e68ae7","55dc574855be9f21004ee1dc","55dc57497fa0290d00559098","55dc574a27c8180d00e68ae8","55dc574c7fa0290d00559099","55dc574d6f16451700843d83","55dc574f55be9f21004ee1dd","55dc575027c8180d00e68ae9","55dc57516f16451700843d84","55dc57537fa0290d0055909a","55dc57547fa0290d0055909b","55dc57567fa0290d0055909c","55dc57577fa0290d0055909d","55dc57586f16451700843d85","55dc575a27c8180d00e68aea","55dc575b27c8180d00e68aeb","55dc575c6f16451700843d86","55dc575e6f16451700843d87","55dc575f6f16451700843d88","55dc57606f16451700843d89","55dc576155be9f21004ee1de","55dc57637fa0290d0055909e","55dc57647fa0290d0055909f","55dc57656f16451700843d8a","55dc576755be9f21004ee1df","55dc576855be9f21004ee1e0","55dc576955be9f21004ee1e1","55dc576b55be9f21004ee1e2","55dc576d27c8180d00e68aec","55dc576f55be9f21004ee1e3","55dc577527c8180d00e68aed","55dc577755be9f21004ee1e4","55dc57786f16451700843d8b","55dc577955be9f21004ee1e5","55dc577b7fa0290d005590a0","55dc577c7fa0290d005590a1","55dc577e55be9f21004ee1e6","55dc578027c8180d00e68aee","55dc57826f16451700843d8c","55dc578355be9f21004ee1e7","55dc57857fa0290d005590a2","55dc578655be9f21004ee1e8","55dc578827c8180d00e68aef","55dc57896f16451700843d8d","55dc578a55be9f21004ee1e9","55dc578c6f16451700843d8e","55dc578d6f16451700843d8f","55dc578f7fa0290d005590a3","55dc579027c8180d00e68af0","55dc579155be9f21004ee1ea","55dc57937fa0290d005590a4","55dc57947fa0290d005590a5","55dc57967fa0290d005590a6","55dc579755be9f21004ee1eb","55dc579927c8180d00e68af1","55dc579a6f16451700843d91","55dc579c7fa0290d005590a7","55dc579d6f16451700843d92","55dc579f6f16451700843d93","55dc57a055be9f21004ee1ec","55dc57a26f16451700843d94","55dc57a36f16451700843d95","55dc57a455be9f21004ee1ed","55dc57a655be9f21004ee1ee","55dc57a727c8180d00e68af2","55dc57a827c8180d00e68af3","55dc57aa55be9f21004ee1ef","55dc57ac55be9f21004ee1f0","55dc57ad7fa0290d005590a8","55dc57af7fa0290d005590a9","55dc57b027c8180d00e68af4","55dc57b16f16451700843d97","55dc57b327c8180d00e68af5","55dc57b427c8180d00e68af6","55dc57b67fa0290d005590aa","55dc57b827c8180d00e68af7","55dc57b927c8180d00e68af8","55dc57ba55be9f21004ee1f1","55dc57bc7fa0290d005590ab","55dc57bd27c8180d00e68af9","55dc57bf55be9f21004ee1f2","55dc57c06f16451700843d98","55dc57c26f16451700843d99","55dc57c37fa0290d005590ac","55dc57c47fa0290d005590ad","55dc57c627c8180d00e68afa","55dc57c827c8180d00e68afb","55dc57c97fa0290d005590ae","55dc57cb7fa0290d005590af","55dc57cc7fa0290d005590b0","55dc57cd27c8180d00e68afc","55dc57cf6f16451700843d9b","55dc57d027c8180d00e68afd","55dc57d155be9f21004ee1f3","55dc57d355be9f21004ee1f4","55dc57d47fa0290d005590b1","55dc57d57fa0290d005590b2","55dc57d727c8180d00e68afe","55dc57d97fa0290d005590b3","55dc57da7fa0290d005590b4","55dc57f927c8180d00e68aff","55dc57fa6f16451700843d9e","55dc57fc55be9f21004ee1f5","55dc57fe6f16451700843d9f","55dc57ff6f16451700843da0"],"version":"547bd9974366a708001b3c16","title":"Getting Started","api":{"auth":"never","basic_auth":false,"params":[],"results":{"codes":[]},"try":true,"url":""},"project":"54343b44edce040800409329","slug":"getting-started","sync_unique":"","user":"54343b31edce040800409327","excerpt":"","link_url":"","order":0,"createdAt":"2014-10-07T19:13:08.421Z","hidden":false,"link_external":false,"type":"basic","__v":1751,"body":"Welcome to the API docs for [X.IO](https://control.x.io). Below you will find information on version 1 of the X.IO API. Please [let us know](mailto:help@x.io) if you have any questions.\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Unstable API\",\n  \"body\": \"While we are doing our best to keep these API endpoints stable, v1.0 has not been frozen. It is possible the APIs will change.\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Swagger Specification\",\n  \"body\": \"You can use [Swagger](http://swagger.io) to interact with the X.IO API. Our API specification is available at [https://api.x.io/docs/api-docs.json](https://api.x.io/docs/api-docs.json).\"\n}\n[/block]","category":"547bd9974366a708001b3c17","childrenPages":[]}

Getting Started


Welcome to the API docs for [X.IO](https://control.x.io). Below you will find information on version 1 of the X.IO API. Please [let us know](mailto:help@x.io) if you have any questions. [block:callout] { "type": "danger", "title": "Unstable API", "body": "While we are doing our best to keep these API endpoints stable, v1.0 has not been frozen. It is possible the APIs will change." } [/block] [block:callout] { "type": "info", "title": "Swagger Specification", "body": "You can use [Swagger](http://swagger.io) to interact with the X.IO API. Our API specification is available at [https://api.x.io/docs/api-docs.json](https://api.x.io/docs/api-docs.json)." } [/block]
Welcome to the API docs for [X.IO](https://control.x.io). Below you will find information on version 1 of the X.IO API. Please [let us know](mailto:help@x.io) if you have any questions. [block:callout] { "type": "danger", "title": "Unstable API", "body": "While we are doing our best to keep these API endpoints stable, v1.0 has not been frozen. It is possible the APIs will change." } [/block] [block:callout] { "type": "info", "title": "Swagger Specification", "body": "You can use [Swagger](http://swagger.io) to interact with the X.IO API. Our API specification is available at [https://api.x.io/docs/api-docs.json](https://api.x.io/docs/api-docs.json)." } [/block]
{"_id":"547bd9984366a708001b3c1b","version":"547bd9974366a708001b3c16","api":{"url":"","auth":"never","results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"basic_auth":false,"try":true,"params":[]},"createdAt":"2014-12-01T02:34:18.932Z","project":"54343b44edce040800409329","sync_unique":"","updates":["55cb8b1150046e3700d90f9d"],"__v":1,"category":"547bd9974366a708001b3c17","excerpt":"","link_url":"","hidden":false,"order":1,"title":"Using the API","type":"basic","user":"54343b31edce040800409327","body":"## JSON & JSONP Response\nAll requests and responses from the X.IO API are formatted in JSON. All **GET** calls support JSONP callbacks by adding a query string with the value of **\"cb=myCallback\"** to the URL, where *myCallback* is the name of the callback function.\n\n## HTTPS and SSL\nThe X.IO API is only available over SSL. Unencrypted HTTP requests are not supported.","githubsync":"","link_external":false,"slug":"using-the-api","childrenPages":[]}

Using the API


## JSON & JSONP Response All requests and responses from the X.IO API are formatted in JSON. All **GET** calls support JSONP callbacks by adding a query string with the value of **"cb=myCallback"** to the URL, where *myCallback* is the name of the callback function. ## HTTPS and SSL The X.IO API is only available over SSL. Unencrypted HTTP requests are not supported.
## JSON & JSONP Response All requests and responses from the X.IO API are formatted in JSON. All **GET** calls support JSONP callbacks by adding a query string with the value of **"cb=myCallback"** to the URL, where *myCallback* is the name of the callback function. ## HTTPS and SSL The X.IO API is only available over SSL. Unencrypted HTTP requests are not supported.
{"_id":"547bd9984366a708001b3c1c","sync_unique":"","createdAt":"2014-12-01T02:36:19.753Z","hidden":false,"link_url":"","title":"Authentication","type":"basic","version":"547bd9974366a708001b3c16","__v":0,"body":"API requests are authenticated with an API key pair. This key pair is made up of a **Key ID** and a **Secret Key**.\n\nYou can use your API key pair to authenticate requests in one of the following ways:\n\n- [HTTP Headers](#def-http-header-auth)\n- [Request Signatures](#def-request-sig-auth)\n[block:html]\n{\n  \"html\": \"<a name=\\\"def-http-header-auth\\\"></a>\"\n}\n[/block]\n## HTTP Header Authentication\nTo use HTTP Header authentication, just add the following headers to all requests:\n\n        XIO-API-Key-ID: key-id\n        XIO-API-Secret-Key: secret-key\n[block:html]\n{\n  \"html\": \"<a name=\\\"def-request-sig-auth\\\"></a>\"\n}\n[/block]\n## Request Signature Authentication\nSignature authentication is an alternative to header authentication when you want to send requests through an un-trusted 3rd party (for example, a users browser).\n\nWe'll use the following request to demonstrate request signature creation:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /v1/streams HTTP/1.1\\nAccept: */*\\nConnection: close\\nContent-Type: application/x-www-form-urlencoded\\nHost: api.x.io\\n\\napplication=10a0fb0c527f4acab9abd454975488fa&version=4713fa30b76b4932a3a5c145618228d1&file_provider_url=https%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123\",\n      \"language\": \"http\"\n    }\n  ]\n}\n[/block]\nTo produce a signature, start by determining the HTTP method and URL of the request. These two are known when creating the request, so they are easy to obtain.\n\n**HTTP Method**: `POST`\n\nThe base URL is the URL to which the request is directed, minus any query string or hash parameters. It is important to use the correct protocol here, so make sure that the \"https://\" or \"http://\" portion of the URL matches the actual request sent to the API. You should always be using \"https://\" with the X.IO API.\n\n**Base URL**: `https://api.x.io/v1/streams`\n\nNext, gather all of the parameters included in the request. There are two such locations for these additional parameters - the URL (as part of the querystring) and the request body. You will need to add the following parameters to the request:\n\nAttribute | Description\n--------- | -----------\n`expires` | unix timestamp the request expires\n`key_id` | the key id of your API key pair\n\nIn the HTTP request the parameters are URL encoded, but you should collect the raw values. These values need to be encoded into a single string which will be used later on. The process to build the string is very specific:\n\n1. Sort the list of parameters alphabetically by key.\n2. For each key/value pair:\n    1. Append the key to the output string.\n    2. Append the '=' character to the output string.\n    3. Append the value to the output string.\n3. If there are more key/value pairs remaining, append a '&' character to the output string.\n\nThe following string will be produced by repeating these steps with the parameters collected above:\n\n**Parameter string**: `application=10a0fb0c527f4acab9abd454975488fa&expires=1401589102&file_provider_url=https://example.com/file_provider.json?auth_key=abcde123&key_id=LSBE0QDMLZOU7JPCZACBI4BWXE&version=4713fa30b76b4932a3a5c145618228d1`\n\nThe three values collected so far must be joined to make a single string, from which the signature will be generated. This is called the **signature base string**.\n\nTo encode the HTTP method, base URL, and parameter string into a single string:\n\n1. Convert the HTTP Method to uppercase and set the output string equal to this value.\n2. Append the '&' character to the output string.\n3. Percent encode the URL and append it to the output string.\n4. Append the '&' character to the output string.\n5. Percent encode the parameter string and append it to the output string.\n\nThis will produce the following:\n\n**Signature base string**: `POST&https%3A%2F%2Fapi.x.io%2Fv1%2Fstreams&application%3D10a0fb0c527f4acab9abd454975488fa%26expires%3D1401589102%26file_provider_url%3Dhttps%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123%26key_id%3DLSBE0QDMLZOU7JPCZACBI4BWXE%26version%3D4713fa30b76b4932a3a5c145618228d1`\n\nThe signature base string should contain exactly 2 ampersand '&' characters. The percent '%' characters in the parameter string should be encoded as %26 in the signature base string.\n\nFinally, the signature is calculated by passing the signature base string and API secret key to the HMAC-SHA256 hashing algorithm.\n\nThe output of the HMAC signing function is a binary string. This needs to be [URL-safe base64 encoded](#def-base64-encoding) to produce the signature string. For example, the output given the base string and signing key given on this page is `A1 BB 97 55 E5 4D F0 8C 21 75 4E 60 25 66 63 9E 90 3D 7E 5E AD 64 F8 DE C7 9F DE F9 3C 53 F6 C3`. That value, when converted to URL-safe base64, is the signature for this request:\n\n**Signature**: `obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM`\n\nOnce you have the final signature value, add a parameter to your request called `signature` with the calculated signature value.\n[block:html]\n{\n  \"html\": \"<a name=\\\"def-base64-encoding\\\"></a>\"\n}\n[/block]\n## URL-Safe Base64 Encoding\nWhen passing binary data to the X.IO API, it must be base64 encoded using the following algorithm:\n\n1. Base64 encode data to create output string.\n2. From output string, replace all '+' with '-' and all '/' with '_'.\n3. Strip any '=' from the output string.\n\nA simple Ruby method that performs the above function looks like this:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"def safe_b64_encode(msg)\\n  Base64.strict_encode64(msg).tr(\\\"+/\\\", \\\"-_\\\").gsub('=', '')\\nend\",\n      \"language\": \"ruby\"\n    }\n  ]\n}\n[/block]","category":"547bd9974366a708001b3c17","excerpt":"","project":"54343b44edce040800409329","user":"54343b31edce040800409327","updates":[],"api":{"url":"","auth":"never","results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"basic_auth":false,"try":true,"params":[]},"githubsync":"","link_external":false,"order":2,"slug":"authentication","childrenPages":[]}

Authentication


API requests are authenticated with an API key pair. This key pair is made up of a **Key ID** and a **Secret Key**. You can use your API key pair to authenticate requests in one of the following ways: - [HTTP Headers](#def-http-header-auth) - [Request Signatures](#def-request-sig-auth) [block:html] { "html": "<a name=\"def-http-header-auth\"></a>" } [/block] ## HTTP Header Authentication To use HTTP Header authentication, just add the following headers to all requests: XIO-API-Key-ID: key-id XIO-API-Secret-Key: secret-key [block:html] { "html": "<a name=\"def-request-sig-auth\"></a>" } [/block] ## Request Signature Authentication Signature authentication is an alternative to header authentication when you want to send requests through an un-trusted 3rd party (for example, a users browser). We'll use the following request to demonstrate request signature creation: [block:code] { "codes": [ { "code": "POST /v1/streams HTTP/1.1\nAccept: */*\nConnection: close\nContent-Type: application/x-www-form-urlencoded\nHost: api.x.io\n\napplication=10a0fb0c527f4acab9abd454975488fa&version=4713fa30b76b4932a3a5c145618228d1&file_provider_url=https%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123", "language": "http" } ] } [/block] To produce a signature, start by determining the HTTP method and URL of the request. These two are known when creating the request, so they are easy to obtain. **HTTP Method**: `POST` The base URL is the URL to which the request is directed, minus any query string or hash parameters. It is important to use the correct protocol here, so make sure that the "https://" or "http://" portion of the URL matches the actual request sent to the API. You should always be using "https://" with the X.IO API. **Base URL**: `https://api.x.io/v1/streams` Next, gather all of the parameters included in the request. There are two such locations for these additional parameters - the URL (as part of the querystring) and the request body. You will need to add the following parameters to the request: Attribute | Description --------- | ----------- `expires` | unix timestamp the request expires `key_id` | the key id of your API key pair In the HTTP request the parameters are URL encoded, but you should collect the raw values. These values need to be encoded into a single string which will be used later on. The process to build the string is very specific: 1. Sort the list of parameters alphabetically by key. 2. For each key/value pair: 1. Append the key to the output string. 2. Append the '=' character to the output string. 3. Append the value to the output string. 3. If there are more key/value pairs remaining, append a '&' character to the output string. The following string will be produced by repeating these steps with the parameters collected above: **Parameter string**: `application=10a0fb0c527f4acab9abd454975488fa&expires=1401589102&file_provider_url=https://example.com/file_provider.json?auth_key=abcde123&key_id=LSBE0QDMLZOU7JPCZACBI4BWXE&version=4713fa30b76b4932a3a5c145618228d1` The three values collected so far must be joined to make a single string, from which the signature will be generated. This is called the **signature base string**. To encode the HTTP method, base URL, and parameter string into a single string: 1. Convert the HTTP Method to uppercase and set the output string equal to this value. 2. Append the '&' character to the output string. 3. Percent encode the URL and append it to the output string. 4. Append the '&' character to the output string. 5. Percent encode the parameter string and append it to the output string. This will produce the following: **Signature base string**: `POST&https%3A%2F%2Fapi.x.io%2Fv1%2Fstreams&application%3D10a0fb0c527f4acab9abd454975488fa%26expires%3D1401589102%26file_provider_url%3Dhttps%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123%26key_id%3DLSBE0QDMLZOU7JPCZACBI4BWXE%26version%3D4713fa30b76b4932a3a5c145618228d1` The signature base string should contain exactly 2 ampersand '&' characters. The percent '%' characters in the parameter string should be encoded as %26 in the signature base string. Finally, the signature is calculated by passing the signature base string and API secret key to the HMAC-SHA256 hashing algorithm. The output of the HMAC signing function is a binary string. This needs to be [URL-safe base64 encoded](#def-base64-encoding) to produce the signature string. For example, the output given the base string and signing key given on this page is `A1 BB 97 55 E5 4D F0 8C 21 75 4E 60 25 66 63 9E 90 3D 7E 5E AD 64 F8 DE C7 9F DE F9 3C 53 F6 C3`. That value, when converted to URL-safe base64, is the signature for this request: **Signature**: `obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM` Once you have the final signature value, add a parameter to your request called `signature` with the calculated signature value. [block:html] { "html": "<a name=\"def-base64-encoding\"></a>" } [/block] ## URL-Safe Base64 Encoding When passing binary data to the X.IO API, it must be base64 encoded using the following algorithm: 1. Base64 encode data to create output string. 2. From output string, replace all '+' with '-' and all '/' with '_'. 3. Strip any '=' from the output string. A simple Ruby method that performs the above function looks like this: [block:code] { "codes": [ { "code": "def safe_b64_encode(msg)\n Base64.strict_encode64(msg).tr(\"+/\", \"-_\").gsub('=', '')\nend", "language": "ruby" } ] } [/block]
API requests are authenticated with an API key pair. This key pair is made up of a **Key ID** and a **Secret Key**. You can use your API key pair to authenticate requests in one of the following ways: - [HTTP Headers](#def-http-header-auth) - [Request Signatures](#def-request-sig-auth) [block:html] { "html": "<a name=\"def-http-header-auth\"></a>" } [/block] ## HTTP Header Authentication To use HTTP Header authentication, just add the following headers to all requests: XIO-API-Key-ID: key-id XIO-API-Secret-Key: secret-key [block:html] { "html": "<a name=\"def-request-sig-auth\"></a>" } [/block] ## Request Signature Authentication Signature authentication is an alternative to header authentication when you want to send requests through an un-trusted 3rd party (for example, a users browser). We'll use the following request to demonstrate request signature creation: [block:code] { "codes": [ { "code": "POST /v1/streams HTTP/1.1\nAccept: */*\nConnection: close\nContent-Type: application/x-www-form-urlencoded\nHost: api.x.io\n\napplication=10a0fb0c527f4acab9abd454975488fa&version=4713fa30b76b4932a3a5c145618228d1&file_provider_url=https%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123", "language": "http" } ] } [/block] To produce a signature, start by determining the HTTP method and URL of the request. These two are known when creating the request, so they are easy to obtain. **HTTP Method**: `POST` The base URL is the URL to which the request is directed, minus any query string or hash parameters. It is important to use the correct protocol here, so make sure that the "https://" or "http://" portion of the URL matches the actual request sent to the API. You should always be using "https://" with the X.IO API. **Base URL**: `https://api.x.io/v1/streams` Next, gather all of the parameters included in the request. There are two such locations for these additional parameters - the URL (as part of the querystring) and the request body. You will need to add the following parameters to the request: Attribute | Description --------- | ----------- `expires` | unix timestamp the request expires `key_id` | the key id of your API key pair In the HTTP request the parameters are URL encoded, but you should collect the raw values. These values need to be encoded into a single string which will be used later on. The process to build the string is very specific: 1. Sort the list of parameters alphabetically by key. 2. For each key/value pair: 1. Append the key to the output string. 2. Append the '=' character to the output string. 3. Append the value to the output string. 3. If there are more key/value pairs remaining, append a '&' character to the output string. The following string will be produced by repeating these steps with the parameters collected above: **Parameter string**: `application=10a0fb0c527f4acab9abd454975488fa&expires=1401589102&file_provider_url=https://example.com/file_provider.json?auth_key=abcde123&key_id=LSBE0QDMLZOU7JPCZACBI4BWXE&version=4713fa30b76b4932a3a5c145618228d1` The three values collected so far must be joined to make a single string, from which the signature will be generated. This is called the **signature base string**. To encode the HTTP method, base URL, and parameter string into a single string: 1. Convert the HTTP Method to uppercase and set the output string equal to this value. 2. Append the '&' character to the output string. 3. Percent encode the URL and append it to the output string. 4. Append the '&' character to the output string. 5. Percent encode the parameter string and append it to the output string. This will produce the following: **Signature base string**: `POST&https%3A%2F%2Fapi.x.io%2Fv1%2Fstreams&application%3D10a0fb0c527f4acab9abd454975488fa%26expires%3D1401589102%26file_provider_url%3Dhttps%3A%2F%2Fexample.com%2Ffile_provider.json%3Fauth_key%3Dabcde123%26key_id%3DLSBE0QDMLZOU7JPCZACBI4BWXE%26version%3D4713fa30b76b4932a3a5c145618228d1` The signature base string should contain exactly 2 ampersand '&' characters. The percent '%' characters in the parameter string should be encoded as %26 in the signature base string. Finally, the signature is calculated by passing the signature base string and API secret key to the HMAC-SHA256 hashing algorithm. The output of the HMAC signing function is a binary string. This needs to be [URL-safe base64 encoded](#def-base64-encoding) to produce the signature string. For example, the output given the base string and signing key given on this page is `A1 BB 97 55 E5 4D F0 8C 21 75 4E 60 25 66 63 9E 90 3D 7E 5E AD 64 F8 DE C7 9F DE F9 3C 53 F6 C3`. That value, when converted to URL-safe base64, is the signature for this request: **Signature**: `obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM` Once you have the final signature value, add a parameter to your request called `signature` with the calculated signature value. [block:html] { "html": "<a name=\"def-base64-encoding\"></a>" } [/block] ## URL-Safe Base64 Encoding When passing binary data to the X.IO API, it must be base64 encoded using the following algorithm: 1. Base64 encode data to create output string. 2. From output string, replace all '+' with '-' and all '/' with '_'. 3. Strip any '=' from the output string. A simple Ruby method that performs the above function looks like this: [block:code] { "codes": [ { "code": "def safe_b64_encode(msg)\n Base64.strict_encode64(msg).tr(\"+/\", \"-_\").gsub('=', '')\nend", "language": "ruby" } ] } [/block]
{"_id":"547bd9984366a708001b3c1d","link_url":"","project":"54343b44edce040800409329","slug":"file-providers","sync_unique":"","title":"File Providers","body":"In order to use X.IO's Cloud Storage Bridge, you will need to expose a JSON document over HTTPS. This document will instruct the system which storage providers to mount inside the users session.\n\nWhen the session starts, the service will attempt to access the URL specified in `file_provider_url`. Once it receives a valid response, it will mount the requested providers. If a permission error occurs with a provider, or a key expires, the service will query the URL again to check for new credentials, which it will use if found.\n\nThe overall structure of the JSON is as follows:\n\nAttribute | Type | Description\n--------- | ---- | -----------\n`update_url` | string | new URL to use for future file provider JSON documents\n`file_providers` | array | array of objects which describe the file providers to mount\n\nA file provider object is required to contain the following attributes:\n\nAttribute | Type | Description\n--------- | ---- | -----------\n`id` | string | unique ID which refers to a given provider and account, should not change for the length of the session\n`label` | string | friendly label to display in the session, defaults to name of provider\n`provider_type` | string | one of `dropbox`, `google_drive`, `one_drive`, `box` or `webdav`\n`expires_in` | integer | optional - number of seconds in which the credentials will expire, null if no expiration\n\n### Dropbox, Google Drive, OneDrive and Box\nOAuth-based providers require submitting an additional string attribute called `access_token` which contains the access token received from the service provider's API.\n\nIf the provider uses refresh tokens, it is your responsibility to ensure the access token is kept up-to-date and available to the X.IO service for the lifetime of the session.\n\n### WebDAV\nWebDAV providers require an additional string attributed called `url` which contains the full URL to the WebDAV endpoint the user will be accessing. If credentials are required, they should be specified in the URL.","excerpt":"","type":"basic","api":{"url":"","auth":"never","results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"basic_auth":false,"try":true,"params":[]},"category":"547bd9974366a708001b3c17","githubsync":"","order":3,"version":"547bd9974366a708001b3c16","__v":0,"createdAt":"2014-12-01T02:44:05.908Z","hidden":false,"link_external":false,"updates":[],"user":"54343b31edce040800409327","childrenPages":[]}

File Providers


In order to use X.IO's Cloud Storage Bridge, you will need to expose a JSON document over HTTPS. This document will instruct the system which storage providers to mount inside the users session. When the session starts, the service will attempt to access the URL specified in `file_provider_url`. Once it receives a valid response, it will mount the requested providers. If a permission error occurs with a provider, or a key expires, the service will query the URL again to check for new credentials, which it will use if found. The overall structure of the JSON is as follows: Attribute | Type | Description --------- | ---- | ----------- `update_url` | string | new URL to use for future file provider JSON documents `file_providers` | array | array of objects which describe the file providers to mount A file provider object is required to contain the following attributes: Attribute | Type | Description --------- | ---- | ----------- `id` | string | unique ID which refers to a given provider and account, should not change for the length of the session `label` | string | friendly label to display in the session, defaults to name of provider `provider_type` | string | one of `dropbox`, `google_drive`, `one_drive`, `box` or `webdav` `expires_in` | integer | optional - number of seconds in which the credentials will expire, null if no expiration ### Dropbox, Google Drive, OneDrive and Box OAuth-based providers require submitting an additional string attribute called `access_token` which contains the access token received from the service provider's API. If the provider uses refresh tokens, it is your responsibility to ensure the access token is kept up-to-date and available to the X.IO service for the lifetime of the session. ### WebDAV WebDAV providers require an additional string attributed called `url` which contains the full URL to the WebDAV endpoint the user will be accessing. If credentials are required, they should be specified in the URL.
In order to use X.IO's Cloud Storage Bridge, you will need to expose a JSON document over HTTPS. This document will instruct the system which storage providers to mount inside the users session. When the session starts, the service will attempt to access the URL specified in `file_provider_url`. Once it receives a valid response, it will mount the requested providers. If a permission error occurs with a provider, or a key expires, the service will query the URL again to check for new credentials, which it will use if found. The overall structure of the JSON is as follows: Attribute | Type | Description --------- | ---- | ----------- `update_url` | string | new URL to use for future file provider JSON documents `file_providers` | array | array of objects which describe the file providers to mount A file provider object is required to contain the following attributes: Attribute | Type | Description --------- | ---- | ----------- `id` | string | unique ID which refers to a given provider and account, should not change for the length of the session `label` | string | friendly label to display in the session, defaults to name of provider `provider_type` | string | one of `dropbox`, `google_drive`, `one_drive`, `box` or `webdav` `expires_in` | integer | optional - number of seconds in which the credentials will expire, null if no expiration ### Dropbox, Google Drive, OneDrive and Box OAuth-based providers require submitting an additional string attribute called `access_token` which contains the access token received from the service provider's API. If the provider uses refresh tokens, it is your responsibility to ensure the access token is kept up-to-date and available to the X.IO service for the lifetime of the session. ### WebDAV WebDAV providers require an additional string attributed called `url` which contains the full URL to the WebDAV endpoint the user will be accessing. If credentials are required, they should be specified in the URL.
{"_id":"547cec5278fd57080023caeb","user":"54343b31edce040800409327","__v":10,"body":"## Integration\nYou can integrate AppStream.JS with as little as one line of code. As new X.IO features get released, we'll roll them into AppStream.JS, so you'll always have access to our latest technology without having to change anything.\n\nAppStream.JS supports two kinds of integration:\n\n- **Simple**: The simple integration provides a Launch button that creates a new stream and launches the application.\n- **Custom**: The custom integration gives you precise control over your users experience via JavaScript.\n\n## Simple\nThe simple integration uses a `<script>` tag to render the a launch button. When a user clicks the button, we request a stream session and render the session in the browser.\n\n    <script src=\"https://client.x.io/v1/appstream.js\"\n            type=\"text/javascript\" class=\"appstreamjs-button\"\n            data-application=\"7cd9272c77ef44aeb460a70de434067a\"></script>\n\nYou can add additional data attributes to the script tag to configure the behavior of the button:\n\n### Configuration Options\n\nOption | Description\n------ | -----------\ndata-application | ID of the application you want to launch\ndata-version | ID of a specific version of the application (otherwise will use default)\ndata-file-provider-url | URL to file providers for the user\ndata-key-id | API Key ID if application requires authentication\ndata-expires | Unix timestamp the signature expires\ndata-signature | [Request signature](#def-request-sig-auth)\ndata-label | Label of the button on the page\n\n## Custom\nThe custom integration gives you complete control over the user experience and flow.\n\n    <script src=\"https://client.x.io/v1/appstream.js\"></script>\n    \n    <script>\n      $('#app-launcher').click(function(e){\n        AppStreamJS.launchApplication({\n          application: \"ad0aad499c5549719951b3297560517f\",\n          version: \"4713fa30b76b4932a3a5c145618228d1\",\n          key_id: \"LSBE0QDMLZOU7JPCZACBI4BWXE\",\n          expires: \"1401683301\",\n          signature: \"obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM\"\n        });\n      });\n    </script>\n\n## Functions\nAppStream.JS exposes a number of functions you can call.\n\n### AppStreamJS.initialize()\nInitializes AppStream.JS object. This function is automatically called once the DOM has loaded and should not be called manually.\n\n### AppStreamJS.launchApplication(launchOptions)\nRequests a new stream from the X.IO API, then passes the launch key to the AppStreamJS.launchClient() function.\n\n#### Launch Options (object)\nOption | Type | Required | Description\n------ | ---- | -------- | -----------\napplication | string | required | ID of the application you want to launch\nversion | string | optional | ID of a specific version of the application (otherwise will use default)\nfile_provider_url | string | optional | URL to file providers for the user\nkey_id | string | optional | API Key ID if application requires authentication\nexpires | integer | optional | Unix timestamp the signature expires\nsignature | string | optional | [Request signature](#def-request-sig-auth)\nstyle | boolean | optional | Apply frame styling, defaults to true\nmax_duration | integer | optional | Maximum duration of the session in seconds\ncommand_line | string | optional | Command line to pass to application\n\n### AppStreamJS.launchClient(launchKey, [launchOptions])\nLaunches a stream using the launch_key received from the X.IO Stream API.\n\n#### Launch Options (object)\nOption | Type | Required | Description\n------ | ---- | -------- | -----------\nstyle | boolean | optional | Apply frame styling, defaults to true\n\n### AppStreamJS.clientSupportsJSClient()\nReturns a boolean indicating whether or not the browser can run a stream in JavaScript, or a plugin is required.\n\n### AppStreamJS.clientHasPrerequisites()\nReturns a boolean indicating the client browser supports our JavaScript client, or has the plugin installed and can access a stream via the plugin.\n\n### AppStreamJS.clientPluginInstalled()\nReturns a boolean indicating whether or not the native plugin is installed.\n\n### AppStreamJS.installClientPlugin([callback], [timeout_in_ms])\nIf the user does not have the native plugin installed, will download the installer and wait for the installation to finish.\n\nThis function will execute the callback function after either the timeout has passed or the client is installed, passing in a boolean indicating if installation was successful.\n\n### AppStreamJS.resizeSession(width, height)\nTries to resize the stream to the requested width and height. Listen for the clientResized event for confirmation that the resize has taken effect and the values that the stream was resized to.\n\n### AppStreamJS.closeSession()\nDisconnect and clean up the active session.\n\n### AppStreamJS.httpRequest(requestOptions)\nMake an HTTP request to a local port running in the session and return the results.\n\n#### Request Options (object)\nOption | Type | Required | Description\n------ | ---- | -------- | -----------\nport | integer | required | HTTP port to connect to\nerror | function | optional | Function to call if request fails\nsuccess | function | optional | Function to call if request succeeds\npath | string | optional | Path to send request to, default to \"/\"\nmethod | string | optional | HTTP method to send, defaults to \"GET\"\nheaders | object | optional | HTTP headers to send in request\nbody | string | optional | Text to send in request body\n\n#### Success Callback\nA success callback function should take a single input and will receive an object with the following information:\n\nParameter | Type | Description\n------ | ---- | -------- | -----------\ncode | integer | HTTP response status code\nheaders | array | Array of HTTP response headers\nbody | string | Body of HTTP response\n\n#### Error Callback\nA error callback function should take a single input and will receive an object with the following information:\n\nParameter | Type | Description\n------ | ---- | -------- | -----------\nmessage | string | Description of why the request failed\n\n\n## Callbacks\nYou can register to receive callbacks when various events occur.\n\n### Registering for Callbacks\nTo register for callbacks, you will need to create an `AppStreamJS.callbacks` object which registers the functions you want information from.\n\n    <script>\n      var AppStreamJS = AppStreamJS || {};\n      AppStreamJS.callbacks = {\n        libraryReady: function() {\n          console.log(\"AppStream.JS loaded\");\n        }\n      };\n    </script>\n\n### libraryReady()\n\n### sessionReceived(sessionId)\n\n### sessionInitialized(sessionId)\n\n### sessionError(errorMessage)\n\n### sessionClosed()\n\n### clientInitialized()\n\n### clientConnected()\n\n### clientResized(data)\nEmitted when stream is resized. Data will be an object with the following format:\n\n    {\n      \"width\": 100,\n      \"height\": 120\n    }","hidden":false,"type":"basic","githubsync":"","order":0,"slug":"appstreamjs","sync_unique":"","updates":[],"api":{"basic_auth":false,"params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","try":true,"url":"","auth":"never"},"createdAt":"2014-12-01T22:31:46.257Z","link_external":false,"link_url":"","title":"AppStream.JS","version":"547bd9974366a708001b3c16","category":"547cec2878fd57080023caea","excerpt":"AppStream.JS is the quickest and easiest way to embed X.IO applications on the web. It provides a unified interface that you can use to build great experiences.","project":"54343b44edce040800409329","childrenPages":[]}

AppStream.JS

AppStream.JS is the quickest and easiest way to embed X.IO applications on the web. It provides a unified interface that you can use to build great experiences.

## Integration You can integrate AppStream.JS with as little as one line of code. As new X.IO features get released, we'll roll them into AppStream.JS, so you'll always have access to our latest technology without having to change anything. AppStream.JS supports two kinds of integration: - **Simple**: The simple integration provides a Launch button that creates a new stream and launches the application. - **Custom**: The custom integration gives you precise control over your users experience via JavaScript. ## Simple The simple integration uses a `<script>` tag to render the a launch button. When a user clicks the button, we request a stream session and render the session in the browser. <script src="https://client.x.io/v1/appstream.js" type="text/javascript" class="appstreamjs-button" data-application="7cd9272c77ef44aeb460a70de434067a"></script> You can add additional data attributes to the script tag to configure the behavior of the button: ### Configuration Options Option | Description ------ | ----------- data-application | ID of the application you want to launch data-version | ID of a specific version of the application (otherwise will use default) data-file-provider-url | URL to file providers for the user data-key-id | API Key ID if application requires authentication data-expires | Unix timestamp the signature expires data-signature | [Request signature](#def-request-sig-auth) data-label | Label of the button on the page ## Custom The custom integration gives you complete control over the user experience and flow. <script src="https://client.x.io/v1/appstream.js"></script> <script> $('#app-launcher').click(function(e){ AppStreamJS.launchApplication({ application: "ad0aad499c5549719951b3297560517f", version: "4713fa30b76b4932a3a5c145618228d1", key_id: "LSBE0QDMLZOU7JPCZACBI4BWXE", expires: "1401683301", signature: "obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM" }); }); </script> ## Functions AppStream.JS exposes a number of functions you can call. ### AppStreamJS.initialize() Initializes AppStream.JS object. This function is automatically called once the DOM has loaded and should not be called manually. ### AppStreamJS.launchApplication(launchOptions) Requests a new stream from the X.IO API, then passes the launch key to the AppStreamJS.launchClient() function. #### Launch Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- application | string | required | ID of the application you want to launch version | string | optional | ID of a specific version of the application (otherwise will use default) file_provider_url | string | optional | URL to file providers for the user key_id | string | optional | API Key ID if application requires authentication expires | integer | optional | Unix timestamp the signature expires signature | string | optional | [Request signature](#def-request-sig-auth) style | boolean | optional | Apply frame styling, defaults to true max_duration | integer | optional | Maximum duration of the session in seconds command_line | string | optional | Command line to pass to application ### AppStreamJS.launchClient(launchKey, [launchOptions]) Launches a stream using the launch_key received from the X.IO Stream API. #### Launch Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- style | boolean | optional | Apply frame styling, defaults to true ### AppStreamJS.clientSupportsJSClient() Returns a boolean indicating whether or not the browser can run a stream in JavaScript, or a plugin is required. ### AppStreamJS.clientHasPrerequisites() Returns a boolean indicating the client browser supports our JavaScript client, or has the plugin installed and can access a stream via the plugin. ### AppStreamJS.clientPluginInstalled() Returns a boolean indicating whether or not the native plugin is installed. ### AppStreamJS.installClientPlugin([callback], [timeout_in_ms]) If the user does not have the native plugin installed, will download the installer and wait for the installation to finish. This function will execute the callback function after either the timeout has passed or the client is installed, passing in a boolean indicating if installation was successful. ### AppStreamJS.resizeSession(width, height) Tries to resize the stream to the requested width and height. Listen for the clientResized event for confirmation that the resize has taken effect and the values that the stream was resized to. ### AppStreamJS.closeSession() Disconnect and clean up the active session. ### AppStreamJS.httpRequest(requestOptions) Make an HTTP request to a local port running in the session and return the results. #### Request Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- port | integer | required | HTTP port to connect to error | function | optional | Function to call if request fails success | function | optional | Function to call if request succeeds path | string | optional | Path to send request to, default to "/" method | string | optional | HTTP method to send, defaults to "GET" headers | object | optional | HTTP headers to send in request body | string | optional | Text to send in request body #### Success Callback A success callback function should take a single input and will receive an object with the following information: Parameter | Type | Description ------ | ---- | -------- | ----------- code | integer | HTTP response status code headers | array | Array of HTTP response headers body | string | Body of HTTP response #### Error Callback A error callback function should take a single input and will receive an object with the following information: Parameter | Type | Description ------ | ---- | -------- | ----------- message | string | Description of why the request failed ## Callbacks You can register to receive callbacks when various events occur. ### Registering for Callbacks To register for callbacks, you will need to create an `AppStreamJS.callbacks` object which registers the functions you want information from. <script> var AppStreamJS = AppStreamJS || {}; AppStreamJS.callbacks = { libraryReady: function() { console.log("AppStream.JS loaded"); } }; </script> ### libraryReady() ### sessionReceived(sessionId) ### sessionInitialized(sessionId) ### sessionError(errorMessage) ### sessionClosed() ### clientInitialized() ### clientConnected() ### clientResized(data) Emitted when stream is resized. Data will be an object with the following format: { "width": 100, "height": 120 }
## Integration You can integrate AppStream.JS with as little as one line of code. As new X.IO features get released, we'll roll them into AppStream.JS, so you'll always have access to our latest technology without having to change anything. AppStream.JS supports two kinds of integration: - **Simple**: The simple integration provides a Launch button that creates a new stream and launches the application. - **Custom**: The custom integration gives you precise control over your users experience via JavaScript. ## Simple The simple integration uses a `<script>` tag to render the a launch button. When a user clicks the button, we request a stream session and render the session in the browser. <script src="https://client.x.io/v1/appstream.js" type="text/javascript" class="appstreamjs-button" data-application="7cd9272c77ef44aeb460a70de434067a"></script> You can add additional data attributes to the script tag to configure the behavior of the button: ### Configuration Options Option | Description ------ | ----------- data-application | ID of the application you want to launch data-version | ID of a specific version of the application (otherwise will use default) data-file-provider-url | URL to file providers for the user data-key-id | API Key ID if application requires authentication data-expires | Unix timestamp the signature expires data-signature | [Request signature](#def-request-sig-auth) data-label | Label of the button on the page ## Custom The custom integration gives you complete control over the user experience and flow. <script src="https://client.x.io/v1/appstream.js"></script> <script> $('#app-launcher').click(function(e){ AppStreamJS.launchApplication({ application: "ad0aad499c5549719951b3297560517f", version: "4713fa30b76b4932a3a5c145618228d1", key_id: "LSBE0QDMLZOU7JPCZACBI4BWXE", expires: "1401683301", signature: "obuXVeVN8IwhdU5gJWZjnpA9fl6tZPjex5_e-TxT9sM" }); }); </script> ## Functions AppStream.JS exposes a number of functions you can call. ### AppStreamJS.initialize() Initializes AppStream.JS object. This function is automatically called once the DOM has loaded and should not be called manually. ### AppStreamJS.launchApplication(launchOptions) Requests a new stream from the X.IO API, then passes the launch key to the AppStreamJS.launchClient() function. #### Launch Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- application | string | required | ID of the application you want to launch version | string | optional | ID of a specific version of the application (otherwise will use default) file_provider_url | string | optional | URL to file providers for the user key_id | string | optional | API Key ID if application requires authentication expires | integer | optional | Unix timestamp the signature expires signature | string | optional | [Request signature](#def-request-sig-auth) style | boolean | optional | Apply frame styling, defaults to true max_duration | integer | optional | Maximum duration of the session in seconds command_line | string | optional | Command line to pass to application ### AppStreamJS.launchClient(launchKey, [launchOptions]) Launches a stream using the launch_key received from the X.IO Stream API. #### Launch Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- style | boolean | optional | Apply frame styling, defaults to true ### AppStreamJS.clientSupportsJSClient() Returns a boolean indicating whether or not the browser can run a stream in JavaScript, or a plugin is required. ### AppStreamJS.clientHasPrerequisites() Returns a boolean indicating the client browser supports our JavaScript client, or has the plugin installed and can access a stream via the plugin. ### AppStreamJS.clientPluginInstalled() Returns a boolean indicating whether or not the native plugin is installed. ### AppStreamJS.installClientPlugin([callback], [timeout_in_ms]) If the user does not have the native plugin installed, will download the installer and wait for the installation to finish. This function will execute the callback function after either the timeout has passed or the client is installed, passing in a boolean indicating if installation was successful. ### AppStreamJS.resizeSession(width, height) Tries to resize the stream to the requested width and height. Listen for the clientResized event for confirmation that the resize has taken effect and the values that the stream was resized to. ### AppStreamJS.closeSession() Disconnect and clean up the active session. ### AppStreamJS.httpRequest(requestOptions) Make an HTTP request to a local port running in the session and return the results. #### Request Options (object) Option | Type | Required | Description ------ | ---- | -------- | ----------- port | integer | required | HTTP port to connect to error | function | optional | Function to call if request fails success | function | optional | Function to call if request succeeds path | string | optional | Path to send request to, default to "/" method | string | optional | HTTP method to send, defaults to "GET" headers | object | optional | HTTP headers to send in request body | string | optional | Text to send in request body #### Success Callback A success callback function should take a single input and will receive an object with the following information: Parameter | Type | Description ------ | ---- | -------- | ----------- code | integer | HTTP response status code headers | array | Array of HTTP response headers body | string | Body of HTTP response #### Error Callback A error callback function should take a single input and will receive an object with the following information: Parameter | Type | Description ------ | ---- | -------- | ----------- message | string | Description of why the request failed ## Callbacks You can register to receive callbacks when various events occur. ### Registering for Callbacks To register for callbacks, you will need to create an `AppStreamJS.callbacks` object which registers the functions you want information from. <script> var AppStreamJS = AppStreamJS || {}; AppStreamJS.callbacks = { libraryReady: function() { console.log("AppStream.JS loaded"); } }; </script> ### libraryReady() ### sessionReceived(sessionId) ### sessionInitialized(sessionId) ### sessionError(errorMessage) ### sessionClosed() ### clientInitialized() ### clientConnected() ### clientResized(data) Emitted when stream is resized. Data will be an object with the following format: { "width": 100, "height": 120 }
{"_id":"550a19058f44a9250003722e","body":"Get a list of all streams on your account.","link_url":"","updates":[],"order":0,"project":"54343b44edce040800409329","createdAt":"2015-03-19T00:32:05.082Z","hidden":false,"type":"get","version":"547bd9974366a708001b3c16","__v":4,"category":"547bd9974366a708001b3c18","sync_unique":"","link_external":false,"slug":"streams","title":"streams","user":"54343b31edce040800409327","api":{"auth":"required","method":"get","params":[],"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"code":"{}","name":"","status":400,"language":"json"}]},"url":"/streams"},"excerpt":"","githubsync":"","childrenPages":[]}

getstreams


Get a list of all streams on your account.

User Information

Try It Out

get
{{ tryResults.results }}
Method{{ tryResults.method }}
Request Headers
{{ tryResults.requestHeaders }}
URL{{ tryResults.url }}
Request Data
{{ tryResults.data }}
Status
Response Headers
{{ tryResults.responseHeaders }}

Definition

{{ api_url }}{{ page_api_url }}

Result Format



Get a list of all streams on your account.
{"_id":"547bd9984366a708001b3c19","createdAt":"2014-12-01T02:53:21.007Z","editedParams2":true,"excerpt":"","body":"A stream is a single session between a user and an application. Each time an application is launched, a new stream is created.","category":"547bd9974366a708001b3c18","hidden":false,"link_external":false,"project":"54343b44edce040800409329","githubsync":"","title":"streams/:stream_id","type":"get","user":"54343b31edce040800409327","version":"547bd9974366a708001b3c16","editedParams":true,"link_url":"","order":1,"slug":"stream_get","sync_unique":"","updates":[],"__v":2,"api":{"basic_auth":false,"method":"get","params":[{"name":"stream_id","in":"path","_id":"547bd8ee4366a708001b3c0d","required":true,"desc":"ID of the stream to retreive","default":"","type":"string"}],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{\n  \"id\": \"10a0fb0c527f4acab9abd454975488fa\",\n  \"application\": {\n    \"name\": \"Notepad\",\n    \"id\": \"ad0aad499c5549719951b3297560517f\"\n  },\n  \"version\": {\n    \"label\": \"Version 1.0\",\n    \"id\": \"4713fa30b76b4932a3a5c145618228d1\"\n  },\n  \"state\": \"started\",\n  \"launch_key\": \"10a0fb0c527f4acab9abd454975488fa-5u3DS9utOTWaLnKsnbtWFGchjlpWrSfz49FdA6C0r8Ix9wbkuA\",\n  \"launched_at\": \"2015-01-13T00:50:07.000Z\",\n  \"region\": \"us-sanjose-1\",\n  \"connected_at\": \"2015-01-13T00:50:08.000Z\",\n  \"finished_at\": null,\n  \"connected_duration\": null,\n  \"session_duration\": null\n}"},{"status":400,"language":"json","code":"{\n  \"status\": false\n}","name":""}]},"try":true,"url":"/streams/:stream_id","auth":"required"},"childrenPages":[]}

getstreams/:stream_id


Path Params

stream_id:
required
string
ID of the stream to retreive
A stream is a single session between a user and an application. Each time an application is launched, a new stream is created.

User Information

Try It Out

get
{{ tryResults.results }}
Method{{ tryResults.method }}
Request Headers
{{ tryResults.requestHeaders }}
URL{{ tryResults.url }}
Request Data
{{ tryResults.data }}
Status
Response Headers
{{ tryResults.responseHeaders }}

Definition

{{ api_url }}{{ page_api_url }}

Result Format



A stream is a single session between a user and an application. Each time an application is launched, a new stream is created.
{"_id":"547cd41378fd57080023ca8e","excerpt":"","project":"54343b44edce040800409329","type":"delete","version":"547bd9974366a708001b3c16","updates":[],"__v":1,"api":{"url":"/streams/:stream_id","auth":"required","basic_auth":false,"method":"delete","params":[{"required":true,"type":"string","in":"path","_id":"547cd42478fd57080023ca90","default":"","desc":"ID of the stream to delete","name":"stream_id"}],"results":{"codes":[{"status":204,"language":"json","code":"","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"try":true},"body":"Force disconnects users from an existing stream","editedParams":true,"link_external":false,"user":"54343b31edce040800409327","githubsync":"","hidden":false,"order":2,"title":"streams/:stream_id","sync_unique":"","category":"547bd9974366a708001b3c18","createdAt":"2014-12-01T20:48:19.331Z","editedParams2":true,"link_url":"","slug":"stream_delete","childrenPages":[]}

deletestreams/:stream_id


Path Params

stream_id:
required
string
ID of the stream to delete
Force disconnects users from an existing stream

User Information

Try It Out

delete
{{ tryResults.results }}
Method{{ tryResults.method }}
Request Headers
{{ tryResults.requestHeaders }}
URL{{ tryResults.url }}
Request Data
{{ tryResults.data }}
Status
Response Headers
{{ tryResults.responseHeaders }}

Definition

{{ api_url }}{{ page_api_url }}


Force disconnects users from an existing stream
{"_id":"547ce5922eaee50800ed10b4","body":"Creates a new stream and launches the requested application.\n\n**It is highly recommended to send either `client_ip` or `region` when making a stream request in order to ensure an optimal experience for all users.** \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Command Line\"\n}\n[/block]\nYou can pass command line arguments to your application at run-time using the `command_line` parameter in your API request. This will override any default arguments you have set, so be sure to include all required arguments.\n\nBe aware when setting a command line argument that we do not perform escaping of any kind. We highly recommend that you use double-quotes (\") to wrap all parameters that may contain a space, especially file paths and user attributes.\n\nIn addition to standard strings, we also support special tokens that are replaced before being passed into your application. This allows you to pass in paths to files or session variables that are unknown when the request is made.\n\nWe currently support the following tokens:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Token\",\n    \"h-1\": \"Description\",\n    \"0-0\": \"@xio:file_provider:PROVIDER_ID@\",\n    \"0-1\": \"The path to the root of the requested provider without a trailing slash. Provider ID is retrieved from the `id` attribute of your file provider config.\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]","link_url":"","project":"54343b44edce040800409329","user":"54343b31edce040800409327","hidden":false,"sync_unique":"","type":"post","updates":["55ac3f1f63a6b60d00661762"],"version":"547bd9974366a708001b3c16","githubsync":"","order":3,"title":"streams","__v":6,"createdAt":"2014-12-01T22:02:58.472Z","editedParams":true,"editedParams2":true,"api":{"method":"post","params":[{"type":"string","name":"application_id","in":"body","_id":"547ce6db2eaee50800ed10c2","required":true,"desc":"The ID of the application you want to run","default":""},{"_id":"547ce6db2eaee50800ed10c1","required":false,"desc":"The ID of the specific version of the application","default":"","type":"string","name":"version_id","in":"body"},{"_id":"547ce6db2eaee50800ed10c0","required":false,"desc":"One of: `us-ashburn-1`, `us-portland-1`, `us-sanjose-1`, `jp-tokyo-1`, `au-sydney-1`, `sg-singapore-1`, `ie-dublin-1`. Defaults to closest location to request IP (see **client_ip** below)","default":"","type":"string","name":"region","in":"body"},{"_id":"547ce6db2eaee50800ed10bf","default":"","desc":"HTTPS URL to [file providers](/v1/docs/file-providers) for user","name":"file_provider_url","required":false,"type":"string","in":"body"},{"_id":"54b0103dfc4f6016006ef1ca","required":false,"desc":"IP address of the user connecting to the stream, used for automatic region selection","default":"","type":"string","name":"client_ip","in":"body"},{"required":false,"desc":"Maximum duration of the session in seconds","default":"","type":"int","name":"max_duration","in":"body","_id":"54c17bb497603d0d00f99a6f"},{"name":"command_line","in":"body","_id":"555a7e11bcb32e19006f81cc","required":false,"desc":"Command line to pass to app. See details.","default":"","type":"string"}],"results":{"codes":[{"code":"{\n  \"id\": \"10a0fb0c527f4acab9abd454975488fa\",\n  \"application\": {\n    \"name\": \"Notepad\",\n    \"id\": \"ad0aad499c5549719951b3297560517f\"\n  },\n  \"version\": {\n    \"label\": \"Version 1.0\",\n    \"id\": \"4713fa30b76b4932a3a5c145618228d1\"\n  },\n  \"state\": \"started\",\n  \"launch_key\": \"10a0fb0c527f4acab9abd454975488fa-5u3DS9utOTWaLnKsnbtWFGchjlpWrSfz49FdA6C0r8Ix9wbkuA\"\n}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","try":true,"url":"/streams","auth":"required","basic_auth":false},"category":"547bd9974366a708001b3c18","excerpt":"","link_external":false,"slug":"stream_create","childrenPages":[]}

poststreams


Body Params

application_id:
required
string
The ID of the application you want to run
version_id:
string
The ID of the specific version of the application
region:
string
One of: `us-ashburn-1`, `us-portland-1`, `us-sanjose-1`, `jp-tokyo-1`, `au-sydney-1`, `sg-singapore-1`, `ie-dublin-1`. Defaults to closest location to request IP (see **client_ip** below)
file_provider_url:
string
HTTPS URL to [file providers](/v1/docs/file-providers) for user
client_ip:
string
IP address of the user connecting to the stream, used for automatic region selection
max_duration:
integer
Maximum duration of the session in seconds
command_line:
string
Command line to pass to app. See details.
Creates a new stream and launches the requested application. **It is highly recommended to send either `client_ip` or `region` when making a stream request in order to ensure an optimal experience for all users.** [block:api-header] { "type": "basic", "title": "Command Line" } [/block] You can pass command line arguments to your application at run-time using the `command_line` parameter in your API request. This will override any default arguments you have set, so be sure to include all required arguments. Be aware when setting a command line argument that we do not perform escaping of any kind. We highly recommend that you use double-quotes (") to wrap all parameters that may contain a space, especially file paths and user attributes. In addition to standard strings, we also support special tokens that are replaced before being passed into your application. This allows you to pass in paths to files or session variables that are unknown when the request is made. We currently support the following tokens: [block:parameters] { "data": { "h-0": "Token", "h-1": "Description", "0-0": "@xio:file_provider:PROVIDER_ID@", "0-1": "The path to the root of the requested provider without a trailing slash. Provider ID is retrieved from the `id` attribute of your file provider config." }, "cols": 2, "rows": 1 } [/block]

User Information

Try It Out

post
{{ tryResults.results }}
Method{{ tryResults.method }}
Request Headers
{{ tryResults.requestHeaders }}
URL{{ tryResults.url }}
Request Data
{{ tryResults.data }}
Status
Response Headers
{{ tryResults.responseHeaders }}

Definition

{{ api_url }}{{ page_api_url }}

Result Format



Creates a new stream and launches the requested application. **It is highly recommended to send either `client_ip` or `region` when making a stream request in order to ensure an optimal experience for all users.** [block:api-header] { "type": "basic", "title": "Command Line" } [/block] You can pass command line arguments to your application at run-time using the `command_line` parameter in your API request. This will override any default arguments you have set, so be sure to include all required arguments. Be aware when setting a command line argument that we do not perform escaping of any kind. We highly recommend that you use double-quotes (") to wrap all parameters that may contain a space, especially file paths and user attributes. In addition to standard strings, we also support special tokens that are replaced before being passed into your application. This allows you to pass in paths to files or session variables that are unknown when the request is made. We currently support the following tokens: [block:parameters] { "data": { "h-0": "Token", "h-1": "Description", "0-0": "@xio:file_provider:PROVIDER_ID@", "0-1": "The path to the root of the requested provider without a trailing slash. Provider ID is retrieved from the `id` attribute of your file provider config." }, "cols": 2, "rows": 1 } [/block]