<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>29102</bug_id>
          
          <creation_ts>2009-09-09 11:58:49 -0700</creation_ts>
          <short_desc>Make user stylesheet injection work</short_desc>
          <delta_ts>2009-09-10 07:37:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>145886</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-09-09 11:58:49 -0700</bug_when>
    <thetext>This bug tracks adding apis for injecting any # of user stylesheets into page groups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145889</commentid>
    <comment_count>1</comment_count>
      <attachid>39290</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-09-09 12:04:41 -0700</bug_when>
    <thetext>Created attachment 39290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145896</commentid>
    <comment_count>2</comment_count>
      <attachid>39290</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-09 12:48:49 -0700</bug_when>
    <thetext>Comment on attachment 39290
Patch

&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,43 @@
&gt; +2009-09-09  Dave Hyatt  &lt;hyatt@apple.com&gt;
&gt; +
&gt; +        Reviewed by Adam Roben.

Getting a little presumptuous, aren&apos;t we?

&gt; +        * WebCore.base.exp:
&gt; +        * WebCore.gypi:
&gt; +        * WebCore.vcproj/WebCore.vcproj:
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * css/CSSStyleSelector.cpp:
&gt; +        (WebCore::CSSStyleSelector::CSSStyleSelector):
&gt; +        * css/CSSStyleSelector.h:
&gt; +        * dom/Document.cpp:
&gt; +        (WebCore::Document::Document):
&gt; +        (WebCore::Document::attach):
&gt; +        (WebCore::Document::pageGroupUserSheets):
&gt; +        (WebCore::Document::clearPageGroupUserSheets):
&gt; +        (WebCore::Document::recalcStyleSelector):
&gt; +        * dom/Document.h:
&gt; +        * loader/PlaceholderDocument.cpp:
&gt; +        (WebCore::PlaceholderDocument::attach):
&gt; +        * page/PageGroup.cpp:
&gt; +        (WebCore::PageGroup::addUserStyleSheet):
&gt; +        (WebCore::PageGroup::removeUserContentForWorld):
&gt; +        (WebCore::PageGroup::removeAllUserContent):
&gt; +        * page/PageGroup.h:
&gt; +        (WebCore::PageGroup::userStyleSheets):
&gt; +        * page/UserStyleSheet.h: Added.
&gt; +        (WebCore::UserStyleSheet::UserStyleSheet):
&gt; +        (WebCore::UserStyleSheet::source):
&gt; +        (WebCore::UserStyleSheet::url):
&gt; +        (WebCore::UserStyleSheet::patterns):
&gt; +        (WebCore::UserStyleSheet::worldID):
&gt; +        * page/UserStyleSheetTypes.h: Added.

It would be nice to see some file/function-level comments.

&gt; +++ WebCore/WebCore.vcproj/WebCore.vcproj	(working copy)
&gt; @@ -17068,14 +17068,22 @@
&gt;  				RelativePath=&quot;..\page\Settings.h&quot;
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt; -      &lt;File
&gt; +                        &lt;File
&gt;  				RelativePath=&quot;..\page\UserScript.h&quot;
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt; -      &lt;File
&gt; +                        &lt;File
&gt;  				RelativePath=&quot;..\page\UserScriptTypes.h&quot;
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt; +                        &lt;File
&gt; +				RelativePath=&quot;..\page\UserStyleSheet.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +                        &lt;File
&gt; +				RelativePath=&quot;..\page\UserStyleSheetTypes.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt;  			&lt;File
&gt;  				RelativePath=&quot;..\page\WebKitPoint.h&quot;
&gt;  				&gt;

The indentation of the lines you modified doesn&apos;t match that of the other lines. I think you need some more tabs (gasp!).

&gt; +CSSStyleSelector::CSSStyleSelector(Document* doc, StyleSheetList* styleSheets, CSSStyleSheet* mappedElementSheet,
&gt; +                                   CSSStyleSheet* pageUserSheet, Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;* pageGroupUserSheets,
&gt; +                                   bool strictParsing, bool matchAuthorAndUserStyles)

Can pageGroupUserSheets be a const Vector*?

&gt; +        if (pageGroupUserSheets) {
&gt; +            unsigned length = pageGroupUserSheets-&gt;size();
&gt; +            for (unsigned i = 0; i &lt; length; i++)
&gt; +                m_userStyle-&gt;addRulesFromSheet(static_cast&lt;CSSStyleSheet*&gt;(pageGroupUserSheets-&gt;at(i).get()), *m_medium, this);
&gt; +        }

Why is this static_cast needed?

&gt; +Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;* Document::pageGroupUserSheets()

This could be a const member function if you made m_pageGroupSheetCacheValid and m_pageGroupUserSheets mutable.

Can this return a const Vector*?

&gt; +    if (m_pageGroupSheetCacheValid)
&gt; +        return m_pageGroupUserSheets.get();

It seems like either both of these variables should have &quot;User&quot; in their name, or neither should.

&gt; +    m_pageGroupSheetCacheValid = true;
&gt; +    
&gt; +    Page* owningPage = page();
&gt; +    if (!owningPage)
&gt; +        return 0;
&gt; +        
&gt; +    const PageGroup&amp; pageGroup = owningPage-&gt;group();
&gt; +    const UserStyleSheetMap* sheetsMap = pageGroup.userStyleSheets();
&gt; +    if (sheetsMap) {

You could use an early return here to reduce nesting.

&gt; +        UserStyleSheetMap::const_iterator end = sheetsMap-&gt;end();
&gt; +        for (UserStyleSheetMap::const_iterator it = sheetsMap-&gt;begin(); it != end; ++it) {
&gt; +            const UserStyleSheetVector* sheets = it-&gt;second;
&gt; +            for (unsigned i = 0; i &lt; sheets-&gt;size(); ++i) {
&gt; +                const UserStyleSheet* sheet = sheets-&gt;at(i).get();
&gt; +                RefPtr&lt;CSSStyleSheet&gt; parsedSheet = CSSStyleSheet::create(this);
&gt; +                parsedSheet-&gt;parseString(sheet-&gt;source(), !inCompatMode());
&gt; +                if (!m_pageGroupUserSheets)
&gt; +                    m_pageGroupUserSheets.set(new Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;);
&gt; +                m_pageGroupUserSheets-&gt;append(parsedSheet);

You can pass parsedSheet.release() here to save a ref/deref pair.

&gt; +void PageGroup::addUserStyleSheet(const String&amp; source, const KURL&amp; url, const Vector&lt;String&gt;&amp; patterns, unsigned worldID)
&gt;  {
&gt; -    if (!m_userScripts)
&gt; +    if (worldID == UINT_MAX)
&gt;          return;

I think we prefer to use std::numeric_limits instead of UINT_MAX and friends.

&gt; +typedef HashMap&lt;int, UserStyleSheetVector*&gt; UserStyleSheetMap;

I think the key type of UserStyleSheetMap should be unsigned, to match your other uses of world IDs.

&gt; +++ LayoutTests/userscripts/simple-stylesheet.html	(revision 0)
&gt; @@ -0,0 +1,16 @@
&gt; +&lt;!DOCTYPE HTML&gt;
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;script&gt;
&gt; +if (window.layoutTestController) {
&gt; +    layoutTestController.addUserStyleSheet(&quot;div { color: green !important; }&quot;);
&gt; +}
&gt; +&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;div&gt;This text should be green.&lt;/div&gt;
&gt; +&lt;style&gt;
&gt; +div { color: red }
&gt; +&lt;/style&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;

Could you make this a text-only test by checking the computed style of the div using JS?

You need to add the new test to other platforms&apos; Skipped files.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145922</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-09-09 14:13:16 -0700</bug_when>
    <thetext>Fixed in r48222.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146195</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-10 07:37:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/7192001&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39290</attachid>
            <date>2009-09-09 12:04:41 -0700</date>
            <delta_ts>2009-09-09 12:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>54529</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDktMDktMDkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMDIsIGFkZCBzdXBwb3J0IGZvciB1c2Vy
IHN0eWxlc2hlZXQgaW5qZWN0aW9uLiAgVGhpcyBpcyBzaW1pbGFyCisgICAgICAgIHRvIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBidXQgYWxsb3dzIGZvciB1c2VyIHN0eWxlc2hlZXRzIHRvIGJlIGFk
ZGVkLiAgVGhlIHN0eWxlc2hlZXRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5CisgICAgICAgIHRv
IGFsbCBGcmFtZXMgaW4gdGhlIFBhZ2VHcm91cC4KKworICAgICAgICBBZGRlZCB1c2Vyc2NyaXB0
cy9zaW1wbGUtc3R5bGVzaGVldC5odG1sIHRlc3QgY2FzZS4KKworICAgICAgICAqIFdlYkNvcmUu
YmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFnZUdyb3VwVXNl
clNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJQYWdlR3JvdXBVc2Vy
U2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUGxhY2Vob2xk
ZXJEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlckRvY3VtZW50Ojph
dHRhY2gpOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdy
b3VwOjpyZW1vdmVVc2VyQ29udGVudEZvcldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VH
cm91cDo6cmVtb3ZlQWxsVXNlckNvbnRlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAg
ICogcGFnZS9Vc2VyU3R5bGVTaGVldC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldDo6c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Ojp1cmwpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OnBhdHRlcm5zKToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0Ojp3b3JsZElEKToKKyAgICAgICAgKiBwYWdlL1VzZXJTdHls
ZVNoZWV0VHlwZXMuaDogQWRkZWQuCisKIDIwMDktMDktMDggIEtldmluIFdhdHRlcnMgIDxrZXZp
bndhdHRlcnNAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVy
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNDgxODApCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFz
ZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw2ICs3NDQsNyBAQCBfX1pON1dlYkNvcmU5SFRN
TE5hbWVzOXNjcmlwdFRhZ0UKIF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUxMXNldENhcGFjaXR5RWkK
IF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUyN3JlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vd0V2CiBf
X1pON1dlYkNvcmU5UGFnZUdyb3VwMTNhZGRVc2VyU2NyaXB0RVJLTlNfNlN0cmluZ0VSS05TXzRL
VVJMRVJLTjNXVEY2VmVjdG9ySVMxX0xtMEVFRWpOU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
RQorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3RyaW5n
RVJLTlNfNEtVUkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBhZ2VH
cm91cDE0YWRkVmlzaXRlZExpbmtFUEt0bQogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVtb3Zl
QWxsVXNlckNvbnRlbnRFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3Y2xvc2VMb2NhbFN0b3Jh
Z2VFdgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ4MTgwKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTE3MDEsNiArMTcwMSw4IEBACiAgICAgICAgICAgICAncGFnZS9TZXR0
aW5ncy5oJywKICAgICAgICAgICAgICdwYWdlL1VzZXJTY3JpcHQuaCcsCiAgICAgICAgICAgICAn
cGFnZS9Vc2VyU2NyaXB0VHlwZXMuaCcsCisgICAgICAgICAgICAncGFnZS9Vc2VyU3R5bGVTaGVl
dC5oJywKKyAgICAgICAgICAgICdwYWdlL1VzZXJTdHlsZVNoZWV0VHlwZXMuaCcsCiAgICAgICAg
ICAgICAncGFnZS9XZWJLaXRQb2ludC5oJywKICAgICAgICAgICAgICdwYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9XaW5kb3dGZWF0dXJlcy5oJywKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDgxODApCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA2
OCwxNCArMTcwNjgsMjIgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2V0dGluZ3MuaCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCi0gICAgICA8RmlsZQ0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIDxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxVc2VyU2NyaXB0LmgiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQotICAgICAgPEZpbGUNCisgICAgICAgICAgICAgICAgICAgICAgICA8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcVXNlclNjcmlwdFR5cGVzLmgiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwYWdlXFVzZXJTdHlsZVNoZWV0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXFVzZXJTdHlsZVNoZWV0VHlwZXMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcV2ViS2l0UG9pbnQuaCINCiAJCQkJPg0KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0
ODE4MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjcxLDYgKzQyNzEsOCBAQAogCQlCQzgyNDNFOTBEMENGRDc1MDA0NjBD
OEYgLyogV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDODI0M0U3MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDOEI4
NTNFMEU3QzdGMTEwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0
IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggKi87IH07CiAJCUJDOEI4NTRCMEU3QzdGNTYwMEFCNjk4
NCAvKiBTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4Qjg1NEEwRTdDN0Y1NjAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM4QkYx
NTExMDU4MTNCRjAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhCRjE1MDEwNTgxM0JGMDBBNDBBMDcgLyog
VXNlclN0eWxlU2hlZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYx
NTkxMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBC
NTkyRjQgLyogUmVuZGVyU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNw
cCAqLzsgfTsKIAkJQkM4QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENE
MzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NO
b2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CkBA
IC05MzM2LDYgKzkzMzgsOCBAQAogCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93RmVhdHVy
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2
OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcm9sbGJhclRoZW1lTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
OEI4NTRBMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQzhCRjE1MDEwNTgxM0JGMDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlclN0eWxlU2hlZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4QkYxNTkxMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJT
dHlsZVNoZWV0VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlclN0
eWxlU2hlZXRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzhDOEZBQjBE
RENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUmVuZGVyU3R5bGUuY3BwOyBwYXRoID0gc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzhDOEZBQzBERENEMzFCMDBCNTky
RjQgLyogUmVuZGVyU3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVu
ZGVyU3R5bGUuaDsgcGF0aCA9IHN0eWxlL1JlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwNDksNiArMTEwNTMsOCBAQAogCQkJ
CUY1ODc4NjNBMDJERTNBMTQwMUVBNDEyMiAvKiBTZXR0aW5ncy5oICovLAogCQkJCUJDQTJCMDYw
MTA1MDQ3NUYwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggKi8sCiAJCQkJQkNBMkIwOEExMDUwNUJD
RDAwNDNCRDFDIC8qIFVzZXJTY3JpcHRUeXBlcy5oICovLAorCQkJCUJDOEJGMTUwMTA1ODEzQkYw
MEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldC5oICovLAorCQkJCUJDOEJGMTU5MTA1ODE0MTgwMEE0
MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggKi8sCiAJCQkJNDk0QkQ3OTMwRjU1QzhFRTAw
NzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi8sCiAJCQkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4
IC8qIFdlYktpdFBvaW50LmlkbCAqLywKIAkJCQlCQzgyNDNFNjBEMENGRDc1MDA0NjBDOEYgLyog
V2luZG93RmVhdHVyZXMuY3BwICovLApAQCAtMTc3ODgsNiArMTc3OTQsOCBAQAogCQkJCTQ5RUVE
MTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDNELmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUM3N0YyQjEwNTQ1QjNCMDA1MDYx
MDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4QkYx
NTExMDU4MTNCRjAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNDgxODEp
CisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDA4LDcgKzQwOCw5IEBAIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBwcmludEUK
ICAgICByZXR1cm4gc3RhdGljUHJpbnRFdmFsOwogfQogCi1DU1NTdHlsZVNlbGVjdG9yOjpDU1NT
dHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2MsIENTU1N0eWxlU2hlZXQqIHVzZXJTaGVldCwgU3R5
bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzLCBDU1NTdHlsZVNoZWV0KiBtYXBwZWRFbGVtZW50U2hl
ZXQsIGJvb2wgc3RyaWN0UGFyc2luZywgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCitD
U1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiBkb2MsIFN0eWxlU2hl
ZXRMaXN0KiBzdHlsZVNoZWV0cywgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NTdHlsZVNoZWV0KiBwYWdlVXNl
clNoZWV0LCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIHBhZ2VHcm91cFVzZXJTaGVl
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0UGFyc2lu
ZywgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgOiBtX2JhY2tncm91bmREYXRh
KEJhY2tncm91bmRGaWxsTGF5ZXIpCiAgICAgLCBtX2NoZWNrZXIoZG9jLCBzdHJpY3RQYXJzaW5n
KQogICAgICwgbV9mb250U2VsZWN0b3IoQ1NTRm9udFNlbGVjdG9yOjpjcmVhdGUoZG9jKSkKQEAg
LTQ0OSw5ICs0NTEsMTUgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1
bQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHN1Y2tzISBUaGUgdXNlciBzaGVldCBpcyBy
ZXBhcnNlZCBldmVyeSB0aW1lIQotICAgIGlmICh1c2VyU2hlZXQpIHsKKyAgICBpZiAocGFnZVVz
ZXJTaGVldCB8fCBwYWdlR3JvdXBVc2VyU2hlZXRzKSB7CiAgICAgICAgIG1fdXNlclN0eWxlID0g
bmV3IENTU1J1bGVTZXQoKTsKLSAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHVzZXJTaGVldCwgKm1fbWVkaXVtLCB0aGlzKTsKKyAgICAgICAgaWYgKHBhZ2VVc2VyU2hlZXQp
CisgICAgICAgICAgICBtX3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVl
dCwgKm1fbWVkaXVtLCB0aGlzKTsKKyAgICAgICAgaWYgKHBhZ2VHcm91cFVzZXJTaGVldHMpIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhZ2VHcm91cFVzZXJTaGVldHMtPnNpemUo
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgICAgICBtX3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3RhdGljX2Nhc3Q8
Q1NTU3R5bGVTaGVldCo+KHBhZ2VHcm91cFVzZXJTaGVldHMtPmF0KGkpLmdldCgpKSwgKm1fbWVk
aXVtLCB0aGlzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIGFkZCBzdHlsZXNoZWV0cyBm
cm9tIGRvY3VtZW50CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA0ODE4MSkK
KysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NyArODAsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5
bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVl
dHMuCiAgICAgY2xhc3MgQ1NTU3R5bGVTZWxlY3RvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiwgQ1NTU3R5bGVT
aGVldCogdXNlclN0eWxlU2hlZXQsIFN0eWxlU2hlZXRMaXN0KiBhdXRob3JTaGVldHMsIENTU1N0
eWxlU2hlZXQqIG1hcHBlZEVsZW1lbnRTaGVldCwKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3RvcihE
b2N1bWVudCosIFN0eWxlU2hlZXRMaXN0KiBhdXRob3JTaGVldHMsIENTU1N0eWxlU2hlZXQqIG1h
cHBlZEVsZW1lbnRTaGVldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDU1NTdHlsZVNoZWV0
KiBwYWdlVXNlclNoZWV0LCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIHBhZ2VHcm91
cFVzZXJTaGVldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RQYXJzaW5n
LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyk7CiAgICAgICAgIH5DU1NTdHlsZVNlbGVj
dG9yKCk7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDQ4MTgxKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSAi
Tm9kZVdpdGhJbmRleC5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25F
dmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgpAQCAtMzQ5LDYgKzM1MCw4IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGJvb2wgaXMKIHsKICAgICBtX2RvY3VtZW50ID0gdGhpczsKIAor
ICAgIG1fcGFnZUdyb3VwU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CisKICAgICBtX3ByaW50aW5n
ID0gZmFsc2U7CiAgICAgCiAgICAgbV9pZ25vcmVBdXRvZm9jdXMgPSBmYWxzZTsKQEAgLTEzMzMs
NyArMTMzNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIGJvb2wgbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzID0gdHJ1ZTsKICAgICAgICAgaWYgKFNldHRpbmdzKiBkb2NTZXR0
aW5ncyA9IHNldHRpbmdzKCkpCiAgICAgICAgICAgICBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMg
PSBkb2NTZXR0aW5ncy0+YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoKTsKLSAgICAgICAgbV9z
dHlsZVNlbGVjdG9yID0gbmV3IENTU1N0eWxlU2VsZWN0b3IodGhpcywgcGFnZVVzZXJTaGVldCgp
LCBtX3N0eWxlU2hlZXRzLmdldCgpLCBtX21hcHBlZEVsZW1lbnRTaGVldC5nZXQoKSwgIWluQ29t
cGF0TW9kZSgpLCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpOworICAgICAgICBtX3N0eWxlU2Vs
ZWN0b3IgPSBuZXcgQ1NTU3R5bGVTZWxlY3Rvcih0aGlzLCBtX3N0eWxlU2hlZXRzLmdldCgpLCBt
X21hcHBlZEVsZW1lbnRTaGVldC5nZXQoKSwgcGFnZVVzZXJTaGVldCgpLCBwYWdlR3JvdXBVc2Vy
U2hlZXRzKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAhaW5Db21wYXRNb2RlKCksIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyk7CiAgICAgfQogCiAg
ICAgcmVjYWxjU3R5bGUoRm9yY2UpOwpAQCAtMTg5OCw2ICsxOTAyLDQ0IEBAIHZvaWQgRG9jdW1l
bnQ6OmNsZWFyUGFnZVVzZXJTaGVldCgpCiAgICAgdXBkYXRlU3R5bGVTZWxlY3RvcigpOwogfQog
CitWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIERvY3VtZW50OjpwYWdlR3JvdXBVc2Vy
U2hlZXRzKCkKK3sKKyAgICBpZiAobV9wYWdlR3JvdXBTaGVldENhY2hlVmFsaWQpCisgICAgICAg
IHJldHVybiBtX3BhZ2VHcm91cFVzZXJTaGVldHMuZ2V0KCk7CisgICAgCisgICAgbV9wYWdlR3Jv
dXBTaGVldENhY2hlVmFsaWQgPSB0cnVlOworICAgIAorICAgIFBhZ2UqIG93bmluZ1BhZ2UgPSBw
YWdlKCk7CisgICAgaWYgKCFvd25pbmdQYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
CisgICAgY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSBvd25pbmdQYWdlLT5ncm91cCgpOwor
ICAgIGNvbnN0IFVzZXJTdHlsZVNoZWV0TWFwKiBzaGVldHNNYXAgPSBwYWdlR3JvdXAudXNlclN0
eWxlU2hlZXRzKCk7CisgICAgaWYgKHNoZWV0c01hcCkgeworICAgICAgICBVc2VyU3R5bGVTaGVl
dE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc2hlZXRzTWFwLT5lbmQoKTsKKyAgICAgICAgZm9y
IChVc2VyU3R5bGVTaGVldE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzaGVldHNNYXAtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgY29uc3QgVXNlclN0eWxlU2hlZXRW
ZWN0b3IqIHNoZWV0cyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2hlZXRzLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVz
ZXJTdHlsZVNoZWV0KiBzaGVldCA9IHNoZWV0cy0+YXQoaSkuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBhcnNlZFNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3Jl
YXRlKHRoaXMpOworICAgICAgICAgICAgICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVl
dC0+c291cmNlKCksICFpbkNvbXBhdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX3Bh
Z2VHcm91cFVzZXJTaGVldHMpCisgICAgICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNo
ZWV0cy5zZXQobmV3IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPik7CisgICAgICAgICAg
ICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBlbmQocGFyc2VkU2hlZXQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBtX3BhZ2VHcm91cFVz
ZXJTaGVldHMuZ2V0KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OmNsZWFyUGFnZUdyb3VwVXNlclNo
ZWV0cygpCit7CisgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLmNsZWFyKCk7CisgICAgbV9wYWdl
R3JvdXBTaGVldENhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICB1cGRhdGVTdHlsZVNlbGVjdG9yKCk7
Cit9CisKIENTU1N0eWxlU2hlZXQqIERvY3VtZW50OjplbGVtZW50U2hlZXQoKQogewogICAgIGlm
ICghbV9lbGVtU2hlZXQpCkBAIC0yNDU5LDcgKzI1MDEsOCBAQCB2b2lkIERvY3VtZW50OjpyZWNh
bGNTdHlsZVNlbGVjdG9yKCkKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBzdHlsZSBzZWxlY3Rvcgog
ICAgIGRlbGV0ZSBtX3N0eWxlU2VsZWN0b3I7Ci0gICAgbV9zdHlsZVNlbGVjdG9yID0gbmV3IENT
U1N0eWxlU2VsZWN0b3IodGhpcywgcGFnZVVzZXJTaGVldCgpLCBtX3N0eWxlU2hlZXRzLmdldCgp
LCBtX21hcHBlZEVsZW1lbnRTaGVldC5nZXQoKSwgIWluQ29tcGF0TW9kZSgpLCBtYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMpOworICAgIG1fc3R5bGVTZWxlY3RvciA9IG5ldyBDU1NTdHlsZVNlbGVj
dG9yKHRoaXMsIG1fc3R5bGVTaGVldHMuZ2V0KCksIG1fbWFwcGVkRWxlbWVudFNoZWV0LmdldCgp
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVXNlclNo
ZWV0KCksIHBhZ2VHcm91cFVzZXJTaGVldHMoKSwgIWluQ29tcGF0TW9kZSgpLCBtYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMpOwogICAgIG1fZGlkQ2FsY3VsYXRlU3R5bGVTZWxlY3RvciA9IHRydWU7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNDgxODEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNiArNDQyLDkgQEAgcHVibGljOgogICAgIENTU1N0
eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQoKTsKICAgICB2b2lkIGNsZWFyUGFnZVVzZXJTaGVldCgp
OwogCisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBwYWdlR3JvdXBVc2VyU2hl
ZXRzKCk7CisgICAgdm9pZCBjbGVhclBhZ2VHcm91cFVzZXJTaGVldHMoKTsKKwogICAgIENTU1N0
eWxlU2hlZXQqIGVsZW1lbnRTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIG1hcHBlZEVsZW1l
bnRTaGVldCgpOwogICAgIApAQCAtOTMyLDcgKzkzNSw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IG1fZWxlbVNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBt
X21hcHBlZEVsZW1lbnRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlVXNl
clNoZWV0OwotICAgIAorICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4g
PiBtX3BhZ2VHcm91cFVzZXJTaGVldHM7CisgICAgYm9vbCBtX3BhZ2VHcm91cFNoZWV0Q2FjaGVW
YWxpZDsKKwogICAgIGJvb2wgbV9wcmludGluZzsKICAgICAKICAgICBib29sIG1faWdub3JlQXV0
b2ZvY3VzOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAJKHJldmlz
aW9uIDQ4MTgxKQorKysgV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBQbGFjZWhvbGRlckRvY3VtZW50Ojph
dHRhY2goKQogCiAgICAgaWYgKCFzdHlsZVNlbGVjdG9yKCkpIHsKICAgICAgICAgUmVmUHRyPFN0
eWxlU2hlZXRMaXN0PiBzdHlsZVNoZWV0TGlzdCA9IFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUodGhp
cyk7Ci0gICAgICAgIHNldFN0eWxlU2VsZWN0b3IobmV3IENTU1N0eWxlU2VsZWN0b3IodGhpcywg
cGFnZVVzZXJTaGVldCgpLCBzdHlsZVNoZWV0TGlzdC5nZXQoKSwgMCwgdHJ1ZSwgZmFsc2UpKTsK
KyAgICAgICAgc2V0U3R5bGVTZWxlY3RvcihuZXcgQ1NTU3R5bGVTZWxlY3Rvcih0aGlzLCBzdHls
ZVNoZWV0TGlzdC5nZXQoKSwgMCwgcGFnZVVzZXJTaGVldCgpLCBwYWdlR3JvdXBVc2VyU2hlZXRz
KCksIHRydWUsIGZhbHNlKSk7CiAgICAgfQogCiAgICAgLy8gU2tpcHBpbmcgRG9jdW1lbnQ6OmF0
dGFjaCgpLgpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDQ4MTgwKQorKysgV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApAQCAt
MjEyLDE1ICsyMTMsNDIgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3Ry
aQogICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwogfQog
Ci12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlckNvbnRlbnRGb3JXb3JsZCh1bnNpZ25lZCB3b3Js
ZElEKQordm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXR0ZXJucywgdW5z
aWduZWQgd29ybGRJRCkKIHsKLSAgICBpZiAoIW1fdXNlclNjcmlwdHMpCisgICAgaWYgKHdvcmxk
SUQgPT0gVUlOVF9NQVgpCiAgICAgICAgIHJldHVybjsKKyAgICBPd25QdHI8VXNlclN0eWxlU2hl
ZXQ+IHVzZXJTdHlsZVNoZWV0KG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgcGF0dGVy
bnMsIHdvcmxkSUQpKTsKKyAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzKQorICAgICAgICBtX3Vz
ZXJTdHlsZVNoZWV0cy5zZXQobmV3IFVzZXJTdHlsZVNoZWV0TWFwKTsKKyAgICBVc2VyU3R5bGVT
aGVldFZlY3RvciomIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQo
d29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkK
KyAgICAgICAgc3R5bGVTaGVldHNJbldvcmxkID0gbmV3IFVzZXJTdHlsZVNoZWV0VmVjdG9yOwor
ICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTdHlsZVNoZWV0LnJlbGVhc2UoKSk7
CisgICAgCisgICAgLy8gQ2xlYXIgb3VyIGNhY2hlZCBzaGVldHMgYW5kIGhhdmUgdGhlbSBqdXN0
IHJlcGFyc2UuCisgICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGFn
ZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3BhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2xlYXJQYWdl
R3JvdXBVc2VyU2hlZXRzKCk7CisgICAgfQorfQogCi0gICAgVXNlclNjcmlwdE1hcDo6aXRlcmF0
b3IgaXQgPSBtX3VzZXJTY3JpcHRzLT5maW5kKHdvcmxkSUQpOwotICAgIGlmIChpdCAhPSBtX3Vz
ZXJTY3JpcHRzLT5lbmQoKSkgewotICAgICAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUoaXQpOwot
ICAgICAgICBkZWxldGUgaXQtPnNlY29uZDsKK3ZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyQ29u
dGVudEZvcldvcmxkKHVuc2lnbmVkIHdvcmxkSUQpCit7CisgICAgaWYgKG1fdXNlclNjcmlwdHMp
IHsKKyAgICAgICAgVXNlclNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX3VzZXJTY3JpcHRzLT5m
aW5kKHdvcmxkSUQpOworICAgICAgICBpZiAoaXQgIT0gbV91c2VyU2NyaXB0cy0+ZW5kKCkpIHsK
KyAgICAgICAgICAgIG1fdXNlclNjcmlwdHMtPnJlbW92ZShpdCk7CisgICAgICAgICAgICBkZWxl
dGUgaXQtPnNlY29uZDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAobV91c2VyU3R5
bGVTaGVldHMpIHsKKyAgICAgICAgVXNlclN0eWxlU2hlZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV91
c2VyU3R5bGVTaGVldHMtPmZpbmQod29ybGRJRCk7CisgICAgICAgIGlmIChpdCAhPSBtX3VzZXJT
dHlsZVNoZWV0cy0+ZW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzLT5yZW1v
dmUoaXQpOworICAgICAgICAgICAgZGVsZXRlIGl0LT5zZWNvbmQ7CisgICAgICAgIH0KICAgICB9
CiB9CiAKQEAgLTIzMCw2ICsyNTgsMTIgQEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92ZUFsbFVzZXJD
b250ZW50KCkKICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptX3VzZXJTY3JpcHRzKTsKICAgICAg
ICAgbV91c2VyU2NyaXB0cy5jbGVhcigpOwogICAgIH0KKyAgICAKKyAgICAKKyAgICBpZiAobV91
c2VyU3R5bGVTaGVldHMpIHsKKyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptX3VzZXJTdHlsZVNo
ZWV0cyk7CisgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzLmNsZWFyKCk7CisgICAgfQogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCShyZXZpc2lvbiA0ODE4MCkKKysr
IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1
ZGUgIlVzZXJTY3JpcHQuaCIKKyNpbmNsdWRlICJVc2VyU3R5bGVTaGVldC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTcyLDcgKzczLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdHRlcm5zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgd29ybGRJRCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUpOwogICAgICAg
ICBjb25zdCBVc2VyU2NyaXB0TWFwKiB1c2VyU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
clNjcmlwdHMuZ2V0KCk7IH0KLQorICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRVc2VyU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXR0ZXJucywgdW5zaWduZWQgd29ybGRJRCk7CisgICAgICAgIGNvbnN0IFVzZXJTdHls
ZVNoZWV0TWFwKiB1c2VyU3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNo
ZWV0cy5nZXQoKTsgfQorICAgICAgICAKICAgICAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudEZv
cldvcmxkKHVuc2lnbmVkKTsKICAgICAgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgpOwog
ICAgICAgICAKQEAgLTkyLDYgKzk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAK
ICAgICAgICAgT3duUHRyPFVzZXJTY3JpcHRNYXA+IG1fdXNlclNjcmlwdHM7CisgICAgICAgIE93
blB0cjxVc2VyU3R5bGVTaGVldE1hcD4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisgCisjaWZuZGVmIFVzZXJTdHlsZVNoZWV0X2gKKyNkZWZpbmUgVXNl
clN0eWxlU2hlZXRfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVzZXJTdHlsZVNo
ZWV0VHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVzZXJTdHlsZVNoZWV0IHsKK3B1
YmxpYzoKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VS
TCYgdXJsLAorICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdHRlcm5zLCB1
bnNpZ25lZCB3b3JsZElEKQorICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKKyAgICAgICAgLCBt
X3VybCh1cmwpCisgICAgICAgICwgbV9wYXR0ZXJucyhwYXR0ZXJucykKKyAgICAgICAgLCBtX3dv
cmxkSUQod29ybGRJRCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdHRlcm5zKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuczsgfQorICAgIHVuc2lnbmVkIHdvcmxkSUQoKSBjb25z
dCB7IHJldHVybiBtX3dvcmxkSUQ7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9zb3VyY2U7
CisgICAgS1VSTCBtX3VybDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3BhdHRlcm5zOworICAgIHVu
c2lnbmVkIG1fd29ybGRJRDsKK307CisKK30gLy8gbmFtc2VwYWNlIFdlYkNvcmUKKyAKKyNlbmRp
ZiAvLyBVc2VyU3R5bGVTaGVldF9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXRU
eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldFR5cGVzLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXRUeXBlcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKKyNpZm5kZWYgVXNlclN0eWxlU2hl
ZXRUeXBlc19oCisjZGVmaW5lIFVzZXJTdHlsZVNoZWV0VHlwZXNfaAorCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVXNlclN0eWxlU2hlZXQ7CisKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxVc2Vy
U3R5bGVTaGVldD4gPiBVc2VyU3R5bGVTaGVldFZlY3RvcjsKK3R5cGVkZWYgSGFzaE1hcDxpbnQs
IFVzZXJTdHlsZVNoZWV0VmVjdG9yKj4gVXNlclN0eWxlU2hlZXRNYXA7CisKK30gLy8gbmFtc2Vw
YWNlIFdlYkNvcmUKKyAKKyNlbmRpZiAvLyBVc2VyU3R5bGVTaGVldFR5cGVzX2gKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA0ODIxOCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDktMDkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMDIsIGFkZCBzdXBwb3J0IGZvciB1c2Vy
IHN0eWxlc2hlZXQgaW5qZWN0aW9uLiAgVGhpcyBpcyBzaW1pbGFyCisgICAgICAgIHRvIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBidXQgYWxsb3dzIGZvciB1c2VyIHN0eWxlc2hlZXRzIHRvIGJlIGFk
ZGVkLiAgVGhlIHN0eWxlc2hlZXRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5CisgICAgICAgIHRv
IGFsbCBGcmFtZXMgaW4gdGhlIFBhZ2VHcm91cC4KKworICAgICAgICBBZGRlZCB1c2Vyc2NyaXB0
cy9zaW1wbGUtc3R5bGVzaGVldC5odG1sIHRlc3QgY2FzZS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3Vw
OnNvdXJjZTp1cmw6d29ybGRJRDpwYXR0ZXJuczpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmg6CisKIDIwMDktMDktMDcgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gNDgxODApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEzMyw2ICsyMTMzLDI4IEBAIHN0YXRpYyBpbmxpbmUg
SU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3Vt
ZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kKTsKIH0KIAorKyAodm9pZClfYWRkVXNlclN0
eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSBzb3VyY2U6KE5TU3RyaW5nICop
c291cmNlIHVybDooTlNVUkwgKil1cmwgd29ybGRJRDoodW5zaWduZWQpd29ybGRJRCBwYXR0ZXJu
czooTlNBcnJheSAqKXBhdHRlcm5zCit7CisgICAgU3RyaW5nIGdyb3VwKGdyb3VwTmFtZSk7Cisg
ICAgaWYgKGdyb3VwLmlzRW1wdHkoKSB8fCB3b3JsZElEID09IFVJTlRfTUFYKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBQYWdlR3JvdXA6OnBhZ2VH
cm91cChncm91cCk7CisgICAgaWYgKCFwYWdlR3JvdXApCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICAvLyBDb252ZXJ0IHRoZSBwYXR0ZXJucyBpbnRvIGEgVmVjdG9yLgorICAgIFZlY3RvcjxT
dHJpbmc+IHBhdHRlcm5zVmVjdG9yOworICAgIE5TVUludGVnZXIgY291bnQgPSBbcGF0dGVybnMg
Y291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICAgICAgaWQgZW50cnkgPSBbcGF0dGVybnMgb2JqZWN0QXRJbmRleDogaV07CisgICAgICAgIGlm
IChbZW50cnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHBh
dHRlcm5zVmVjdG9yLmFwcGVuZChTdHJpbmcoKE5TU3RyaW5nKillbnRyeSkpOworICAgIH0KKyAg
ICAKKyAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBwYXR0ZXJu
c1ZlY3Rvciwgd29ybGRJRCk7Cit9CisKICsgKHZvaWQpX3JlbW92ZVVzZXJDb250ZW50RnJvbUdy
b3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZElEOih1bnNpZ25lZCl3b3JsZElECiB7CiAg
ICAgU3RyaW5nIGdyb3VwKGdyb3VwTmFtZSk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAkocmV2aXNpb24gNDgxODApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDU4LDYgKzQ1OCw3IEBAIENvdWxkIGJlIHdvcnRo
IGFkZGluZyB0byB0aGUgQVBJLgogKyAodm9pZClfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Rz
OwogCiArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUg
c291cmNlOihOU1N0cmluZyAqKXNvdXJjZSB1cmw6KE5TVVJMICopdXJsIHdvcmxkSUQ6KHVuc2ln
bmVkKXdvcmxkSUQgcGF0dGVybnM6KE5TQXJyYXkgKilwYXR0ZXJucyBpbmplY3Rpb25UaW1lOihX
ZWJVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSlpbmplY3Rpb25UaW1lOworKyAodm9pZClfYWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSBzb3VyY2U6KE5TU3RyaW5n
ICopc291cmNlIHVybDooTlNVUkwgKil1cmwgd29ybGRJRDoodW5zaWduZWQpd29ybGRJRCBwYXR0
ZXJuczooTlNBcnJheSAqKXBhdHRlcm5zOwogKyAodm9pZClfcmVtb3ZlVXNlckNvbnRlbnRGcm9t
R3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkSUQ6KHVuc2lnbmVkKXdvcmxkSUQ7CiAr
ICh2b2lkKV9yZW1vdmVBbGxVc2VyQ29udGVudEZyb21Hcm91cDooTlNTdHJpbmcgKilncm91cE5h
bWU7CiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDQ4MTgwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Njgs
NiArOTY4LDE5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFVzZXJTY3JpcHRDYWxsYmFjaygKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAgCitzdGF0aWMgSlNW
YWx1ZVJlZiBhZGRVc2VyU3R5bGVTaGVldENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNv
dXJjZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4
Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisgICAKKyAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5hZGRV
c2VyU3R5bGVTaGVldChzb3VyY2UuZ2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogLy8gU3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQpAQCAtMTA0NSw2ICsxMDU4LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OgogICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1td
ID0gewogICAgICAgICB7ICJhZGREaXNhbGxvd2VkVVJMIiwgYWRkRGlzYWxsb3dlZFVSTENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZFVzZXJTY3JpcHQiLCBhZGRVc2VyU2NyaXB0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiYWRkVXNlclN0eWxlU2hlZXQiLCBhZGRVc2VyU3R5
bGVTaGVldENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyQWxsRGF0YWJhc2VzIiwg
Y2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhckJhY2tG
b3J3YXJkTGlzdCIsIGNsZWFyQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQiLCBjbGVhclBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDQ4MTgwKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdoaXRlTGlzdEFj
Y2Vzc0Zyb21PcmlnaW4oSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0
aW5hdGlvblByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KEpTU3RyaW5n
UmVmIHNvdXJjZSwgYm9vbCBydW5BdFN0YXJ0KTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0
KEpTU3RyaW5nUmVmIHNvdXJjZSk7CiAKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sIGFsbG93KTsKICAgICBib29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsgfQpJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCShyZXZpc2lvbiA0ODE4MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
NiwzICs0NjYsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0CiB7
CiAgICAgcHJpbnRmKCJMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCBub3QgaW1w
bGVtZW50ZWQuXG4iKTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0
eWxlU2hlZXQoSlNTdHJpbmdSZWYgc291cmNlKQoreworICAgIHByaW50ZigiTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0IG5vdCBpbXBsZW1lbnRlZC5cbiIpOworfQpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNDgxODApCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ4NCwzICs0ODQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclNj
cmlwdAogICAgIE5TU3RyaW5nICpzb3VyY2VOUyA9IChOU1N0cmluZyAqKXNvdXJjZUNGLmdldCgp
OwogICAgIFtXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDpAIm9yZy53ZWJraXQuRHVtcFJl
bmRlclRyZWUiIHNvdXJjZTpzb3VyY2VOUyB1cmw6bmlsIHdvcmxkSUQ6MSBwYXR0ZXJuczpuaWwg
aW5qZWN0aW9uVGltZToocnVuQXRTdGFydCA/IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA6IFdl
YkluamVjdEF0RG9jdW1lbnRFbmQpXTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
YWRkVXNlclN0eWxlU2hlZXQoSlNTdHJpbmdSZWYgc291cmNlKQoreworICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gc291cmNlQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc291cmNlKSk7CisgICAgTlNTdHJpbmcgKnNvdXJjZU5TID0gKE5TU3Ry
aW5nICopc291cmNlQ0YuZ2V0KCk7CisgICAgW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9H
cm91cDpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiIHNvdXJjZTpzb3VyY2VOUyB1cmw6bmls
IHdvcmxkSUQ6MSBwYXR0ZXJuczpuaWxdOworfQorCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJ
KHJldmlzaW9uIDQ4MTgwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ4LDMgKzg0OCw5IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQKIHsKICAgICBwcmludGYo
IkxheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0IG5vdCBpbXBsZW1lbnRlZC5cbiIp
OwogfQorCisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpT
U3RyaW5nUmVmIHNvdXJjZSkKK3sKKyAgICBwcmludGYoIkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRVc2VyU3R5bGVTaGVldCBub3QgaW1wbGVtZW50ZWQuXG4iKTsKK30KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwCShyZXZpc2lvbiA0ODE4MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMyArMjkz
LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdAogewogICAgIHBy
aW50ZigiTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQgbm90IGltcGxlbWVudGVk
LlxuIik7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0
KEpTU3RyaW5nUmVmIHNvdXJjZSkKK3sKKyAgICBwcmludGYoIkxheW91dFRlc3RDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldCBub3QgaW1wbGVtZW50ZWQuXG4iKTsKK30KSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDQ4MjE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDkgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMDIsIGFkZCBzdXBwb3J0IGZvciB1c2Vy
IHN0eWxlc2hlZXQgaW5qZWN0aW9uLiAgVGhpcyBpcyBzaW1pbGFyCisgICAgICAgIHRvIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBidXQgYWxsb3dzIGZvciB1c2VyIHN0eWxlc2hlZXRzIHRvIGJlIGFk
ZGVkLiAgVGhlIHN0eWxlc2hlZXRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5CisgICAgICAgIHRv
IGFsbCBGcmFtZXMgaW4gdGhlIFBhZ2VHcm91cC4KKworICAgICAgICBBZGRlZCB1c2Vyc2NyaXB0
cy9zaW1wbGUtc3R5bGVzaGVldC5odG1sIHRlc3QgY2FzZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy91c2Vyc2NyaXB0cy9zaW1wbGUtc3R5bGVzaGVldC1leHBlY3RlZC5jaGVja3N1bTogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3VzZXJzY3JpcHRzL3NpbXBsZS1zdHlsZXNoZWV0
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3VzZXJzY3JpcHRz
L3NpbXBsZS1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdXNlcnNj
cmlwdHMvc2ltcGxlLXN0eWxlc2hlZXQuaHRtbDogQWRkZWQuCisKIDIwMDktMDktMDkgIEVyaWsg
QXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZp
ZCBMZXZpbi4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy91c2Vyc2NyaXB0cy9zaW1w
bGUtc3R5bGVzaGVldC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdXNlcnNjcmlwdHMvc2ltcGxlLXN0eWxlc2hlZXQtZXhwZWN0ZWQuY2hl
Y2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdXNlcnNjcmlw
dHMvc2ltcGxlLXN0eWxlc2hlZXQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK2FmMjQ4YWRmZDlkZDg0MTMzYzg3OGI4YjdiNjZhMzBlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3VzZXJzY3JpcHRz
L3NpbXBsZS1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdXNlcnNjcmlwdHMvc2ltcGxlLXN0eWxlc2hlZXQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3VzZXJzY3JpcHRzL3Np
bXBsZS1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDM0CisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHgzNAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDE4CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBb
Y29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy91c2Vyc2NyaXB0cy9zaW1wbGUt
c3R5bGVzaGVldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3VzZXJzY3JpcHRzL3Np
bXBsZS1zdHlsZXNoZWV0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy91c2Vyc2Ny
aXB0cy9zaW1wbGUtc3R5bGVzaGVldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBA
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmFkZFVzZXJT
dHlsZVNoZWV0KCJkaXYgeyBjb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSIpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L2Rp
dj4KKzxzdHlsZT4KK2RpdiB7IGNvbG9yOiByZWQgfQorPC9zdHlsZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy91c2Vyc2NyaXB0cy9zaW1wbGUtc3R5
bGVzaGVldC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3VzZXJz
Y3JpcHRzL3NpbXBsZS1zdHlsZXNoZWV0LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRvSndBQUFDN21sRFExQkpRME1nVUhKdlptbHNa
UUFBZUFHRgpWTTlyRTBFVS9qWnVxZEFpQ0ZwckRySjRrQ0pKV2F0b1JkUTIvUkZpYXd6Ykg3WkZr
R1F6U2RadU51dnVKcldsaU9UaTBTcmVSZTJoCkIvK0FIbnJ3WkM5S2hWcEZLTjZyS0dLaEZ5M3h6
VzVNdHFYcXdNNSs4OTQzNzMxdmR0OEFEWExTTlBXQUJPUU54MUtpRVdsc2ZFSnEKL0lnQWpxSUpR
VFFsVmR2c1RpUUdRWU56K1h2bjJIb1BnVnRXdzN2N2Q3SjNyWnJTdHBvSGhQMUE0RWVhMlNxdzd4
ZHhDbGtTQW9nOAozNkVweDNRSTMrUFk4dXlQT1U1NWVNRzFEeXM5eEZraWZFQTFMYzUvVGJoVHpT
WFRRSU5JT0pUMWNWSStuTmVMbE5jZEIybHVac2JJCkVMMVBrS2E3ek82cllxR2NUdllPa0wyZDlI
NU9zOTQrd2lIQ0N4bXRQMGE0alo3MWpOVS80bUhocE9iRWhqMGNHRFgwK0dBVnR4cXAKK0RYQ0ZG
OFFUU2VpVkhIWkxnM3htSzc5VnZKS2duQ1FPTXBrWVlCeldraFAxMHh1K0xxSEJYMG0xeE92NG5k
V1VlRjVqeE5uM3RUZAo3MFhhQXE4d0RoME1HZ3lhRFVoUUVFVUVZWml3VUVDR1BCb3hOTEp5UHlP
ckJodVRlekoxSkdxN2RHSkVzVUY3TnR3OXQxR2szVHorCktDSnhsRU8xQ0pMOFFmNHFyOGxQNVhu
NXkxeXcyRmIzbEsyYm1ycnk0RHZGNVptNUdoN1gwOGpqYzAxZWZKWFVkcE5YUjVhc2VYcTgKbXV3
YVAreFhsekhtZ2pXUHhIT3crL0V0WDVYTWx5bU1GTVhqVmZQcVM0UjFXakUzMzU5c2Z6czk0aTdQ
THJYV2M2MkppemRXbTVkbgovV3BJKys2cXZKUG1WZmxQWHZYeC9HZk54R1BpS1RFbWRvcm5JWW1Y
eFM3eGt0aExxd3ZpWUczSENKMlZoaW5TYlpINkpOVmdZSnE4CjlTOWRQMXQ0dlVaL0RQVlJsQm5N
MGxTSjkzL0NLbVEwbmJrT2IvcVAyOGY4RitUM2l1ZWZLQUl2Yk9ESW1icHRVM0h2RUtGbHBXNXoK
cmdJWHY5Rjk4TFp1YTZOK09Qd0VXRHlyRnExU05aOGd2QUVjZG9kNkh1Z3BtTk9XbHMwNVVvY3Nu
NU82NmNwaVVzeFEyME5TVXRjbAoxMlZMRnJPWlZXTHBkdGlaMHgxdUhLRTVRdmZFcDBwbGsvcXY4
Ukd3L2JCUytmbXNVdGwrVGhyV2daZjZiOEM4L1VYQWVJdUpBQUFnCkFFbEVRVlI0QWUzZGUvRHRk
VjN2OFE5M0FVRVJFUytnNGcwVlRBME5iek5DbVhvU3lvT2dGdDdTWTB6VDFFeU9wVFdqSEIwbkph
OU4KazdmVE9KWEtVYXhSTWszQ3dJUkVFeTlGZXJ5QlJ3SHZpS2lBeXUzdytjcHZueCtiMysrM1h4
dGZiUlVmaTluczlWdnJ2ZDYvdFI1NwovN0dldjdXK2EyOTN6YlduNFVTQUFBRUNCQWdRSUVDQUFJ
RnRJTEQ5TnZnZXZnVUJBZ1FJRUNCQWdBQUJBZ1FXQVFIaUx3SUJBZ1FJCkVDQkFnQUFCQXR0TVFJ
QnNNMnJmaUFBQkFnUUlFQ0JBZ0FBQkFlTHZBQUVDQkFnUUlFQ0FBQUVDMjB4QWdHd3phdCtJQUFF
Q0JBZ1EKSUVDQUFBRUI0dThBQVFJRUNCQWdRSUFBQVFMYlRFQ0FiRE5xMzRnQUFRSUVDQkFnUUlB
QUFRSGk3d0FCQWdRSUVDQkFnQUFCQXR0TQpRSUJzTTJyZmlBQUJBZ1FJRUNCQWdBQ0Jhb0I4OXdm
ZkhlZGZjdjY2cWhkZGR0SDQ3RVdmWGZmNm4rUXJ0dlRZZnRUNy92MHJ2ejgrCmNQNEgxbDF6MWRW
WGpVOTk0MVByWGovdjM0WGZ2bkRkNjExQmdBQUJBZ1FJRUNCQTRDZEJZSXNCY3NTSlI0eTlYckxY
ZVBTYkhqMGUKLzdiSGp4MWVzTU00NEZVSGpLTlBPbm84N0EwUFc3NyttMy8vbTNIaU9TZU9mVis2
NzNqamY3eHgzY2YxL05PZlB4Nzdsc2V1ZS8xUAo2aFhKWS90Ujd2dUhMdmpRZU1Eckh6Q09ldXRS
YTY3NThJVWZIdmQ3N2YzR2I3M3p0OWE4L25WbnYyN3NmY0xlNDIyZmZOdWExN3VRCkFBRUNCQWdR
SUVDQXdFK0t3QllENUlxcnJoZ2ZQZTZqNHoxUGVzODQ2WmlUeHM0NzdEd091L05oNDI4Zi83Zmp6
S2VmT1Y3NnlKZU8KNzEzNXZmRWI5L21OY2FkYjNtbkR4L1hDdzE4NDN2SEVkMnc0czlhVjg5V0Iw
ejkvK2xwWGJmVmxOMlpYOHRpMitvNnN1c0doK3gwNgpubmEvcDYyNjVQcG5IM2lIQnk3bU8yMi8w
L1d2dU82cjR4NXczTmhyMTczV3ZNNkZCQWdRSUVDQUFBRUNCSDZTQkxZWUlNOTY4TFBHCkFYc2Rz
TzU5UHU2UTQ4WkIreHkwWEQrZklHOTM3WC9ybmZiZWJlOXg5NzN2Zm9PcnI3bm1taHRjdG5MQkRL
QW52LzNKNDR3dm5yRnkKMFkzK2ZXdDJiWDZmdHZUWWJ2U2R1dTZHTSt6V3NydjZtcXVYaVIyMzMz
RnN2OTM2ZjF6L0ZmZHZjNE1mOVRHNlBRRUNCQWdRSUVDQQpBSUVkdDBUd3FMczlhc09SM1hmZWZU
ejBqZy9kTkRPZk1NKzNXdjNWeC85cTdMbkxudU9kdi83T0pXQysvSjB2TDIvUGV2di9lZnM0CjYz
K2N0Y3kvOVQvZk9yNTUrVGZIdDcvLzdYSHlwMDhlSDNqR0RZK0JlTlVIWHpYKy90Ti9QejczemMr
TmM3OTU3bmoxWTE0OTV2RU8KSi96ckNlTWpYL3JJY3Y0dkh2TVg0MEg3UFdqNStvLysrWStXWXlI
bVpYdnN2TWQ0K3NsUEh6T2lubnEvcDQ2MWRzMzd2L3EwMFgxYQo3N0hOMjgvNzlOejNQbmZzc3NN
dTQ5eUx6eDEzdk1VZHh3bVBPR0hzdXRPdVkrNTgxaW5QR3M5OTJIUEg3eDc2dStNdC8vbVdjZnpw
Cng0L0REemg4dlBhSTE2Nys5cHZPWDNiRlplUFovL1RzY2R1YjMzWjg2VHRmR3AvNDJpZkd6WGE4
MmFicjF6cXpjcHMzL3ZzYngzNTcKN2pmZWROU2J4cjMydWRjeSt0WHZmblZOcy9YMi9PR3Bmemh1
cy90dHhwbGZQSFBjYXRkYmpmdmY5djdqSWZzL1pFeXYrWmF2ZlhiZgpaK3k2NDY2TDZidU9mZGU0
MHkzdXRPNys5YjczZkZYcmRSOTUzWEpmNzNYcmU0MC9PZU5QeGs0NzdEVCs4ZGgvM0RCNjE3clBM
aU5BCmdBQUJBZ1FJRVBqcEVGai9SK28zOHY3UDR4QWVmcWVITHpFeEQ1eWVUeXJuYWY0RS8vTVhm
MzRKaWZuMWxWZGZPVjcyZ1plTjMzN2cKYjQvblBPdzVTMENzL0xSL1hyOXkrb09IL3NHNDNjMXZO
NDY1OXpIanIvLzdYeTlQd24vejVOOGNMempzQmVQMHA1MCs1dHVUZnZWLwovK3I0MXZlK05RNjUv
U0hqT1E5OXp2amtOejY1dkMzc2E1ZCtiWGxyMDR5UGVkcDgxK2J4c2FYN3RONWptN3NmOCtiSGpF
UHZjT2g0CithTmVQdDUyek52R1BLNWpIak16VDA4NCtBbGp1KzIyRzkvNXdYZVdyNTk0OEJQSG5X
OTU1eVcrbGd2VytOKzg3WFI4L3NPZnYwVFgKZVJlZnQreFlZM1RUUlc4KzU4M0xiZDV5OUZ1VzNm
UDRuZm1ZNXAvRGVtYWJicnpxekJzKzlvYkZlWDd2Vnp6cUZlT3RuM2pyOHIxbgpWUDNncWg4c3g1
cTg2elB2R3ZlODlUM0g0Kzc5dUxIbnpudXV1MytqNzMzdmZlNDlQdmJsajQyNWE5K2I3enRPZStw
cHk3MTQ4Wmt2ClhuVnZuQ1ZBZ0FBQkFnUUlFTGdwQ2RRRDVJaDdIREYrNlM2L3RQeFVlLzZFZitX
VG0rWlB6Tyt6NzMzR05kZitOMDh6R0Q3K2xZK1AKZDMvMjNjdlh6L3o1WjQ2TjN2SXpuOERQMDBt
Zk9HbVptMi9KZXMvbjNyUEV5ZGN2Ky9wNC94ZmV2MXcvdi9jVERuckMrT04vL3VQbApGWmZmTy9U
M2xzdFgvMjlsMStyTDV2a3QzYWYxSHR1OEgvT1ZnaGtXOHpSL2l2LzArejk5L01Obi8yR2NkZjRQ
WCsyWnJ4YXNmb3ZWCmJqdnRkcjJ2bHh0ZTk3OFBYdkRCeFdYbDFhZjUxcXRmdWZ1dnJCNVo4L3hU
N3Z1VWNlU0JSeTZ2ckx6a0VTOFo1MzNydlBIZTg5NjcKUmJQTmw4MVhVUGJlZGUvbDRvTnZjL0RZ
WjdkOWx2UHpHSi81U3RNTWovbkt5b3lQK1FyT3g3N3lzWFgvVERiNjg1clJjZGRiM1hYNQplekZ0
NS81ZlBPQVh4NmUvOGVuTjc1S3ZDUkFnUUlBQUFRSUViaUlDOVFCWi9TUjdyNXZ0dGJ3MWFjVnFY
cmR5L2ExM3UvVTQ2bDVICmpTTlBQSEw4enJ0K1ozbEZZSWZ0ZDFnWnZjSHZLN2M3NjRLenhqeVda
QjR6TVgvTnQzK2QrdVJUeHlHM08yVFRiVjcyeUplTnoxejAKbWVXeXRYYXU3TnAwZyt2T2JPayty
YjdkNnNmMmJ4ZisyL0tXcEJrZUs2ZGZ1TU12TEdmbmsvT3RQYjN2Lzc1dmVaSi95NXZkY3ROTgpi
Nzd6elRmWmJicHdzek8zMk9VV215NlpvVEJQODJPUEU3Tk5ON3oyekI2NzdMSGNadVd5K1Rhdytl
ck95bW5HMUVxVXpNczIyci9SCmRmTzIwM1MxNjN6YjNQeFFBeWNDQkFnUUlFQ0FBSUdicHNBV2p3
SDVyM3pZSno3dXhISDdQVzQvL3V4RGZ6WSsrdVdQamxPZWZNcHkKM01oRzMvTWJsMzFqZVR2WEkr
N3lpSFhINWdIWjh3bnluLzdybjQ1bi9Qd3p4dW9uOHV2ZTZMb3Jic3g5bXNkZXpQczFqd09ab1RC
UAo4OVdlSGJmYmNWejZnMHV2MjV6L2RzRzNMMWoyYlg2TDlWNjUyWHh1ZmoxZlRaaFA1bWRNSkdh
cmQveitnMzUvUE8wZFR4dm5mUFdjCnNjdU91NHo1YXMzRDcvencxU1BYTzcvUi9vMnV1OTRTWHhB
Z1FJQUFBUUlFQ1B4TUNOUmZBVW5WdnZMZHI0eDVqTVlySC8zSzVTTisKei9uYU9jdkIyZXZkZnVY
Sjl3RzNQR0NjZXU2cDEvc3ArWHpyMW56VllPWDB2Tk9mTjk1OTdMdVg0eGFlZDlyelZpN2U5UHZL
cmswWApYSGRtYSsvVHl1M25XNUt1dXVhcU1mKzlqcFhUZkd4WFhuUGxwb1BBNStWckhlT3lNci82
OXhsbDgyMWw4MVdjRzN1YUI2N1BZMDdtCndlT0oyZXJ2TTkvdTljeERucm04eGUzc0w1MDlUbi9x
NmF1dnZzSDVqZlp2ZE4wTkZybUFBQUVDQkFnUUlFRGdKaSt3VlFFeW4wRFAKZzVEbkoxZXRkWnF2
Qk14Zks2ZkxyN3g4ekY4cnAzbmQvSG9Hdy94WDBlZkJ6ZlAweUxzK2N2emFnYisyNmRXRGxmbVYz
K2NyR1BOVgpnWG1heHdwODlkS3ZqdVBlZWR5NCtQS0xsNGg1NGIrOGNOejlWai84ZU45NVBNWThQ
NDlSbUo5QzlacXpYN01jNkx6V3JubjcxYWVOCjd0TkdqMjBlSUwvZkh2dU5VODg3ZGRPNitjVDlu
bnZmY3p6NmJvOWVMcHV2aUh6b3dnOHRmak1PNWlkbFhYVDVSWnZtcCtzVlYxK3gKZkQyUFlabXZu
cnoyN1AvL0NWbnpXSnI1YXNJOHFIdTkwNHlnbGROcG56OXRQUGJBeDQ3NzN2YSs0OWlmTzNaRHM1
WGJyUHorZ245NQp3YmpIM3ZjWTgvaVorVytnekUveVduMmFCN2F2L25QZGFQOUcxODJkODNHdkRy
UHB2UHB4ekgrM1pYNlF3Y3FmLytyNzRUd0JBZ1FJCkVDQkFnTUJQbjhBTy8vUGFVM0szNThmQUh2
Kys0OGZaWHo1N3pGY0s1dkVYQjkzbW9PVXRPdlAyZi9mSnZ4dXYvOGpybHdPNTUzRVoKODJOMzUx
dWc1c2ZuenAvQ1gvTDlTOFlyUC9qSzVjRG9HUlR6RTVYbXg4ek9qNWE5OERzWExoK2QrK3lIUEh2
TmYrdmkvRXZPSDY4NAo2eFhqaTVkOGNSeHowREhqTG52ZFpiejhySmVQK1dsSjgrTis1MC9yNXpF
WDgyTmRuL0wycDR6akR6dCsrZmphK1pHNE0wQk9PZmVVCjhlRDlIenp1c09jZHh1cGQ4eUQ1MVor
RTlmVkx2NzU4WE83bTkybCtkUEJHaiszZ2ZROGVoOS81OFBIaU0xNjhQREcvNUh1WGpEZi8KeDV2
SGE0NTR6ZkpSdHRObkhvUS9IOE5mZnZRdmw0OGQzbmYzZlplUTIzL1AvWmRYTytiSENzOG9tWmNm
ZHNCaDQ4QmJIemhtV00xLwpXWDRlWUgvMXRmL05KK3U3N2J6Yjh2YXV1WFAxYVg2VThaeWR2ODhE
NHVlckozLyszLzU4K2ZPWjMzc2U4TDJXMmVvZEsrZFAvdFRKClkzNmM4WXZPZU5GNDBmdGZORjc5
NFZjdm4yRDJ5M2Y5NVNVYXA4VVhMdm5DMlA4Vyt5OS9CemJhdjlGMTgzRk5rL24zYWY2ZG1RRTQK
WTJQK25abkhuTXdEMU9jeExFZWZkUFFTVWpPbW5BZ1FJRUNBQUFFQ0JINjZCYmE3OXRXSUgzNHMx
VForSFBPbjN2UFRuZVluVDgxagpObGFId0ZwM1pmNzBmeDRrdm5LYVQ4Wm5UTXhqSGVaSC9HN05h
Zk5kSzdmZDJ2dTBjcnVWM3lmbGZQSThIOWQ4OHJ6NWFkN24rUXJHCmZFVmgvcU9JcXc5YTMzeDJm
ajFuTC83ZXhjdmpuZ2RtYituZkFabTNtVS9tcDlOYUpxblpES21qNzMzMDhqYTMrVGF1K1djMFA4
M3EKU1QvM3BMSFJzVGNiN2Qvb3VubS9OenJOTUp3aDQwU0FBQUVDQkFnUUlQRFRML0JqQzVDZmZy
cWI1aU9ZcjI3TTJIanZVOTU3dlFkNAp5dWRPV2FMcWJyZTYyL1V1OXdVQkFnUUlFQ0JBZ0FDQnJS
RVFJRnVqOVRNd096LzU2b0gvNjRIanlIc2N1ZnpEanBkZmNmbHkvTWc4CjltYitjaUpBZ0FBQkFn
UUlFQ0R3b3dnSWtCOUY3eVo2MjNrTXl6dytZNzZkYXg0bjQxV1BtK2dmdElkRmdBQUJBZ1FJRVBn
eENBaVEKSHdPNmIwbUFBQUVDQkFnUUlFRGdaMVZncXo2RzkyY1Z5ZU1tUUlBQUFRSUVDQkFnUUtB
aklFQTZqcllRSUVDQUFBRUNCQWdRSUJBSQpDSkFBeVFnQkFnUUlFQ0JBZ0FBQkFoMEJBZEp4dElV
QUFRSUVDQkFnUUlBQWdVQkFnQVJJUmdnUUlFQ0FBQUVDQkFnUTZBZ0lrSTZqCkxRUUlFQ0JBZ0FB
QkFnUUlCQUlDSkVBeVFvQUFBUUlFQ0JBZ1FJQkFSMENBZEJ4dElVQ0FBQUVDQkFnUUlFQWdFQkFn
QVpJUkFnUUkKRUNCQWdBQUJBZ1E2QWdLazQyZ0xBUUlFQ0JBZ1FJQUFBUUtCZ0FBSmtJd1FJRUNB
QUFFQ0JBZ1FJTkFSRUNBZFIxc0lFQ0JBZ0FBQgpBZ1FJRUFnRUJFaUFaSVFBQVFJRUNCQWdRSUFB
Z1k2QUFPazQya0tBQUFFQ0JBZ1FJRUNBUUNBZ1FBSWtJd1FJRUNCQWdBQUJBZ1FJCmRBUUVTTWZS
RmdJRUNCQWdRSUFBQVFJRUFnRUJFaUFaSVVDQUFBRUNCQWdRSUVDZ0l5QkFPbzYyRUNCQWdBQUJB
Z1FJRUNBUUNBaVEKQU1rSUFRSUVDQkFnUUlBQUFRSWRBUUhTY2JTRkFBRUNCQWdRSUVDQUFJRkFR
SUFFU0VZSUVDQkFnQUFCQWdRSUVPZ0lDSkNPb3kwRQpDQkFnUUlBQUFRSUVDQVFDQWlSQU1rS0FB
QUVDQkFnUUlFQ0FRRWRBZ0hRY2JTRkFnQUFCQWdRSUVDQkFJQkFRSUFHU0VRSUVDQkFnClFJQUFB
UUlFT2dJQ3BPTm9Dd0VDQkFnUUlFQ0FBQUVDZ1lBQUNaQ01FQ0JBZ0FBQkFnUUlFQ0RRRVJBZ0hV
ZGJDQkFnUUlBQUFRSUUKQ0JBSUJBUklnR1NFQUFFQ0JBZ1FJRUNBQUlHT2dBRHBPTnBDZ0FBQkFn
UUlFQ0JBZ0VBZ0lFQUNKQ01FQ0JBZ1FJQUFBUUlFQ0hRRQpCRWpIMFJZQ0JBZ1FJRUNBQUFFQ0JB
SUJBUklnR1NGQWdBQUJBZ1FJRUNCQW9DTWdRRHFPdGhBZ1FJQUFBUUlFQ0JBZ0VBZ0lrQURKCkNB
RUNCQWdRSUVDQUFBRUNIUUVCMG5HMGhRQUJBZ1FJRUNCQWdBQ0JRRUNBQkVoR0NCQWdRSUFBQVFJ
RUNCRG9DQWlRanFNdEJBZ1EKSUVDQUFBRUNCQWdFQWdJa1FESkNnQUFCQWdRSUVDQkFnRUJIUUlC
MEhHMGhRSUFBQVFJRUNCQWdRQ0FRRUNBQmtoRUNCQWdRSUVDQQpBQUVDQkRvQ0FxVGphQXNCQWdR
SUVDQkFnQUFCQW9HQUFBbVFqQkFnUUlBQUFRSUVDQkFnMEJFUUlCMUhXd2dRSUVDQUFBRUNCQWdR
CkNBUUVTSUJraEFBQkFnUUlFQ0JBZ0FDQmpvQUE2VGphUW9BQUFRSUVDQkFnUUlCQUlDQkFBaVFq
QkFnUUlFQ0FBQUVDQkFoMEJBUkkKeDlFV0FnUUlFQ0JBZ0FBQkFnUUNBUUVTSUJraFFJQUFBUUlF
Q0JBZ1FLQWpJRUE2anJZUUlFQ0FBQUVDQkFnUUlCQUlDSkFBeVFnQgpBZ1FJRUNCQWdBQUJBaDBC
QWRKeHRJVUFBUUlFQ0JBZ1FJQUFnVUJBZ0FSSVJnZ1FJRUNBQUFFQ0JBZ1E2QWdJa0k2akxRUUlF
Q0JBCmdBQUJBZ1FJQkFJQ0pFQXlRb0FBQVFJRUNCQWdRSUJBUjBDQWRCeHRJVUNBQUFFQ0JBZ1FJ
RUFnRUJBZ0FaSVJBZ1FJRUNCQWdBQUIKQWdRNkFnS2s0MmdMQVFJRUNCQWdRSUFBQVFLQmdBQUpr
SXdRSUVDQUFBRUNCQWdRSU5BUkVDQWRSMXNJRUNCQWdBQUJBZ1FJRUFnRQpCRWlBWklRQUFRSUVD
QkFnUUlBQWdZNkFBT2s0MmtLQUFBRUNCQWdRSUVDQVFDQWdRQUlrSXdRSUVDQkFnQUFCQWdRSWRB
UUVTTWZSCkZnSUVDQkFnUUlBQUFRSUVBZ0VCRWlBWklVQ0FBQUVDQkFnUUlFQ2dJeUJBT282MkVD
QkFnQUFCQWdRSUVDQVFDQWlRQU1rSUFRSUUKQ0JBZ1FJQUFBUUlkQVFIU2NiU0ZBQUVDQkFnUUlF
Q0FBSUZBUUlBRVNFWUlFQ0JBZ0FBQkFnUUlFT2dJQ0pDT295MEVDQkFnUUlBQQpBUUlFQ0FRQ0Fp
UkFNa0tBQUFFQ0JBZ1FJRUNBUUVkQWdIUWNiU0ZBZ0FBQkFnUUlFQ0JBSUJBUUlBR1NFUUlFQ0JB
Z1FJQUFBUUlFCk9nSUNwT05vQ3dFQ0JBZ1FJRUNBQUFFQ2dZQUFDWkNNRUNCQWdBQUJBZ1FJRUNE
UUVSQWdIVWRiQ0JBZ1FJQUFBUUlFQ0JBSUJBUkkKZ0dTRUFBRUNCQWdRSUVDQUFJR09nQURwT05w
Q2dBQUJBZ1FJRUNCQWdFQWdJRUFDSkNNRUNCQWdRSUFBQVFJRUNIUUVCRWpIMFJZQwpCQWdRSUVD
QUFBRUNCQUlCQVJJZ0dTRkFnQUFCQWdRSUVDQkFvQ01nUURxT3RoQWdRSUFBQVFJRUNCQWdFQWdJ
a0FESkNBRUNCQWdRCklFQ0FBQUVDSFFFQjBuRzBoUUFCQWdRSUVDQkFnQUNCUUVDQUJFaEdDQkFn
UUlBQUFRSUVDQkRvQ0FpUWpxTXRCQWdRSUVDQUFBRUMKQkFnRUFnSWtRREpDZ0FBQkFnUUlFQ0JB
Z0VCSFFJQjBIRzBoUUlBQUFRSUVDQkFnUUNBUUVDQUJraEVDQkFnUUlFQ0FBQUVDQkRvQwpBcVRq
YUFzQkFnUUlFQ0JBZ0FBQkFvR0FBQW1RakJBZ1FJQUFBUUlFQ0JBZzBCRVFJQjFIV3dnUUlFQ0FB
QUVDQkFnUUNBUUVTSUJrCmhBQUJBZ1FJRUNCQWdBQ0Jqb0FBNlRqYVFvQUFBUUlFQ0JBZ1FJQkFJ
Q0JBQWlRakJBZ1FJRUNBQUFFQ0JBaDBCQVJJeDlFV0FnUUkKRUNCQWdBQUJBZ1FDQVFFU0lCa2hR
SUFBQVFJRUNCQWdRS0FqSUVBNmpyWVFJRUNBQUFFQ0JBZ1FJQkFJQ0pBQXlRZ0JBZ1FJRUNCQQpn
QUFCQWgwQkFkSnh0SVVBQVFJRUNCQWdRSUFBZ1VCQWdBUklSZ2dRSUVDQUFBRUNCQWdRNkFnSWtJ
NmpMUVFJRUNCQWdBQUJBZ1FJCkJBSUNKRUF5UW9BQUFRSUVDQkFnUUlCQVIwQ0FkQnh0SVVDQUFB
RUNCQWdRSUVBZ0VCQWdBWklSQWdRSUVDQkFnQUFCQWdRNkFnS2sKNDJnTEFRSUVDQkFnUUlBQUFR
S0JnQUFKa0l3UUlFQ0FBQUVDQkFnUUlOQVJFQ0FkUjFzSUVDQkFnQUFCQWdRSUVBZ0VCRWlBWklR
QQpBUUlFQ0JBZ1FJQUFnWTZBQU9rNDJrS0FBQUVDQkFnUUlFQ0FRQ0FnUUFJa0l3UUlFQ0JBZ0FB
QkFnUUlkQVFFU01mUkZnSUVDQkFnClFJQUFBUUlFQWdFQkVpQVpJVUNBQUFFQ0JBZ1FJRUNnSXlC
QU9vNjJFQ0JBZ0FBQkFnUUlFQ0FRQ0FpUUFNa0lBUUlFQ0JBZ1FJQUEKQVFJZEFRSFNjYlNGQUFF
Q0JBZ1FJRUNBQUlGQVFJQUVTRVlJRUNCQWdBQUJBZ1FJRU9nSUNKQ09veTBFQ0JBZ1FJQUFBUUlF
Q0FRQwpBaVJBTWtLQUFBRUNCQWdRSUVDQVFFZEFnSFFjYlNGQWdBQUJBZ1FJRUNCQUlCQVFJQUdT
RVFJRUNCQWdRSUFBQVFJRU9nSUNwT05vCkN3RUNCQWdRSUVDQUFBRUNnWUFBQ1pDTUVDQkFnQUFC
QWdRSUVDRFFFUkFnSFVkYkNCQWdRSUFBQVFJRUNCQUlCQVJJZ0dTRUFBRUMKQkFnUUlFQ0FBSUdP
Z0FEcE9OcENnQUFCQWdRSUVDQkFnRUFnSUVBQ0pDTUVDQkFnUUlBQUFRSUVDSFFFQkVqSDBSWUNC
QWdRSUVDQQpBQUVDQkFJQkFSSWdHU0ZBZ0FBQkFnUUlFQ0JBb0NNZ1FEcU90aEFnUUlBQUFRSUVD
QkFnRUFnSWtBREpDQUVDQkFnUUlFQ0FBQUVDCkhRRUIwbkcwaFFBQkFnUUlFQ0JBZ0FDQlFFQ0FC
RWhHQ0JBZ1FJQUFBUUlFQ0JEb0NBaVFqcU10QkFnUUlFQ0FBQUVDQkFnRUFnSWsKUURKQ2dBQUJB
Z1FJRUNCQWdFQkhRSUIwSEcwaFFJQUFBUUlFQ0JBZ1FDQVFFQ0FCa2hFQ0JBZ1FJRUNBQUFFQ0JE
b0NBcVRqYUFzQgpBZ1FJRUNCQWdBQUJBb0dBQUFtUWpCQWdRSUFBQVFJRUNCQWcwQkVRSUIxSFd3
Z1FJRUNBQUFFQ0JBZ1FDQVFFU0lCa2hBQUJBZ1FJCkVDQkFnQUNCam9BQTZUamFRb0FBQVFJRUNC
QWdRSUJBSUNCQUFpUWpCQWdRSUVDQUFBRUNCQWgwQkFSSXg5RVdBZ1FJRUNCQWdBQUIKQWdRQ0FR
RVNJQmtoUUlBQUFRSUVDQkFnUUtBaklFQTZqcllRSUVDQUFBRUNCQWdRSUJBSUNKQUF5UWdCQWdR
SUVDQkFnQUFCQWgwQgpBZEp4dElVQUFRSUVDQkFnUUlBQWdVQkFnQVJJUmdnUUlFQ0FBQUVDQkFn
UTZBZ0lrSTZqTFFRSUVDQkFnQUFCQWdRSUJBSUNKRUF5ClFvQUFBUUlFQ0JBZ1FJQkFSMENBZEJ4
dElVQ0FBQUVDQkFnUUlFQWdFQkFnQVpJUkFnUUlFQ0JBZ0FBQkFnUTZBZ0trNDJnTEFRSUUKQ0JB
Z1FJQUFBUUtCZ0FBSmtJd1FJRUNBQUFFQ0JBZ1FJTkFSRUNBZFIxc0lFQ0JBZ0FBQkFnUUlFQWdF
QkVpQVpJUUFBUUlFQ0JBZwpRSUFBZ1k2QUFPazQya0tBQUFFQ0JBZ1FJRUNBUUNBZ1FBSWtJd1FJ
RUNCQWdBQUJBZ1FJZEFRRVNNZlJGZ0lFQ0JBZ1FJQUFBUUlFCkFnRUJFaUFaSVVDQUFBRUNCQWdR
SUVDZ0l5QkFPbzYyRUNCQWdBQUJBZ1FJRUNBUUNBaVFBTWtJQVFJRUNCQWdRSUFBQVFJZEFRSFMK
Y2JTRkFBRUNCQWdRSUVDQUFJRkFRSUFFU0VZSUVDQkFnQUFCQWdRSUVPZ0lDSkNPb3kwRUNCQWdR
SUFBQVFJRUNBUUNBaVJBTWtLQQpBQUVDQkFnUUlFQ0FRRWRBZ0hRY2JTRkFnQUFCQWdRSUVDQkFJ
QkFRSUFHU0VRSUVDQkFnUUlBQUFRSUVPZ0lDcE9Ob0N3RUNCQWdRCklFQ0FBQUVDZ1lBQUNaQ01F
Q0JBZ0FBQkFnUUlFQ0RRRVJBZ0hVZGJDQkFnUUlBQUFRSUVDQkFJQkFSSWdHU0VBQUVDQkFnUUlF
Q0EKQUlHT2dBRHBPTnBDZ0FBQkFnUUlFQ0JBZ0VBZ0lFQUNKQ01FQ0JBZ1FJQUFBUUlFQ0hRRUJF
akgwUllDQkFnUUlFQ0FBQUVDQkFJQgpBUklnR1NGQWdBQUJBZ1FJRUNCQW9DTWdRRHFPdGhBZ1FJ
QUFBUUlFQ0JBZ0VBZ0lrQURKQ0FFQ0JBZ1FJRUNBQUFFQ0hRRUIwbkcwCmhRQUJBZ1FJRUNCQWdB
Q0JRRUNBQkVoR0NCQWdRSUFBQVFJRUNCRG9DQWlRanFNdEJBZ1FJRUNBQUFFQ0JBZ0VBZ0lrUURK
Q2dBQUIKQWdRSUVDQkFnRUJIUUlCMEhHMGhRSUFBQVFJRUNCQWdRQ0FRRUNBQmtoRUNCQWdRSUVD
QUFBRUNCRG9DQXFUamFBc0JBZ1FJRUNCQQpnQUFCQW9HQUFBbVFqQkFnUUlBQUFRSUVDQkFnMEJF
UUlCMUhXd2dRSUVDQUFBRUNCQWdRQ0FRRVNJQmtoQUFCQWdRSUVDQkFnQUNCCmpvQUE2VGphUW9B
QUFRSUVDQkFnUUlCQUlDQkFBaVFqQkFnUUlFQ0FBQUVDQkFoMEJBUkl4OUVXQWdRSUVDQkFnQUFC
QWdRQ0FRRVMKSUJraFFJQUFBUUlFQ0JBZ1FLQWpJRUE2anJZUUlFQ0FBQUVDQkFnUUlCQUlDSkFB
eVFnQkFnUUlFQ0JBZ0FBQkFoMEJBZEp4dElVQQpBUUlFQ0JBZ1FJQUFnVUJBZ0FSSVJnZ1FJRUNB
QUFFQ0JBZ1E2QWdJa0k2akxRUUlFQ0JBZ0FBQkFnUUlCQUlDSkVBeVFvQUFBUUlFCkNCQWdRSUJB
UjBDQWRCeHRJVUNBQUFFQ0JBZ1FJRUFnRUJBZ0FaSVJBZ1FJRUNCQWdBQUJBZ1E2QWdLazQyZ0xB
UUlFQ0JBZ1FJQUEKQVFLQmdBQUprSXdRSUVDQUFBRUNCQWdRSU5BUkVDQWRSMXNJRUNCQWdBQUJB
Z1FJRUFnRUJFaUFaSVFBQVFJRUNCQWdRSUFBZ1k2QQpBT2s0MmtLQUFBRUNCQWdRSUVDQVFDQWdR
QUlrSXdRSUVDQkFnQUFCQWdRSWRBUUVTTWZSRmdJRUNCQWdRSUFBQVFJRUFnRUJFaUFaCklVQ0FB
QUVDQkFnUUlFQ2dJeUJBT282MkVDQkFnQUFCQWdRSUVDQVFDQWlRQU1rSUFRSUVDQkFnUUlBQUFR
SWRBUUhTY2JTRkFBRUMKQkFnUUlFQ0FBSUZBUUlBRVNFWUlFQ0JBZ0FBQkFnUUlFT2dJQ0pDT295
MEVDQkFnUUlBQUFRSUVDQVFDQWlSQU1rS0FBQUVDQkFnUQpJRUNBUUVkQWdIUWNiU0ZBZ0FBQkFn
UUlFQ0JBSUJBUUlBR1NFUUlFQ0JBZ1FJQUFBUUlFT2dJQ3BPTm9Dd0VDQkFnUUlFQ0FBQUVDCmdZ
QUFDWkNNRUNCQWdBQUJBZ1FJRUNEUUVSQWdIVWRiQ0JBZ1FJQUFBUUlFQ0JBSUJBUklnR1NFQUFF
Q0JBZ1FJRUNBQUlHT2dBRHAKT05wQ2dBQUJBZ1FJRUNCQWdFQWdJRUFDSkNNRUNCQWdRSUFBQVFJ
RUNIUUVCRWpIMFJZQ0JBZ1FJRUNBQUFFQ0JBSUJBUklnR1NGQQpnQUFCQWdRSUVDQkFvQ01nUURx
T3RoQWdRSUFBQVFJRUNCQWdFQWdJa0FESkNBRUNCQWdRSUVDQUFBRUNIUUVCMG5HMGhRQUJBZ1FJ
CkVDQkFnQUNCUUVDQUJFaEdDQkFnUUlBQUFRSUVDQkRvQ0FpUWpxTXRCQWdRSUVDQUFBRUNCQWdF
QWdJa1FESkNnQUFCQWdRSUVDQkEKZ0VCSFFJQjBIRzBoUUlBQUFRSUVDQkFnUUNBUUVDQUJraEVD
QkFnUUlFQ0FBQUVDQkRvQ0FxVGphQXNCQWdRSUVDQkFnQUFCQW9HQQpBQW1RakJBZ1FJQUFBUUlF
Q0JBZzBCRVFJQjFIV3dnUUlFQ0FBQUVDQkFnUUNBUUVTSUJraEFBQkFnUUlFQ0JBZ0FDQmpvQUE2
VGphClFvQUFBUUlFQ0JBZ1FJQkFJQ0JBQWlRakJBZ1FJRUNBQUFFQ0JBaDBCQVJJeDlFV0FnUUlF
Q0JBZ0FBQkFnUUNBUUVTSUJraFFJQUEKQVFJRUNCQWdRS0FqSUVBNmpyWVFJRUNBQUFFQ0JBZ1FJ
QkFJQ0pBQXlRZ0JBZ1FJRUNCQWdBQUJBaDBCQWRKeHRJVUFBUUlFQ0JBZwpRSUFBZ1VCQWdBUklS
Z2dRSUVDQUFBRUNCQWdRNkFnSWtJNmpMUVFJRUNCQWdBQUJBZ1FJQkFJQ0pFQXlRb0FBQVFJRUNC
QWdRSUJBClIwQ0FkQnh0SVVDQUFBRUNCQWdRSUVBZ0VCQWdBWklSQWdRSUVDQkFnQUFCQWdRNkFn
S2s0MmdMQVFJRUNCQWdRSUFBQVFLQmdBQUoKa0l3UUlFQ0FBQUVDQkFnUUlOQVJFQ0FkUjFzSUVD
QkFnQUFCQWdRSUVBZ0VCRWlBWklRQUFRSUVDQkFnUUlBQWdZNkFBT2s0MmtLQQpBQUVDQkFnUUlF
Q0FRQ0FnUUFJa0l3UUlFQ0JBZ0FBQkFnUUlkQVFFU01mUkZnSUVDQkFnUUlBQUFRSUVBZ0VCRWlB
WklVQ0FBQUVDCkJBZ1FJRUNnSXlCQU9vNjJFQ0JBZ0FBQkFnUUlFQ0FRQ0FpUUFNa0lBUUlFQ0JB
Z1FJQUFBUUlkQVFIU2NiU0ZBQUVDQkFnUUlFQ0EKQUlGQVFJQUVTRVlJRUNCQWdBQUJBZ1FJRU9n
SUNKQ09veTBFQ0JBZ1FJQUFBUUlFQ0FRQ0FpUkFNa0tBQUFFQ0JBZ1FJRUNBUUVkQQpnSFFjYlNG
QWdBQUJBZ1FJRUNCQUlCQVFJQUdTRVFJRUNCQWdRSUFBQVFJRU9nSUNwT05vQ3dFQ0JBZ1FJRDJv
L2ZFQUFCVkRTVVJCClZFQ0FBQUVDZ1lBQUNaQ01FQ0JBZ0FBQkFnUUlFQ0RRRVJBZ0hVZGJDQkFn
UUlBQUFRSUVDQkFJQkFSSWdHU0VBQUVDQkFnUUlFQ0EKQUlHT2dBRHBPTnBDZ0FBQkFnUUlFQ0JB
Z0VBZ0lFQUNKQ01FQ0JBZ1FJQUFBUUlFQ0hRRUJFakgwUllDQkFnUUlFQ0FBQUVDQkFJQgpBUkln
R1NGQWdBQUJBZ1FJRUNCQW9DTWdRRHFPdGhBZ1FJQUFBUUlFQ0JBZ0VBZ0lrQURKQ0FFQ0JBZ1FJ
RUNBQUFFQ0hRRUIwbkcwCmhRQUJBZ1FJRUNCQWdBQ0JRRUNBQkVoR0NCQWdRSUFBQVFJRUNCRG9D
QWlRanFNdEJBZ1FJRUNBQUFFQ0JBZ0VBZ0lrUURKQ2dBQUIKQWdRSUVDQkFnRUJIUUlCMEhHMGhR
SUFBQVFJRUNCQWdRQ0FRRUNBQmtoRUNCQWdRSUVDQUFBRUNCRG9DQXFUamFBc0JBZ1FJRUNCQQpn
QUFCQW9HQUFBbVFqQkFnUUlBQUFRSUVDQkFnMEJFUUlCMUhXd2dRSUVDQUFBRUNCQWdRQ0FRRVNJ
QmtoQUFCQWdRSUVDQkFnQUNCCmpvQUE2VGphUW9BQUFRSUVDQkFnUUlCQUlDQkFBaVFqQkFnUUlF
Q0FBQUVDQkFoMEJBUkl4OUVXQWdRSUVDQkFnQUFCQWdRQ0FRRVMKSUJraFFJQUFBUUlFQ0JBZ1FL
QWpJRUE2anJZUUlFQ0FBQUVDQkFnUUlCQUlDSkFBeVFnQkFnUUlFQ0JBZ0FBQkFoMEJBZEp4dElV
QQpBUUlFQ0JBZ1FJQUFnVUJBZ0FSSVJnZ1FJRUNBQUFFQ0JBZ1E2QWdJa0k2akxRUUlFQ0JBZ0FB
QkFnUUlCQUlDSkVBeVFvQUFBUUlFCkNCQWdRSUJBUjBDQWRCeHRJVUNBQUFFQ0JBZ1FJRUFnRUJB
Z0FaSVJBZ1FJRUNCQWdBQUJBZ1E2QWdLazQyZ0xBUUlFQ0JBZ1FJQUEKQVFLQmdBQUprSXdRSUVD
QUFBRUNCQWdRSU5BUkVDQWRSMXNJRUNCQWdBQUJBZ1FJRUFnRUJFaUFaSVFBQVFJRUNCQWdRSUFB
Z1k2QQpBT2s0MmtLQUFBRUNCQWdRSUVDQVFDQWdRQUlrSXdRSUVDQkFnQUFCQWdRSWRBUUVTTWZS
RmdJRUNCQWdRSUFBQVFJRUFnRUJFaUFaCklVQ0FBQUVDQkFnUUlFQ2dJeUJBT282MkVDQkFnQUFC
QWdRSUVDQVFDQWlRQU1rSUFRSUVDQkFnUUlBQUFRSWRBUUhTY2JTRkFBRUMKQkFnUUlFQ0FBSUZB
UUlBRVNFWUlFQ0JBZ0FBQkFnUUlFT2dJQ0pDT295MEVDQkFnUUlBQUFRSUVDQVFDQWlSQU1rS0FB
QUVDQkFnUQpJRUNBUUVkQWdIUWNiU0ZBZ0FBQkFnUUlFQ0JBSUJBUUlBR1NFUUlFQ0JBZ1FJQUFB
UUlFT2dJQ3BPTm9Dd0VDQkFnUUlFQ0FBQUVDCmdZQUFDWkNNRUNCQWdBQUJBZ1FJRUNEUUVSQWdI
VWRiQ0JBZ1FJQUFBUUlFQ0JBSUJBUklnR1NFQUFFQ0JBZ1FJRUNBQUlHT2dBRHAKT05wQ2dBQUJB
Z1FJRUNCQWdFQWdJRUFDSkNNRUNCQWdRSUFBQVFJRUNIUUVCRWpIMFJZQ0JBZ1FJRUNBQUFFQ0JB
SUJBUklnR1NGQQpnQUFCQWdRSUVDQkFvQ01nUURxT3RoQWdRSUFBQVFJRUNCQWdFQWdJa0FESkNB
RUNCQWdRSUVDQUFBRUNIUUVCMG5HMGhRQUJBZ1FJCkVDQkFnQUNCUUVDQUJFaEdDQkFnUUlBQUFR
SUVDQkRvQ0FpUWpxTXRCQWdRSUVDQUFBRUNCQWdFQWdJa1FESkNnQUFCQWdRSUVDQkEKZ0VCSFFJ
QjBIRzBoUUlBQUFRSUVDQkFnUUNBUUVDQUJraEVDQkFnUUlFQ0FBQUVDQkRvQ0FxVGphQXNCQWdR
SUVDQkFnQUFCQW9HQQpBQW1RakJBZ1FJQUFBUUlFQ0JBZzBCRVFJQjFIV3dnUUlFQ0FBQUVDQkFn
UUNBUUVTSUJraEFBQkFnUUlFQ0JBZ0FDQmpvQUE2VGphClFvQUFBUUlFQ0JBZ1FJQkFJQ0JBQWlR
akJBZ1FJRUNBQUFFQ0JBaDBCQVJJeDlFV0FnUUlFQ0JBZ0FBQkFnUUNBUUVTSUJraFFJQUEKQVFJ
RUNCQWdRS0FqSUVBNmpyWVFJRUNBQUFFQ0JBZ1FJQkFJQ0pBQXlRZ0JBZ1FJRUNCQWdBQUJBaDBC
QWRKeHRJVUFBUUlFQ0JBZwpRSUFBZ1VCQWdBUklSZ2dRSUVDQUFBRUNCQWdRNkFnSWtJNmpMUVFJ
RUNCQWdBQUJBZ1FJQkFJQ0pFQXlRb0FBQVFJRUNCQWdRSUJBClIwQ0FkQnh0SVVDQUFBRUNCQWdR
SUVBZ0VCQWdBWklSQWdRSUVDQkFnQUFCQWdRNkFnS2s0MmdMQVFJRUNCQWdRSUFBQVFLQmdBQUoK
a0l3UUlFQ0FBQUVDQkFnUUlOQVJFQ0FkUjFzSUVDQkFnQUFCQWdRSUVBZ0VCRWlBWklRQUFRSUVD
QkFnUUlBQWdZNkFBT2s0MmtLQQpBQUVDQkFnUUlFQ0FRQ0FnUUFJa0l3UUlFQ0JBZ0FBQkFnUUlk
QVFFU01mUkZnSUVDQkFnUUlBQUFRSUVBZ0VCRWlBWklVQ0FBQUVDCkJBZ1FJRUNnSXlCQU9vNjJF
Q0JBZ0FBQkFnUUlFQ0FRQ0FpUUFNa0lBUUlFQ0JBZ1FJQUFBUUlkQVFIU2NiU0ZBQUVDQkFnUUlF
Q0EKQUlGQVFJQUVTRVlJRUNCQWdBQUJBZ1FJRU9nSUNKQ09veTBFQ0JBZ1FJQUFBUUlFQ0FRQ0Fp
UkFNa0tBQUFFQ0JBZ1FJRUNBUUVkQQpnSFFjYlNGQWdBQUJBZ1FJRUNCQUlCQVFJQUdTRVFJRUNC
QWdRSUFBQVFJRU9nSUNwT05vQ3dFQ0JBZ1FJRUNBQUFFQ2dZQUFDWkNNCkVDQkFnQUFCQWdRSUVD
RFFFUkFnSFVkYkNCQWdRSUFBQVFJRUNCQUlCQVJJZ0dTRUFBRUNCQWdRSUVDQUFJR09nQURwT05w
Q2dBQUIKQWdRSUVDQkFnRUFnSUVBQ0pDTUVDQkFnUUlBQUFRSUVDSFFFQkVqSDBSWUNCQWdRSUVD
QUFBRUNCQUlCQVJJZ0dTRkFnQUFCQWdRSQpFQ0JBb0NNZ1FEcU90aEFnUUlBQUFRSUVDQkFnRUFn
SWtBREpDQUVDQkFnUUlFQ0FBQUVDSFFFQjBuRzBoUUFCQWdRSUVDQkFnQUNCClFFQ0FCRWhHQ0JB
Z1FJQUFBUUlFQ0JEb0NBaVFqcU10QkFnUUlFQ0FBQUVDQkFnRUFnSWtRREpDZ0FBQkFnUUlFQ0JB
Z0VCSFFJQjAKSEcwaFFJQUFBUUlFQ0JBZ1FDQVFFQ0FCa2hFQ0JBZ1FJRUNBQUFFQ0JEb0NBcVRq
YUFzQkFnUUlFQ0JBZ0FBQkFvR0FBQW1RakJBZwpRSUFBQVFJRUNCQWcwQkVRSUIxSFd3Z1FJRUNB
QUFFQ0JBZ1FDQVFFU0lCa2hBQUJBZ1FJRUNCQWdBQ0Jqb0FBNlRqYVFvQUFBUUlFCkNCQWdRSUJB
SUNCQUFpUWpCQWdRSUVDQUFBRUNCQWgwQkFSSXg5RVdBZ1FJRUNCQWdBQUJBZ1FDQVFFU0lCa2hR
SUFBQVFJRUNCQWcKUUtBaklFQTZqcllRSUVDQUFBRUNCQWdRSUJBSUNKQUF5UWdCQWdRSUVDQkFn
QUFCQWgwQkFkSnh0SVVBQVFJRUNCQWdRSUFBZ1VCQQpnQVJJUmdnUUlFQ0FBQUVDQkFnUTZBZ0lr
STZqTFFRSUVDQkFnQUFCQWdRSUJBSUNKRUF5UW9BQUFRSUVDQkFnUUlCQVIwQ0FkQnh0CklVQ0FB
QUVDQkFnUUlFQWdFQkFnQVpJUkFnUUlFQ0JBZ0FBQkFnUTZBZ0trNDJnTEFRSUVDQkFnUUlBQUFR
S0JnQUFKa0l3UUlFQ0EKQUFFQ0JBZ1FJTkFSRUNBZFIxc0lFQ0JBZ0FBQkFnUUlFQWdFQkVpQVpJ
UUFBUUlFQ0JBZ1FJQUFnWTZBQU9rNDJrS0FBQUVDQkFnUQpJRUNBUUNBZ1FBSWtJd1FJRUNCQWdB
QUJBZ1FJZEFRRVNNZlJGZ0lFQ0JBZ1FJQUFBUUlFQWdFQkVpQVpJVUNBQUFFQ0JBZ1FJRUNnCkl5
QkFPbzYyRUNCQWdBQUJBZ1FJRUNBUUNBaVFBTWtJQVFJRUNCQWdRSUFBQVFJZEFRSFNjYlNGQUFF
Q0JBZ1FJRUNBQUlGQVFJQUUKU0VZSUVDQkFnQUFCQWdRSUVPZ0lDSkNPb3kwRUNCQWdRSUFBQVFJ
RUNBUUNBaVJBTWtLQUFBRUNCQWdRSUVDQVFFZEFnSFFjYlNGQQpnQUFCQWdRSUVDQkFJQkFRSUFH
U0VRSUVDQkFnUUlBQUFRSUVPZ0lDcE9Ob0N3RUNCQWdRSUVDQUFBRUNnWUFBQ1pDTUVDQkFnQUFC
CkFnUUlFQ0RRRVJBZ0hVZGJDQkFnUUlBQUFRSUVDQkFJQkFSSWdHU0VBQUVDQkFnUUlFQ0FBSUdP
Z0FEcE9OcENnQUFCQWdRSUVDQkEKZ0VBZ0lFQUNKQ01FQ0JBZ1FJQUFBUUlFQ0hRRUJFakgwUllD
QkFnUUlFQ0FBQUVDQkFJQkFSSWdHU0ZBZ0FBQkFnUUlFQ0JBb0NNZwpRRHFPdGhBZ1FJQUFBUUlF
Q0JBZ0VBZ0lrQURKQ0FFQ0JBZ1FJRUNBQUFFQ0hRRUIwbkcwaFFBQkFnUUlFQ0JBZ0FDQlFFQ0FC
RWhHCkNCQWdRSUFBQVFJRUNCRG9DQWlRanFNdEJBZ1FJRUNBQUFFQ0JBZ0VBZ0lrUURKQ2dBQUJB
Z1FJRUNCQWdFQkhRSUIwSEcwaFFJQUEKQVFJRUNCQWdRQ0FRRUNBQmtoRUNCQWdRSUVDQUFBRUNC
RG9DQXFUamFBc0JBZ1FJRUNCQWdBQUJBb0dBQUFtUWpCQWdRSUFBQVFJRQpDQkFnMEJFUUlCMUhX
d2dRSUVDQUFBRUNCQWdRQ0FRRVNJQmtoQUFCQWdRSUVDQkFnQUNCam9BQTZUamFRb0FBQVFJRUNC
QWdRSUJBCklDQkFBaVFqQkFnUUlFQ0FBQUVDQkFoMEJBUkl4OUVXQWdRSUVDQkFnQUFCQWdRQ0FR
RVNJQmtoUUlBQUFRSUVDQkFnUUtBaklFQTYKanJZUUlFQ0FBQUVDQkFnUUlCQUlDSkFBeVFnQkFn
UUlFQ0JBZ0FBQkFoMEJBZEp4dElVQUFRSUVDQkFnUUlBQWdVQkFnQVJJUmdnUQpJRUNBQUFFQ0JB
Z1E2QWdJa0k2akxRUUlFQ0JBZ0FBQkFnUUlCQUlDSkVBeVFvQUFBUUlFQ0JBZ1FJQkFSMENBZEJ4
dElVQ0FBQUVDCkJBZ1FJRUFnRUJBZ0FaSVJBZ1FJRUNCQWdBQUJBZ1E2QWdLazQyZ0xBUUlFQ0JB
Z1FJQUFBUUtCZ0FBSmtJd1FJRUNBQUFFQ0JBZ1EKSU5BUkVDQWRSMXNJRUNCQWdBQUJBZ1FJRUFn
RUJFaUFaSVFBQVFJRUNCQWdRSUFBZ1k2QUFPazQya0tBQUFFQ0JBZ1FJRUNBUUNBZwpRQUlrSXdR
SUVDQkFnQUFCQWdRSWRBUUVTTWZSRmdJRUNCQWdRSUFBQVFJRUFnRUJFaUFaSVVDQUFBRUNCQWdR
SUVDZ0l5QkFPbzYyCkVDQkFnQUFCQWdRSUVDQVFDQWlRQU1rSUFRSUVDQkFnUUlBQUFRSWRBUUhT
Y2JTRkFBRUNCQWdRSUVDQUFJRkFRSUFFU0VZSUVDQkEKZ0FBQkFnUUlFT2dJQ0pDT295MEVDQkFn
UUlBQUFRSUVDQVFDQWlSQU1rS0FBQUVDQkFnUUlFQ0FRRWRBZ0hRY2JTRkFnQUFCQWdRSQpFQ0JB
SUJBUUlBR1NFUUlFQ0JBZ1FJQUFBUUlFT2dJQ3BPTm9Dd0VDQkFnUUlFQ0FBQUVDZ1lBQUNaQ01F
Q0JBZ0FBQkFnUUlFQ0RRCkVSQWdIVWRiQ0JBZ1FJQUFBUUlFQ0JBSUJBUklnR1NFQUFFQ0JBZ1FJ
RUNBQUlHT2dBRHBPTnBDZ0FBQkFnUUlFQ0JBZ0VBZ0lFQUMKSkNNRUNCQWdRSUFBQVFJRUNIUUVC
RWpIMFJZQ0JBZ1FJRUNBQUFFQ0JBSUJBUklnR1NGQWdBQUJBZ1FJRUNCQW9DTWdRRHFPdGhBZwpR
SUFBQVFJRUNCQWdFQWdJa0FESkNBRUNCQWdRSUVDQUFBRUNIUUVCMG5HMGhRQUJBZ1FJRUNCQWdB
Q0JRRUNBQkVoR0NCQWdRSUFBCkFRSUVDQkRvQ0FpUWpxTXRCQWdRSUVDQUFBRUNCQWdFQWdJa1FE
SkNnQUFCQWdRSUVDQkFnRUJIUUlCMEhHMGhRSUFBQVFJRUNCQWcKUUNBUUVDQUJraEVDQkFnUUlF
Q0FBQUVDQkRvQ0FxVGphQXNCQWdRSUVDQkFnQUFCQW9HQUFBbVFqQkFnUUlBQUFRSUVDQkFnMEJF
UQpJQjFIV3dnUUlFQ0FBQUVDQkFnUUNBUUVTSUJraEFBQkFnUUlFQ0JBZ0FDQmpvQUE2VGphUW9B
QUFRSUVDQkFnUUlCQUlDQkFBaVFqCkJBZ1FJRUNBQUFFQ0JBaDBCQVJJeDlFV0FnUUlFQ0JBZ0FB
QkFnUUNBUUVTSUJraFFJQUFBUUlFQ0JBZ1FLQWpJRUE2anJZUUlFQ0EKQUFFQ0JBZ1FJQkFJQ0pB
QXlRZ0JBZ1FJRUNCQWdBQUJBaDBCQWRKeHRJVUFBUUlFQ0JBZ1FJQUFnVUJBZ0FSSVJnZ1FJRUNB
QUFFQwpCQWdRNkFnSWtJNmpMUVFJRUNCQWdBQUJBZ1FJQkFJQ0pFQXlRb0FBQVFJRUNCQWdRSUJB
UjBDQWRCeHRJVUNBQUFFQ0JBZ1FJRUFnCkVCQWdBWklSQWdRSUVDQkFnQUFCQWdRNkFnS2s0MmdM
QVFJRUNCQWdRSUFBQVFLQmdBQUprSXdRSUVDQUFBRUNCQWdRSU5BUkVDQWQKUjFzSUVDQkFnQUFC
QWdRSUVBZ0VCRWlBWklRQUFRSUVDQkFnUUlBQWdZNkFBT2s0MmtLQUFBRUNCQWdRSUVDQVFDQWdR
QUlrSXdRSQpFQ0JBZ0FBQkFnUUlkQVFFU01mUkZnSUVDQkFnUUlBQUFRSUVBZ0VCRWlBWklVQ0FB
QUVDQkFnUUlFQ2dJeUJBT282MkVDQkFnQUFCCkFnUUlFQ0FRQ0FpUUFNa0lBUUlFQ0JBZ1FJQUFB
UUlkQVFIU2NiU0ZBQUVDQkFnUUlFQ0FBSUZBUUlBRVNFWUlFQ0JBZ0FBQkFnUUkKRU9nSUNKQ09v
eTBFQ0JBZ1FJQUFBUUlFQ0FRQ0FpUkFNa0tBQUFFQ0JBZ1FJRUNBUUVkQWdIUWNiU0ZBZ0FBQkFn
UUlFQ0JBSUJBUQpJQUdTRVFJRUNCQWdRSUFBQVFJRU9nSUNwT05vQ3dFQ0JBZ1FJRUNBQUFFQ2dZ
QUFDWkNNRUNCQWdBQUJBZ1FJRUNEUUVSQWdIVWRiCkNCQWdRSUFBQVFJRUNCQUlCQVJJZ0dTRUFB
RUNCQWdRSUVDQUFJR09nQURwT05wQ2dBQUJBZ1FJRUNCQWdFQWdJRUFDSkNNRUNCQWcKUUlBQUFR
SUVDSFFFQkVqSDBSWUNCQWdRSUVDQUFBRUNCQUlCQVJJZ0dTRkFnQUFCQWdRSUVDQkFvQ01nUURx
T3RoQWdRSUFBQVFJRQpDQkFnRUFnSWtBREpDQUVDQkFnUUlFQ0FBQUVDSFFFQjBuRzBoUUFCQWdR
SUVDQkFnQUNCUUVDQUJFaEdDQkFnUUlBQUFRSUVDQkRvCkNBaVFqcU10QkFnUUlFQ0FBQUVDQkFn
RUFnSWtRREpDZ0FBQkFnUUlFQ0JBZ0VCSFFJQjBIRzBoUUlBQUFRSUVDQkFnUUNBUUVDQUIKa2hF
Q0JBZ1FJRUNBQUFFQ0JEb0NBcVRqYUFzQkFnUUlFQ0JBZ0FBQkFvR0FBQW1RakJBZ1FJQUFBUUlF
Q0JBZzBCRVFJQjFIV3dnUQpJRUNBQUFFQ0JBZ1FDQVFFU0lCa2hBQUJBZ1FJRUNCQWdBQ0Jqb0FB
NlRqYVFvQUFBUUlFQ0JBZ1FJQkFJQ0JBQWlRakJBZ1FJRUNBCkFBRUNCQWgwQkFSSXg5RVdBZ1FJ
RUNCQWdBQUJBZ1FDQVFFU0lCa2hRSUFBQVFJRUNCQWdRS0FqSUVBNmpyWVFJRUNBQUFFQ0JBZ1EK
SUJBSUNKQUF5UWdCQWdRSUVDQkFnQUFCQWgwQkFkSnh0SVVBQVFJRUNCQWdRSUFBZ1VCQWdBUklS
Z2dRSUVDQUFBRUNCQWdRNkFnSQprSTZqTFFRSUVDQkFnQUFCQWdRSUJBSUNKRUF5UW9BQUFRSUVD
QkFnUUlCQVIwQ0FkQnh0SVVDQUFBRUNCQWdRSUVBZ0VCQWdBWklSCkFnUUlFQ0JBZ0FBQkFnUTZB
Z0trNDJnTEFRSUVDQkFnUUlBQUFRS0JnQUFKa0l3UUlFQ0FBQUVDQkFnUUlOQVJFQ0FkUjFzSUVD
QkEKZ0FBQkFnUUlFQWdFQkVpQVpJUUFBUUlFQ0JBZ1FJQUFnWTZBQU9rNDJrS0FBQUVDQkFnUUlF
Q0FRQ0FnUUFJa0l3UUlFQ0JBZ0FBQgpBZ1FJZEFRRVNNZlJGZ0lFQ0JBZ1FJQUFBUUlFQWdFQkVp
QVpJVUNBQUFFQ0JBZ1FJRUNnSXlCQU9vNjJFQ0JBZ0FBQkFnUUlFQ0FRCkNBaVFBTWtJQVFJRUNC
QWdRSUFBQVFJZEFRSFNjYlNGQUFFQ0JBZ1FJRUNBQUlGQVFJQUVTRVlJRUNCQWdBQUJBZ1FJRU9n
SUNKQ08Kb3kwRUNCQWdRSUFBQVFJRUNBUUNBaVJBTWtLQUFBRUNCQWdRSUVDQVFFZEFnSFFjYlNG
QWdBQUJBZ1FJRUNCQUlCQVFJQUdTRVFJRQpDQkFnUUlBQUFRSUVPZ0lDcE9Ob0N3RUNCQWdRSUVD
QUFBRUNnWUFBQ1pDTUVDQkFnQUFCQWdRSUVDRFFFUkFnSFVkYkNCQWdRSUFBCkFRSUVDQkFJQkFS
SWdHU0VBQUVDQkFnUUlFQ0FBSUdPZ0FEcE9OcENnQUFCQWdRSUVDQkFnRUFnSUVBQ0pDTUVDQkFn
UUlBQUFRSUUKQ0hRRUJFakgwUllDQkFnUUlFQ0FBQUVDQkFJQkFSSWdHU0ZBZ0FBQkFnUUlFQ0JB
b0NNZ1FEcU90aEFnUUlBQUFRSUVDQkFnRUFnSQprQURKQ0FFQ0JBZ1FJRUNBQUFFQ0hRRUIwbkcw
aFFBQkFnUUlFQ0JBZ0FDQlFFQ0FCRWhHQ0JBZ1FJQUFBUUlFQ0JEb0NBaVFqcU10CkJBZ1FJRUNB
QUFFQ0JBZ0VBZ0lrUURKQ2dBQUJBZ1FJRUNCQWdFQkhRSUIwSEcwaFFJQUFBUUlFQ0JBZ1FDQVFF
Q0FCa2hFQ0JBZ1EKSUVDQUFBRUNCRG9DQXFUamFBc0JBZ1FJRUNCQWdBQUJBb0dBQUFtUWpCQWdR
SUFBQVFJRUNCQWcwQkVRSUIxSFd3Z1FJRUNBQUFFQwpCQWdRQ0FRRVNJQmtoQUFCQWdRSUVDQkFn
QUNCanNEL0E5bkpvTWF2eW9SSEFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>
<flag name="review"
          id="20364"
          type_id="1"
          status="+"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="20368"
          type_id="3"
          status="-"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>