# Name: zcr_mailchimp v0.10 # Type: Public plugin # Textpattern CMS Mailchimp module for zem_contact_reborn # Author: Stef Dawson # URL: http://stefdawson.com # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJ6Y3JfbWFpbGNoaW1wIjtzOjY6ImF1dGhvciI7czox MToiU3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjE6Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbSI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMTAiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjU1OiJUZXh0cGF0dGVybiBDTVMgTWFpbGNoaW1wIG1vZHVsZSBmb3IgemVtX2NvbnRhY3Rf cmVib3JuIjtzOjQ6ImNvZGUiO3M6NTcxMjoiaWYgKHR4cGludGVyZmFjZSA9PT0gJ3B1Ymxp YycpIHsKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCd6Y3JfbWFpbGNoaW1wJywgJ3plbWNvbnRh Y3QuZGVsaXZlcicpOwp9CgovKioKICogQ2FsbGJhY2sgaG9vayBmb3IgemVtX2NvbnRhY3Rf cmVib3JuIHRvIGhhbmRsZSBkZWxpdmVyeS4KICovCmZ1bmN0aW9uIHpjcl9tYWlsY2hpbXAo JGV2dCwgJHN0cCwgJiRwYXlsb2FkKQp7CiAgICAvLyBJZiB1c2luZyBjb3B5c2VuZGVyLCBp dCdzIHRoZSAybmQgdGltZSB0aGUgcGx1Z2luIGhhcyBiZWVuIGNhbGxlZCBzbyBubyBuZWVk CiAgICAvLyB0byBkbyBhbnl0aGluZy4gWkNSIHdpbGwgY29udGludWUgYXMgbm9ybWFsIGFu ZCBtYWlsIG91dCB0aGUgZW1haWwuCiAgICBpZiAoJHN0cCA9PT0gJ2NvcHlzZW5kZXInKSB7 CiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgICR6Y3JDb25maWcgPSBhcnJheSgncmV0 dXJuX2FjdGlvbicgPT4gJ3NraXAnKTsKICAgICRjaGltcENvbmZpZyA9IGFycmF5KCdlbWFp bCcgPT4gYXJyYXkoJ2VtYWlsJyA9PiBudWxsKSwgJ2lkJyA9PiBudWxsKTsKICAgICRjaGlt cFZhcnMgPSBhcnJheSgpOwogICAgJGFwaUtleSA9IG51bGw7CiAgICAkYWN0aW9uID0gJ2xp c3RzL3N1YnNjcmliZSc7CgogICAgZm9yZWFjaCAoJHBheWxvYWRbJ2ZpZWxkcyddIGFzICRr ZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgaWYgKCRrZXkgPT09ICdtYWlsY2hpbXBfYXBpX2tl eScpIHsKICAgICAgICAgICAkYXBpS2V5ID0gJHZhbHVlOwogICAgICAgIH0gZWxzZWlmICgk a2V5ID09PSAnbWFpbGNoaW1wX2FjdGlvbicpIHsKICAgICAgICAgICAkYWN0aW9uID0gJHZh bHVlOwogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGtleSwgJ21haWxjaGltcF8nKSA9PT0g MCkgewogICAgICAgICAgICAkcmF3S2V5ID0gc3Vic3RyKCRrZXksIDEwKTsgLy8gU3RyaXAg b2ZmIG1haWxjaGltcF8gcHJlZml4CgogICAgICAgICAgICAvLyBPcHRpb25hbCBwYXJhbWV0 ZXIgdHlwZSBjYW4gYmUgc3BlY2lmaWVkIGF0IGVuZCBvZiBrZXkuCiAgICAgICAgICAgIC8v IERlZmF1bHQgdG8gc3RyaW5nLgogICAgICAgICAgICAvLyBUb2RvOiBhcnJheXM/CiAgICAg ICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJzonLCAkcmF3S2V5KTsKICAgICAgICAgICAgJHBh cmFtID0gJHBhcnRzWzBdOwogICAgICAgICAgICAkdHlwZSA9IChpc3NldCgkcGFydHNbMV0p KSA/ICRwYXJ0c1sxXSA6ICdzJzsKCiAgICAgICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAg ICAgICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICAgICAgICAgICRjaGltcENvbmZp Z1skcGFyYW1dID0gKGJvb2wpJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAgICAgICAgJGNoaW1wQ29u ZmlnWyRwYXJhbV0gPSAoaW50KSR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg ICAgICAgICAgICAgICAgICAkY2hpbXBDb25maWdbJHBhcmFtXSA9ICR2YWx1ZTsKICAgICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChz dHJwb3MoJGtleSwgJ3pjcl8nKSA9PT0gMCkgewogICAgICAgICAgICAkcGFyYW0gPSBzdWJz dHIoJGtleSwgNCk7IC8vIFN0cmlwIG9mZiB6Y3JfIHByZWZpeAogICAgICAgICAgICAkemNy Q29uZmlnWyRwYXJhbV0gPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlaWYgKCRrZXkgPT09ICds aXN0X2lkJykgewogICAgICAgICAgICAkY2hpbXBDb25maWdbJ2lkJ10gPSAkdmFsdWU7CiAg ICAgICAgfSBlbHNlaWYgKCRrZXkgPT09ICdlbWFpbCcpIHsKICAgICAgICAgICAgLy8gRG9u J3QgYXNrLiBJdCdzIHRoZWlyIHNwZWMhCiAgICAgICAgICAgICRjaGltcENvbmZpZ1snZW1h aWwnXVsnZW1haWwnXSA9ICR2YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAk Y2hpbXBWYXJzWyRrZXldID0gJHZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJGFw aUtleSkgewogICAgICAgICRjaGltcENvbmZpZ1snbWVyZ2VfdmFycyddID0gJGNoaW1wVmFy czsKCiAgICAgICAgJG1jID0gbmV3IHpjcl9NYWlsY2hpbXAoJGFwaUtleSk7CiAgICAgICAg JHJlc3VsdCA9ICRtYy0+Y2FsbCgkYWN0aW9uLCAkY2hpbXBDb25maWcpOwoKICAgICAgICAv LyBUb2RvOiB3aGF0IHRvIGRvIHdpdGggdGhlIHJlc3VsdD8KCiAgICAgICAgaWYgKCR6Y3JD b25maWdbJ3JldHVybl9hY3Rpb24nXSkgewogICAgICAgICAgICByZXR1cm4gJ3plbWNvbnRh Y3QuJyAuICR6Y3JDb25maWdbJ3JldHVybl9hY3Rpb24nXTsKICAgICAgICB9CiAgICB9IGVs c2UgewogICAgICAgIC8vIE5vdCBmb3IgdXMuCiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9 CgovKioKICogU3VwZXItc2ltcGxlLCBtaW5pbXVtIGFic3RyYWN0aW9uIE1haWxDaGltcCBB UEkgdjIgd3JhcHBlcgogKgogKiBVc2VzIGN1cmwgaWYgYXZhaWxhYmxlLCBmYWxscyBiYWNr IHRvIGZpbGVfZ2V0X2NvbnRlbnRzIGFuZCBIVFRQIHN0cmVhbS4KICogVGhpcyBwcm9iYWJs eSBoYXMgbW9yZSBjb21tZW50cyB0aGFuIGNvZGUuCiAqCiAqIENvbnRyaWJ1dG9yczoKICog TWljaGFlbCBNaW5vciA8bWVAcGl4ZWxiYWNvbi5jb20+CiAqIExvcm5hIEphbmUgTWl0Y2hl bGwsIGdpdGh1Yi5jb20vbG9ybmFqYW5lCiAqCiAqIEBhdXRob3IgRHJldyBNY0xlbGxhbiA8 ZHJldy5tY2xlbGxhbkBnbWFpbC5jb20+CiAqIEB2ZXJzaW9uIDEuMS4xCiAqLwpjbGFzcyB6 Y3JfTWFpbENoaW1wCnsKICAgIHByaXZhdGUgJGFwaV9rZXk7CiAgICBwcml2YXRlICRhcGlf ZW5kcG9pbnQgPSAnaHR0cHM6Ly88ZGM+LmFwaS5tYWlsY2hpbXAuY29tLzIuMCc7CiAgICBw cml2YXRlICR2ZXJpZnlfc3NsICAgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBh IG5ldyBpbnN0YW5jZQogICAgICogQHBhcmFtIHN0cmluZyAkYXBpX2tleSBZb3VyIE1haWxD aGltcCBBUEkga2V5CiAgICAgKi8KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhcGlfa2V5 KQogICAgewogICAgICAgICR0aGlzLT5hcGlfa2V5ID0gJGFwaV9rZXk7CiAgICAgICAgbGlz dCgsICRkYXRhY2VudHJlKSA9IGV4cGxvZGUoJy0nLCAkdGhpcy0+YXBpX2tleSk7CiAgICAg ICAgJHRoaXMtPmFwaV9lbmRwb2ludCA9IHN0cl9yZXBsYWNlKCc8ZGM+JywgJGRhdGFjZW50 cmUsICR0aGlzLT5hcGlfZW5kcG9pbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsbCBh biBBUEkgbWV0aG9kLiBFdmVyeSByZXF1ZXN0IG5lZWRzIHRoZSBBUEkga2V5LCBzbyB0aGF0 IGlzIGFkZGVkIGF1dG9tYXRpY2FsbHkgLS0geW91IGRvbid0IG5lZWQgdG8gcGFzcyBpdCBp bi4KICAgICAqIEBwYXJhbSAgc3RyaW5nICRtZXRob2QgVGhlIEFQSSBtZXRob2QgdG8gY2Fs bCwgZS5nLiAnbGlzdHMvbGlzdCcKICAgICAqIEBwYXJhbSAgYXJyYXkgICRhcmdzICAgQW4g YXJyYXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC4gV2lsbCBiZSBqc29u LWVuY29kZWQgZm9yIHlvdS4KICAgICAqIEByZXR1cm4gYXJyYXkgICAgICAgICAgQXNzb2Np YXRpdmUgYXJyYXkgb2YganNvbiBkZWNvZGVkIEFQSSByZXNwb25zZS4KICAgICAqLwogICAg cHVibGljIGZ1bmN0aW9uIGNhbGwoJG1ldGhvZCwgJGFyZ3M9YXJyYXkoKSwgJHRpbWVvdXQg PSAxMCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1ha2VSZXF1ZXN0KCRtZXRob2Qs ICRhcmdzLCAkdGltZW91dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyB0aGUg dW5kZXJseWluZyBIVFRQIHJlcXVlc3QuIE5vdCB2ZXJ5IGV4Y2l0aW5nCiAgICAgKiBAcGFy YW0gIHN0cmluZyAkbWV0aG9kIFRoZSBBUEkgbWV0aG9kIHRvIGJlIGNhbGxlZAogICAgICog QHBhcmFtICBhcnJheSAgJGFyZ3MgICBBc3NvYyBhcnJheSBvZiBwYXJhbWV0ZXJzIHRvIGJl IHBhc3NlZAogICAgICogQHJldHVybiBhcnJheSAgICAgICAgICBBc3NvYyBhcnJheSBvZiBk ZWNvZGVkIHJlc3VsdAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0 KCRtZXRob2QsICRhcmdzPWFycmF5KCksICR0aW1lb3V0ID0gMTApCiAgICB7CiAgICAgICAg JGFyZ3NbJ2FwaWtleSddID0gJHRoaXMtPmFwaV9rZXk7CgogICAgICAgICR1cmwgPSAkdGhp cy0+YXBpX2VuZHBvaW50LicvJy4kbWV0aG9kLicuanNvbic7CgogICAgICAgIGlmIChmdW5j dGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9zZXRv cHQnKSl7CiAgICAgICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgICAgICAgICBjdXJs X3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICAgICAgY3VybF9zZXRv cHQoJGNoLCBDVVJMT1BUX0hUVFBIRUFERVIsIGFycmF5KCdDb250ZW50LVR5cGU6IGFwcGxp Y2F0aW9uL2pzb24nKSk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9V U0VSQUdFTlQsICdQSFAtTUNBUEkvMi4wJyk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRj aCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAgICAgICAgIGN1cmxfc2V0 b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAkdGltZW91dCk7CiAgICAgICAgICAgIGN1cmxf c2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsKICAgICAgICAgICAgY3VybF9zZXRv cHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAkdGhpcy0+dmVyaWZ5X3NzbCk7CiAg ICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCBqc29uX2Vu Y29kZSgkYXJncykpOwogICAgICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CiAg ICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAkanNvbl9kYXRhID0ganNvbl9lbmNvZGUoJGFyZ3MpOwogICAgICAgICAgICAkcmVzdWx0 ICAgID0gZmlsZV9nZXRfY29udGVudHMoJHVybCwgbnVsbCwgc3RyZWFtX2NvbnRleHRfY3Jl YXRlKGFycmF5KAogICAgICAgICAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAg ICAgICAgICAgICdwcm90b2NvbF92ZXJzaW9uJyA9PiAxLjEsCiAgICAgICAgICAgICAgICAg ICAgJ3VzZXJfYWdlbnQnICAgICAgID0+ICdQSFAtTUNBUEkvMi4wJywKICAgICAgICAgICAg ICAgICAgICAnbWV0aG9kJyAgICAgICAgICAgPT4gJ1BPU1QnLAogICAgICAgICAgICAgICAg ICAgICdoZWFkZXInICAgICAgICAgICA9PiAiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9q c29uXHJcbiIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJD b25uZWN0aW9uOiBjbG9zZVxyXG4iIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkNvbnRlbnQtbGVuZ3RoOiAiIC4gc3RybGVuKCRqc29uX2RhdGEpIC4g IlxyXG4iLAogICAgICAgICAgICAgICAgICAgICdjb250ZW50JyAgICAgICAgICA9PiAkanNv bl9kYXRhLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSkpOwogICAgICAgIH0K CiAgICAgICAgcmV0dXJuICRyZXN1bHQgPyBqc29uX2RlY29kZSgkcmVzdWx0LCB0cnVlKSA6 IGZhbHNlOwogICAgfQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1 IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo1NjM4OiI8aDE+emNyX21haWxj aGltcDwvaDE+Cgo8cD5BIFRleHRwYXR0ZXJuIDxzcGFuIGNsYXNzPSJjYXBzIj5DTVM8L3Nw YW4+IHBsdWdpbiBtb2R1bGUgZm9yIHRoZSB6ZW1fY29udGFjdF9yZWJvcm4gbWFpbGVyLCBw ZXJtaXR0aW5nIHBlb3BsZSB0byBzdWJzY3JpYmUgdG8gbWFpbGluZyBsaXN0cyB5b3UgaGF2 ZSBzZXQgdXAgaW4gTWFpbENoaW1wLjwvcD4KCjxoMj5JbnN0YWxsYXRpb248L2gyPgoKPHA+ PHNwYW4gY2xhc3M9ImNhcHMiPklNUE9SVEFOVDwvc3Bhbj46IHJlcXVpcmVzIHplbV9jb250 YWN0X3JlYm9ybiB2NC41LjAuMCsgdG8gYmUgaW5zdGFsbGVkIGFuZCBhY3RpdmUuPC9wPgoK PHA+RG93bmxvYWQgdGhlIHBsdWdpbiwgdmlzaXQgeW91ciA8ZW0+QWRtaW4tJmd0O1BsdWdp bnM8L2VtPiBwYW5lbCwgcGFzdGUgdGhlIGNvZGUgaW4gdGhlIGJveCwgdXBsb2FkLCBpbnN0 YWxsLCBhY3RpdmF0ZS4gRG9uZS48L3A+Cgo8aDI+VXNhZ2U8L2gyPgoKPHA+VGhlIHBsdWdp biBzaWxlbnRseSBzaXRzIHdhaXRpbmcgZm9yIHplbV9jb250YWN0X3JlYm9ybiBzdWJtaXNz aW9ucy4gSWYgYW55IHN1Ym1pc3Npb24gaGFzIHRoZSBjb3JyZWN0IGNvbWJpbmF0aW9uIG9m IG1haWxjaGltcCBmaWVsZHMsIHRoZSBwbHVnaW4gd2FrZXMgdXAsIHBlcmZvcm1zIHRoZSBk ZXNpZ25hdGVkIGFjdGlvbiAod2hpY2ggYnkgZGVmYXVsdCBpcyBzdWJzY3JpYmUgdG8gbGlz dCkgYW5kIHRoZW4gdGVsbHMgPHNwYW4gY2xhc3M9ImNhcHMiPlpDUjwvc3Bhbj4gaXQmIzgy MTc7cyBkb25lLiBJbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLCB0aGUgc2VuZC1hbi1l bWFpbCBwb3J0aW9uIG9mIHRoZSBwcm9jZXNzIGlzIGJ5cGFzc2VkLiBUaGlzIGNhbiBiZSBv dmVycmlkZGVuIHVzaW5nIDxjb2RlPnpjcl9yZXR1cm5fYWN0aW9uPC9jb2RlPjogc2VlIGJl bG93LjwvcD4KCjxwPlRoZSB3YXkgeW91IHNldCB1cCB0aGUgcGx1Z2luIGlzIGJ5IHdyaXRp bmcgYSBzdGFuZGFyZCA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gZm9y bSwgYnV0IHdpdGggc3BlY2lmaWMgZWxlbWVudHMgdG8gY29uZmlndXJlIGFuZCBjb250cm9s IHRoZSBwcm9jZXNzLiBVc2UgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgLyZn dDs8L2NvZGU+IHRvIHRlbGwgdGhlIHBsdWdpbiBob3cgdG8gaW50ZXJhY3Qgd2l0aCBNYWls Q2hpbXAuIEFueSBvdGhlciwgcmVndWxhciBmaWVsZHMgd2lsbCBzaW1wbHkgYmUgcGFzc2Vk IHRvIE1haWxDaGltcCBhcyA8YSBocmVmPSJodHRwOi8va2IubWFpbGNoaW1wLmNvbS9tZXJn ZS10YWdzL2FsbC10aGUtbWVyZ2UtdGFncy1jaGVhdHNoZWV0Ij5tZXJnZSB0YWdzPC9hPi48 L3A+Cgo8cD5IZXJlJiM4MjE3O3MgYSBzaW1wbGUgZXhhbXBsZSwgd2hpY2ggY29sbGVjdHMg YW4gZW1haWwgYWRkcmVzcywgZmlyc3QgbmFtZSwgYW5kIGxhc3QgbmFtZSBmb3Igc3Vic2Ny aXB0aW9uIHB1cnBvc2VzOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3AmZ3Q7U2lnbiB1cCBmb3Ig b3VyIG5ld3NsZXR0ZXIhJmx0Oy9wJmd0OwombHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7 Y2hpbXBBcGlLZXkmcXVvdDsmZ3Q7YWJjMTIzYWJjMTIzYWJjMTIzYWJjMTIzYWJjMTIzLXVz MSZsdDsvdHhwOnZhcmlhYmxlJmd0OwombHQ7dHhwOnplbV9jb250YWN0IHRvPSZxdW90O25v dF9pbXBvcnRhbnRAZXhhbXBsZS5vcmcmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6emVtX2NvbnRh Y3Rfc2VjcmV0IGxhYmVsPSZxdW90O21haWxjaGltcF9hcGlfa2V5JnF1b3Q7IHZhbHVlPSYj Mzk7Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O2NoaW1wQXBpS2V5JnF1b3Q7IC8mZ3Q7 JiMzOTsgLyZndDsKICAgJmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgbGFiZWw9JnF1b3Q7 bWFpbGNoaW1wX2RvdWJsZV9vcHRpbjpiJnF1b3Q7IHZhbHVlPSZxdW90O2ZhbHNlJnF1b3Q7 IC8mZ3Q7CiAgICZsdDt0eHA6emVtX2NvbnRhY3Rfc2VjcmV0IGxhYmVsPSZxdW90O2xpc3Rf aWQmcXVvdDsgdmFsdWU9JnF1b3Q7bXlsaXN0MTIzNCZxdW90OyAvJmd0OwogICAmbHQ7dHhw OnplbV9jb250YWN0X2VtYWlsIG5hbWU9JnF1b3Q7ZW1haWwmcXVvdDsgLyZndDsKICAgJmx0 O3R4cDp6ZW1fY29udGFjdF90ZXh0IG5hbWU9JnF1b3Q7Rk5BTUUmcXVvdDsgbGFiZWw9JnF1 b3Q7Rmlyc3QgbmFtZSZxdW90OyAvJmd0OwogICAmbHQ7dHhwOnplbV9jb250YWN0X3RleHQg bmFtZT0mcXVvdDtMTkFNRSZxdW90OyBsYWJlbD0mcXVvdDtMYXN0IG5hbWUmcXVvdDsgLyZn dDsKICAgJmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgbGFiZWw9JnF1b3Q7U3Vic2NyaWJl JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxw PlByZXR0eSBzaW1wbGUuIEFueSBzZWNyZXQgdmFsdWVzIHRoYXQgYmVnaW4gd2l0aCA8Y29k ZT5tYWlsY2hpbXBfPC9jb2RlPiBhcmUgdHJlYXRlZCBhcyBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcnMuIFRoZXNlIGNhbiBiZTo8L3A+Cgo8dWw+Cgk8bGk+PHN0cm9uZz5tYWlsY2hpbXBf YXBpX2tleTwvc3Ryb25nPiBUaGUgdHJpZ2dlciBmb3IgdGhlIHBsdWdpbiB0byB3YWtlIHVw LiBPYnRhaW4gb25lIG9mIHRoZXNlIHdoZW4geW91IHNpZ24gdXAgZm9yIE1haWxDaGltcC4g VGhlIGV4YW1wbGUgYWJvdmUgc3RvcmVzIGl0IGluIGEgdmFyaWFibGUgc28geW91IGNhbiB1 c2UgaXQgb24gb3RoZXIgcGFnZXMsIHBvdGVudGlhbGx5IGZvciBvdGhlciBsaXN0cyBvciBh Y3Rpb25zLjwvbGk+Cgk8bGk+PHN0cm9uZz5tYWlsY2hpbXBfYWN0aW9uPC9zdHJvbmc+IFRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBhY3Rpb24gdG8gcGVyZm9ybSBvbiBN YWlsQ2hpbXAuIERlZmF1bHRzIHRvIDxjb2RlPmxpc3RzL3N1YnNjcmliZTwvY29kZT4uIEFu b3RoZXIgdXNlZnVsIG9uZSBtaWdodCBiZSA8Y29kZT5saXN0cy91bnN1YnNjcmliZTwvY29k ZT4uPC9saT4KCTxsaT48c3Ryb25nPm1haWxjaGltcF8/Pz8/PC9zdHJvbmc+IEFueSBvdGhl ciBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciB0aGUgYWN0aW9uLiBFeGFtcGxlcyBpbmNsdWRl IDxjb2RlPmRvdWJsZV9vcHRpbjwvY29kZT4sIDxjb2RlPnNlbmRfd2VsY29tZTwvY29kZT4s IDxjb2RlPnVwZGF0ZV9leGlzdGluZzwvY29kZT4sIDxjb2RlPmVtYWlsX3R5cGU8L2NvZGU+ LCA8Y29kZT5zZW5kX2dvb2RieWU8L2NvZGU+LiBTZWUgdGhlIDxhIGhyZWY9Imh0dHBzOi8v YXBpZG9jcy5tYWlsY2hpbXAuY29tL2FwaS8yLjAvIj48c3BhbiBjbGFzcz0iY2FwcyI+QVBJ PC9zcGFuPiBkb2NzPC9hPiBmb3IgYSBjb21wbGV0ZSBsaXN0LiBUaGUgYWJvdmUgZXhhbXBs ZSBzZXRzIDxjb2RlPmRvdWJsZV9vcHRpbjwvY29kZT4gdG8gPGNvZGU+ZmFsc2U8L2NvZGU+ LjwvbGk+CjwvdWw+Cgo8cD5XaGVuIHNlbmRpbmcgZXh0cmEgcGFyYW1ldGVycywgeW91IHRl bGwgdGhlIHBsdWdpbiBlYWNoIHBhcmFtZXRlciYjODIxNztzIGRhdGEgdHlwZSBieSBhZGRp bmcgYSBjb2xvbiBhbmQgYSBzaW5nbGUgbGV0dGVyIHRvIGRlbm90ZSBpdHMgdHlwZS4gT3B0 aW9ucyBhcmU6PC9wPgoKPHVsPgoJPGxpPjxjb2RlPjpiPC9jb2RlPiBCb29sZWFuLjwvbGk+ Cgk8bGk+PGNvZGU+Omk8L2NvZGU+IEludGVnZXIuPC9saT4KCTxsaT48Y29kZT46czwvY29k ZT4gU3RyaW5nIChkZWZhdWx0KS48L2xpPgo8L3VsPgoKPHA+T3RoZXIgdmFyaWFibGVzICh3 aXRob3V0IGFueSBwcmVmaXgpIGFyZSB0cmVhdGVkIGFzIHJlZ3VsYXIgcGFyYW1ldGVycyAo c3RyaW5ncykgdG8gc2VuZCB0byBNYWlsQ2hpbXAgZm9yIHRoZSBwdXJwb3NlcyBvZiBzdG9y YWdlLiBUaGV5IGFyZSBhbGwgcGFzc2VkIGFzIE1lcmdlIFRhZ3MsIHdpdGggdGhlIGV4Y2Vw dGlvbiBvZiB0d28gc3BlY2lhbCBvbmVzOjwvcD4KCjx1bD4KCTxsaT48c3Ryb25nPmxpc3Rf aWQ8L3N0cm9uZz4gVGhlIHN1YnNjcmlwdGlvbiBsaXN0IElEIG9mIHRoZSBsaXN0IHRvIHdo aWNoIHlvdSB3aXNoIHBlb3BsZSB0byBiZSBhYmxlIHRvIHN1YnNjcmliZS48L2xpPgoJPGxp PjxzdHJvbmc+ZW1haWw8L3N0cm9uZz4gVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHBlcnNv biB3aG8gaXMgc3Vic2NyaWJpbmcuPC9saT4KPC91bD4KCjxwPlRoZXJlIGFyZSBhbHNvIHpl bV9jb250YWN0X3JlYm9ybiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIHdoaWNoIGJlZ2lu IHdpdGggPGNvZGU+emNyXzwvY29kZT4uIEF0IHRoZSBtb21lbnQgdGhlcmUmIzgyMTc7cyBv bmx5IG9uZTo8L3A+Cgo8dWw+Cgk8bGk+PHN0cm9uZz5yZXR1cm5fYWN0aW9uPC9zdHJvbmc+ IERldGVybWluZXMgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIE1haWxDaGltcCBwcm9jZXNzIGNv bXBsZXRlczoKCTx1bD4KCQk8bGk+PHN0cm9uZz5za2lwPC9zdHJvbmc+IFRoZSBkZWZhdWx0 LCB3aGljaCBjYXVzZXMgdGhlIHJlZ3VsYXIgPHNwYW4gY2xhc3M9ImNhcHMiPlpDUjwvc3Bh bj4gbWFpbCBwcm9jZXNzIHRvIGJlIGJ5cGFzc2VkLCB3aGlsZSBzdGlsbCByZXR1cm5pbmcg dGhlIHJlZ3VsYXIgJiM4MjE2O3N1Y2Nlc3MmIzgyMTc7IG1lc3NhZ2UuPC9saT4KCQk8bGk+ PHN0cm9uZz5mYWlsPC9zdHJvbmc+IFRlbGwgPHNwYW4gY2xhc3M9ImNhcHMiPlpDUjwvc3Bh bj4gdG8gcmV0dXJuIGEgZmFpbHVyZSBjb2RlLjwvbGk+CgkJPGxpPjxzdHJvbmc+c3VjY2Vz czwvc3Ryb25nPiBUbyBhbGxvdyA8c3BhbiBjbGFzcz0iY2FwcyI+WkNSPC9zcGFuPiB0byBj b250aW51ZSBzZW5kaW5nIGFuIGVtYWlsIHRvIHRoZSByZWNpcGllbnQuIE5vdGUgdGhhdCB0 aGUgcmVjaXBpZW50IGluIHRoaXMgY2FzZSBpcyB0aGUgPGNvZGU+dG88L2NvZGU+IGF0dHJp YnV0ZSBvZiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+IHRhZyAo cHJvYmFibHkgeW91ISksIG5vdCB0aGUgcGVyc29uIHNpZ25pbmcgdXAuPC9saT4KCTwvdWw+ PC9saT4KCTwvdWw+Cgo8cD5JZiB5b3UgZWxlY3QgdG8gdXNlIDxjb2RlPmNvcHlzZW5kZXI8 L2NvZGU+IGluIDxzcGFuIGNsYXNzPSJjYXBzIj5aQ1I8L3NwYW4+LCB0aGUgc2lnbnVwIHJl cXVlc3Qgd2lsbCBzdGlsbCBvbmx5IGJlIHBlcmZvcm1lZCBvbmNlLCBhbmQgPHNwYW4gY2xh c3M9ImNhcHMiPlpDUjwvc3Bhbj4gd2lsbCBzZW5kIG91dCBhbiBlbWFpbCB0byB0aGUgc3Vi c2NyaWJlciwgaXJyZXNwZWN0aXZlIG9mIHRoZSBzZXR0aW5nIG9mIDxjb2RlPnJldHVybl9h Y3Rpb248L2NvZGU+LjwvcD4KCjxoMj5BdXRob3IgLyBDcmVkaXRzPC9oMj4KCjxwPldyaXR0 ZW4gYnkgU3RlZiAmIzgyMTY7Qmxva2UmIzgyMTc7IERhd3NvbiwgYnV0IHRoZSBwbHVnaW4g Y291bGQgbm90IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRoZSBhd2Vzb21lbmVzcyBvZiBEcmV3 IE1jTGVsbGFuIHdobyB3cm90ZSB0aGUgbWljcm9zY29waWMgTWFpbENoaW1wIDxzcGFuIGNs YXNzPSJjYXBzIj5BUEk8L3NwYW4+IGJyb29tc3RpY2sgdXBvbiB3aGljaCB0aGlzIHBsdWdp biByaWRlcy4gQWxsIHRoZSBrdWRvcyBnbyB0byBoaW0uPC9wPgoKPGgyPkNoYW5nZWxvZzwv aDI+Cgo8dWw+Cgk8bGk+MTAgRGVjIDIwMTQgfCB2MC4xMCB8IEluaXRpYWwgcmVsZWFzZTwv bGk+CjwvdWw+IjtzOjM6Im1kNSI7czozMjoiNTMwYTA3ZTMxMzBjNDNiMzUyZDczNDVmYjI0 NmViYmQiO30=