# Name: smd_each v0.2 # Type: Client side plugin # Iterate over TXP, URL or smd_vars variables # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjg6InNtZF9lYWNoIjtzOjY6ImF1dGhvciI7czoxMToiU3Rl ZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjIiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQzOiJJ dGVyYXRlIG92ZXIgVFhQLCBVUkwgb3Igc21kX3ZhcnMgdmFyaWFibGVzIjtzOjQ6ImNvZGUi O3M6ODQxNDoiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gSXRlcmF0ZSBvdmVyIGFyYml0cmFyeSBtYXRjaGlu ZyB2YXJpYWJsZXMsIGVpdGhlciBmcm9tIFRYUCBmaWVsZHMgb3Igb24gdGhlIFVSTCBsaW5l DQovLyBieSBTdGVmIERhd3Nvbg0KZnVuY3Rpb24gc21kX2VhY2goJGF0dHMsICR0aGluZz0n Jykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkdGhpc2ZpbGUsICR0aGlz bGluaywgJHZhcmlhYmxlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3R5cGUnID0+ ICdmaWVsZCcsDQoJCSdpbmNsdWRlJyA9PiAnJywNCgkJJ2V4Y2x1ZGUnID0+ICcnLA0KCQkn bWF0Y2gnID0+ICcnLA0KCQknbWF0Y2h3aXRoJyA9PiAnbmFtZScsDQoJCSdzdWJzZXQnID0+ ICcwJywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdkZWxpbScg PT4gJywnLA0KCQkncGFyYW1kZWxpbScgPT4gJzonLA0KCQknb3V0ZGVsaW0nID0+ICcsJywN CgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcn LA0KCQkndmFyX3ByZWZpeCcgPT4gJ3NtZF8nLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAk YXR0cykpOw0KDQoJLy8gTG9va3VwcyBmb3IgYWxsb3dhYmxlIG9wdGlvbnMNCgkkbWF0Y2hP cHRzID0gYXJyYXkoJ25hbWUnLCAndmFsdWUnKTsNCg0KCS8vIFZhbGlkYXRlIHRoZSBvcHRp b25zDQoJJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBmZXRjaF9mb3JtKCRm b3JtKTsNCgkkdGhpbmcgPSAoZW1wdHkoJHRoaW5nKSkgPyAneycuJHZhcl9wcmVmaXguJ3Zh cl92YWx1ZX0nIDogJHRoaW5nOw0KDQoJJGluY2x1ZGUgPSBkb19saXN0KCRpbmNsdWRlLCAk ZGVsaW0pOw0KCSRpbmNsdWRlID0gKCRpbmNsdWRlWzBdID09ICIiKSA/IGFycmF5KCkgOiAk aW5jbHVkZTsNCgkkZXhjbHVkZSA9IGRvX2xpc3QoJGV4Y2x1ZGUsICRkZWxpbSk7DQoJJGV4 Y2x1ZGUgPSAoJGV4Y2x1ZGVbMF0gPT0gIiIpID8gYXJyYXkoKSA6ICRleGNsdWRlOw0KCSRt YXRjaCA9IGRvX2xpc3QoJG1hdGNoLCAkZGVsaW0pOw0KCSRtYXRjaCA9ICgkbWF0Y2hbMF0g PT0gIiIpID8gYXJyYXkoKSA6ICRtYXRjaDsNCgkkbWF0Y2h3aXRoID0gZG9fbGlzdCgkbWF0 Y2h3aXRoLCAkZGVsaW0pOw0KCWZvcmVhY2ggKCRtYXRjaHdpdGggYXMgJHRoaXNtYXRjaCkg ew0KCQkkbWF0Y2hlc1tdID0gKGluX2FycmF5KCR0aGlzbWF0Y2gsJG1hdGNoT3B0cykpID8g JHRoaXNtYXRjaCA6ICRtYXRjaE9wdHNbMF07DQoJfQ0KCSRtYXRjaGVzID0gYXJyYXlfdW5p cXVlKCRtYXRjaGVzKTsNCg0KCS8vIFNldCB1cCBjb2xsYXRlZCBxdW90aW5nIGlmIG5lY2Vz c2FyeQ0KCWlmICgkY29sbGF0ZSkgew0KCQkkcXVvdGVzID0gYXJyYXkoJ1NNRE5PTkUnKTsN CgkJJGNvbGxhdGVPcHRzID0gZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFj aCAoJGNvbGxhdGVPcHRzIGFzICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgk b3B0aW9uLCAkcGFyYW1kZWxpbSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRl eGVzKTsNCgkJCS8vIFN1cHBseWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0 aGUgcmVsZXZhbnQgYXJyYXksIGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVv dGVkDQoJCQlzd2l0Y2ggKCRjb2xUeXBlKSB7DQoJCQkJY2FzZSAicXVvdGUiOg0KCQkJCQkk cXVvdGVzID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8g TWFrZSB1cCBhbiBhcnJheSBvZiBuYW1lID0+IHZhbHVlIHBhaXJzIHBvcHVsYXRlZCBmcm9t IHRoZSBhcnJheXMgb2YgdGhlIGNob3NlbiAkdHlwZXMNCgkkdHlwZXMgPSBhcnJheSgpOw0K CSR2YXJzID0gYXJyYXkoKTsNCgkkdHlwZSA9IGRvX2xpc3QoJHR5cGUsICRkZWxpbSk7DQoJ Zm9yZWFjaCAoJHR5cGUgYXMgJHRoaXN0eXBlKSB7DQoJCXN3aXRjaCAoJHRoaXN0eXBlKSB7 DQoJCQljYXNlICJ1cmx2YXIiOg0KCQkJCWlmICgkX1BPU1QpICR2YXJzID0gc21kX2VhY2hf Z3JhYigkX1BPU1QsICR2YXJzLCAnZG9TcGVjaWFsLCBkb1N0cmlwVGFncycsICRkZWxpbSwg JHN1YnNldCk7DQoJCQkJaWYgKCRfR0VUKSAkdmFycyA9IHNtZF9lYWNoX2dyYWIoJF9HRVQs ICR2YXJzLCAnZG9TcGVjaWFsLCBkb1N0cmlwVGFncycsICRkZWxpbSwgJHN1YnNldCk7DQoJ CQkJYnJlYWs7DQoJCQljYXNlICJzdnJ2YXIiOg0KCQkJCWlmICgkX1NFUlZFUikgJHZhcnMg PSBzbWRfZWFjaF9ncmFiKCRfU0VSVkVSLCAkdmFycywgJ2RvU3BlY2lhbCwgZG9TdHJpcFRh Z3MnLCAkZGVsaW0sICRzdWJzZXQpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiY29va2llIjoN CgkJCQlpZiAoJF9DT09LSUUpICR2YXJzID0gc21kX2VhY2hfZ3JhYigkX0NPT0tJRSwgJHZh cnMsICdkb1NwZWNpYWwsIGRvU3RyaXBUYWdzJywgJGRlbGltLCAkc3Vic2V0KTsNCgkJCQli cmVhazsNCgkJCWNhc2UgInR4cHZhciI6DQoJCQkJaWYgKCR2YXJpYWJsZSkgJHZhcnMgPSBz bWRfZWFjaF9ncmFiKCR2YXJpYWJsZSwgJHZhcnMsICcnLCAkZGVsaW0sICRzdWJzZXQpOw0K CQkJCWJyZWFrOw0KCQkJY2FzZSAiZml4ZWQiOg0KCQkJCSRuZXd2YXJzID0gYXJyYXkoKTsN CgkJCQlmb3JlYWNoICgkaW5jbHVkZSBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkJCQkkc3Vi cyA9IGRvX2xpc3QoJHZhbHVlLCAkcGFyYW1kZWxpbSk7DQoJCQkJCWlmIChjb3VudCgkc3Vi cykgPiAxKSB7DQoJCQkJCQkkbmV3dmFyID0gYXJyYXlfc2hpZnQoJHN1YnMpOw0KCQkJCQkJ JGV4dHJhdmFyc1skbmV3dmFyXSA9IGpvaW4oJGRlbGltLCAkc3Vicyk7DQoJCQkJCQkvLyBU aGUgbmV3IHZhcmlhYmxlJ3MgdmFsdWVzIGhhdmUgYmVlbiBleHRyYWN0ZWQgYW5kIHN0b3Jl ZCwgc28gb3ZlcndyaXRlIHRoZSBhcnJheSBlbnRyeSB3aXRoIGp1c3QgdGhlIHZhcmlhYmxl IG5hbWUNCgkJCQkJCSRpbmNsdWRlWyRrZXldID0gJG5ld3ZhcjsNCgkJCQkJfQ0KCQkJCX0N CgkJCQlpZiAoJGV4dHJhdmFycykgJHZhcnMgPSBzbWRfZWFjaF9ncmFiKCRleHRyYXZhcnMs ICR2YXJzLCAnZG9TdHJpcFRhZ3MnLCAkZGVsaW0sICRzdWJzZXQpOw0KCQkJCWJyZWFrOw0K CQkJY2FzZSAiZmllbGQiOg0KCQkJY2FzZSAiZGVmYXVsdCI6DQoJCQkJaWYgKCR0aGlzZmls ZSkgJHZhcnMgPSBzbWRfZWFjaF9ncmFiKCR0aGlzZmlsZSwgJHZhcnMsICcnLCAkZGVsaW0s ICRzdWJzZXQpOw0KCQkJCWlmICgkdGhpc2xpbmspICR2YXJzID0gc21kX2VhY2hfZ3JhYigk dGhpc2xpbmssICR2YXJzLCAnJywgJGRlbGltLCAkc3Vic2V0KTsNCgkJCQlpZiAoJHByZXRl eHQpICR2YXJzID0gc21kX2VhY2hfZ3JhYigkcHJldGV4dCwgJHZhcnMsICcnLCAkZGVsaW0s ICRzdWJzZXQpOw0KCQkJCWlmICgkdGhpc2FydGljbGUpICR2YXJzID0gc21kX2VhY2hfZ3Jh YigkdGhpc2FydGljbGUsICR2YXJzLCAnZG9TdHJpcFRhZ3MnLCAkZGVsaW0sICRzdWJzZXQp Ow0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KDQoJaWYgKCRkZWJ1Zykgew0KCQllY2hvICIrKyBW QVJJQUJMRSBQT09MICsrIjsNCgkJZG1wKCR2YXJzKTsNCgl9DQoNCgkvLyBGaWx0ZXIgdGhl IGFycmF5IGlmIG5lY2Vzc2FyeSBpbnRvIGEgc21hbGxlciBhcnJheSBvZiBkZXNpcmVkIGVs ZW1lbnRzDQoJJGZpbHRlcnZhcnMgPSBhcnJheSgpOw0KDQoJLy8gTmFtZWQgdmFyaWFibGVz IGFyZSBhbHdheXMgY29waWVkIGFjcm9zcw0KCWlmICgkaW5jbHVkZSkgew0KCQlmb3JlYWNo ICgkaW5jbHVkZSBhcyAkdGhpc25hbWUpIHsNCgkJCWlmICgkdGhpc25hbWUgIT0gIiIpIHsN CgkJCQkkcmUgPSAnLygnLiR0aGlzbmFtZS4nKF9bMC05XSopPykvJzsNCgkJCQkkbnVtID0g cHJlZ19tYXRjaF9hbGwoJHJlLCBqb2luKCRkZWxpbSxhcnJheV9rZXlzKCR2YXJzKSksICRr ZXluYW1lcyk7DQoJCQkJZm9yICgkY3RyID0gMDsgJGN0ciA8ICRudW07ICRjdHIrKykgew0K CQkJCQkkZmlsdGVydmFyc1ska2V5bmFtZXNbMF1bJGN0cl1dID0gJHZhcnNbJGtleW5hbWVz WzBdWyRjdHJdXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBBbnkgbmFtZXMvdmFs dWVzIG1hdGNoaW5nICRtYXRjaCBhcmUgYWxzbyBhZGRlZA0KCWlmICgkbWF0Y2gpIHsNCgkJ Zm9yZWFjaCAoJHZhcnMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQlpZiAoaW5fYXJyYXkoIm5h bWUiLCAkbWF0Y2hlcykgJiYgKCFhcnJheV9rZXlfZXhpc3RzKCRrZXksICRmaWx0ZXJ2YXJz KSkpIHsNCgkJCQlmb3JlYWNoICgkbWF0Y2ggYXMgJHRoaXNtYXRjaCkgew0KCQkJCQlpZiAo JHRoaXNtYXRjaCAmJiBzdHJwb3MoJGtleSwgJHRoaXNtYXRjaCkgIT09IGZhbHNlKSB7DQoJ CQkJCQlpZiAoJGRlYnVnKSB7DQoJCQkJCQkJZG1wKCJBRERJTkcgIi4ka2V5LiIgKGZyb20g bmFtZSkgIik7DQoJCQkJCQl9DQoJCQkJCQkkZmlsdGVydmFyc1ska2V5XSA9ICR2YWw7DQoJ CQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCS8vIE5vIHBvaW50IGNoZWNr aW5nIHRoZSB2YWx1ZXMgaWYgdGhlIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQg dG8gdGhlIGZpbHRlcmVkIGxpc3QNCgkJCWlmIChpbl9hcnJheSgidmFsdWUiLCAkbWF0Y2hl cykgJiYgKCFhcnJheV9rZXlfZXhpc3RzKCRrZXksICRmaWx0ZXJ2YXJzKSkpIHsNCgkJCQlm b3JlYWNoICgkbWF0Y2ggYXMgJHRoaXNtYXRjaCkgew0KCQkJCQlpZiAoJHRoaXNtYXRjaCAm JiBzdHJwb3MoJHZhbCwgJHRoaXNtYXRjaCkgIT09IGZhbHNlKSB7DQoJCQkJCQlpZiAoJGRl YnVnKSB7DQoJCQkJCQkJZG1wICgiQURESU5HICIuJGtleS4iIChmcm9tIHZhbHVlKSAiKTsN CgkJCQkJCX0NCgkJCQkJCSRmaWx0ZXJ2YXJzWyRrZXldID0gJHZhbDsNCgkJCQkJCWJyZWFr Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8gUmVtb3ZlIGFueSBleGNs dWRlZCB2YXJpYWJsZXMNCglpZiAoJGV4Y2x1ZGUpIHsNCgkJZm9yZWFjaCAoJGV4Y2x1ZGUg YXMgJHRoaXNuYW1lKSB7DQoJCQlpZiAoJHRoaXNuYW1lICE9ICIiKSB7DQoJCQkJJHJlID0g Jy8oJy4kdGhpc25hbWUuJyhfWzAtOV0qKT8pLyc7DQoJCQkJJG51bSA9IHByZWdfbWF0Y2hf YWxsKCRyZSwgam9pbigkZGVsaW0sYXJyYXlfa2V5cygkZmlsdGVydmFycykpLCAka2V5bmFt ZXMpOw0KCQkJCWZvciAoJGN0ciA9IDA7ICRjdHIgPCAkbnVtOyAkY3RyKyspIHsNCgkJCQkJ aWYgKCRkZWJ1Zykgew0KCQkJCQkJZG1wKCJFWENMVURJTkcgIi4ka2V5bmFtZXNbMF1bJGN0 cl0pOw0KCQkJCQl9DQoJCQkJCXVuc2V0ICgkZmlsdGVydmFyc1ska2V5bmFtZXNbMF1bJGN0 cl1dKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBJZiBubyBmaWx0ZXJzIGFyZSBz cGVjaWZpZWQNCglpZiAoISRpbmNsdWRlICYmICEkZXhjbHVkZSAmJiAhJG1hdGNoKSB7DQoJ CSRmaWx0ZXJ2YXJzID0gJHZhcnM7DQoJfQ0KDQoJaWYgKCRkZWJ1ZyAmJiAoJGZpbHRlcnZh cnMgIT0gJHZhcnMpKSB7DQoJCWVjaG8gIisrIEZJTFRFUkVEIFZBUlMgKysiOw0KCQlkbXAo JGZpbHRlcnZhcnMpOw0KCX0NCg0KCS8vIFRocm93IHRoZSBuYW1lID0+IHZhbHVlIHBhaXJz IGF0IHRoZSBmb3JtDQoJJG91dCA9IGFycmF5KCk7DQoJJGNvbGxhdGlvbnMgPSBhcnJheSgp Ow0KCSRjdHIgPSAxOw0KCSR0b3RhbHZhcnMgPSBjb3VudCgkZmlsdGVydmFycyk7DQoNCglm b3JlYWNoICgkZmlsdGVydmFycyBhcyAka2V5ID0+ICR2YWwpIHsNCgkJJHJlcGxhY2VtZW50 cyA9IGFycmF5KA0KCQkJJ3snLiR2YXJfcHJlZml4Lid2YXJfbmFtZX0nID0+ICRrZXksDQoJ CQkneycuJHZhcl9wcmVmaXguJ3Zhcl92YWx1ZX0nID0+ICR2YWwsDQoJCQkneycuJHZhcl9w cmVmaXguJ3Zhcl9jb3VudGVyfScgPT4gJGN0ciwNCgkJCSd7Jy4kdmFyX3ByZWZpeC4ndmFy X3RvdGFsfScgPT4gJHRvdGFsdmFycywNCgkJKTsNCg0KCQkvLyBTb2xvcyBhcmUgaXRlbXMg aW4gdGhlIG91dHB1dCBmb3JtIHRoYXQgcmVxdWlyZSBkZXRhaWxzIGZyb20gYSBzcGVjaWZp YyByb3cuIFVzZWZ1bCBvbmx5IGluIGNvbGxhdGlvbg0KCQkvLyBtb2RlLCB0aGV5IGFyZSBh ZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9uIGFuIGFzLW5lZWRlZCBiYXNpcyB0 byBzYXZlIHNwYWNlL3RpbWUNCgkJJHNvbG9SRSA9ICcvXHsnLiR2YXJfcHJlZml4LicoW2Et ejAtOV9dKykjJy4kY3RyLidcfS8nOw0KCQkkbnVtU29sb3MgPSBwcmVnX21hdGNoX2FsbCgk c29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCWZvciAoJHNvbG9DdHIgPSAwOyAkc29sb0N0 ciA8ICRudW1Tb2xvczsgJHNvbG9DdHIrKykgew0KCQkJJGZpZWxkbmFtZSA9ICd7Jy4kdmFy X3ByZWZpeC4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCSRncmFiZmll bGQgPSAneycuJHZhcl9wcmVmaXguJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkkcmVw bGFjZW1lbnRzWyRmaWVsZG5hbWVdID0gJHJlcGxhY2VtZW50c1skZ3JhYmZpZWxkXTsNCgkJ fQ0KDQoJCWlmICgkZGVidWcpIHsNCgkJCWVjaG8gIisrIFJFUExBQ0VNRU5UICMkY3RyICsr IjsNCgkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJfQ0KCQkvLyBJbiBjb2xsYXRlIG1vZGUg dGhlIGZvcm0gaXMgb25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBjb2xsb3NhbCBt dWx0aS1kaW1lbnNpb24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJaWYgKCRjb2xsYXRl KSB7DQoJCQlmb3JlYWNoICgkcmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwp IHsNCgkJCQkkY29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7DQoJCQl9DQoJCX0g ZWxzZSB7DQoJCQkkb3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRyZXBsYWNlbWVudHMp KTsNCgkJfQ0KDQoJCSRjdHIrKzsNCgl9DQoNCgkvLyBIYW5kbGUgcXVvdGluZyBvZiBjb2xs YXRpb25zDQoJaWYgKCRjb2xsYXRlKSB7DQoJCWZvcmVhY2ggKCRjb2xsYXRpb25zIGFzICRp dGVtID0+ICRsaXN0KSB7DQoJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJ CSRsaXN0ID0gKGVtcHR5KCRxdW90ZXMpIHx8IGluX2FycmF5KCRpdGVtLCAkcXVvdGVzKSkg PyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkkY29sbGF0aW9uc1sk aXRlbV0gPSBpbXBsb2RlKCRvdXRkZWxpbSwgJGxpc3QpOw0KCQl9DQoJCWlmICgkZGVidWcp IHsNCgkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJZG1wKCRjb2xsYXRpb25zKTsN CgkJfQ0KCQkkb3V0W10gPSBwYXJzZShzdHJ0cigkdGhpbmcsICRjb2xsYXRpb25zKSk7DQoJ fQ0KDQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0K fQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQovLyBUYWtlIGFuIGFycmF5IG9mIG5hbWUtdmFsdWUgcGFpcnMs IHByb2Nlc3MgYW5kIGNvbWJpbmUgdGhlbSB3aXRoIHdoYXQgaXMgYWxyZWFkeSBpbiAkb3V0 Lg0KLy8gSGFuZGxlIHN1Yi1saXN0cyBhcyB3ZWxsDQpmdW5jdGlvbiBzbWRfZWFjaF9ncmFi KCRpdGVtLCAkb3V0PScnLCAkcHJvYz0nJywgJGRsbT0nLCcsICRzdWI9MCkgew0KCSRvdXQg PSAoJG91dCkgPyAkb3V0IDogYXJyYXkoKTsNCgkkcHJvYyA9IGRvX2xpc3QoJHByb2MsICRk bG0pOw0KCSRwcm9jID0gKCRwcm9jWzBdID09ICIiKSA/IGFycmF5KCkgOiAkcHJvYzsNCg0K CXdoaWxlIChsaXN0KCRrZXksICR2YWwpID0gZWFjaCgkaXRlbSkpIHsNCgkJJHZhbCA9IChp c19hcnJheSgkdmFsKSkgPyBqb2luKCRkbG0sICR2YWwpIDogJHZhbDsNCgkJaWYgKCRzdWIp IHsNCgkJCWlmICgkc3ViID09IDEpIHsNCgkJCQkvLyBBZGQgdGhlIGNvbXBsZXRlIGVsZW1l bnQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gc3BsaXQgaXQNCgkJCQlmb3JlYWNoKCRwcm9jIGFz ICRvcCkgew0KCQkJCQkkdmFsID0gJG9wKCR2YWwpOw0KCQkJCX0NCgkJCQkkb3V0WyRrZXld ID0gJHZhbDsNCgkJCX0NCgkJCSR2YWxzID0gZG9fbGlzdCgkdmFsLCAkZGxtKTsNCgkJCSRj dHIgPSAxOw0KCQkJZm9yZWFjaCAoJHZhbHMgYXMgJHN1YnZhbCkgew0KCQkJCWZvcmVhY2go JHByb2MgYXMgJG9wKSB7DQoJCQkJCSRzdWJ2YWwgPSAkb3AoJHN1YnZhbCk7DQoJCQkJfQ0K CQkJCSRvdXRbJGtleS4nXycuJGN0cisrXSA9ICRzdWJ2YWw7DQoJCQl9DQoJCX0gZWxzZSB7 DQoJCQlmb3JlYWNoKCRwcm9jIGFzICRvcCkgew0KCQkJCSR2YWwgPSAkb3AoJHZhbCk7DQoJ CQl9DQoJCQkkb3V0WyRrZXldID0gJHZhbDsNCgkJfQ0KCX0NCglyZXR1cm4gJG91dDsNCn0i O3M6NDoidHlwZSI7czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6 MToiMCI7czo0OiJoZWxwIjtzOjE3NzU4OiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxIGlk PSJ0b3AiPnNtZF9lYWNoPC9oMT4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+ CgoJPHVsPgoJCTxsaT5JdGVyYXRlIG92ZXIgYW55IHZhcmlhYmxlcyB5b3UgY2FuIGdldCB5 b3VyIGhhbmRzIG9uLiBUaGVzZSBjYW4gYmUgYW55dGhpbmcgZnJvbSB0aGUgY3VycmVudCBh cnRpY2xlIChjdXN0b20gZmllbGQsIGFydGljbGVfaW1hZ2UsIGV0YyksIGFueSA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPi9TRVJWRVIgdmFyaWFibGUgb3IgY29va2llIChzdWJq ZWN0IHRvIG5vcm1hbCBlc2NhcGluZyBydWxlcykgb3IgYW55IDxjb2RlPiZsdDt0eHA6dmFy aWFibGUgLyZndDs8L2NvZGU+PC9saT4KCQk8bGk+SW5jbHVkZSBvciBleGNsdWRlIHBhcnRp Y3VsYXIgdmFyaWFibGVzLCBvciBvbmx5IGNob29zZSB2YXJpYWJsZXMgdGhhdCBtYXRjaCBw YXJ0aWN1bGFyIHRleHQ8L2xpPgoJCTxsaT5JdGVyYXRlIG92ZXIgc3Vic2V0cyBvZiBkYXRh IGNvbnRhaW5lZCBpbiBhbnkgZmllbGQ8L2xpPgoJCTxsaT5DaG9vc2UgdG8gcHJvY2VzcyBl YWNoIHZhcmlhYmxlIG9uZSBieSBvbmUgd2l0aCBhIGZvcm0sIG9yIGNvbGxlY3QgdGhlbSB0 b2dldGhlciBpbnRvIGEgZGVsaW1pdGVkIGxpc3QgdG8gYmUgcHJvY2Vzc2VkIG9ubHkgb25j ZSBieSB0aGUgZm9ybTwvbGk+CgkJPGxpPlByb3ZpZGVzIGZyZWUgaGVhZGFjaGVzIGlmIHlv dSBkb24mIzgyMTc7dCBrZWVwIHlvdXIgd2l0cyBhYm91dCB5b3U8L2xpPgoJPC91bD4KCgk8 aDIgaWQ9ImF1dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRh d3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3 YXJlIGJ5IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0 cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlk PSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93 bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRl cm4ub3JnL3BsdWdpbnMvOTg2L3NtZF9lYWNoIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0 aGUgc29mdHdhcmUgcGFnZSBhYm92ZSwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0 YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNzQ2NCI+Zm9ydW0gdGhy ZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBhIGJ1Zy9mZWF0dXJlIHJlcXVl c3QuPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZy b20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRhYi48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNh Z2U8L2gyPgoKCTxwPkZvciBzb21lIGlkZWFzIG9uIHVzYWdlIHNjZW5hcmlvcywgc2VlIHRo ZSA8YSBocmVmPSIjZXhhbXBsZXMiPmV4YW1wbGVzPC9hPi48L3A+CgoJPGgzIGNsYXNzPSJ0 YWcgIiBpZD0ic21kX2VhY2giPnNtZF9lYWNoPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1h cnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9lYWNoIHRhZ3MgaW4gYW55IGFydGljbGUsIHBh Z2Ugb3IgZm9ybSwgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29u ZmlndXJlIGl0IGFuZCB1c2UgYSBmb3JtIChvciBjb250YWluZXIpIHRvIGRlZmluZSB3aGF0 IHRvIGRvIHdpdGggZWFjaCBtYXRjaGluZyB2YXJpYWJsZS48L3A+CgoJPHA+SW4gYSBudXRz aGVsbCwgaXQgZ3JhYnMgZXZlcnkgYXJyYXkgZnJvbSB0aGUgcGxhY2VzIHlvdSBzcGVjaWZ5 LCBhbGxvd3MgeW91IHRvIGZpbHRlciB0aGUgYXJyYXkgd2l0aCBtYXRjaGVzIG9yIHNwZWNp ZmljIGl0ZW1zLCB0aGVuIGFzc2lnbnMgZWFjaCBzdWNjZXNzaXZlIG5hbWUvdmFsdWUgcGFp ciB0byB0d28gcmVwbGFjZW1lbnQgdGFncyB0aGF0IHlvdSBjYW4gdXNlIGluIHlvdXIgZm9y bSB0byBkbyBzdHVmZi4gWW91IGNvdWxkIHNpbXBseSBkaXNwbGF5IHRoZSB2YWx1ZXMgb3Ig cG9wdWxhdGUgbmV3IHRhYmxlcyB3aXRoIHRoZW0sIHBsdWcgdmFsdWVzIGludG8gcXVlcmll cywgY3JlYXRlIHNtZF92YXJzLCB0ZXN0IHRoZSB2YWx1ZXMgd2l0aCBzbWRfaWYsIHlvdSBu YW1lIGl0LjwvcD4KCgk8aDQgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1 bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5cGU8L3NwYW4+IDogd2hlcmUgdG8gbG9v ayBmb3IgdmFyaWFibGVzLiBUaGV5IGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgY29tbWEtc2Vw YXJhdGVkIGxpc3QgaWYgeW91IHdpc2ggdG8gc2VhcmNoIG1vcmUgdGhhbiBvbmUgcGxhY2Ug YXQgb25jZS4gT3B0aW9ucyBhcmU6Cgk8dWw+CgkJPGxpPjxjb2RlPmZpZWxkPC9jb2RlPiA6 IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gYXJ0aWNsZSBmaWVsZCAodGhlIGRl ZmF1bHQpPC9saT4KCQk8bGk+PGNvZGU+dXJsdmFyPC9jb2RlPiA6IHRoZSA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiwgZS5nLiBuYW1lMT12YWwmYW1wO25hbWUyPXZhbCZhbXA7 JiM4MjMwOzwvbGk+CgkJPGxpPjxjb2RlPnN2cnZhcjwvY29kZT4gOiB0aGUgc2VydmVyIGVu dmlyb25tZW50IHZhcmlhYmxlczwvbGk+CgkJPGxpPjxjb2RlPmNvb2tpZTwvY29kZT4gOiBh bnkgdXNlciBjb29raWVzPC9saT4KCQk8bGk+PGNvZGU+dHhwdmFyPC9jb2RlPiA6IGEgdmFs dWUgZnJvbSBhbnkgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gdGFnPC9s aT4KCQk8bGk+PGNvZGU+Zml4ZWQ8L2NvZGU+IDogc3BlY2lmeSB5b3VyIG93biBsaXN0IG9m IHZhcmlhYmxlcyB0byBpbmplY3QgaW50byB0aGUgbWl4ICh2aWEgPGNvZGU+aW5jbHVkZTwv Y29kZT4pPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmluY2x1 ZGU8L3NwYW4+IDogYmFzZSBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzIHlvdSBkZWZpbml0ZWx5 IHdhbnQgdG8gYmUgcmV0dXJuZWQgaW4gdGhlIHJlc3VsdC4gSWYgeW91IGFyZSB1c2luZyA8 Y29kZT5maXhlZDwvY29kZT4gYXMgb25lIG9mIHRoZSA8Y29kZT50eXBlPC9jb2RlPnMgeW91 IGNhbiBhZGQgeW91ciBvd24gdmFyaWFibGVzIGhlcmUsIGRlbGltaXRlZCBieSA8Y29kZT5w YXJhbWRlbGltPC9jb2RlPi4gRm9yIGV4YW1wbGUgPGNvZGU+aW5jbHVkZT0mcXVvdDtrZXl3 b3JkcywgbXlfdmFyOm5vcnRoOnNvdXRoOmVhc3Q6d2VzdCZxdW90OzwvY29kZT4gd291bGQg aW5jbHVkZSB0aGUgPGNvZGU+a2V5d29yZHM8L2NvZGU+IGFydGljbGUgZmllbGQgYW5kIGNy ZWF0ZSA8Y29kZT5teV92YXI8L2NvZGU+LCBnaXZpbmcgaXQgYSB2YWx1ZSBvZiAmIzgyMjA7 bm9ydGgsIHNvdXRoLCBlYXN0LCB3ZXN0JiM4MjIxOy4gTm90ZSB0aGF0IGlmIHlvdSBhcmUg dXNpbmcgYSBjdXN0b20gZmllbGQsIGl0IGlzIGxpa2VseSB0byBoYXZlIGJlZW4gY29udmVy dGVkIHRvIGFsbCBsb3dlciBjYXNlIGJ5IFRleHRwYXR0ZXJuLCBzbyB5b3Ugc2hvdWxkIHVz ZSBhbiBhbGwgbG93ZXIgY2FzZSBuYW1lIGhlcmU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZXhjbHVkZTwvc3Bhbj4gOiBiYXNlIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMgeW91 IGRlZmluaXRlbHkgZG8gbm90IHdhbnQgdG8gYmUgcmV0dXJuZWQgaW4gdGhlIHJlc3VsdDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRjaDwvc3Bhbj4gOiBsaXN0IG9mIHRl eHQgc3RyaW5ncyB0byBzZWFyY2ggZm9yIHRvIHJlZmluZSB0aGUgcmV0dXJuZWQgdmFyaWFi bGVzLiBCeSBkZWZhdWx0IHRoaXMgd2lsbCBtYXRjaCBhZ2FpbnN0IDxlbT5ldmVyeTwvZW0+ IHZhcmlhYmxlIGluIGV2ZXJ5IGxvY2F0aW9uIHlvdSBzcGVjaWZpZWQgaW4gPGNvZGU+dHlw ZTwvY29kZT4uIEl0IGlzIGF1dG9tYXRpY2FsbHkgd2lsZCBzbyB3aWxsIG1hdGNoIHBvcnRp b25zIG9mIGEgdmFyaWFibGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWF0Y2h3 aXRoPC9zcGFuPiA6IGRlZmF1bHRzIHRvIDxjb2RlPm5hbWU8L2NvZGU+IHdoaWNoIGxvb2tz IG9ubHkgYXQgdGhlIHZhcmlhYmxlJiM4MjE3O3MgbmFtZSBmb3IgYSBtYXRjaC4gQ2FuIGJl IHNldCB0byA8Y29kZT52YWx1ZTwvY29kZT4gdG8gbG9vayBhdCBpdHMgdmFsdWUgb3IgPGNv ZGU+bmFtZSwgdmFsdWU8L2NvZGU+IHRvIGxvb2sgaW4gYm90aCBmb3IgbWF0Y2hlczwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdWJzZXQ8L3NwYW4+IDogaWYgeW91IHRoaW5r IHlvdXIgdmFyaWFibGVzIGFyZSBnb2luZyB0byBjb250YWluIGxpc3RzIHRoZW1zZWx2ZXMs IHNwZWNpZnkgPGNvZGU+c3Vic2V0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIGhhdmUgdGhl IHBsdWdpbiBhZGQgZWFjaCBwc2V1ZG8tdmFyaWFibGUgdG8gdGhlIGFycmF5LiBGb3IgZXhh bXBsZSwgaWYgeW91IGFydGljbGVfaW1hZ2UgZmllbGQgY29udGFpbmVkIDxjb2RlPjE0LCA2 LCAxNywgMywgOTwvY29kZT4geW91IHdvdWxkIGdldCBmaXZlIG1vcmUgdmFyaWFibGVzIGNh bGxlZCA8Y29kZT5hcnRpY2xlX2ltYWdlXzE8L2NvZGU+ICh2YWx1ZToxNCksIDxjb2RlPmFy dGljbGVfaW1hZ2VfMjwvY29kZT4gKHZhbHVlOiA2KSwgYW5kIHNvIG9uLjxkaXYgY2xhc3M9 ImJyZWFrIj5Ob3RlIHRoYXQgeW91IHdpbGwgYWxzbyBnZXQgdGhlIGZ1bGwgYXJ0aWNsZV9p bWFnZSAoYW5kIGFsbCBvdGhlciBtYXRjaGluZyBub24tc3Vic2V0IHZhcnMpIGluY2x1ZGVk LiBJZiB5b3Ugd2lzaCB0byA8ZW0+b25seTwvZW0+IHNlZSB2YXJpYWJsZXMgdGhhdCBjb250 YWluIHN1Ymxpc3RzIG9mIGRhdGEsIHVzZSA8Y29kZT5zdWJzZXQ9JnF1b3Q7MiZxdW90Ozwv Y29kZT48L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmFyX3ByZWZpeDwv c3Bhbj4gOiBpZiB5b3UgYXJlIG5lc3Rpbmcgc21kX2VhY2ggdGFncyB5b3UmIzgyMTc7bGwg ZmluZCB0aGF0IGFueSBpbm5lciA8Y29kZT57c21kX3Zhcl92YWx1ZX08L2NvZGU+IHJlcGxh Y2VtZW50cyB3aWxsIHRha2Ugb24gdGhlIHZhbHVlcyBvZiB0aGUgb3V0ZXIgdGFnLiBGb3Ig dGhpcyByZWFzb24geW91IGNhbiBzcGVjaWZ5IGEgcHJlZml4IHRoYXQgd2lsbCBiZSB1c2Vk IGluIGFsbCByZXBsYWNlbWVudHMuIFRodXMgaWYgeW91IHNldCA8Y29kZT52YXJfcHJlZml4 PSZxdW90O29wdF8mcXVvdDs8L2NvZGU+IG9uIHlvdXIgaW5uZXIgc21kX2VhY2ggdGFnLCB5 b3Ugd291bGQgdXNlIDxjb2RlPntvcHRfdmFyX3ZhbHVlfTwvY29kZT4gYW5kIHtvcHRfdmFy X25hbWV9IGluIHRoZSBpbm5lciBjb250YWluZXIvZm9ybS4gRGVmYXVsdDogPGNvZGU+c21k XzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB0byBleGVjdXRlIGZvciBl dmVyeSBtYXRjaGluZyB2YXJpYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRhaW5l ciB3aWxsIGJlIHVzZWQuIElmIHRoZXJlJiM4MjE3O3Mgbm8gY29udGFpbmVyLCBhIGRlZmF1 bHQgZm9ybSB3aXRoIGp1c3QgdGhlIHtzbWRfdmFyX3ZhbHVlfSBpcyB1c2VkPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvbGxhdGU8L3NwYW4+IDogcHJldmVudCB0aGUgPGNv ZGU+Zm9ybTwvY29kZT4gYmVpbmcgZXhlY3V0ZWQgZm9yIGV2ZXJ5IHZhcmlhYmxlLiBJbnN0 ZWFkLCBjb2xsZWN0IHRoZSB2YXJpYWJsZSBuYW1lcyBpbnRlcm5hbGx5IGFuZCB0aGVuIHBy b2Nlc3MgdGhlIGVudGlyZSBsaXN0IGJ5IHRoZSBmb3JtIG9uY2Ugb25seSwgYWZ0ZXIgYWxs IHZhcmlhYmxlcyBoYXZlIGJlZW4gcmVhZC4gU2VlIDxhIGhyZWY9IiNjb2xsYXRlIj5jb2xs YXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRlbGltPC9zcGFu PiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGZvciBzcGVjaWZ5aW5nIHBsdWdpbiBvcHRpb25z LiBEZWZhdWx0cyB0byBjb21tYSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ cGFyYW1kZWxpbTwvc3Bhbj4gOiB0aGUgZGVsaW1pdGVyIHRvIHVzZSBmb3Igc3BlY2lmeWlu ZyBpbnRlci12YWx1ZSBwbHVnaW4gb3B0aW9ucyAoZm9yIGV4YW1wbGUgaW4gY29sbGF0ZSBt b2RlKS4gRGVmYXVsdHMgdG8gY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm91dGRlbGltPC9zcGFuPiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIHRvIHNlcGFyYXRl IGVhY2ggdmFyaWFibGUgZGlzcGxheWVkIGluIGNvbGxhdGUgbW9kZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byB3 cmFwIHRoZSBmb3JtIGluLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7dWwmcXVvdDs8L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAo WClIVE1MIHRhZyB0byB3cmFwIGVhY2ggY2FsbCB0byB0aGUgZm9ybSBpbiwgZS5nLiA8Y29k ZT5icmVhaz0mcXVvdDtsaSZxdW90OzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGNsYXNzIG5hbWUgdG8gZ2l2ZSB0byB0aGUgd3JhcHRhZzwvbGk+Cgk8L3VsPgoKCTxoNCBj bGFzcz0iYXR0cyAiIGlkPSJyZXBzIj5SZXBsYWNlbWVudCB0YWdzPC9oND4KCgk8cD5Gb3Ig ZXZlcnkgbWF0Y2hpbmcgdmFyaWFibGUsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgcmVw bGFjZW1lbnQgdGFncyBpbiB5b3VyIGZvcm06PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntzbWRfdmFyX25hbWV9PC9zcGFuPiA6IHRoZSB2YXJpYWJsZSBuYW1lPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfdmFyX3ZhbHVlfTwvc3Bhbj4gOiB0 aGUgdmFyaWFibGUmIzgyMTc7cyB2YWx1ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57c21kX3Zhcl9jb3VudGVyfTwvc3Bhbj4gOiB0aGUgdmFyaWFibGUmIzgyMTc7cyBwb3Np dGlvbiBpbiB0aGUgbGlzdCAoMSwgMiwgMyYjODIzMDspPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntzbWRfdmFyX3RvdGFsfTwvc3Bhbj4gOiB0aGUgdG90YWwgbnVtYmVyIG9m IG1hdGNoaW5nIHZhcmlhYmxlcyBiZWluZyBpdGVyYXRlZDwvbGk+Cgk8L3VsPgoKCTxwPihO b3RlIHRoYXQgZWFjaCByZXBsYWNlbWVudCB0YWcgd2lsbCBoYXZlIHdoYXRldmVyIDxjb2Rl PnZhcl9wcmVmaXg8L2NvZGU+IHlvdSBoYXZlIGRlc2lnbmF0ZWQ6IHRoZSBkZWZhdWx0IGlz IDxjb2RlPnNtZF88L2NvZGU+KS48L3A+CgoJPHA+VGhlc2UgY2FuIGJlIHVzZWQgZm9yIHdo YXRldmVyIGRldmlvdXMgbWVhbnMgeW91IHNlZSBmaXQuIGUuZy48L3A+CgoJPHVsPgoJCTxs aT48Y29kZT4mbHQ7dHhwOmFydGljbGVfY3VzdG9tIGlkPSZxdW90O3tzbWRfdmFyX3ZhbHVl fSZxdW90OyAvJmd0OzwvY29kZT4gd2lsbCBkaXNwbGF5IHRoZSBnaXZlbiBhcnRpY2xlIGZv ciBlYWNoIG1hdGNoaW5nIElELjwvbGk+CgkJPGxpPjxjb2RlPiZsdDt0eHA6YXJ0aWNsZSBr ZXl3b3Jkcz0mcXVvdDt7c21kX3Zhcl92YWx1ZX0mcXVvdDsgLyZndDs8L2NvZGU+IGluIGNv bGxhdGUgbW9kZSwgbWlnaHQgZGlzcGxheSB0aGUgZ2l2ZW4gYXJ0aWNsZXMgdGhhdCBoYXZl IGtleXdvcmRzIG1hdGNoaW5nIGV2ZXJ5IHVzZXItc3VibWl0dGVkIHNlYXJjaCB0ZXJtPC9s aT4KCQk8bGk+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7e3NtZF92YXJfY291 bnRlcn0mcXVvdDsgb3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsgdmFsdWU9JnF1b3Q7e3NtZF92 YXJfdG90YWx9JnF1b3Q7Jmd0O1RoaXMgaXMgdGhlIGxhc3QgaXRlbSZsdDsvdHhwOnNtZF9p ZiZndDs8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGgzIGlkPSJjb2xsYXRlIj5Db2xsYXRlIG1v ZGU8L2gzPgoKCTxwPkluc3RlYWQgb2YgcGFyc2luZyBlYWNoIHZhcmlhYmxlIHdpdGggdGhl IGZvcm0vY29udGFpbmVyLCB5b3UgbWF5IGVsZWN0IHRvIGludGVybmFsbHkgJiM4MjE2O2Nv bGxlY3QmIzgyMTc7IGFsbCBtYXRjaGluZyB2YXJpYWJsZXMgYW5kIG91dHB1dCB0aGVtIGlu IG9uZSBiaWcgbGlzdCB2aWEgdGhlIGZvcm0uIFRodXMsIHRoZSBmb3JtIGlzIG9ubHkgY2Fs bGVkIG9uY2UgYXQgdGhlIGVuZC4gSXQgbWF5IHNlZW0gdXNlbGVzcyBidXQgaXQgY2FuIGJl IG9mIHZhbHVlIGZvciBjcmVhdGluZyBsaXN0cyBvZiB0aGluZ3MgZnJvbSBlYWNoIG1hdGNo aW5nIHZhcmlhYmxlLjwvcD4KCgk8cD5TdGFydGluZyBzaW1wbHksIDxjb2RlPmNvbGxhdGU9 JnF1b3Q7MSZxdW90OzwvY29kZT4gc3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElmIHRo ZSBwbHVnaW4gbWF0Y2hlZCAzIHZhcmlhYmxlcyBmcm9tIHlvdXIgYXJ0aWNsZSBhbmQgeW91 IHdlcmUgdG8gdXNlIHRoZSByZXBsYWNlbWVudCB0YWdzIGluIHlvdXIgZm9ybSBsaWtlIHRo aXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1h dGNoaW5nIHZhcnM6IHtzbWRfdmFyX25hbWV9ID0ge3NtZF92YXJfdmFsdWV9CjwvY29kZT48 L3ByZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIHZhcnM6IHNlY3Rpb24sY2F0ZWdv cnkxLGNhdGVnb3J5MiA9IGFydGljbGUsbmV3cyxwb2xpdGljcwo8L2NvZGU+PC9wcmU+CgoJ PHA+Q29tcGFyZSB0aGF0IHdpdGggdGhlIHJlZ3VsYXIgbW9kZSwgd2hpY2ggb3V0cHV0czo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hp bmcgdmFyczogc2VjdGlvbiA9IGFydGljbGUKVGhlIG1hdGNoaW5nIHZhcnM6IGNhdGVnb3J5 MSA9IG5ld3MKVGhlIG1hdGNoaW5nIHZhcnM6IGNhdGVnb3J5MiA9IHBvbGl0aWNzCjwvY29k ZT48L3ByZT4KCgk8cD5Tb21ldGltZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8gYmUgYWJsZSB0 byBwdXQgcXVvdGVzIGFyb3VuZCBlYWNoIGl0ZW07IHlvdSBjYW4gdGVsbCBjb2xsYXRlIG1v ZGUgdG8gZG8gdGhhdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7c21k X3Zhcl92YWx1ZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3VsZCB0aGVuIGdldDo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hp bmcgdmFyczogc2VjdGlvbixjYXRlZ29yeTEsY2F0ZWdvcnkyID0gJiMzOTthcnRpY2xlJiMz OTssJiMzOTtuZXdzJiMzOTssJiMzOTtwb2xpdGljcyYjMzk7CjwvY29kZT48L3ByZT4KCgk8 cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJyaWRk ZW4gd2l0aCB0aGUgPGNvZGU+b3V0ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS4gWW91IGNhbiBx dW90ZSBtb3JlIHRoYW4gb25lIHRoaW5nIGF0IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRl bXMgYXMgYSBkZWxpbWl0ZWQgbGlzdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtx dW90ZTp7c21kX3Zhcl9uYW1lfTp7c21kX3Zhcl92YWx1ZX0mcXVvdDs8L2NvZGU+PC9wPgoK CTxwPmJ1dCB0aGVyZSYjODIxNztzIG5vdCBtdWNoIHBvaW50IGJlY2F1c2UgdGhlcmUgYXJl IG9ubHkgdHdvIHJlcGxhY2VtZW50IHRhZ3MgYW5kIHlvdSBjYW4gdGh1cyB1c2UgdGhlIHNo b3J0Y3V0IDxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGUmcXVvdDs8L2NvZGU+IHRvIHF1b3Rl IHRoZW0gYWxsLiBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBpdGVtcyAodGhlIGNvbG9u KSBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0 dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHNlY29uZCBzcGVjaWFsIGZlYXR1cmUgb2YgY29sbGF0 aW9uIG1vZGUgaXMgdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gYWx3YXlzIG91dHB1dCB0aGUg ZW50aXJlIGxpc3QuIFlvdSBjYW4gZ3JhYiBpbmRpdmlkdWFsIGVudGl0aWVzIGZyb20gd2l0 aGluIHRoZSBpbnRlcm5hbCBhcnJheSBieSB1c2luZyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5v dGF0aW9uIGluIHlvdXIgZm9ybTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj57c21kX3Zhcl92YWx1ZX0gbWlnaHQgb3V0cHV0ICYjMzk7YXJ0aWNsZSYj Mzk7LCYjMzk7bmV3cyYjMzk7LCYjMzk7cG9saXRpY3MmIzM5OyAoYXMgYmVmb3JlKQp7c21k X3Zhcl92YWx1ZSMxfSB3b3VsZCBvbmx5IG91dHB1dCBhcnRpY2xlCntzbWRfdmFyX25hbWUj M30gd291bGQgb25seSBvdXRwdXQgY2F0ZWdvcnkyCjwvY29kZT48L3ByZT4KCgk8cD5Ob3Rl IHRoYXQgd2hlbiBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGVudHJpZXMgdGhleSA8c3Ryb25n PmRvIG5vdDwvc3Ryb25nPiBnZXQgcXVvdGVzIGFkZGVkIHRvIHRoZW0sIHJlZ2FyZGxlc3Mg b2Ygd2hldGhlciB5b3UgdXNlZCA8Y29kZT5xdW90ZTwvY29kZT4gb3Igbm90LiBUaGlzIGlz IGJlY2F1c2UgaXQgaXMgYSBzaW5nbGUgaXRlbSBzbyB5b3UgY2FuIGVhc2lseSBwdXQgdGhl IHF1b3RlcyBpbiB0aGUgZm9ybSBpdHNlbGYgKHZpejogPGNvZGU+JnF1b3Q7e3NtZF92YXJf bmFtZSMyfSZxdW90OzwvY29kZT4pPC9wPgoKCTxoMiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVz PC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCgk8cD5EaXNwbGF5IGVhY2gg YXJ0aWNsZSBpbWFnZSBmcm9tIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgSURzIGluIHRo ZSBBcnRpY2xlIEltYWdlIGZpZWxkLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2VhY2ggaW5jbHVkZT0mcXVvdDthcnRpY2xlX2lt YWdlJnF1b3Q7IHN1YnNldD0mcXVvdDsyJnF1b3Q7Jmd0OwogICZsdDt0eHA6aW1hZ2UgaWQ9 JnF1b3Q7e3NtZF92YXJfdmFsdWV9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9lYWNoJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUgMjwvaDM+CgoJPHA+RGlz cGxheSBlYWNoIGFydGljbGUgaW1hZ2UgZnJvbSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m IElEcyBpbiB0aGUgQXJ0aWNsZSBJbWFnZSBmaWVsZCwgYW5kIGFsc28gYWxsb3cgSURzIHRv IGJlIGdpdmVuIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lIHZp YSB0aGUgdmFyaWFibGUgbmFtZSA8Y29kZT5teV9pbWFnZV9saXN0PC9jb2RlPiA6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZWFj aCB0eXBlPSZxdW90O2ZpZWxkLCB1cmx2YXImcXVvdDsKICAgICBpbmNsdWRlPSZxdW90O2Fy dGljbGVfaW1hZ2UsIG15X2ltYWdlX2xpc3QmcXVvdDsKICAgICBzdWJzZXQ9JnF1b3Q7MiZx dW90OyBmb3JtPSZxdW90O3Zhcm91dCZxdW90OyB2YXJfcHJlZml4PSZxdW90O21lXyZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QW5kIGluIGZvcm0gPGNvZGU+dmFyb3V0PC9j b2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 dHhwOmltYWdlIGlkPSZxdW90O3ttZV92YXJfdmFsdWV9JnF1b3Q7IC8mZ3Q7CjwvY29kZT48 L3ByZT4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzPC9oMz4KCgk8cD5UaGlzIGlzIHNpbXBs eSB0byBoaWdobGlnaHQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhcmlvdXMgbWF0 Y2hpbmcgbW9kZXMuIExldCYjODIxNztzIHRha2UgYSBzaW1wbGUgYXJ0aWNsZTo8L3A+CgoJ PHVsPgoJCTxsaT5zZWN0aW9uOiBhbmltYWxzPC9saT4KCQk8bGk+dGl0bGUgKHVybF90aXRs ZSkgOiBUaGUgbGlvbiAodGhlLWxpb24pPC9saT4KCQk8bGk+Y2F0ZWdvcnkxOiBtYW1tYWw8 L2xpPgoJCTxsaT5jYXRlZ29yeTI6IGRhbmdlcm91czwvbGk+CgkJPGxpPmFydGljbGVfaW1h Z2U6IDI1LCAyOCwgMTI8L2xpPgoJCTxsaT5rZXl3b3JkczogYmlnLCBjYXQsIG1hbmUsIGZ1 ciwgdGVldGgsIHJvYXIsIGNob21wLCBvdWNoPC9saT4KCQk8bGk+Y3VzdG9tMSAoJiM4MjIw O29yaWdpbiYjODIyMTspOiBhZnJpY2E8L2xpPgoJPC91bD4KCgk8cD5UaGVyZSBhcmUgYSB3 aG9sZSBob3N0IG9mIG90aGVyIHZhcmlhYmxlcyAoc3dpdGNoIGRlYnVnPSYjODIyMDsxJiM4 MjIxOyBvbiB0byBzZWUgdGhlbSBhbGwgZm9yIHlvdXIgY2hvc2VuIDxjb2RlPnR5cGU8L2Nv ZGU+cykgYnV0IHdlJiM4MjE3O2xsIGNvbmNlbnRyYXRlIG9uIHRoZXNlIGZvciBub3cgdG8g a2VlcCB0aGluZ3Mgc2ltcGxlLjwvcD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+dGFnIG9w dGlvbnMgPC90aD4KCQkJPHRoPnZhcnMgcmV0dXJuZWQgPC90aD4KCQkJPHRoPnJlbWFya3Mg PC90aD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBtYXRjaD0mIzgyMjA7Y2F0JiM4MjIxOyA8 L3RkPgoJCQk8dGQ+IGNhdGVnb3J5MSwgY2F0ZWdvcnkyIDwvdGQ+CgkJCTx0ZD4gZGVmYXVs dCBpcyB0byBtYXRjaCBuYW1lIG9ubHkgPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBt YXRjaD0mIzgyMjA7Y2F0JiM4MjIxOyBtYXRjaHdpdGg9JiM4MjIwO25hbWUsIHZhbHVlJiM4 MjIxOyA8L3RkPgoJCQk8dGQ+IGNhdGVnb3J5MSwgY2F0ZWdvcnkyLCBrZXl3b3JkcywgaWRf a2V5d29yZHMgPC90ZD4KCQkJPHRkPiBub3cgY2hlY2tzIHZhbHVlIGFzIHdlbGwgPC90ZD4K CQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBtYXRjaD0mIzgyMjA7Y2F0JiM4MjIxOyBpbmNsdWRl PSYjODIyMDthcnRpY2xlX2ltYWdlJiM4MjIxOyA8L3RkPgoJCQk8dGQ+IGNhdGVnb3J5MSwg Y2F0ZWdvcnkyLCBhcnRpY2xlX2ltYWdlIDwvdGQ+CgkJCTx0ZD4gaW5jbHVkZXMgYXJlIGFs d2F5cyBzZWxlY3RlZCA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IG1hdGNoPSYjODIy MDtjYXQmIzgyMjE7IGluY2x1ZGU9JiM4MjIwO2FydGljbGVfaW1hZ2UsIG9yaWdpbiYjODIy MTsgc3Vic2V0PSYjODIyMDsxJiM4MjIxOyA8L3RkPgoJCQk8dGQ+IGNhdGVnb3J5MSwgY2F0 ZWdvcnkyLCBvcmlnaW4sIGFydGljbGVfaW1hZ2UsIGFydGljbGVfaW1hZ2VfMSwgYXJ0aWNs ZV9pbWFnZV8yLCBhcnRpY2xlX2ltYWdlXzMgPC90ZD4KCQkJPHRkPiBsb29rZWQgJiM4MjIw O2luc2lkZSYjODIyMTsgZWFjaCB2YXIgdG8gZmluZCBhbnkgbGlzdHMgPC90ZD4KCQk8L3Ry PgoJCTx0cj4KCQkJPHRkPiBtYXRjaD0mIzgyMjA7Y2F0JiM4MjIxOyBpbmNsdWRlPSYjODIy MDthcnRpY2xlX2ltYWdlLCBvcmlnaW4mIzgyMjE7IHN1YnNldD0mIzgyMjA7MiYjODIyMTsg PC90ZD4KCQkJPHRkPiBhcnRpY2xlX2ltYWdlXzEsIGFydGljbGVfaW1hZ2VfMiwgYXJ0aWNs ZV9pbWFnZV8zIDwvdGQ+CgkJCTx0ZD4gcmV0dXJuIDxlbT5vbmx5PC9lbT4gZGF0YSBzZXRz IHRoYXQgY29udGFpbiBsaXN0cyBhbmQgcmVtb3ZlcyB0aGUgYWdncmVnYXRlIChiYXNlKSBl bnRyeSA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IG1hdGNoPSYjODIyMDtjYXQsIGFy dGljbGVfaW1hZ2UmIzgyMjE7IG1hdGNod2l0aD0mIzgyMjA7bmFtZSx2YWx1ZSYjODIyMTsg c3Vic2V0PSYjODIyMDsyJiM4MjIxOyA8L3RkPgoJCQk8dGQ+IGFydGljbGVfaW1hZ2VfMSwg YXJ0aWNsZV9pbWFnZV8yLCBhcnRpY2xlX2ltYWdlXzMsIGtleXdvcmRzLCBpZF9rZXl3b3Jk cyA8L3RkPgoJCQk8dGQ+IGNoZWNrcyBib3RoIG5hbWUgYW5kIHZhbHVlIGZvciBlYWNoIG1h dGNoIHRlcm0sIGFuZCBvbmx5IHNob3dzIGl0ZW1zIHRoYXQgaGF2ZSBsaXN0cyBpbiB0aGVt IChpZiA8Y29kZT5rZXl3b3JkczwvY29kZT4gaGVsZCBqdXN0IG9uZSBpdGVtICYjODIyMDtj YXQmIzgyMjE7IGl0IHdvdWxkIDxlbT5ub3Q8L2VtPiBiZSBkaXNwbGF5ZWQpIDwvdGQ+CgkJ PC90cj4KCTwvdGFibGU+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhcmUgdXNpbmcgdGhpcyB0 YWcgaW4gYW4gYXJ0aWNsZSwgdGhlICYjODIxNjtib2R5JiM4MjE3OyBtYXkgbWF0Y2ggYmVj YXVzZSBpdCBjb250YWlucyB0aGUgc21kX2VhY2ggdGFnIHdoaWNoIGNvbnRhaW5zIHRoZSB2 ZXJ5IGluZm9ybWF0aW9uIHlvdSBhcmUgbWF0Y2hpbmchIEluIHRoaXMgY2FzZSwgYWRkaW5n IDxjb2RlPmV4Y2x1ZGU9JnF1b3Q7Ym9keSZxdW90OzwvY29kZT4gd2lsbCByZW1vdmUgaXQg ZnJvbSB0aGUgcmVzdWx0cy48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+CgoJ PHA+RnJvbSBhIHBhZ2UgdGVtcGxhdGUsIGFsbG93IHZpc2l0b3JzIHRvIGRpc3BsYXkgYW55 IG51bWJlciBvZiBhcnRpY2xlcy48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7Zm9ybSBuYW1lPSZxdW90O3Nob3dfYXJ0cyZxdW90OyBhY3Rpb249 JnF1b3Q7L215L3Jlc3VsdHMvcGFnZSZxdW90OyZndDsKICAmbHQ7dHhwOmFydGljbGVfY3Vz dG9tIGZvcm09JnF1b3Q7bGlzdF9jaGVja3MmcXVvdDsKICAgICAgIGNhdGVnb3J5PSZxdW90 O2FuaW1hbHMmcXVvdDsgbGltaXQ9JnF1b3Q7OTk5JnF1b3Q7IC8mZ3Q7CiAgJmx0O2lucHV0 IHR5cGU9JnF1b3Q7c3VibWl0JnF1b3Q7IC8mZ3Q7CiZsdDsvZm9ybSZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPllvdXIgZm9ybSA8Y29kZT5saXN0X2NoZWNrczwvY29kZT4gc2ltcGx5IGRp c3BsYXlzIHRoZSBhcnRpY2xlIHRpdGxlIGFuZCBhIGNoZWNrYm94OjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtsaSZndDsKJmx0O3R4cDp0aXRs ZSAvJmd0OyZsdDtpbnB1dCB0eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7CiAgICAgbmFtZT0m cXVvdDthcnRpY2xlX2xpc3RzW10mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDsmbHQ7dHhwOmFy dGljbGVfaWQgLyZndDsmcXVvdDsgLyZndDsKJmx0Oy9saSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPldoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgZm9ybSB3ZSBjYW4gdXNlIHNtZF9lYWNo IHRvIGZpbmQgd2hpY2ggY2hlY2tib3hlcyBoYXZlIGJlZW4gY2xpY2tlZCBhbmQgc2hvdyB0 aGUgcmVsZXZhbnQgYXJ0aWNsZXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZWFjaCB0eXBlPSZxdW90O3VybHZhciZxdW90Owog ICAgIG1hdGNoPSZxdW90O2FydGljbGVfbGlzdHMmcXVvdDsgc3Vic2V0PSZxdW90OzImcXVv dDsmZ3Q7CiAgJmx0O3R4cDphcnRpY2xlX2N1c3RvbSBpZD0mcXVvdDt7c21kX3Zhcl92YWx1 ZX0mcXVvdDsgLyZndDsKJmx0Oy90eHA6c21kX2VhY2gmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5BbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHVzaW5nIGEgY29weSBvZiA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiB0aGF0IHN1cHBvcnRzIGxpc3RzIGluIGFydGljbGVfY3Vz dG9tJiM4MjE3O3MgPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB5b3UgY2FuIGRyb3AgdGhl IDxjb2RlPnN1YnNldDwvY29kZT4uPC9wPgoKCTxoMiBpZD0iY2hhbmdlbG9nIj5DaGFuZ2Vs b2c8L2gyPgoKCTx1bD4KCQk8bGk+MTIgSnVuIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNl PC9saT4KCQk8bGk+MjIgSnVuIDA4IHwgMC4xMSB8IEFkZGVkIHR5cGU9Zml4ZWQgKHRoYW5r cyBtcmRhbGUpPC9saT4KCQk8bGk+MDQgQXByIDA5IHwgMC4xMiB8IEZpeGVkIDxjb2RlPnN1 YnNldD0mcXVvdDsyJnF1b3Q7PC9jb2RlPiBidWcgd2l0aCBzaW5nbGUgZW50cmllcyAodGhh bmtzIGplcmVteXdvb2QpIDsgYWRkZWQgPGNvZGU+e3Zhcl9jb3VudGVyfTwvY29kZT4gYW5k IDxjb2RlPnt2YXJfdG90YWx9PC9jb2RlPiAodGhhbmtzIG1yZGFsZSk8L2xpPgoJCTxsaT4z MCBBdWcgMDkgfCAwLjIgfCBBZGRlZCA8Y29kZT52YXJfcHJlZml4PC9jb2RlPiBhdHRyaWJ1 dGUgYW5kIHNldCBpdCB0byA8Y29kZT5zbWRfPC9jb2RlPiBieSBkZWZhdWx0PC9saT4KCTwv dWw+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0 eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hl bHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBO ZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQoj c21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsg bWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGlu aywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbTox cHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJs dWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBm b250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjog Y2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFj azsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwg c2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAx MnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEw cHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsg Y29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRl cjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQt YWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07IGJvcmRlcjoxcHggc29saWQgIzY2 Njt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7 IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFy ZTsgfQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0KI3NtZF9o ZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gKioqIEVORCBQ TFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiOTdmYzQ4MDMxZjkyODRhODhi YzIwZTI3MmQzYmFmMzEiO30=