test_z.cpp 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  1. #if 0
  2. #include <stdexcept>
  3. #include <iostream>
  4. #include <sstream>
  5. #include <boost/optional.hpp>
  6. #include <boost/archive/text_oarchive.hpp>
  7. #include <boost/archive/text_iarchive.hpp>
  8. #include <boost/serialization/optional.hpp>
  9. struct Foo
  10. {
  11. Foo(int aBar) :
  12. mBar(aBar)
  13. {
  14. if (mBar > 10)
  15. {
  16. throw std::logic_error("too big bar");
  17. }
  18. }
  19. int bar() const
  20. {
  21. return mBar;
  22. }
  23. bool operator==(const Foo & rhs) const {
  24. return mBar == rhs.mBar;
  25. }
  26. private:
  27. int mBar;
  28. };
  29. namespace boost {
  30. namespace serialization {
  31. template<class Archive>
  32. inline void serialize(Archive & ar, Foo& foo, const unsigned int /*version*/)
  33. {
  34. std::cout << __FUNCTION__ << " called" << std::endl;
  35. }
  36. template<class Archive>
  37. inline void save_construct_data(Archive & ar, const Foo* foo, const unsigned int /*version*/)
  38. {
  39. std::cout << __FUNCTION__ << " called" << std::endl;
  40. ar & foo->bar();
  41. }
  42. template<class Archive>
  43. inline void load_construct_data(Archive & ar, Foo* foo, const unsigned int /*version*/)
  44. {
  45. std::cout << __FUNCTION__ << " called" << std::endl;
  46. int bar;
  47. ar & bar;
  48. ::new(foo) Foo(bar);
  49. }
  50. } // serialization
  51. } // boost
  52. int main()
  53. {
  54. boost::optional<Foo> oldFoo = Foo(10);
  55. std::ostringstream outStream;
  56. boost::archive::text_oarchive outArchive(outStream);
  57. outArchive & oldFoo;
  58. boost::optional<Foo> newFoo;
  59. std::istringstream inStream(outStream.str());
  60. boost::archive::text_iarchive inArchive(inStream);
  61. inArchive & newFoo;
  62. return !(newFoo == oldFoo);
  63. }
  64. #elif 0
  65. /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
  66. // test_optional.cpp
  67. // (C) Copyright 2004 Pavel Vozenilek
  68. // Use, modification and distribution is subject to the Boost Software
  69. // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  70. // http://www.boost.org/LICENSE_1_0.txt)
  71. // should pass compilation and execution
  72. #include <cstddef> // NULL
  73. #include <cstdio> // remove
  74. #include <fstream>
  75. #include <boost/config.hpp>
  76. #if defined(BOOST_NO_STDC_NAMESPACE)
  77. namespace std{
  78. using ::remove;
  79. }
  80. #endif
  81. #include <boost/archive/archive_exception.hpp>
  82. #define BOOST_ARCHIVE_TEST xml_archive.hpp
  83. #include "test_tools.hpp"
  84. #include <boost/serialization/optional.hpp>
  85. #include "A.hpp"
  86. #include "A.ipp"
  87. int test_main( int /* argc */, char* /* argv */[] )
  88. {
  89. const char * testfile = boost::archive::tmpnam(NULL);
  90. BOOST_REQUIRE(NULL != testfile);
  91. const boost::optional<int> aoptional1;
  92. const boost::optional<int> aoptional2(123);
  93. {
  94. test_ostream os(testfile, TEST_STREAM_FLAGS);
  95. test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
  96. //oa << boost::serialization::make_nvp("aoptional1",aoptional1);
  97. //oa << boost::serialization::make_nvp("aoptional2",aoptional2);
  98. }
  99. /*
  100. boost::optional<int> aoptional1a(999);
  101. boost::optional<int> aoptional2a;
  102. {
  103. test_istream is(testfile, TEST_STREAM_FLAGS);
  104. test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
  105. ia >> boost::serialization::make_nvp("aoptional1",aoptional1a);
  106. ia >> boost::serialization::make_nvp("aoptional2",aoptional2a);
  107. }
  108. BOOST_CHECK(aoptional1 == aoptional1a);
  109. BOOST_CHECK(aoptional2 == aoptional2a);
  110. */
  111. std::remove(testfile);
  112. return EXIT_SUCCESS;
  113. }
  114. // EOF
  115. #elif 0
  116. #include <fstream>
  117. #include <boost/archive/xml_woarchive.hpp>
  118. #include <boost/archive/xml_wiarchive.hpp>
  119. #include <boost/serialization/string.hpp>
  120. #include "test_tools.hpp"
  121. int test_main(int, char *argv[])
  122. {
  123. const char * testfile = boost::archive::tmpnam(NULL);
  124. std::string s1 = "kkkabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
  125. std::wstring w1 = L"kkk";
  126. std::wstring w2 = L"апр"; // some non-latin (for example russians) letters
  127. {
  128. std::wofstream ofs(testfile);
  129. {
  130. boost::archive::xml_woarchive oa(ofs);
  131. oa << boost::serialization::make_nvp("key1", s1);
  132. //oa << boost::serialization::make_nvp("key2", w1);
  133. //oa << boost::serialization::make_nvp("key3", w2); // here exception is thrown
  134. }
  135. }
  136. std::string new_s1;
  137. //std::wstring new_w1;
  138. //std::wstring new_w2;
  139. {
  140. std::wifstream ifs(testfile);
  141. {
  142. boost::archive::xml_wiarchive ia(ifs);
  143. ia >> boost::serialization::make_nvp("key1", new_s1);
  144. //ia >> boost::serialization::make_nvp("key2", new_w1);
  145. //ia >> boost::serialization::make_nvp("key3", new_w2); // here exception is thrown
  146. }
  147. }
  148. BOOST_CHECK(s1 == new_s1);
  149. //BOOST_CHECK(w1 == new_w1);
  150. //BOOST_CHECK(w2 == new_w2);
  151. return 0;
  152. }
  153. #elif 0
  154. #include <boost/archive/xml_oarchive.hpp>
  155. #include <boost/serialization/nvp.hpp>
  156. #include <iostream>
  157. int main() {
  158. boost::archive::xml_oarchive oa( std::cerr );
  159. int bob = 3;
  160. oa << boost::serialization::make_nvp( "bob", bob );
  161. }
  162. #elif 0
  163. #include <fstream>
  164. #include <vector>
  165. #include <iostream>
  166. //#include <boost/shared_ptr.hpp>
  167. #include <boost/archive/binary_iarchive.hpp>
  168. #include <boost/serialization/nvp.hpp>
  169. #include <boost/serialization/shared_ptr.hpp>
  170. #include <boost/serialization/vector.hpp>
  171. struct boxed_int
  172. {
  173. boxed_int() : i(0) {}
  174. boxed_int(int i) : i(i) {}
  175. int i;
  176. template<class Archive>
  177. void serialize(Archive &ar, unsigned version)
  178. {
  179. ar & BOOST_SERIALIZATION_NVP(i);
  180. }
  181. };
  182. typedef boost::shared_ptr<boxed_int> pi;
  183. void go(std::istream &is) {
  184. std::vector<pi> vv;
  185. try
  186. {
  187. boost::archive::binary_iarchive ia(is);
  188. ia & vv;
  189. }
  190. catch(std::exception &e) {}
  191. }
  192. int main(int argc, char **argv) {
  193. if(argc > 1) {
  194. std::ifstream is(argv[1]);
  195. go(is);
  196. } else {
  197. go(std::cin);
  198. }
  199. return 0;
  200. }
  201. #elif 0
  202. #include <cassert>
  203. #include <string>
  204. #include <boost/archive/iterators/base64_from_binary.hpp>
  205. #include <boost/archive/iterators/transform_width.hpp>
  206. namespace bai = boost::archive::iterators;
  207. int main()
  208. {
  209. std::string input =
  210. "A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were "
  211. "three gardeners at it, busily painting them red. Alice thought this a very curious thing, and she went nearer "
  212. "to watch them, and just as she came up to them she heard one of them say, 'Look out now, Five! Don't go "
  213. "splashing paint over me like that!''I couldn't help it,' said Five, in a sulky tone; 'Seven jogged my "
  214. "elbow.'On which Seven looked up and said, 'That's right, Five! Always lay the blame on others!''You'd better "
  215. "not talk!' said Five. 'I heard the Queen say only yesterday you deserved to be beheaded!''What for?' said the "
  216. "one who had spoken first.'That's none of your business, Two!' said Seven.'Yes, it is his business!' said "
  217. "Five, 'and I'll tell him—it was for bringing the cook tulip-roots instead of onions.'Seven flung down his "
  218. "brush, and had just begun 'Well, of all the unjust things—' when his eye chanced to fall upon Alice, as she "
  219. "stood watching them, and he checked himself suddenly: the others looked round also, and all of them bowed "
  220. "low.'Would you tell me,' said Alice, a little timidly, 'why you are painting those roses?'Five and Seven said "
  221. "nothing, but looked at Two. Two began in a low voice, 'Why the fact is, you see, Miss, this here ought to "
  222. "have been a red rose-tree, and we put a white one in by mistake; and if the Queen was to find it out, we "
  223. "should all have our heads cut off, you know. So you see, Miss, we're doing our best, afore she comes, to—' At "
  224. "this moment Five, who had been anxiously looking across the garden, called out 'The Queen! The Queen!' and "
  225. "the three gardeners instantly threw themselves flat upon their faces. There was a sound of many footsteps, "
  226. "and Alice looked round, eager to see the Queen.First came ten soldiers carrying clubs; these were all shaped "
  227. "like the three gardeners, oblong and flat, with their hands and feet at the corners: next the ten courtiers; "
  228. "these were ornamented all over with diamonds, and walked two and two, as the soldiers did. After these came "
  229. "the royal children; there were ten of them, and the little dears came jumping merrily along hand in hand, in "
  230. "couples: they were all ornamented with hearts. Next came the guests, mostly Kings and Queens, and among them "
  231. "Alice recognised the White Rabbit: it was talking in a hurried nervous manner, smiling at everything that was "
  232. "said, and went by without noticing her. Then followed the Knave of Hearts, carrying the King's crown on a "
  233. "crimson velvet cushion; and, last of all this grand procession, came THE KING AND QUEEN OF HEARTS.Alice was "
  234. "rather doubtful whether she ought not to lie down on her face like the three gardeners, but she could not "
  235. "remember ever having heard of such a rule at processions; 'and besides, what would be the use of a "
  236. "procession,' thought she, 'if people had all to lie down upon their faces, so that they couldn't see it?' So "
  237. "she stood still where she was, and waited.When the procession came opposite to Alice, they all stopped and "
  238. "looked at her, and the Queen said severely 'Who is this?' She said it to the Knave of Hearts, who only bowed "
  239. "and smiled in reply.'Idiot!' said the Queen, tossing her head impatiently; and, turning to Alice, she went "
  240. "on, 'What's your name, child?''My name is Alice, so please your Majesty,' said Alice very politely; but she "
  241. "added, to herself, 'Why, they're only a pack of cards, after all. I needn't be afraid of them!''And who are "
  242. "these?' said the Queen, pointing to the three gardeners who were lying round the rosetree; for, you see, as "
  243. "they were lying on their faces, and the pattern on their backs was the same as the rest of the pack, she "
  244. "could not tell whether they were gardeners, or soldiers, or courtiers, or three of her own children.'How "
  245. "should I know?' said Alice, surprised at her own courage. 'It's no business of mine.'The Queen turned crimson "
  246. "with fury, and, after glaring at her for a moment like a wild beast, screamed 'Off with her head! "
  247. "Off—''Nonsense!' said Alice, very loudly and decidedly, and the Queen was silent.The King laid his hand upon "
  248. "her arm, and timidly said 'Consider, my dear: she is only a child!'The Queen turned angrily away from him, "
  249. "and said to the Knave 'Turn them over!'The Knave did so, very carefully, with one foot.'Get up!' said the "
  250. "Queen, in a shrill, loud voice, and the three gardeners instantly jumped up, and began bowing to the King, "
  251. "the Queen, the royal children, and everybody else.'Leave off that!' screamed the Queen. 'You make me giddy.' "
  252. "And then, turning to the rose-tree, she went on, 'What have you been doing here?''May it please your "
  253. "Majesty,' said Two, in a very humble tone, going down on one knee as he spoke, 'we were trying—''I see!' said "
  254. "the Queen, who had meanwhile been examining the roses. 'Off with their heads!' and the procession moved on, "
  255. "three of the soldiers remaining behind to execute the unfortunate gardeners, who ran to Alice for "
  256. "protection.'You shan't be beheaded!' said Alice, and she put them into a large flower-pot that stood near. "
  257. "The three soldiers wandered about for a minute or two, looking for them, and then quietly marched off after "
  258. "the others.'Are their heads off?' shouted the Queen.'Their heads are gone, if it please your Majesty!' the "
  259. "soldiers shouted in reply.'That's right!' shouted the Queen. 'Can you play croquet?'The soldiers were silent, "
  260. "and looked at Alice, as the question was evidently meant for her.'Yes!' shouted Alice.'Come on, then!' roared "
  261. "the Queen, and Alice joined the procession, wondering very much what would happen next.'It's—it's a very fine "
  262. "day!' said a timid voice at her side. She was walking by the White Rabbit, who was peeping anxiously into her "
  263. "face.'Very,' said Alice: '—where's the Duchess?''Hush! Hush!' said the Rabbit in a low, hurried tone. He "
  264. "looked anxiously over his shoulder as he spoke, and then raised himself upon tiptoe, put his mouth close to "
  265. "her ear, and whispered 'She's under sentence of execution.''What for?' said Alice.'Did you say \"What a "
  266. "pity!\"?' the Rabbit asked.'No, I didn't,' said Alice: 'I don't think it's at all a pity. I said \"What "
  267. "for?\"''She boxed the Queen's ears—' the Rabbit began. Alice gave a little scream of laughter. 'Oh, hush!' "
  268. "the Rabbit whispered in a frightened tone. 'The Queen will hear you! You see, she came rather late, and the "
  269. "Queen said—''Get to your places!' shouted the Queen in a voice of thunder, and people began running about in "
  270. "all directions, tumbling up against each other; however, they got settled down in a minute or two, and the "
  271. "game began. Alice thought she had never seen such a curious croquet-ground in her life; it was all ridges and "
  272. "furrows; the balls were live hedgehogs, the mallets live flamingoes, and the soldiers had to double "
  273. "themselves up and to stand on their hands and feet, to make the arches.The chief difficulty Alice found at "
  274. "first was in managing her flamingo: she succeeded in getting its body tucked away, comfortably enough, under "
  275. "her arm, with its legs hanging down, but generally, just as she had got its neck nicely straightened out, and "
  276. "was going to give the hedgehog a blow with its head, it would twist itself round and look up in her face, "
  277. "with such a puzzled expression that she could not help bursting out laughing: and when she had got its head "
  278. "down, and was going to begin again, it was very provoking to find that the hedgehog had unrolled itself, and "
  279. "was in the act of crawling away: besides all this, there was generally a ridge or furrow in the way wherever "
  280. "she wanted to send the hedgehog to, and, as the doubled-up soldiers were always getting up and walking off to "
  281. "other parts of the ground, Alice soon came to the conclusion that it was a very difficult game indeed.The "
  282. "players all played at once without waiting for turns, quarrelling all the while, and fighting for the "
  283. "hedgehogs; and in a very short time the Queen was in a furious passion, and went stamping about, and shouting "
  284. "'Off with his head!' or 'Off with her head!' about once in a minute.Alice began to feel very uneasy: to be "
  285. "sure, she had not as yet had any dispute with the Queen, but she knew that it might happen any minute, 'and "
  286. "then,' thought she, 'what would become of me? They're dreadfully fond of beheading people here; the great "
  287. "wonder is, that there's any one left alive!'She was looking about for some way of escape, and wondering "
  288. "whether she could get away without being seen, when she noticed a curious appearance in the air: it puzzled "
  289. "her very much at first, but, after watching it a minute or two, she made it out to be a grin, and she said to "
  290. "herself 'It's the Cheshire Cat: now I shall have somebody to talk to.''How are you getting on?' said the Cat, "
  291. "as soon as there was mouth enough for it to speak with.Alice waited till the eyes appeared, and then nodded. "
  292. "'It's no use speaking to it,' she thought, 'till its ears have come, or at least one of them.' In another "
  293. "minute the whole head appeared, and then Alice put down her flamingo, and began an account of the game, "
  294. "feeling very glad she had someone to listen to her. The Cat seemed to think that there was enough of it now "
  295. "in sight, and no more of it appeared.'I don't think they play at all fairly,' Alice began, in rather a "
  296. "complaining tone, 'and they all quarrel so dreadfully one can't hear oneself speak—and they don't seem to "
  297. "have any rules in particular; at least, if there are, nobody attends to them—and you've no idea how confusing "
  298. "it is all the things being alive; for instance, there's the arch I've got to go through next walking about at "
  299. "the other end of the ground—and I should have croqueted the Queen's hedgehog just now, only it ran away when "
  300. "it saw mine coming!''How do you like the Queen?' said the Cat in a low voice.'Not at all,' said Alice: 'she's "
  301. "so extremely—' Just then she noticed that the Queen was close behind her, listening: so she went on, '—likely "
  302. "to win, that it's hardly worth while finishing the game.'The Queen smiled and passed on.'Who are you talking "
  303. "to?' said the King, going up to Alice, and looking at the Cat's head with great curiosity.'It's a friend of "
  304. "mine—a Cheshire Cat,' said Alice: 'allow me to introduce it.''I don't like the look of it at all,' said the "
  305. "King: 'however, it may kiss my hand if it likes.''I'd rather not,' the Cat remarked.'Don't be impertinent,' "
  306. "said the King, 'and don't look at me like that!' He got behind Alice as he spoke.'A cat may look at a king,' "
  307. "said Alice. 'I've read that in some book, but I don't remember where.''Well, it must be removed,' said the "
  308. "King very decidedly, and he called the Queen, who was passing at the moment, 'My dear! I wish you would have "
  309. "this cat removed!'The Queen had only one way of settling all difficulties, great or small. 'Off with his "
  310. "head!' she said, without even looking round.'I'll fetch the executioner myself,' said the King eagerly, and "
  311. "he hurried off.Alice thought she might as well go back, and see how the game was going on, as she heard the "
  312. "Queen's voice in the distance, screaming with passion. She had already heard her sentence three of the "
  313. "players to be executed for having missed their turns, and she did not like the look of things at all, as the "
  314. "game was in such confusion that she never knew whether it was her turn or not. So she went in search of her "
  315. "hedgehog.The hedgehog was engaged in a fight with another hedgehog, which seemed to Alice an excellent "
  316. "opportunity for croqueting one of them with the other: the only difficulty was, that her flamingo was gone "
  317. "across to the other side of the garden, where Alice could see it trying in a helpless sort of way to fly up "
  318. "into a tree.By the time she had caught the flamingo and brought it back, the fight was over, and both the "
  319. "hedgehogs were out of sight: 'but it doesn't matter much,' thought Alice, 'as all the arches are gone from "
  320. "this side of the ground.' So she tucked it away under her arm, that it might not escape again, and went back "
  321. "for a little more conversation with her friend.When she got back to the Cheshire Cat, she was surprised to "
  322. "find quite a large crowd collected round it: there was a dispute going on between the executioner, the King, "
  323. "and the Queen, who were all talking at once, while all the rest were quite silent, and looked very "
  324. "uncomfortable.The moment Alice appeared, she was appealed to by all three to settle the question, and they "
  325. "repeated their arguments to her, though, as they all spoke at once, she found it very hard indeed to make out "
  326. "exactly what they said.The executioner's argument was, that you couldn't cut off a head unless there was a "
  327. "body to cut it off from: that he had never had to do such a thing before, and he wasn't going to begin at his "
  328. "time of life.The King's argument was, that anything that had a head could be beheaded, and that you weren't "
  329. "to talk nonsense.The Queen's argument was, that if something wasn't done about it in less than no time she'd "
  330. "have everybody executed, all round. (It was this last remark that had made the whole party look so grave and "
  331. "anxious.)Alice could think of nothing else to say but 'It belongs to the Duchess: you'd better ask her about "
  332. "it.''She's in prison,' the Queen said to the executioner: 'fetch her here.' And the executioner went off like "
  333. "an arrow.The Cat's head began fading away the moment he was gone, and, by the time he had come back with the "
  334. "Duchess, it had entirely disappeared; so the King and the executioner ran wildly up and down looking for it, "
  335. "while the rest of the party went back to the game.";
  336. std::string output =
  337. "QSBsYXJnZSByb3NlLXRyZWUgc3Rvb2QgbmVhciB0aGUgZW50cmFuY2Ugb2YgdGhlIGdhcmRlbjogdGhlIHJvc2VzIGdyb3dpbmcgb24gaXQgd2"
  338. "VyZSB3aGl0ZSwgYnV0IHRoZXJlIHdlcmUgdGhyZWUgZ2FyZGVuZXJzIGF0IGl0LCBidXNpbHkgcGFpbnRpbmcgdGhlbSByZWQuIEFsaWNlIHRo"
  339. "b3VnaHQgdGhpcyBhIHZlcnkgY3VyaW91cyB0aGluZywgYW5kIHNoZSB3ZW50IG5lYXJlciB0byB3YXRjaCB0aGVtLCBhbmQganVzdCBhcyBzaG"
  340. "UgY2FtZSB1cCB0byB0aGVtIHNoZSBoZWFyZCBvbmUgb2YgdGhlbSBzYXksICdMb29rIG91dCBub3csIEZpdmUhIERvbid0IGdvIHNwbGFzaGlu"
  341. "ZyBwYWludCBvdmVyIG1lIGxpa2UgdGhhdCEnJ0kgY291bGRuJ3QgaGVscCBpdCwnIHNhaWQgRml2ZSwgaW4gYSBzdWxreSB0b25lOyAnU2V2ZW"
  342. "4gam9nZ2VkIG15IGVsYm93LidPbiB3aGljaCBTZXZlbiBsb29rZWQgdXAgYW5kIHNhaWQsICdUaGF0J3MgcmlnaHQsIEZpdmUhIEFsd2F5cyBs"
  343. "YXkgdGhlIGJsYW1lIG9uIG90aGVycyEnJ1lvdSdkIGJldHRlciBub3QgdGFsayEnIHNhaWQgRml2ZS4gJ0kgaGVhcmQgdGhlIFF1ZWVuIHNheS"
  344. "Bvbmx5IHllc3RlcmRheSB5b3UgZGVzZXJ2ZWQgdG8gYmUgYmVoZWFkZWQhJydXaGF0IGZvcj8nIHNhaWQgdGhlIG9uZSB3aG8gaGFkIHNwb2tl"
  345. "biBmaXJzdC4nVGhhdCdzIG5vbmUgb2YgeW91ciBidXNpbmVzcywgVHdvIScgc2FpZCBTZXZlbi4nWWVzLCBpdCBpcyBoaXMgYnVzaW5lc3MhJy"
  346. "BzYWlkIEZpdmUsICdhbmQgSSdsbCB0ZWxsIGhpbeKAlGl0IHdhcyBmb3IgYnJpbmdpbmcgdGhlIGNvb2sgdHVsaXAtcm9vdHMgaW5zdGVhZCBv"
  347. "ZiBvbmlvbnMuJ1NldmVuIGZsdW5nIGRvd24gaGlzIGJydXNoLCBhbmQgaGFkIGp1c3QgYmVndW4gJ1dlbGwsIG9mIGFsbCB0aGUgdW5qdXN0IH"
  348. "RoaW5nc+"
  349. "KAlCcgd2hlbiBoaXMgZXllIGNoYW5jZWQgdG8gZmFsbCB1cG9uIEFsaWNlLCBhcyBzaGUgc3Rvb2Qgd2F0Y2hpbmcgdGhlbSwgYW5kIGhlIGNo"
  350. "ZWNrZWQgaGltc2VsZiBzdWRkZW5seTogdGhlIG90aGVycyBsb29rZWQgcm91bmQgYWxzbywgYW5kIGFsbCBvZiB0aGVtIGJvd2VkIGxvdy4nV2"
  351. "91bGQgeW91IHRlbGwgbWUsJyBzYWlkIEFsaWNlLCBhIGxpdHRsZSB0aW1pZGx5LCAnd2h5IHlvdSBhcmUgcGFpbnRpbmcgdGhvc2Ugcm9zZXM/"
  352. "J0ZpdmUgYW5kIFNldmVuIHNhaWQgbm90aGluZywgYnV0IGxvb2tlZCBhdCBUd28uIFR3byBiZWdhbiBpbiBhIGxvdyB2b2ljZSwgJ1doeSB0aG"
  353. "UgZmFjdCBpcywgeW91IHNlZSwgTWlzcywgdGhpcyBoZXJlIG91Z2h0IHRvIGhhdmUgYmVlbiBhIHJlZCByb3NlLXRyZWUsIGFuZCB3ZSBwdXQg"
  354. "YSB3aGl0ZSBvbmUgaW4gYnkgbWlzdGFrZTsgYW5kIGlmIHRoZSBRdWVlbiB3YXMgdG8gZmluZCBpdCBvdXQsIHdlIHNob3VsZCBhbGwgaGF2ZS"
  355. "BvdXIgaGVhZHMgY3V0IG9mZiwgeW91IGtub3cuIFNvIHlvdSBzZWUsIE1pc3MsIHdlJ3JlIGRvaW5nIG91ciBiZXN0LCBhZm9yZSBzaGUgY29t"
  356. "ZXMsIHRv4oCUJyBBdCB0aGlzIG1vbWVudCBGaXZlLCB3aG8gaGFkIGJlZW4gYW54aW91c2x5IGxvb2tpbmcgYWNyb3NzIHRoZSBnYXJkZW4sIG"
  357. "NhbGxlZCBvdXQgJ1RoZSBRdWVlbiEgVGhlIFF1ZWVuIScgYW5kIHRoZSB0aHJlZSBnYXJkZW5lcnMgaW5zdGFudGx5IHRocmV3IHRoZW1zZWx2"
  358. "ZXMgZmxhdCB1cG9uIHRoZWlyIGZhY2VzLiBUaGVyZSB3YXMgYSBzb3VuZCBvZiBtYW55IGZvb3RzdGVwcywgYW5kIEFsaWNlIGxvb2tlZCByb3"
  359. "VuZCwgZWFnZXIgdG8gc2VlIHRoZSBRdWVlbi5GaXJzdCBjYW1lIHRlbiBzb2xkaWVycyBjYXJyeWluZyBjbHViczsgdGhlc2Ugd2VyZSBhbGwg"
  360. "c2hhcGVkIGxpa2UgdGhlIHRocmVlIGdhcmRlbmVycywgb2Jsb25nIGFuZCBmbGF0LCB3aXRoIHRoZWlyIGhhbmRzIGFuZCBmZWV0IGF0IHRoZS"
  361. "Bjb3JuZXJzOiBuZXh0IHRoZSB0ZW4gY291cnRpZXJzOyB0aGVzZSB3ZXJlIG9ybmFtZW50ZWQgYWxsIG92ZXIgd2l0aCBkaWFtb25kcywgYW5k"
  362. "IHdhbGtlZCB0d28gYW5kIHR3bywgYXMgdGhlIHNvbGRpZXJzIGRpZC4gQWZ0ZXIgdGhlc2UgY2FtZSB0aGUgcm95YWwgY2hpbGRyZW47IHRoZX"
  363. "JlIHdlcmUgdGVuIG9mIHRoZW0sIGFuZCB0aGUgbGl0dGxlIGRlYXJzIGNhbWUganVtcGluZyBtZXJyaWx5IGFsb25nIGhhbmQgaW4gaGFuZCwg"
  364. "aW4gY291cGxlczogdGhleSB3ZXJlIGFsbCBvcm5hbWVudGVkIHdpdGggaGVhcnRzLiBOZXh0IGNhbWUgdGhlIGd1ZXN0cywgbW9zdGx5IEtpbm"
  365. "dzIGFuZCBRdWVlbnMsIGFuZCBhbW9uZyB0aGVtIEFsaWNlIHJlY29nbmlzZWQgdGhlIFdoaXRlIFJhYmJpdDogaXQgd2FzIHRhbGtpbmcgaW4g"
  366. "YSBodXJyaWVkIG5lcnZvdXMgbWFubmVyLCBzbWlsaW5nIGF0IGV2ZXJ5dGhpbmcgdGhhdCB3YXMgc2FpZCwgYW5kIHdlbnQgYnkgd2l0aG91dC"
  367. "Bub3RpY2luZyBoZXIuIFRoZW4gZm9sbG93ZWQgdGhlIEtuYXZlIG9mIEhlYXJ0cywgY2FycnlpbmcgdGhlIEtpbmcncyBjcm93biBvbiBhIGNy"
  368. "aW1zb24gdmVsdmV0IGN1c2hpb247IGFuZCwgbGFzdCBvZiBhbGwgdGhpcyBncmFuZCBwcm9jZXNzaW9uLCBjYW1lIFRIRSBLSU5HIEFORCBRVU"
  369. "VFTiBPRiBIRUFSVFMuQWxpY2Ugd2FzIHJhdGhlciBkb3VidGZ1bCB3aGV0aGVyIHNoZSBvdWdodCBub3QgdG8gbGllIGRvd24gb24gaGVyIGZh"
  370. "Y2UgbGlrZSB0aGUgdGhyZWUgZ2FyZGVuZXJzLCBidXQgc2hlIGNvdWxkIG5vdCByZW1lbWJlciBldmVyIGhhdmluZyBoZWFyZCBvZiBzdWNoIG"
  371. "EgcnVsZSBhdCBwcm9jZXNzaW9uczsgJ2FuZCBiZXNpZGVzLCB3aGF0IHdvdWxkIGJlIHRoZSB1c2Ugb2YgYSBwcm9jZXNzaW9uLCcgdGhvdWdo"
  372. "dCBzaGUsICdpZiBwZW9wbGUgaGFkIGFsbCB0byBsaWUgZG93biB1cG9uIHRoZWlyIGZhY2VzLCBzbyB0aGF0IHRoZXkgY291bGRuJ3Qgc2VlIG"
  373. "l0PycgU28gc2hlIHN0b29kIHN0aWxsIHdoZXJlIHNoZSB3YXMsIGFuZCB3YWl0ZWQuV2hlbiB0aGUgcHJvY2Vzc2lvbiBjYW1lIG9wcG9zaXRl"
  374. "IHRvIEFsaWNlLCB0aGV5IGFsbCBzdG9wcGVkIGFuZCBsb29rZWQgYXQgaGVyLCBhbmQgdGhlIFF1ZWVuIHNhaWQgc2V2ZXJlbHkgJ1dobyBpcy"
  375. "B0aGlzPycgU2hlIHNhaWQgaXQgdG8gdGhlIEtuYXZlIG9mIEhlYXJ0cywgd2hvIG9ubHkgYm93ZWQgYW5kIHNtaWxlZCBpbiByZXBseS4nSWRp"
  376. "b3QhJyBzYWlkIHRoZSBRdWVlbiwgdG9zc2luZyBoZXIgaGVhZCBpbXBhdGllbnRseTsgYW5kLCB0dXJuaW5nIHRvIEFsaWNlLCBzaGUgd2VudC"
  377. "BvbiwgJ1doYXQncyB5b3VyIG5hbWUsIGNoaWxkPycnTXkgbmFtZSBpcyBBbGljZSwgc28gcGxlYXNlIHlvdXIgTWFqZXN0eSwnIHNhaWQgQWxp"
  378. "Y2UgdmVyeSBwb2xpdGVseTsgYnV0IHNoZSBhZGRlZCwgdG8gaGVyc2VsZiwgJ1doeSwgdGhleSdyZSBvbmx5IGEgcGFjayBvZiBjYXJkcywgYW"
  379. "Z0ZXIgYWxsLiBJIG5lZWRuJ3QgYmUgYWZyYWlkIG9mIHRoZW0hJydBbmQgd2hvIGFyZSB0aGVzZT8nIHNhaWQgdGhlIFF1ZWVuLCBwb2ludGlu"
  380. "ZyB0byB0aGUgdGhyZWUgZ2FyZGVuZXJzIHdobyB3ZXJlIGx5aW5nIHJvdW5kIHRoZSByb3NldHJlZTsgZm9yLCB5b3Ugc2VlLCBhcyB0aGV5IH"
  381. "dlcmUgbHlpbmcgb24gdGhlaXIgZmFjZXMsIGFuZCB0aGUgcGF0dGVybiBvbiB0aGVpciBiYWNrcyB3YXMgdGhlIHNhbWUgYXMgdGhlIHJlc3Qg"
  382. "b2YgdGhlIHBhY2ssIHNoZSBjb3VsZCBub3QgdGVsbCB3aGV0aGVyIHRoZXkgd2VyZSBnYXJkZW5lcnMsIG9yIHNvbGRpZXJzLCBvciBjb3VydG"
  383. "llcnMsIG9yIHRocmVlIG9mIGhlciBvd24gY2hpbGRyZW4uJ0hvdyBzaG91bGQgSSBrbm93Pycgc2FpZCBBbGljZSwgc3VycHJpc2VkIGF0IGhl"
  384. "ciBvd24gY291cmFnZS4gJ0l0J3Mgbm8gYnVzaW5lc3Mgb2YgbWluZS4nVGhlIFF1ZWVuIHR1cm5lZCBjcmltc29uIHdpdGggZnVyeSwgYW5kLC"
  385. "BhZnRlciBnbGFyaW5nIGF0IGhlciBmb3IgYSBtb21lbnQgbGlrZSBhIHdpbGQgYmVhc3QsIHNjcmVhbWVkICdPZmYgd2l0aCBoZXIgaGVhZCEg"
  386. "T2Zm4oCUJydOb25zZW5zZSEnIHNhaWQgQWxpY2UsIHZlcnkgbG91ZGx5IGFuZCBkZWNpZGVkbHksIGFuZCB0aGUgUXVlZW4gd2FzIHNpbGVudC"
  387. "5UaGUgS2luZyBsYWlkIGhpcyBoYW5kIHVwb24gaGVyIGFybSwgYW5kIHRpbWlkbHkgc2FpZCAnQ29uc2lkZXIsIG15IGRlYXI6IHNoZSBpcyBv"
  388. "bmx5IGEgY2hpbGQhJ1RoZSBRdWVlbiB0dXJuZWQgYW5ncmlseSBhd2F5IGZyb20gaGltLCBhbmQgc2FpZCB0byB0aGUgS25hdmUgJ1R1cm4gdG"
  389. "hlbSBvdmVyISdUaGUgS25hdmUgZGlkIHNvLCB2ZXJ5IGNhcmVmdWxseSwgd2l0aCBvbmUgZm9vdC4nR2V0IHVwIScgc2FpZCB0aGUgUXVlZW4s"
  390. "IGluIGEgc2hyaWxsLCBsb3VkIHZvaWNlLCBhbmQgdGhlIHRocmVlIGdhcmRlbmVycyBpbnN0YW50bHkganVtcGVkIHVwLCBhbmQgYmVnYW4gYm"
  391. "93aW5nIHRvIHRoZSBLaW5nLCB0aGUgUXVlZW4sIHRoZSByb3lhbCBjaGlsZHJlbiwgYW5kIGV2ZXJ5Ym9keSBlbHNlLidMZWF2ZSBvZmYgdGhh"
  392. "dCEnIHNjcmVhbWVkIHRoZSBRdWVlbi4gJ1lvdSBtYWtlIG1lIGdpZGR5LicgQW5kIHRoZW4sIHR1cm5pbmcgdG8gdGhlIHJvc2UtdHJlZSwgc2"
  393. "hlIHdlbnQgb24sICdXaGF0IGhhdmUgeW91IGJlZW4gZG9pbmcgaGVyZT8nJ01heSBpdCBwbGVhc2UgeW91ciBNYWplc3R5LCcgc2FpZCBUd28s"
  394. "IGluIGEgdmVyeSBodW1ibGUgdG9uZSwgZ29pbmcgZG93biBvbiBvbmUga25lZSBhcyBoZSBzcG9rZSwgJ3dlIHdlcmUgdHJ5aW5n4oCUJydJIH"
  395. "NlZSEnIHNhaWQgdGhlIFF1ZWVuLCB3aG8gaGFkIG1lYW53aGlsZSBiZWVuIGV4YW1pbmluZyB0aGUgcm9zZXMuICdPZmYgd2l0aCB0aGVpciBo"
  396. "ZWFkcyEnIGFuZCB0aGUgcHJvY2Vzc2lvbiBtb3ZlZCBvbiwgdGhyZWUgb2YgdGhlIHNvbGRpZXJzIHJlbWFpbmluZyBiZWhpbmQgdG8gZXhlY3"
  397. "V0ZSB0aGUgdW5mb3J0dW5hdGUgZ2FyZGVuZXJzLCB3aG8gcmFuIHRvIEFsaWNlIGZvciBwcm90ZWN0aW9uLidZb3Ugc2hhbid0IGJlIGJlaGVh"
  398. "ZGVkIScgc2FpZCBBbGljZSwgYW5kIHNoZSBwdXQgdGhlbSBpbnRvIGEgbGFyZ2UgZmxvd2VyLXBvdCB0aGF0IHN0b29kIG5lYXIuIFRoZSB0aH"
  399. "JlZSBzb2xkaWVycyB3YW5kZXJlZCBhYm91dCBmb3IgYSBtaW51dGUgb3IgdHdvLCBsb29raW5nIGZvciB0aGVtLCBhbmQgdGhlbiBxdWlldGx5"
  400. "IG1hcmNoZWQgb2ZmIGFmdGVyIHRoZSBvdGhlcnMuJ0FyZSB0aGVpciBoZWFkcyBvZmY/"
  401. "JyBzaG91dGVkIHRoZSBRdWVlbi4nVGhlaXIgaGVhZHMgYXJlIGdvbmUsIGlmIGl0IHBsZWFzZSB5b3VyIE1hamVzdHkhJyB0aGUgc29sZGllcn"
  402. "Mgc2hvdXRlZCBpbiByZXBseS4nVGhhdCdzIHJpZ2h0IScgc2hvdXRlZCB0aGUgUXVlZW4uICdDYW4geW91IHBsYXkgY3JvcXVldD8nVGhlIHNv"
  403. "bGRpZXJzIHdlcmUgc2lsZW50LCBhbmQgbG9va2VkIGF0IEFsaWNlLCBhcyB0aGUgcXVlc3Rpb24gd2FzIGV2aWRlbnRseSBtZWFudCBmb3IgaG"
  404. "VyLidZZXMhJyBzaG91dGVkIEFsaWNlLidDb21lIG9uLCB0aGVuIScgcm9hcmVkIHRoZSBRdWVlbiwgYW5kIEFsaWNlIGpvaW5lZCB0aGUgcHJv"
  405. "Y2Vzc2lvbiwgd29uZGVyaW5nIHZlcnkgbXVjaCB3aGF0IHdvdWxkIGhhcHBlbiBuZXh0LidJdCdz4oCUaXQncyBhIHZlcnkgZmluZSBkYXkhJy"
  406. "BzYWlkIGEgdGltaWQgdm9pY2UgYXQgaGVyIHNpZGUuIFNoZSB3YXMgd2Fsa2luZyBieSB0aGUgV2hpdGUgUmFiYml0LCB3aG8gd2FzIHBlZXBp"
  407. "bmcgYW54aW91c2x5IGludG8gaGVyIGZhY2UuJ1ZlcnksJyBzYWlkIEFsaWNlOiAn4oCUd2hlcmUncyB0aGUgRHVjaGVzcz8nJ0h1c2ghIEh1c2"
  408. "ghJyBzYWlkIHRoZSBSYWJiaXQgaW4gYSBsb3csIGh1cnJpZWQgdG9uZS4gSGUgbG9va2VkIGFueGlvdXNseSBvdmVyIGhpcyBzaG91bGRlciBh"
  409. "cyBoZSBzcG9rZSwgYW5kIHRoZW4gcmFpc2VkIGhpbXNlbGYgdXBvbiB0aXB0b2UsIHB1dCBoaXMgbW91dGggY2xvc2UgdG8gaGVyIGVhciwgYW"
  410. "5kIHdoaXNwZXJlZCAnU2hlJ3MgdW5kZXIgc2VudGVuY2Ugb2YgZXhlY3V0aW9uLicnV2hhdCBmb3I/"
  411. "JyBzYWlkIEFsaWNlLidEaWQgeW91IHNheSAiV2hhdCBhIHBpdHkhIj8nIHRoZSBSYWJiaXQgYXNrZWQuJ05vLCBJIGRpZG4ndCwnIHNhaWQgQW"
  412. "xpY2U6ICdJIGRvbid0IHRoaW5rIGl0J3MgYXQgYWxsIGEgcGl0eS4gSSBzYWlkICJXaGF0IGZvcj8iJydTaGUgYm94ZWQgdGhlIFF1ZWVuJ3Mg"
  413. "ZWFyc+"
  414. "KAlCcgdGhlIFJhYmJpdCBiZWdhbi4gQWxpY2UgZ2F2ZSBhIGxpdHRsZSBzY3JlYW0gb2YgbGF1Z2h0ZXIuICdPaCwgaHVzaCEnIHRoZSBSYWJi"
  415. "aXQgd2hpc3BlcmVkIGluIGEgZnJpZ2h0ZW5lZCB0b25lLiAnVGhlIFF1ZWVuIHdpbGwgaGVhciB5b3UhIFlvdSBzZWUsIHNoZSBjYW1lIHJhdG"
  416. "hlciBsYXRlLCBhbmQgdGhlIFF1ZWVuIHNhaWTigJQnJ0dldCB0byB5b3VyIHBsYWNlcyEnIHNob3V0ZWQgdGhlIFF1ZWVuIGluIGEgdm9pY2Ug"
  417. "b2YgdGh1bmRlciwgYW5kIHBlb3BsZSBiZWdhbiBydW5uaW5nIGFib3V0IGluIGFsbCBkaXJlY3Rpb25zLCB0dW1ibGluZyB1cCBhZ2FpbnN0IG"
  418. "VhY2ggb3RoZXI7IGhvd2V2ZXIsIHRoZXkgZ290IHNldHRsZWQgZG93biBpbiBhIG1pbnV0ZSBvciB0d28sIGFuZCB0aGUgZ2FtZSBiZWdhbi4g"
  419. "QWxpY2UgdGhvdWdodCBzaGUgaGFkIG5ldmVyIHNlZW4gc3VjaCBhIGN1cmlvdXMgY3JvcXVldC1ncm91bmQgaW4gaGVyIGxpZmU7IGl0IHdhcy"
  420. "BhbGwgcmlkZ2VzIGFuZCBmdXJyb3dzOyB0aGUgYmFsbHMgd2VyZSBsaXZlIGhlZGdlaG9ncywgdGhlIG1hbGxldHMgbGl2ZSBmbGFtaW5nb2Vz"
  421. "LCBhbmQgdGhlIHNvbGRpZXJzIGhhZCB0byBkb3VibGUgdGhlbXNlbHZlcyB1cCBhbmQgdG8gc3RhbmQgb24gdGhlaXIgaGFuZHMgYW5kIGZlZX"
  422. "QsIHRvIG1ha2UgdGhlIGFyY2hlcy5UaGUgY2hpZWYgZGlmZmljdWx0eSBBbGljZSBmb3VuZCBhdCBmaXJzdCB3YXMgaW4gbWFuYWdpbmcgaGVy"
  423. "IGZsYW1pbmdvOiBzaGUgc3VjY2VlZGVkIGluIGdldHRpbmcgaXRzIGJvZHkgdHVja2VkIGF3YXksIGNvbWZvcnRhYmx5IGVub3VnaCwgdW5kZX"
  424. "IgaGVyIGFybSwgd2l0aCBpdHMgbGVncyBoYW5naW5nIGRvd24sIGJ1dCBnZW5lcmFsbHksIGp1c3QgYXMgc2hlIGhhZCBnb3QgaXRzIG5lY2sg"
  425. "bmljZWx5IHN0cmFpZ2h0ZW5lZCBvdXQsIGFuZCB3YXMgZ29pbmcgdG8gZ2l2ZSB0aGUgaGVkZ2Vob2cgYSBibG93IHdpdGggaXRzIGhlYWQsIG"
  426. "l0IHdvdWxkIHR3aXN0IGl0c2VsZiByb3VuZCBhbmQgbG9vayB1cCBpbiBoZXIgZmFjZSwgd2l0aCBzdWNoIGEgcHV6emxlZCBleHByZXNzaW9u"
  427. "IHRoYXQgc2hlIGNvdWxkIG5vdCBoZWxwIGJ1cnN0aW5nIG91dCBsYXVnaGluZzogYW5kIHdoZW4gc2hlIGhhZCBnb3QgaXRzIGhlYWQgZG93bi"
  428. "wgYW5kIHdhcyBnb2luZyB0byBiZWdpbiBhZ2FpbiwgaXQgd2FzIHZlcnkgcHJvdm9raW5nIHRvIGZpbmQgdGhhdCB0aGUgaGVkZ2Vob2cgaGFk"
  429. "IHVucm9sbGVkIGl0c2VsZiwgYW5kIHdhcyBpbiB0aGUgYWN0IG9mIGNyYXdsaW5nIGF3YXk6IGJlc2lkZXMgYWxsIHRoaXMsIHRoZXJlIHdhcy"
  430. "BnZW5lcmFsbHkgYSByaWRnZSBvciBmdXJyb3cgaW4gdGhlIHdheSB3aGVyZXZlciBzaGUgd2FudGVkIHRvIHNlbmQgdGhlIGhlZGdlaG9nIHRv"
  431. "LCBhbmQsIGFzIHRoZSBkb3VibGVkLXVwIHNvbGRpZXJzIHdlcmUgYWx3YXlzIGdldHRpbmcgdXAgYW5kIHdhbGtpbmcgb2ZmIHRvIG90aGVyIH"
  432. "BhcnRzIG9mIHRoZSBncm91bmQsIEFsaWNlIHNvb24gY2FtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGl0IHdhcyBhIHZlcnkgZGlmZmljdWx0"
  433. "IGdhbWUgaW5kZWVkLlRoZSBwbGF5ZXJzIGFsbCBwbGF5ZWQgYXQgb25jZSB3aXRob3V0IHdhaXRpbmcgZm9yIHR1cm5zLCBxdWFycmVsbGluZy"
  434. "BhbGwgdGhlIHdoaWxlLCBhbmQgZmlnaHRpbmcgZm9yIHRoZSBoZWRnZWhvZ3M7IGFuZCBpbiBhIHZlcnkgc2hvcnQgdGltZSB0aGUgUXVlZW4g"
  435. "d2FzIGluIGEgZnVyaW91cyBwYXNzaW9uLCBhbmQgd2VudCBzdGFtcGluZyBhYm91dCwgYW5kIHNob3V0aW5nICdPZmYgd2l0aCBoaXMgaGVhZC"
  436. "EnIG9yICdPZmYgd2l0aCBoZXIgaGVhZCEnIGFib3V0IG9uY2UgaW4gYSBtaW51dGUuQWxpY2UgYmVnYW4gdG8gZmVlbCB2ZXJ5IHVuZWFzeTog"
  437. "dG8gYmUgc3VyZSwgc2hlIGhhZCBub3QgYXMgeWV0IGhhZCBhbnkgZGlzcHV0ZSB3aXRoIHRoZSBRdWVlbiwgYnV0IHNoZSBrbmV3IHRoYXQgaX"
  438. "QgbWlnaHQgaGFwcGVuIGFueSBtaW51dGUsICdhbmQgdGhlbiwnIHRob3VnaHQgc2hlLCAnd2hhdCB3b3VsZCBiZWNvbWUgb2YgbWU/"
  439. "IFRoZXkncmUgZHJlYWRmdWxseSBmb25kIG9mIGJlaGVhZGluZyBwZW9wbGUgaGVyZTsgdGhlIGdyZWF0IHdvbmRlciBpcywgdGhhdCB0aGVyZS"
  440. "dzIGFueSBvbmUgbGVmdCBhbGl2ZSEnU2hlIHdhcyBsb29raW5nIGFib3V0IGZvciBzb21lIHdheSBvZiBlc2NhcGUsIGFuZCB3b25kZXJpbmcg"
  441. "d2hldGhlciBzaGUgY291bGQgZ2V0IGF3YXkgd2l0aG91dCBiZWluZyBzZWVuLCB3aGVuIHNoZSBub3RpY2VkIGEgY3VyaW91cyBhcHBlYXJhbm"
  442. "NlIGluIHRoZSBhaXI6IGl0IHB1enpsZWQgaGVyIHZlcnkgbXVjaCBhdCBmaXJzdCwgYnV0LCBhZnRlciB3YXRjaGluZyBpdCBhIG1pbnV0ZSBv"
  443. "ciB0d28sIHNoZSBtYWRlIGl0IG91dCB0byBiZSBhIGdyaW4sIGFuZCBzaGUgc2FpZCB0byBoZXJzZWxmICdJdCdzIHRoZSBDaGVzaGlyZSBDYX"
  444. "Q6IG5vdyBJIHNoYWxsIGhhdmUgc29tZWJvZHkgdG8gdGFsayB0by4nJ0hvdyBhcmUgeW91IGdldHRpbmcgb24/"
  445. "JyBzYWlkIHRoZSBDYXQsIGFzIHNvb24gYXMgdGhlcmUgd2FzIG1vdXRoIGVub3VnaCBmb3IgaXQgdG8gc3BlYWsgd2l0aC5BbGljZSB3YWl0ZW"
  446. "QgdGlsbCB0aGUgZXllcyBhcHBlYXJlZCwgYW5kIHRoZW4gbm9kZGVkLiAnSXQncyBubyB1c2Ugc3BlYWtpbmcgdG8gaXQsJyBzaGUgdGhvdWdo"
  447. "dCwgJ3RpbGwgaXRzIGVhcnMgaGF2ZSBjb21lLCBvciBhdCBsZWFzdCBvbmUgb2YgdGhlbS4nIEluIGFub3RoZXIgbWludXRlIHRoZSB3aG9sZS"
  448. "BoZWFkIGFwcGVhcmVkLCBhbmQgdGhlbiBBbGljZSBwdXQgZG93biBoZXIgZmxhbWluZ28sIGFuZCBiZWdhbiBhbiBhY2NvdW50IG9mIHRoZSBn"
  449. "YW1lLCBmZWVsaW5nIHZlcnkgZ2xhZCBzaGUgaGFkIHNvbWVvbmUgdG8gbGlzdGVuIHRvIGhlci4gVGhlIENhdCBzZWVtZWQgdG8gdGhpbmsgdG"
  450. "hhdCB0aGVyZSB3YXMgZW5vdWdoIG9mIGl0IG5vdyBpbiBzaWdodCwgYW5kIG5vIG1vcmUgb2YgaXQgYXBwZWFyZWQuJ0kgZG9uJ3QgdGhpbmsg"
  451. "dGhleSBwbGF5IGF0IGFsbCBmYWlybHksJyBBbGljZSBiZWdhbiwgaW4gcmF0aGVyIGEgY29tcGxhaW5pbmcgdG9uZSwgJ2FuZCB0aGV5IGFsbC"
  452. "BxdWFycmVsIHNvIGRyZWFkZnVsbHkgb25lIGNhbid0IGhlYXIgb25lc2VsZiBzcGVha+"
  453. "KAlGFuZCB0aGV5IGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgcnVsZXMgaW4gcGFydGljdWxhcjsgYXQgbGVhc3QsIGlmIHRoZXJlIGFyZSwgbm9i"
  454. "b2R5IGF0dGVuZHMgdG8gdGhlbeKAlGFuZCB5b3UndmUgbm8gaWRlYSBob3cgY29uZnVzaW5nIGl0IGlzIGFsbCB0aGUgdGhpbmdzIGJlaW5nIG"
  455. "FsaXZlOyBmb3IgaW5zdGFuY2UsIHRoZXJlJ3MgdGhlIGFyY2ggSSd2ZSBnb3QgdG8gZ28gdGhyb3VnaCBuZXh0IHdhbGtpbmcgYWJvdXQgYXQg"
  456. "dGhlIG90aGVyIGVuZCBvZiB0aGUgZ3JvdW5k4oCUYW5kIEkgc2hvdWxkIGhhdmUgY3JvcXVldGVkIHRoZSBRdWVlbidzIGhlZGdlaG9nIGp1c3"
  457. "Qgbm93LCBvbmx5IGl0IHJhbiBhd2F5IHdoZW4gaXQgc2F3IG1pbmUgY29taW5nIScnSG93IGRvIHlvdSBsaWtlIHRoZSBRdWVlbj8nIHNhaWQg"
  458. "dGhlIENhdCBpbiBhIGxvdyB2b2ljZS4nTm90IGF0IGFsbCwnIHNhaWQgQWxpY2U6ICdzaGUncyBzbyBleHRyZW1lbHnigJQnIEp1c3QgdGhlbi"
  459. "BzaGUgbm90aWNlZCB0aGF0IHRoZSBRdWVlbiB3YXMgY2xvc2UgYmVoaW5kIGhlciwgbGlzdGVuaW5nOiBzbyBzaGUgd2VudCBvbiwgJ+"
  460. "KAlGxpa2VseSB0byB3aW4sIHRoYXQgaXQncyBoYXJkbHkgd29ydGggd2hpbGUgZmluaXNoaW5nIHRoZSBnYW1lLidUaGUgUXVlZW4gc21pbGVk"
  461. "IGFuZCBwYXNzZWQgb24uJ1dobyBhcmUgeW91IHRhbGtpbmcgdG8/"
  462. "JyBzYWlkIHRoZSBLaW5nLCBnb2luZyB1cCB0byBBbGljZSwgYW5kIGxvb2tpbmcgYXQgdGhlIENhdCdzIGhlYWQgd2l0aCBncmVhdCBjdXJpb3"
  463. "NpdHkuJ0l0J3MgYSBmcmllbmQgb2YgbWluZeKAlGEgQ2hlc2hpcmUgQ2F0LCcgc2FpZCBBbGljZTogJ2FsbG93IG1lIHRvIGludHJvZHVjZSBp"
  464. "dC4nJ0kgZG9uJ3QgbGlrZSB0aGUgbG9vayBvZiBpdCBhdCBhbGwsJyBzYWlkIHRoZSBLaW5nOiAnaG93ZXZlciwgaXQgbWF5IGtpc3MgbXkgaG"
  465. "FuZCBpZiBpdCBsaWtlcy4nJ0knZCByYXRoZXIgbm90LCcgdGhlIENhdCByZW1hcmtlZC4nRG9uJ3QgYmUgaW1wZXJ0aW5lbnQsJyBzYWlkIHRo"
  466. "ZSBLaW5nLCAnYW5kIGRvbid0IGxvb2sgYXQgbWUgbGlrZSB0aGF0IScgSGUgZ290IGJlaGluZCBBbGljZSBhcyBoZSBzcG9rZS4nQSBjYXQgbW"
  467. "F5IGxvb2sgYXQgYSBraW5nLCcgc2FpZCBBbGljZS4gJ0kndmUgcmVhZCB0aGF0IGluIHNvbWUgYm9vaywgYnV0IEkgZG9uJ3QgcmVtZW1iZXIg"
  468. "d2hlcmUuJydXZWxsLCBpdCBtdXN0IGJlIHJlbW92ZWQsJyBzYWlkIHRoZSBLaW5nIHZlcnkgZGVjaWRlZGx5LCBhbmQgaGUgY2FsbGVkIHRoZS"
  469. "BRdWVlbiwgd2hvIHdhcyBwYXNzaW5nIGF0IHRoZSBtb21lbnQsICdNeSBkZWFyISBJIHdpc2ggeW91IHdvdWxkIGhhdmUgdGhpcyBjYXQgcmVt"
  470. "b3ZlZCEnVGhlIFF1ZWVuIGhhZCBvbmx5IG9uZSB3YXkgb2Ygc2V0dGxpbmcgYWxsIGRpZmZpY3VsdGllcywgZ3JlYXQgb3Igc21hbGwuICdPZm"
  471. "Ygd2l0aCBoaXMgaGVhZCEnIHNoZSBzYWlkLCB3aXRob3V0IGV2ZW4gbG9va2luZyByb3VuZC4nSSdsbCBmZXRjaCB0aGUgZXhlY3V0aW9uZXIg"
  472. "bXlzZWxmLCcgc2FpZCB0aGUgS2luZyBlYWdlcmx5LCBhbmQgaGUgaHVycmllZCBvZmYuQWxpY2UgdGhvdWdodCBzaGUgbWlnaHQgYXMgd2VsbC"
  473. "BnbyBiYWNrLCBhbmQgc2VlIGhvdyB0aGUgZ2FtZSB3YXMgZ29pbmcgb24sIGFzIHNoZSBoZWFyZCB0aGUgUXVlZW4ncyB2b2ljZSBpbiB0aGUg"
  474. "ZGlzdGFuY2UsIHNjcmVhbWluZyB3aXRoIHBhc3Npb24uIFNoZSBoYWQgYWxyZWFkeSBoZWFyZCBoZXIgc2VudGVuY2UgdGhyZWUgb2YgdGhlIH"
  475. "BsYXllcnMgdG8gYmUgZXhlY3V0ZWQgZm9yIGhhdmluZyBtaXNzZWQgdGhlaXIgdHVybnMsIGFuZCBzaGUgZGlkIG5vdCBsaWtlIHRoZSBsb29r"
  476. "IG9mIHRoaW5ncyBhdCBhbGwsIGFzIHRoZSBnYW1lIHdhcyBpbiBzdWNoIGNvbmZ1c2lvbiB0aGF0IHNoZSBuZXZlciBrbmV3IHdoZXRoZXIgaX"
  477. "Qgd2FzIGhlciB0dXJuIG9yIG5vdC4gU28gc2hlIHdlbnQgaW4gc2VhcmNoIG9mIGhlciBoZWRnZWhvZy5UaGUgaGVkZ2Vob2cgd2FzIGVuZ2Fn"
  478. "ZWQgaW4gYSBmaWdodCB3aXRoIGFub3RoZXIgaGVkZ2Vob2csIHdoaWNoIHNlZW1lZCB0byBBbGljZSBhbiBleGNlbGxlbnQgb3Bwb3J0dW5pdH"
  479. "kgZm9yIGNyb3F1ZXRpbmcgb25lIG9mIHRoZW0gd2l0aCB0aGUgb3RoZXI6IHRoZSBvbmx5IGRpZmZpY3VsdHkgd2FzLCB0aGF0IGhlciBmbGFt"
  480. "aW5nbyB3YXMgZ29uZSBhY3Jvc3MgdG8gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGdhcmRlbiwgd2hlcmUgQWxpY2UgY291bGQgc2VlIGl0IHRyeW"
  481. "luZyBpbiBhIGhlbHBsZXNzIHNvcnQgb2Ygd2F5IHRvIGZseSB1cCBpbnRvIGEgdHJlZS5CeSB0aGUgdGltZSBzaGUgaGFkIGNhdWdodCB0aGUg"
  482. "ZmxhbWluZ28gYW5kIGJyb3VnaHQgaXQgYmFjaywgdGhlIGZpZ2h0IHdhcyBvdmVyLCBhbmQgYm90aCB0aGUgaGVkZ2Vob2dzIHdlcmUgb3V0IG"
  483. "9mIHNpZ2h0OiAnYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIG11Y2gsJyB0aG91Z2h0IEFsaWNlLCAnYXMgYWxsIHRoZSBhcmNoZXMgYXJlIGdvbmUg"
  484. "ZnJvbSB0aGlzIHNpZGUgb2YgdGhlIGdyb3VuZC4nIFNvIHNoZSB0dWNrZWQgaXQgYXdheSB1bmRlciBoZXIgYXJtLCB0aGF0IGl0IG1pZ2h0IG"
  485. "5vdCBlc2NhcGUgYWdhaW4sIGFuZCB3ZW50IGJhY2sgZm9yIGEgbGl0dGxlIG1vcmUgY29udmVyc2F0aW9uIHdpdGggaGVyIGZyaWVuZC5XaGVu"
  486. "IHNoZSBnb3QgYmFjayB0byB0aGUgQ2hlc2hpcmUgQ2F0LCBzaGUgd2FzIHN1cnByaXNlZCB0byBmaW5kIHF1aXRlIGEgbGFyZ2UgY3Jvd2QgY2"
  487. "9sbGVjdGVkIHJvdW5kIGl0OiB0aGVyZSB3YXMgYSBkaXNwdXRlIGdvaW5nIG9uIGJldHdlZW4gdGhlIGV4ZWN1dGlvbmVyLCB0aGUgS2luZywg"
  488. "YW5kIHRoZSBRdWVlbiwgd2hvIHdlcmUgYWxsIHRhbGtpbmcgYXQgb25jZSwgd2hpbGUgYWxsIHRoZSByZXN0IHdlcmUgcXVpdGUgc2lsZW50LC"
  489. "BhbmQgbG9va2VkIHZlcnkgdW5jb21mb3J0YWJsZS5UaGUgbW9tZW50IEFsaWNlIGFwcGVhcmVkLCBzaGUgd2FzIGFwcGVhbGVkIHRvIGJ5IGFs"
  490. "bCB0aHJlZSB0byBzZXR0bGUgdGhlIHF1ZXN0aW9uLCBhbmQgdGhleSByZXBlYXRlZCB0aGVpciBhcmd1bWVudHMgdG8gaGVyLCB0aG91Z2gsIG"
  491. "FzIHRoZXkgYWxsIHNwb2tlIGF0IG9uY2UsIHNoZSBmb3VuZCBpdCB2ZXJ5IGhhcmQgaW5kZWVkIHRvIG1ha2Ugb3V0IGV4YWN0bHkgd2hhdCB0"
  492. "aGV5IHNhaWQuVGhlIGV4ZWN1dGlvbmVyJ3MgYXJndW1lbnQgd2FzLCB0aGF0IHlvdSBjb3VsZG4ndCBjdXQgb2ZmIGEgaGVhZCB1bmxlc3MgdG"
  493. "hlcmUgd2FzIGEgYm9keSB0byBjdXQgaXQgb2ZmIGZyb206IHRoYXQgaGUgaGFkIG5ldmVyIGhhZCB0byBkbyBzdWNoIGEgdGhpbmcgYmVmb3Jl"
  494. "LCBhbmQgaGUgd2Fzbid0IGdvaW5nIHRvIGJlZ2luIGF0IGhpcyB0aW1lIG9mIGxpZmUuVGhlIEtpbmcncyBhcmd1bWVudCB3YXMsIHRoYXQgYW"
  495. "55dGhpbmcgdGhhdCBoYWQgYSBoZWFkIGNvdWxkIGJlIGJlaGVhZGVkLCBhbmQgdGhhdCB5b3Ugd2VyZW4ndCB0byB0YWxrIG5vbnNlbnNlLlRo"
  496. "ZSBRdWVlbidzIGFyZ3VtZW50IHdhcywgdGhhdCBpZiBzb21ldGhpbmcgd2Fzbid0IGRvbmUgYWJvdXQgaXQgaW4gbGVzcyB0aGFuIG5vIHRpbW"
  497. "Ugc2hlJ2QgaGF2ZSBldmVyeWJvZHkgZXhlY3V0ZWQsIGFsbCByb3VuZC4gKEl0IHdhcyB0aGlzIGxhc3QgcmVtYXJrIHRoYXQgaGFkIG1hZGUg"
  498. "dGhlIHdob2xlIHBhcnR5IGxvb2sgc28gZ3JhdmUgYW5kIGFueGlvdXMuKUFsaWNlIGNvdWxkIHRoaW5rIG9mIG5vdGhpbmcgZWxzZSB0byBzYX"
  499. "kgYnV0ICdJdCBiZWxvbmdzIHRvIHRoZSBEdWNoZXNzOiB5b3UnZCBiZXR0ZXIgYXNrIGhlciBhYm91dCBpdC4nJ1NoZSdzIGluIHByaXNvbiwn"
  500. "IHRoZSBRdWVlbiBzYWlkIHRvIHRoZSBleGVjdXRpb25lcjogJ2ZldGNoIGhlciBoZXJlLicgQW5kIHRoZSBleGVjdXRpb25lciB3ZW50IG9mZi"
  501. "BsaWtlIGFuIGFycm93LlRoZSBDYXQncyBoZWFkIGJlZ2FuIGZhZGluZyBhd2F5IHRoZSBtb21lbnQgaGUgd2FzIGdvbmUsIGFuZCwgYnkgdGhl"
  502. "IHRpbWUgaGUgaGFkIGNvbWUgYmFjayB3aXRoIHRoZSBEdWNoZXNzLCBpdCBoYWQgZW50aXJlbHkgZGlzYXBwZWFyZWQ7IHNvIHRoZSBLaW5nIG"
  503. "FuZCB0aGUgZXhlY3V0aW9uZXIgcmFuIHdpbGRseSB1cCBhbmQgZG93biBsb29raW5nIGZvciBpdCwgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIHBh"
  504. "cnR5IHdlbnQgYmFjayB0byB0aGUgZ2FtZS4=";
  505. using it_base64_t = bai::base64_from_binary<bai::transform_width<std::string::const_iterator, 6, 8>>;
  506. auto writePaddChars = (3 - input.length() % 3) % 3;
  507. std::string base64(it_base64_t(input.begin()), it_base64_t(input.end()));
  508. base64.append(writePaddChars, '=');
  509. assert(base64 == output);
  510. return 0;
  511. }
  512. #elif 0
  513. #include <memory>
  514. #include <sstream>
  515. #include <boost/archive/text_iarchive.hpp>
  516. #include <boost/archive/text_oarchive.hpp>
  517. #include <boost/serialization/shared_ptr.hpp>
  518. struct S
  519. {
  520. int i;
  521. char c;
  522. template <class Archive>
  523. void serialize(Archive & ar, const unsigned int version)
  524. {
  525. ar & i;
  526. ar & c;
  527. }
  528. };
  529. int main()
  530. {
  531. const auto s0 = std::make_shared<S>();
  532. s0->i = 42;
  533. s0->c = 'c';
  534. std::stringstream ss;
  535. {
  536. boost::archive::text_oarchive oa(ss);
  537. oa << s0;
  538. }
  539. std::shared_ptr<S> s1;
  540. {
  541. boost::archive::text_iarchive ia(ss);
  542. ia >> s1;
  543. }
  544. return 0;
  545. }
  546. #elif 0
  547. #include <boost/archive/binary_iarchive.hpp>
  548. #include <boost/serialization/vector.hpp>
  549. #include <sstream>
  550. #include <vector>
  551. void f()
  552. {
  553. std::stringstream iss;
  554. boost::archive::binary_iarchive ar(iss);
  555. std::vector<int> out;
  556. ar >> out;
  557. }
  558. int main(int argc, char* argv[])
  559. {
  560. return 0;
  561. }
  562. #include <boost/archive/xml_oarchive.hpp>
  563. #include <boost/archive/xml_iarchive.hpp>
  564. #include <boost/archive/detail/archive_serializer_map.hpp>
  565. #include <boost/archive/impl/archive_serializer_map.ipp>
  566. #include <boost/archive/impl/basic_xml_iarchive.ipp>
  567. #include <boost/archive/impl/xml_iarchive_impl.ipp>
  568. #include <boost/serialization/nvp.hpp>
  569. #include <limits>
  570. #include <fstream>
  571. class xml_iarchive_nan :
  572. public boost::archive::xml_iarchive_impl<xml_iarchive_nan>
  573. {
  574. protected:
  575. friend class boost::archive::detail::interface_iarchive<xml_iarchive_nan>;
  576. friend class boost::archive::detail::common_iarchive<xml_iarchive_nan>;
  577. friend class boost::archive::basic_xml_iarchive<xml_iarchive_nan>;
  578. friend class boost::archive::load_access;
  579. using boost::archive::xml_iarchive_impl<xml_iarchive_nan>::load;
  580. void load(double & t)
  581. {
  582. char c='0';
  583. if(!is.fail())
  584. {
  585. c=is.peek();
  586. if(c!='n')
  587. {
  588. boost::archive::xml_iarchive_impl<xml_iarchive_nan>::load(t);
  589. }
  590. else
  591. {
  592. char c1='0',c2='0';
  593. is.get(c).get(c1).get(c2);
  594. if(is.fail()||(!((c=='n')&&(c1=='a')&&(c2=='n'))))
  595. boost::serialization::throw_exception(
  596. boost::archive::archive_exception(
  597. boost::archive::archive_exception::input_stream_error));
  598. else
  599. t=std::numeric_limits<double>::quiet_NaN();
  600. }
  601. }
  602. else
  603. boost::serialization::throw_exception(
  604. boost::archive::archive_exception(boost::archive::archive_exception::input_stream_error));
  605. }
  606. public:
  607. xml_iarchive_nan(std::istream & is, unsigned int flags = 0) :
  608. boost::archive::xml_iarchive_impl<xml_iarchive_nan>(is, flags)
  609. {}
  610. ~xml_iarchive_nan(){};
  611. };
  612. BOOST_SERIALIZATION_REGISTER_ARCHIVE(xml_iarchive_nan)
  613. namespace boost
  614. {
  615. namespace archive
  616. {
  617. template class detail::archive_serializer_map<xml_iarchive_nan>;
  618. template class detail::interface_iarchive<xml_iarchive_nan>;
  619. template class detail::common_iarchive<xml_iarchive_nan>;
  620. template class basic_xml_iarchive<xml_iarchive_nan>;
  621. template class xml_iarchive_impl<xml_iarchive_nan>;
  622. }
  623. }
  624. int main(int argc, char** argv)
  625. {
  626. double value=0.0;
  627. std::ifstream ifile("./somefile.xml");
  628. xml_iarchive_nan ia(ifile);
  629. ia>>BOOST_SERIALIZATION_NVP(value);
  630. }
  631. #endif
  632. int main(int argc, char* argv[])
  633. {
  634. return 0;
  635. }