<?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>111220</bug_id>
          
          <creation_ts>2013-03-01 14:27:15 -0800</creation_ts>
          <short_desc>AX: Upstream iOS Accessibility DumpRenderTree changes</short_desc>
          <delta_ts>2013-03-04 12:09:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>845506</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-01 14:27:15 -0800</bug_when>
    <thetext>Upstream these changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845508</commentid>
    <comment_count>1</comment_count>
      <attachid>191037</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-01 14:32:09 -0800</bug_when>
    <thetext>Created attachment 191037
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845509</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-01 14:32:32 -0800</bug_when>
    <thetext>Adding david to help with review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846663</commentid>
    <comment_count>3</comment_count>
      <attachid>191037</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-03-04 11:27:36 -0800</bug_when>
    <thetext>Comment on attachment 191037
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846708</commentid>
    <comment_count>4</comment_count>
      <attachid>191037</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 12:09:11 -0800</bug_when>
    <thetext>Comment on attachment 191037
patch

Clearing flags on attachment: 191037

Committed r144657: &lt;http://trac.webkit.org/changeset/144657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846709</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 12:09:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191037</attachid>
            <date>2013-03-01 14:32:09 -0800</date>
            <delta_ts>2013-03-04 12:09:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>path</filename>
            <type>text/plain</type>
            <size>49908</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0NDUwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3MCBAQAorMjAxMy0wMy0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBVcHN0cmVhbSBpT1MgQWNjZXNzaWJpbGl0eSBEdW1wUmVuZGVy
VHJlZSBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTEyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcHN0cmVhbSB0aGUgaU9TIGNoYW5nZXMgZm9yIGFjY2Vzc2liaWxpdHkgaW4gRHVtcFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2spOgorICAgICAg
ICAobGlua2VkRWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKGVsZW1lbnRzRm9yUmFuZ2VDYWxs
YmFjayk6CisgICAgICAgIChpbmNyZWFzZVRleHRTZWxlY3Rpb25DYWxsYmFjayk6CisgICAgICAg
IChkZWNyZWFzZVRleHRTZWxlY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChhc3Npc3RpdmVUZWNo
bm9sb2d5U2ltdWxhdGVkRm9jdXNDYWxsYmFjayk6CisgICAgICAgIChzdHJpbmdGb3JTZWxlY3Rp
b25DYWxsYmFjayk6CisgICAgICAgIChnZXRJUGhvbmVMYWJlbENhbGxiYWNrKToKKyAgICAgICAg
KGdldElQaG9uZUhpbnRDYWxsYmFjayk6CisgICAgICAgIChnZXRJUGhvbmVWYWx1ZUNhbGxiYWNr
KToKKyAgICAgICAgKGdldElQaG9uZUlkZW50aWZpZXJDYWxsYmFjayk6CisgICAgICAgIChnZXRJ
UGhvbmVUcmFpdHNDYWxsYmFjayk6CisgICAgICAgIChnZXRJUGhvbmVJc0VsZW1lbnRDYWxsYmFj
ayk6CisgICAgICAgIChnZXRJUGhvbmVFbGVtZW50VGV4dFBvc2l0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoZ2V0SVBob25lRWxlbWVudFRleHRMZW5ndGhDYWxsYmFjayk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvczogQWRkZWQuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1t
OiBBZGRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVt
ZW50QXRQb2ludCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVs
ZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KToK
KyAgICAgICAgKGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZCk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpzZXRMb2dGb2N1c0V2ZW50cyk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6c2V0TG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNldExvZ1ZhbHVlQ2hhbmdlRXZlbnRzKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTGlz
dGVuZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50SU9TLm1tOiBBZGRlZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppcGhvbmVMYWJlbCk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppcGhvbmVIaW50KToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlwaG9uZVZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlwaG9uZUlkZW50aWZpZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXBob25lVHJhaXRzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlwaG9uZUlzRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppcGhv
bmVFbGVtZW50VGV4dFBvc2l0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlwaG9uZUVsZW1lbnRUZXh0TGVuZ3RoKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnVybCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6d2lkdGgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhP
ZkNoaWxkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkQXRJbmRl
eCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRl
eCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRFbGVtZW50KToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRl
eCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmluY3JlYXNlVGV4dFNlbGVjdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudHNGb3JSYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cyk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNQcmVzc0FjdGlvblN1cHBvcnRlZCk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0luY3JlbWVudEFjdGlvblN1cHBvcnRlZCk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRlZCk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
aXRsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWxwVGV4dCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNSZXF1aXJlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhSXNHcmFiYmVkKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFE
cm9wRWZmZWN0cyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5k
ZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
cyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFk
ZXJzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVt
bnMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2Vs
bHMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVy
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2Vs
bEZvckNvbHVtbkFuZFJvdyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RlZFRleHRSYW5nZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphc3Npc3Rp
dmVUZWNobm9sb2d5U2ltdWxhdGVkRm9jdXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3Jl
bWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpkb2N1bWVudFVSSSk6CisgICAgICAgIChfYWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5v
dGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
Rm9jdXNhYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJs
ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZl
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbik6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFz
UG9wdXApOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorCiAyMDEzLTAzLTAxICBS
b2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
QWRkIGFuIGV4dHJhIHByb2plY3QgdGhhdCBhc3NlbWJsZXMgYWxsIHByb2plY3QgYnVpbGQgbG9n
cyBvbiBXaW5kb3dzIGludG8gYSBzaW5nbGUgZmlsZS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDQ0NjMpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMzLDYgKzIzMyw2MSBAQAogICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJl
cihjb250ZXh0LCAoZG91YmxlKXRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pbmRleE9mQ2hpbGQo
Y2hpbGRFbGVtZW50KSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCisKK3N0YXRpYyBKU1ZhbHVl
UmVmIGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIHVuc2lnbmVkIGluZGV4ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2Jq
ZWN0KS0+aGVhZGVyRWxlbWVudEF0SW5kZXgoaW5kZXgpKTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgbGlua2VkRWxlbWVudENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bGlua2VkRWxlbWVudCgp
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZWxlbWVudHNGb3JSYW5nZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICB1bnNpZ25lZCBsb2NhdGlvbiA9IEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KTsKKyAgICAKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVudHM7Cisg
ICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmVsZW1lbnRzRm9yUmFuZ2UobG9jYXRpb24sIGxl
bmd0aCwgZWxlbWVudHMpOworICAgIAorICAgIHVuc2lnbmVkIGVsZW1lbnRzU2l6ZSA9IGVsZW1l
bnRzLnNpemUoKTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlRWxlbWVudHNbZWxlbWVudHNTaXplXTsK
KyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZWxlbWVudHNTaXplOyArK2spCisgICAgICAg
IHZhbHVlRWxlbWVudHNba10gPSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KGNvbnRleHQsIGVsZW1lbnRzW2tdKTsKKyAgICAKKyAgICByZXR1cm4g
SlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgZWxlbWVudHNTaXplLCB2YWx1ZUVsZW1lbnRzLCAw
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgaW5jcmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRvQVhFbGVtZW50KHRoaXNPYmpl
Y3QpLT5pbmNyZWFzZVRleHRTZWxlY3Rpb24oKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGRlY3JlYXNlVGV4dFNlbGVj
dGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICB0b0FYRWxl
bWVudCh0aGlzT2JqZWN0KS0+ZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBhc3Np
c3RpdmVUZWNobm9sb2d5U2ltdWxhdGVkRm9jdXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmFzc2lzdGl2ZVRlY2hu
b2xvZ3lTaW11bGF0ZWRGb2N1cygpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBKU1ZhbHVlUmVmIGNoaWxkQXRJbmRleENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpbnQgaW5kZXhOdW1i
ZXIgPSAtMTsKQEAgLTk0OSwxMCArMTAwNCw2NiBAQAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKworc3RhdGljIEpTVmFs
dWVSZWYgc3RyaW5nRm9yU2VsZWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsYWJlbFN0cmlu
ZyhBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnN0cmluZ0ZvclNlbGVjdGlvbigpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgbGFiZWxTdHJpbmcuZ2V0KCkp
OworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRJUGhvbmVMYWJlbENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gbGFiZWxTdHJpbmcoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pcGhvbmVM
YWJlbCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgbGFiZWxTdHJp
bmcuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRJUGhvbmVIaW50Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBoaW50U3RyaW5nKEFkb3B0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+
aXBob25lSGludCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgaGlu
dFN0cmluZy5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldElQaG9uZVZhbHVlQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiB2YWx1ZVN0cmluZyhBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPmlwaG9uZVZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250
ZXh0LCB2YWx1ZVN0cmluZy5nZXQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldElQaG9u
ZUlkZW50aWZpZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZhbHVlU3RyaW5nKEFkb3B0LCB0b0FY
RWxlbWVudCh0aGlzT2JqZWN0KS0+aXBob25lSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgdmFsdWVTdHJpbmcuZ2V0KCkpOworfQorCisKK3N0YXRp
YyBKU1ZhbHVlUmVmIGdldElQaG9uZVRyYWl0c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdmFsdWVT
dHJpbmcoQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pcGhvbmVUcmFpdHMoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHZhbHVlU3RyaW5nLmdldCgpKTsK
K30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0SVBob25lSXNFbGVtZW50Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlwaG9uZUlzRWxlbWVu
dCgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0SVBob25lRWxlbWVudFRleHRQb3NpdGlv
bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
PmlwaG9uZUVsZW1lbnRUZXh0UG9zaXRpb24oKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdl
dElQaG9uZUVsZW1lbnRUZXh0TGVuZ3RoQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0
b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXBob25lRWxlbWVudFRleHRMZW5ndGgoKSk7Cit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIC8vIEltcGxlbWVudGF0aW9uCiAKIC8vIFVuc3Vw
cG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuCi0jaWYgIVBMQVRGT1JNKE1BQykK
KyNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCiBKU1N0cmluZ1JlZiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzcGVhaygpIHsgcmV0dXJuIDA7IH0KIEpTU3RyaW5nUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkgeyByZXR1cm4gMDsgfQog
SlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlvbihpbnQs
IGludCkgeyByZXR1cm4gMDsgfQpAQCAtMTExNSw2ICsxMjI2LDE3IEBACiAgICAgICAgIHsgInNl
bGVjdGVkQ2hpbGRyZW5Db3VudCIsIHNlbGVjdGVkQ2hpbGRyZW5Db3VudENhbGxiYWNrLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImhvcml6b250YWxTY3JvbGxiYXIiLCBob3Jpem9udGFsU2Nyb2xs
YmFyQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidmVydGljYWxTY3JvbGxiYXIiLCB2
ZXJ0aWNhbFNjcm9sbGJhckNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgICAgICB7ICJpcGhvbmVMYWJlbCIsIGdldElQaG9uZUxhYmVsQ2FsbGJhY2ssIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAiaXBob25lSGludCIsIGdldElQaG9uZUhpbnRDYWxsYmFjaywgMCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgICAgICB7ICJpcGhvbmVWYWx1ZSIsIGdldElQaG9uZVZhbHVlQ2FsbGJhY2ssIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAiaXBob25lSWRlbnRpZmllciIsIGdldElQaG9uZUlkZW50aWZp
ZXJDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpcGhvbmVUcmFpdHMiLCBnZXRJUGhv
bmVUcmFpdHNDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpcGhvbmVJc0VsZW1lbnQi
LCBnZXRJUGhvbmVJc0VsZW1lbnRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpcGhv
bmVFbGVtZW50VGV4dFBvc2l0aW9uIiwgZ2V0SVBob25lRWxlbWVudFRleHRQb3NpdGlvbkNhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImlwaG9uZUVsZW1lbnRUZXh0TGVuZ3RoIiwgZ2V0
SVBob25lRWxlbWVudFRleHRMZW5ndGhDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
dHJpbmdGb3JTZWxlY3Rpb24iLCBzdHJpbmdGb3JTZWxlY3Rpb25DYWxsYmFjaywgMCwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9
OwogCkBAIC0xMTkyLDYgKzEzMTQsMTUgQEAKICAgICAgICAgeyAic2V0U2VsZWN0ZWRDaGlsZCIs
IHNldFNlbGVjdGVkQ2hpbGRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZWxlY3RlZENo
aWxkQXRJbmRleCIsIHNlbGVjdGVkQ2hpbGRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2Nyb2xsVG9NYWtlVmlzaWJsZSIsIHNjcm9sbFRvTWFrZVZpc2libGVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgeyAibGlua2VkRWxlbWVudCIsIGxp
bmtlZEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJoZWFkZXJFbGVtZW50QXRJ
bmRleCIsIGhlYWRlckVsZW1lbnRBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
ZWxlbWVudHNGb3JSYW5nZSIsIGVsZW1lbnRzRm9yUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJpbmNyZWFzZVRleHRTZWxlY3Rpb24iLCBpbmNyZWFzZVRleHRTZWxlY3Rpb25DYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkZWNyZWFzZVRleHRTZWxlY3Rpb24iLCBkZWNyZWFz
ZVRleHRTZWxlY3Rpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJhc3Npc3RpdmVUZWNo
bm9sb2d5U2ltdWxhdGVkRm9jdXMiLCBhc3Npc3RpdmVUZWNobm9sb2d5U2ltdWxhdGVkRm9jdXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICAKKyNlbmRpZgogICAgICAgICB7IDAsIDAsIDAgfQog
ICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgJKHJldmlzaW9uIDE0NDQ2MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCwxNCBAQAog
ICAgIEpTU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlv
biwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBib29sIGF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlz
c3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1Jl
ZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQpOwotICAgIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICB2b2lkIGVsZW1lbnRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cyk7Cisg
ICAgSlNTdHJpbmdSZWYgc3RyaW5nRm9yU2VsZWN0aW9uKCk7CisgICAgdm9pZCBpbmNyZWFzZVRl
eHRTZWxlY3Rpb24oKTsKKyAgICB2b2lkIGRlY3JlYXNlVGV4dFNlbGVjdGlvbigpOworICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgbGlua2VkRWxlbWVudCgpOworI2VuZGlmCisKICAgICAvLyBU
YWJsZS1zcGVjaWZpYwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2VsbEZvckNvbHVtbkFu
ZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CiAKQEAgLTIzNCw2ICsyNDEsMjAg
QEAKICAgICAvLyBNYWtlIHN1cmUgeW91IGNhbGwgcmVtb3ZlLCBiZWNhdXNlIHlvdSBjYW4ndCBy
ZWx5IG9uIG9iamVjdHMgYmVpbmcgZGVhbGxvY2F0ZWQgaW4gYSB0aW1lbHkgZmFzaGlvbi4KICAg
ICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7CiAgICAgCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIEpTU3RyaW5nUmVmIGlwaG9uZUxhYmVsKCk7CisgICAgSlNTdHJpbmdSZWYgaXBo
b25lVmFsdWUoKTsKKyAgICBKU1N0cmluZ1JlZiBpcGhvbmVUcmFpdHMoKTsKKyAgICBKU1N0cmlu
Z1JlZiBpcGhvbmVIaW50KCk7CisgICAgSlNTdHJpbmdSZWYgaXBob25lSWRlbnRpZmllcigpOwor
ICAgIGJvb2wgaXBob25lSXNFbGVtZW50KCk7CisgICAgaW50IGlwaG9uZUVsZW1lbnRUZXh0UG9z
aXRpb24oKTsKKyAgICBpbnQgaXBob25lRWxlbWVudFRleHRMZW5ndGgoKTsKKyAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGhlYWRlckVsZW1lbnRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICAvLyBU
aGlzIHdpbGwgc2ltdWxhdGUgdGhlIGFjY2Vzc2liaWxpdHlEaWRCZWNvbWVGb2N1c2VkIEFQSSBp
biBVSUtpdC4KKyAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lTaW11bGF0ZWRGb2N1cygpOwor
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgSlNDbGFzc1Jl
ZiBnZXRKU0NsYXNzKCk7CiAgICAgUGxhdGZvcm1VSUVsZW1lbnQgbV9lbGVtZW50OwpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDQ0NjMpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDggQEAKIAkJQThCOTFCRkYwQ0Y1MjJCNDAwOEY5MUZG
IC8qIENoZWNrZWRNYWxsb2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QjkxQkY5MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmggKi87
IH07CiAJCUE4RDc5Q0VBMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFn
Z2luZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThENzlDRTgwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5n
U291cmNlLmggKi87IH07CiAJCUE4RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVy
VHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVl
RmlsZURyYWdnaW5nU291cmNlLm0gKi87IH07CisJCUFBNUExNUVGMTZFMTVDRDAwMEY3QzU2MSAv
KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNUExNUVEMTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcklPUy5tbSAqLzsgfTsKKwkJQUE1QTE1RjAxNkUxNUNEMDAwRjdDNTYx
IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTVBMTVFRTE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbSAqLzsgfTsKIAkJQUU4MjU5RjMwOEQyMjQ2MzAwMDUwN0FC
IC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRTgyNTdFRjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZyYW1ld29y
ayAqLzsgfTsKIAkJQUU4MjU5RjQwOEQyMjQ2MzAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRTgyNTdF
RjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZyYW1ld29yayAqLzsgfTsKIAkJQjVBNzUyQTIw
OEFGNUQxRjAwMTM4RTQ1IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNzUyQTEwOEFGNUQxRjAwMTM4RTQ1
IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMzE5LDYgKzMyMSw4IEBACiAJCUE4
QjkxQkY5MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IENoZWNrZWRNYWxsb2MuaDsgcGF0aCA9IG1hYy9DaGVja2VkTWFs
bG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RDc5Q0U4MEZDMjhCMkMwMDRB
QzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyog
RHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE1QTE1RUQxNkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW07IHBhdGggPSBpb3MvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFB
NUExNUVFMTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbTsgcGF0aCA9IGlvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTdGMTBDMjBDQjNDMTAzMDAwM0JEQzkgLyogQUhF
TV9fX18uVFRGICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gInF0L2ZvbnRzL0FIRU1fX19f
LlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFFODI1N0VGMDhEMjIzODkwMDA1
MDdBQiAvKiBDYXJib24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1
IC8qIEltYWdlRGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gSW1hZ2VEaWZmOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NDk4LDYgKzUwMiw3IEBACiAJCQkJQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0gKi8sCiAJCQkJQkNEMDhCMzkwRTEwNTdFRjAwQTdEMEMxIC8qIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQ0QwOEE1ODBFMTA0OTZCMDBBN0Qw
QzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQlBQTVBMTVFRDE2RTE1Q0Qw
MDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gKi8sCiAJCQkJQkNEMDhC
NzAwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovLAog
CQkJCTgwMDQ1QUVCMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5oICovLAogCQkJCTgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLywKQEAgLTUwNiw2ICs1MTEsNyBAQAogCQkJCTI5
Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAq
LywKIAkJCQlCQzBFMjRERjBFMkQ5NDUxMDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgKi8sCiAJCQkJQkMwRTI0REUwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCAqLywKKwkJCQlBQTVBMTVFRTE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbSAqLywKIAkJCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzIgLyog
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLywKIAkJCQlCQ0ExOEIzNjBDOUIwMjE5MDAx
MTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLmggKi8sCiAJCQkJQkNBMThCMzcwQzlCMDIx
OTAwMTE0MzY5IC8qIEFwcGxlU2NyaXB0Q29udHJvbGxlci5tICovLApAQCAtODY0LDYgKzg3MCw4
IEBACiAvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAkJMDhGQjc3OTNGRTg0MTU1REMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJ
CWF0dHJpYnV0ZXMgPSB7CisJCQl9OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMy
OUMzMDg5MDJDNkQwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFBy
b2plY3QgIkR1bXBSZW5kZXJUcmVlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhj
b2RlIDIuNCI7CiAJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CkBAIC05NzEsNiArOTc5
LDcgQEAKIAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQzNjkgLyogRnJhbWVMb2FkRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2QzY1MDBDOThFOUMwMDBBQzA2M0UgLyogR0NDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjIzMEM5QjAxNEIwMDExNDM2OSAv
KiBHQ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBQTVBMTVFRjE2RTE1Q0Qw
MDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTg1RjZCMjEwNzE0RTA3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM0NzQxNDEwRDAzOEE1NzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJl
YWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUI3ODE2NTExQUYzMUI3MDA3
RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTk4
Myw2ICs5OTIsNyBAQAogCQkJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBT
dXBwb3J0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMjg0RDYwQ0ZBODNEMTAwN0U1MzNF
IC8qIFBpeGVsRHVtcFN1cHBvcnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2NjBD
OUIwOEMyMDAxMTQzNjkgLyogUG9saWN5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQlB
QTVBMTVGMDE2RTE1Q0QwMDBGN0M1NjEgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDQTE4QjY4MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNBNTYyNkNCMTMxQ0EwMkEwMDJCRTZE
OSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMx
REEwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVySU9TLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dl
YkhUTUxWaWV3UHJpdmF0ZS5oPgorCitAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChQcml2YXRlKQor
LSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQ7CitAZW5kCisKK0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCit7Cit9CisKK0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjp+QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQoreworfQorCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2lu
dChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpm
b2N1c2VkRWxlbWVudCgpCit7CisgICAgaWQgd2ViRG9jdW1lbnRWaWV3ID0gW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOworICAgIGlmIChbd2ViRG9jdW1lbnRWaWV3IGlzS2lu
ZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFsoV2ViSFRNTFZpZXcgKil3ZWJEb2N1bWVudFZpZXcgYWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnRdKTsKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAgIC8v
IEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21lIGNhY2hpbmcgaGVyZS4KKyAgICBpZCB3ZWJEb2N1bWVu
dFZpZXcgPSBbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CisgICAgaWYgKFt3
ZWJEb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoWyhXZWJIVE1MVmlldyAqKXdlYkRvY3Vt
ZW50VmlldyBhY2Nlc3NpYmlsaXR5Um9vdEVsZW1lbnRdKTsKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIGlkIGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChpZCBvYmosIE5TU3RyaW5nICppZEF0
dHJpYnV0ZSkKK3sKKyAgICBpZCBvYmpJZEF0dHJpYnV0ZSA9IFtvYmogYWNjZXNzaWJpbGl0eUlk
ZW50aWZpZXJdOworICAgIGlmIChbb2JqSWRBdHRyaWJ1dGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSAmJiBbb2JqSWRBdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmlkQXR0cmlidXRl
XSkKKyAgICAgICAgcmV0dXJuIG9iajsKKyAgICAKKyAgICBOU1VJbnRlZ2VyIGNoaWxkcmVuQ291
bnQgPSBbb2JqIGFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnRdOworICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNoaWxkcmVuQ291bnQ7ICsraSkgeworICAgICAgICBpZCByZXN1bHQgPSBm
aW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQoW29iaiBhY2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXg6
aV0sIGlkQXR0cmlidXRlKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
SlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGVSZWYpCit7CisgICAgaWQgd2ViRG9jdW1lbnRWaWV3ID0g
W1ttYWluRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOworICAgIGlmICghW3dlYkRvY3Vt
ZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICBpZCByb290ID0gWyhXZWJIVE1MVmlldyAqKXdlYkRvY3VtZW50Vmll
dyBhY2Nlc3NpYmlsaXR5Um9vdEVsZW1lbnRdOworICAgIE5TU3RyaW5nICppZEF0dHJpYnV0ZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6aWRBdHRyaWJ1dGVSZWZdOworICAgIGlk
IHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChyb290LCBpZEF0dHJpYnV0ZSk7Cisg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQocmVz
dWx0KTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6c2V0TG9nRm9jdXNFdmVudHMoYm9vbCkKK3sKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6c2V0TG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMoYm9vbCkKK3sKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0TG9nVmFsdWVDaGFuZ2VFdmVudHMoYm9vbCkK
K3sKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0TG9nQWNjZXNzaWJpbGl0
eUV2ZW50cyhib29sKQoreworfQorCitib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihKU09iamVjdFJlZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3Zl
Tm90aWZpY2F0aW9uTGlzdGVuZXIoKQoreworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMu
aCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV2ViSFRNTFZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0lu
dGVybmFsLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisKK3R5
cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5T
U3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOworCitBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQp
CisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKKyAgICBbbV9lbGVtZW50IHJldGFpbl07Cit9
CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3Qg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCisgICAgOiBtX2VsZW1lbnQob3RoZXIubV9l
bGVtZW50KQoreworICAgIFttX2VsZW1lbnQgcmV0YWluXTsKK30KKworQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIFttX2VsZW1lbnQgcmVs
ZWFzZV07Cit9CisKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFVJQWNjZXNzaWJpbGl0eUhpZGRlbikK
Ky0gKGlkKWFjY2Vzc2liaWxpdHlIaXRUZXN0OihDR1BvaW50KXBvaW50OworLSAoaWQpYWNjZXNz
aWJpbGl0eUxpbmtlZEVsZW1lbnQ7CistIChOU1JhbmdlKWFjY2Vzc2liaWxpdHlDb2x1bW5SYW5n
ZTsKKy0gKE5TUmFuZ2UpYWNjZXNzaWJpbGl0eVJvd1JhbmdlOworLSAoaWQpYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JSb3c6KE5TSW50ZWdlcilyb3cgYW5kQ29sdW1uOihOU0ludGVnZXIpY29sdW1u
OworLSAoTlNVUkwgKilhY2Nlc3NpYmlsaXR5VVJMOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxp
dHlIZWFkZXJFbGVtZW50czsKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVy
VmFsdWU7CistIChOU1N0cmluZyAqKXN0cmluZ0ZvclJhbmdlOihOU1JhbmdlKXJhbmdlOworLSAo
TlNBcnJheSAqKWVsZW1lbnRzRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2U7CistIChOU1N0cmluZyAq
KXNlbGVjdGlvblJhbmdlU3RyaW5nOworLSAodm9pZClhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0
aW9uOihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkgaW5jcmVhc2U6KEJPT0wp
aW5jcmVhc2U7CistICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRQb3N0ZWROb3RpZmljYXRpb25DYWxs
YmFjazooQVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaylmdW5jdGlvbiB3aXRoQ29udGV4dDoo
dm9pZCopY29udGV4dDsKK0BlbmQKKworc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHZhbHVlKQorewor
ICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIoW2F0dHJpYnV0ZSBsZW5ndGhdKTsKKyAgICBbYXR0
cmlidXRlIGdldENoYXJhY3RlcnM6YnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVuZCgn
OicpOworICAgIGJ1ZmZlci5hcHBlbmQoJyAnKTsKKyAgICAKKyAgICBWZWN0b3I8VW5pQ2hhcj4g
dmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOworICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZh
bHVlQnVmZmVyLmRhdGEoKV07CisgICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAg
CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7Cit9CisKKyNwcmFnbWEgbWFyayBpUGhvbmUgQXR0cmlidXRlcworCitK
U1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppcGhvbmVMYWJlbCgpCit7CisgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWExhYmVsIiwgW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5TGFiZWxdKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXBob25lSGludCgpCit7CisgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUoQCJBWEhpbnQiLCBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlIaW50XSk7Cit9CisK
K0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlwaG9uZVZhbHVlKCkKK3sKKyAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlWYWx1ZV0pOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppcGhvbmVJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYSWRlbnRpZmllciIsIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUlkZW50aWZpZXJdKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXBob25lVHJhaXRzKCkKK3sKKyAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1
ZShAIkFYVHJhaXRzIiwgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcXUiLCBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlUcmFpdHNdXSk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXBob25lSXNFbGVtZW50KCkKK3sKKyAgICByZXR1cm4gW21fZWxlbWVudCBpc0FjY2Vz
c2liaWxpdHlFbGVtZW50XTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlwaG9u
ZUVsZW1lbnRUZXh0UG9zaXRpb24oKQoreworICAgIE5TUmFuZ2UgcmFuZ2UgPSBbW21fZWxlbWVu
dCB2YWx1ZUZvcktleTpAImVsZW1lbnRUZXh0UmFuZ2UiXSByYW5nZVZhbHVlXTsKKyAgICByZXR1
cm4gcmFuZ2UubG9jYXRpb247Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppcGhv
bmVFbGVtZW50VGV4dExlbmd0aCgpCit7CisgICAgTlNSYW5nZSByYW5nZSA9IFtbbV9lbGVtZW50
IHZhbHVlRm9yS2V5OkAiZWxlbWVudFRleHRSYW5nZSJdIHJhbmdlVmFsdWVdOworICAgIHJldHVy
biByYW5nZS5sZW5ndGg7ICAgIAorfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1cmwoKQoreworICAgIE5TVVJMICp1cmwgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlV
UkxdOworICAgIHJldHVybiBbW3VybCBhYnNvbHV0ZVN0cmluZ10gY3JlYXRlSlNTdHJpbmdSZWZd
OyAgICAKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQoreworICAgIENH
UmVjdCBmcmFtZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUZyYW1lXTsKKyAgICByZXR1cm4g
ZnJhbWUub3JpZ2luLng7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkK
K3sKKyAgICBDR1JlY3QgZnJhbWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlGcmFtZV07Cisg
ICAgcmV0dXJuIGZyYW1lLm9yaWdpbi55OworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6d2lkdGgoKQoreworICAgIENHUmVjdCBmcmFtZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUZyYW1lXTsKKyAgICByZXR1cm4gZnJhbWUuc2l6ZS53aWR0aDsKK30KKworZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCgpCit7CisgICAgQ0dSZWN0IGZyYW1lID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5RnJhbWVdOworICAgIHJldHVybiBmcmFtZS5zaXplLmhlaWdo
dDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKK3sK
KyAgICBDR1BvaW50IGNlbnRlclBvaW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QWN0aXZh
dGlvblBvaW50XTsKKyAgICByZXR1cm4gY2VudGVyUG9pbnQueDsKK30KKworZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkKK3sKKyAgICBDR1BvaW50IGNlbnRlclBv
aW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QWN0aXZhdGlvblBvaW50XTsKKyAgICByZXR1
cm4gY2VudGVyUG9pbnQueTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRD
aGlsZHJlbihWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCit7
CisgICAgTlNJbnRlZ2VyIGNoaWxkQ291bnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlFbGVt
ZW50Q291bnRdOworICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgY2hpbGRDb3VudDsgKytr
KQorICAgICAgICBlbGVtZW50VmVjdG9yLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRBdEluZGV4OmtdKSk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50VmVjdG9yLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIE5TVUludGVnZXIgY2hpbGRDb3VudCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUVsZW1lbnRDb3VudF07CisgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSBsb2NhdGlv
bjsgayA8IGNoaWxkQ291bnQgJiYgayA8IChsb2NhdGlvbitsZW5ndGgpOyArK2spCisgICAgICAg
IGVsZW1lbnRWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5RWxlbWVudEF0SW5kZXg6a10pKTsgICAgCit9CisKK2ludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAgICBWZWN0b3I8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIAor
ICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQorewor
ICAgIGlkIGVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ok5TTWFrZVBv
aW50KHgsIHkpXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoZWxlbWVudCk7IAorfQorCit1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCit7CisgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNoaWxkcmVuOwor
ICAgIGdldENoaWxkcmVuV2l0aFJhbmdlKGNoaWxkcmVuLCBpbmRleCwgMSk7CisgICAgCisgICAg
aWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5bMF07Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWFkZXJFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBO
U0FycmF5ICpoZWFkZXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGVhZGVyRWxlbWVudHNd
OworICAgIGlmIChpbmRleCA8IFtoZWFkZXJzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIFtoZWFk
ZXJzIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgIAorICAgIHJldHVybiAwOworfQorCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZEVsZW1lbnQo
KQoreworICAgIGlkIGxpbmtlZEVsZW1lbnQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlMaW5r
ZWRFbGVtZW50XTsKKyAgICBpZiAobGlua2VkRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQobGlua2VkRWxlbWVudCk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9
CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2Vk
VUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyZW50RWxlbWVudCgpCit7CisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUNvbnRhaW5lcl07CisgICAgaWYgKGFjY2Vzc2liaWxp
dHlPYmplY3QpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2li
aWxpdHlPYmplY3QpOworICAgIAorICAgIHJldHVybiBuaWw7Cit9CisKK0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3coKQoreworICAg
IHJldHVybiAwOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4
dFNlbGVjdGlvbigpCit7CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0
aW9uOldlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOllFU107Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCkKK3sKKyAg
ICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246V2ViQ29yZTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9dOyAgICAKK30KKworSlNTdHJpbmdSZWYgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yU2VsZWN0aW9uKCkgCit7IAorICAgIE5TU3RyaW5n
ICpzdHJpbmdGb3JSYW5nZSA9IFttX2VsZW1lbnQgc2VsZWN0aW9uUmFuZ2VTdHJpbmddOworICAg
IGlmICghc3RyaW5nRm9yUmFuZ2UpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVy
biBbc3RyaW5nRm9yUmFuZ2UgY3JlYXRlSlNTdHJpbmdSZWZdOworfQorCitKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwg
dW5zaWduZWQgbGVuZ3RoKSAKK3sgCisgICAgTlNTdHJpbmcgKnN0cmluZ0ZvclJhbmdlID0gW21f
ZWxlbWVudCBzdHJpbmdGb3JSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKV07Cisg
ICAgaWYgKCFzdHJpbmdGb3JSYW5nZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0
dXJuIFtzdHJpbmdGb3JSYW5nZSBjcmVhdGVKU1N0cmluZ1JlZl07Cit9CisKK0pTU3RyaW5nUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25l
ZCwgdW5zaWduZWQpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmlu
Z1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50c0ZvclJhbmdl
KHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiYgZWxlbWVudHMpCit7IAorICAgIE5TQXJyYXkgKmVsZW1lbnRzRm9yUmFuZ2Ug
PSBbbV9lbGVtZW50IGVsZW1lbnRzRm9yUmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24sIGxlbmd0
aCldOworICAgIGZvciAoaWQgb2JqZWN0IGluIGVsZW1lbnRzRm9yUmFuZ2UpIHsKKyAgICAgICAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50ID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudChv
YmplY3QpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgfQorfQorCisj
cHJhZ21hIG1hcmsgVW51c2VkCisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlu
a2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0
b3IpCit7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5r
cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRWZWN0b3IpCit7Cit9CisK
K0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJ
RWxlbWVudHMoKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCAwKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mQ2hpbGRyZW4oKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
bGxBdHRyaWJ1dGVzKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAwKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIGlmIChKU1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKGF0dHJpYnV0ZSwgIkFYUGxhY2Vob2xkZXJWYWx1ZSIpKQor
ICAgICAgICByZXR1cm4gW1ttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVd
IGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICAKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1By
ZXNzQWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3Jl
bWVudEFjdGlvblN1cHBvcnRlZCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJp
YnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVk
QXR0cmlidXRlTmFtZXMoKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
KCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30K
KworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCit7CisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTU3RyaW5n
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCit7CisgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTU3RyaW5nUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOworfSAgICAKKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omxhbmd1YWdlKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQo
KSBjb25zdAoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWluVmFsdWUoKQoreworICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bWF4VmFsdWUoKQoreworICAgIHJldHVybiAwLjA7Cit9CisKK0pTU3RyaW5n
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQoreworICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitpbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkKK3sKKyAgICByZXR1
cm4gLTE7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNS
ZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlbGVjdGVkKCkgY29uc3QKK3sKKyAgICBVSUFjY2Vzc2liaWxpdHlUcmFpdHMgdHJhaXRz
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5VHJhaXRzXTsKKyAgICByZXR1cm4gKHRyYWl0cyAm
IFVJQWNjZXNzaWJpbGl0eVRyYWl0U2VsZWN0ZWQpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNh
bExldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4
KQoreworICAgIHJldHVybiAtMTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKwor
SlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVh
ZGVycygpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
Cit9CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d0hlYWRlcnMoKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZDb2x1bW5zKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mUm93cygpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Cit9CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZlZpc2libGVDZWxscygpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7Cit9CisKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZkhlYWRlcigpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dDb3VudCgpCit7
CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1u
Q291bnQoKQoreworICAgIHJldHVybiAtMTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgcmV0dXJuIC0xOworfQorCitKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJh
bmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5Um93UmFuZ2VdOworICAgIE5TTXV0YWJsZVN0
cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAInslbHUsICVsdX0iLCAodW5zaWduZWQgbG9uZylyYW5nZS5sb2NhdGlvbiwgKHVuc2lnbmVk
IGxvbmcpcmFuZ2UubGVuZ3RoXTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRl
SlNTdHJpbmdSZWZdOworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5JbmRleFJhbmdlKCkKK3sKKyAgICBOU1JhbmdlIHJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5Q29sdW1uUmFuZ2VdOworICAgIE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlw
dGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCAo
dW5zaWduZWQgbG9uZylyYW5nZS5sb2NhdGlvbiwgKHVuc2lnbmVkIGxvbmcpcmFuZ2UubGVuZ3Ro
XTsKKyAgICByZXR1cm4gW3JhbmdlRGVzY3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOyAgICAK
K30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxs
Rm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQoreworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JSb3c6cm93IGFuZENvbHVtbjpjb2xdKTsKK30KKworSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQoreworICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFzc2lzdGl2ZVRlY2hub2xvZ3lTaW11bGF0ZWRGb2N1cygpCit7CisgICAgW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5RWxlbWVudERpZEJlY29tZUZvY3VzZWRdOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9u
LCB1bnNpZ25lZCBsZW5ndGgpCit7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5jcmVtZW50KCkKK3sKKyAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmNyZW1lbnRdOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCit7CisgICAgW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5RGVjcmVtZW50XTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzaG93TWVudSgpCit7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cHJlc3MoKQoreworfQorCitKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
Y2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNTdHJp
bmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCit7CisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTU3RyaW5n
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKK3sKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworc3RhdGljIHZvaWQgX2Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25DYWxsYmFjayhpZCBlbGVtZW50LCBOU1N0cmluZyogbm90
aWZpY2F0aW9uLCB2b2lkKiBjb250ZXh0KQoreworICAgIGlmICghY29udGV4dCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhY2sgPSBzdGF0aWNf
Y2FzdDxKU09iamVjdFJlZj4oY29udGV4dCk7CisgICAgCisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGpzTm90aWZpY2F0aW9uKEFkb3B0LCBbbm90aWZpY2F0aW9uIGNyZWF0ZUpTU3RyaW5n
UmVmXSk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFttYWlu
RnJhbWUgZ2xvYmFsQ29udGV4dF0sIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKFttYWluRnJhbWUgZ2xvYmFsQ29udGV4dF0sIGZ1bmN0aW9uQ2FsbGJh
Y2ssIE5VTEwsIDEsICZhcmd1bWVudCwgTlVMTCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxs
YmFjaykKK3sKKyAgICBpZiAoIWZ1bmN0aW9uQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBmdW5jdGlvbkNh
bGxiYWNrOworICAgIFtwbGF0Zm9ybVVJRWxlbWVudCgpIGFjY2Vzc2liaWxpdHlTZXRQb3N0ZWRO
b3RpZmljYXRpb25DYWxsYmFjazpfYWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkNhbGxiYWNrIHdp
dGhDb250ZXh0OnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjayldOworICAgIHJldHVybiB0cnVlOyAgICAKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7CisgICAgbV9ub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrID0gMDsKKyAgICBbcGxhdGZvcm1VSUVsZW1lbnQoKSBhY2Nl
c3NpYmlsaXR5U2V0UG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2s6bmlsIHdpdGhDb250ZXh0Om5p
bF07Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2Zm
U2NyZWVuKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFwc2VkKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
YWtlRm9jdXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVtb3ZlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9v
bCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2Vh
cmNoVGV4dCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biAwOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>