<?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>118212</bug_id>
          
          <creation_ts>2013-06-28 23:08:10 -0700</creation_ts>
          <short_desc>Adopt is/toHTMLOptionElement for code cleanup</short_desc>
          <delta_ts>2013-06-29 01:19:23 -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>WebCore Misc.</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="Kangil Han">kangil.han</reporter>
          <assigned_to name="Kangil Han">kangil.han</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>904837</commentid>
    <comment_count>0</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-06-28 23:08:10 -0700</bug_when>
    <thetext>Adopt is/toHTMLOptionElement for code cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904838</commentid>
    <comment_count>1</comment_count>
      <attachid>205763</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-06-28 23:16:09 -0700</bug_when>
    <thetext>Created attachment 205763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904840</commentid>
    <comment_count>2</comment_count>
      <attachid>205763</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-06-28 23:43:17 -0700</bug_when>
    <thetext>Comment on attachment 205763
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=205763&amp;action=review

r=me

&gt; Source/WebCore/html/HTMLCollection.cpp:227
&gt;          if (element-&gt;hasLocalName(optionTag)) {

I wonder if we could use isHTMLOptionElement() here instead of just checking the localName.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:244
&gt; +        if (items[i]-&gt;hasLocalName(optionTag)) {

Ditto.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:265
&gt;          if (items[i]-&gt;hasLocalName(optionTag)) {

Ditto.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:979
&gt;          if (!items[i]-&gt;hasLocalName(optionTag))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904841</commentid>
    <comment_count>3</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2013-06-29 00:14:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 205763 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205763&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/html/HTMLCollection.cpp:227
&gt; &gt;          if (element-&gt;hasLocalName(optionTag)) {
&gt; 
&gt; I wonder if we could use isHTMLOptionElement() here instead of just checking the localName.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLSelectElement.cpp:244
&gt; &gt; +        if (items[i]-&gt;hasLocalName(optionTag)) {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLSelectElement.cpp:265
&gt; &gt;          if (items[i]-&gt;hasLocalName(optionTag)) {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLSelectElement.cpp:979
&gt; &gt;          if (!items[i]-&gt;hasLocalName(optionTag))
&gt; 
&gt; Ditto.

Agreed.
IMHO, I can replace hasLocalName(tag) stuff with isFooElement in another patch when adoption is/toFooElement is completed. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904845</commentid>
    <comment_count>4</comment_count>
      <attachid>205763</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-29 01:19:21 -0700</bug_when>
    <thetext>Comment on attachment 205763
Patch

Clearing flags on attachment: 205763

Committed r152208: &lt;http://trac.webkit.org/changeset/152208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904846</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-29 01:19:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205763</attachid>
            <date>2013-06-28 23:16:09 -0700</date>
            <delta_ts>2013-06-29 01:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118212-20130629151417.patch</filename>
            <type>text/plain</type>
            <size>48077</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZhMGE4MmY1MGVjMDlk
MmY0NGUzZjU3NjAwNDIzZmU2MTIwYmM1MS4uYjcwYTdmNmI5MGFkZWY2NTBlNDkyMzQ3YjgzM2Fk
YTFjYTJjMjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkxIEBACiAyMDEzLTA2LTI4ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAorICAgICAgICBBZG9wdCBpcy90b0hU
TUxPcHRpb25FbGVtZW50IGZvciBjb2RlIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODIxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGVuaGFuY2UgcmVhZGFiaWxpdHksIHRoaXMgcGF0
Y2ggYWRvcHRzIGlzL3RvSFRNTE9wdGlvbkVsZW1lbnQuCisgICAgICAgIFRoaXMgYWxzbyBoZWxw
cyBvdXQgdG8gcmVkdWNlIGR1cGxpY2F0ZWQgdXNlIG9mIHN0YXRpY19jYXN0LgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlY3RlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjpsaXN0Qm94T3B0aW9uUGFyZW50Tm9kZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpzZXRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNldFNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c3RyaW5nVmFsdWUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0T3B0aW9u
QWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUp
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc01hdGNoaW5nRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudDo6aW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTE9wdGlvbkVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9IVE1MT3B0aW9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjphZGQpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFZhbGlkSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9u
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0
SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdE9wdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0
aG91dFZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNh
dmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpzZWFyY2hPcHRpb25zRm9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6
OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6Omxhc3RTZWxlY3RlZExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6b3B0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6bGVuZ3RoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNJbXBsaWVkRW5kVGFnKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxOYW1lczo6aXNTZWxlY3RTY29wZU1hcmtlcik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNZW51TGlzdDo6c2V0VGV4dEZyb21PcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWVudUxpc3Q6Oml0ZW1UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0
OjppdGVtSXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVt
SXNTZWxlY3RlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKToKKworMjAxMy0wNi0y
OCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKICAgICAgICAgQWRvcHQg
aXMvdG9IVE1MSW1hZ2VFbGVtZW50IGZvciBjb2RlIGNsZWFudXAKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODE4MgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZwppbmRleCAwNTM1ZDExNWNkYWJkZGRlNTc3Zjg1NjUzNzgyM2Y0MDFmYjZmZTIz
Li5lNGQ2YmUzMWVhNzc5ZWFkM2NmZTMyNTc4MDQwNjNlODIxNmQzM2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMy0wNi0yOCAgS2FuZ2lsIEhh
biAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKKyAgICAgICAgQWRvcHQgaXMvdG9IVE1MT3B0
aW9uRWxlbWVudCBmb3IgY29kZSBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUbyBlbmhhbmNlIHJlYWRhYmlsaXR5LCB0aGlzIHBhdGNoIGFk
b3B0cyBpcy90b0hUTUxPcHRpb25FbGVtZW50LgorICAgICAgICBUaGlzIGFsc28gaGVscHMgb3V0
IHRvIHJlZHVjZSBkdXBsaWNhdGVkIHVzZSBvZiBzdGF0aWNfY2FzdC4KKworICAgICAgICAqIFdl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6SW5wdXRIYW5kbGVyOjp3aWxsT3BlblBvcHVwRm9yTm9kZSk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZGlkTm9kZU9wZW5Qb3B1cCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6b3BlblNlbGVjdFBvcHVwKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRQb3B1cExpc3RJbmRleGVz
KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6U2VsZWN0UG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xv
c2VQb3B1cCk6CisKKzIwMTMtMDYtMjggIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcu
Y29tPgorCiAgICAgICAgIEFkb3B0IGlzL3RvSFRNTEltYWdlRWxlbWVudCBmb3IgY29kZSBjbGVh
bnVwCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgx
ODIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDhkY2VjMWI3YjEyYWI2N2Q4MDBmMTdkZjY2MGU5YWRk
ODFmNDQ4ZGYuLjI0Njk2NzcwYTg0NzAxYmI2Yjg3Yzc2ZmM2NWNlNDgzZTUwZjBmNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wNi0yOCAgS2FuZ2lsIEhhbiAgPGth
bmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRvcHQgaXMvdG9IVE1MT3B0aW9uRWxl
bWVudCBmb3IgY29kZSBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUbyBlbmhhbmNlIHJlYWRhYmlsaXR5LCB0aGlzIHBhdGNoIGFkb3B0cyBp
cy90b0hUTUxPcHRpb25FbGVtZW50LgorICAgICAgICBUaGlzIGFsc28gaGVscHMgb3V0IHRvIHJl
ZHVjZSBkdXBsaWNhdGVkIHVzZSBvZiBzdGF0aWNfY2FzdC4KKworICAgICAgICAqIERPTUNvcmVD
bGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAg
ICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6
dGV4dCk6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwpOgorCiAyMDEzLTA2
LTI4ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtX
aW5DYWlyb10gQ29tcGlsYXRpb24gZXJyb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCmluZGV4IGQ3
MDkzMmMzMDNiYjM0ZWNkZWFmYzA3NzQxMjIzYmE3M2JkMjQ5OWUuLmI5N2VkYWM3MWZkNmI3Nzgw
OGI1MzU1NGUyOTVmOGYyMmEzM2FmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCkBAIC04Mywx
MCArODMsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlY3RlZCgp
IGNvbnN0CiAgICAgaWYgKCFtX29wdGlvbkVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghbV9vcHRpb25FbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAg
aWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihtX29wdGlvbkVsZW1lbnQpLT5zZWxlY3RlZCgpOworCisgICAgcmV0dXJuIHRvSFRNTE9wdGlv
bkVsZW1lbnQobV9vcHRpb25FbGVtZW50KS0+c2VsZWN0ZWQoKTsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0CkBAIC0x
MzYsNyArMTM2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y2FuU2V0U2Vs
ZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFtX29wdGlvbkVsZW1lbnQtPmhhc1RhZ05h
bWUob3B0aW9uVGFnKSkKKyAgICBpZiAoIWlzSFRNTE9wdGlvbkVsZW1lbnQobV9vcHRpb25FbGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChtX29wdGlvbkVsZW1l
bnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQpAQCAtMTU4LDggKzE1OCw4IEBAIFN0cmluZyBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgIGlmICgh
YXJpYUxhYmVsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gYXJpYUxhYmVsOwogICAgIAotICAg
IGlmIChtX29wdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4obV9vcHRpb25FbGVtZW50KS0+dGV4
dCgpOworICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCisgICAg
ICAgIHJldHVybiB0b0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9uRWxlbWVudCktPnRleHQoKTsK
ICAgICAKICAgICBpZiAobV9vcHRpb25FbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQqPihtX29wdGlv
bkVsZW1lbnQpLT5ncm91cExhYmVsVGV4dCgpOwpAQCAtMjAzLDEzICsyMDMsMTMgQEAgSFRNTFNl
bGVjdEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9uUGFy
ZW50Tm9kZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29wdGlvbkVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIAotICAgIGlmIChtX29wdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9u
VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4obV9v
cHRpb25FbGVtZW50KS0+b3duZXJTZWxlY3RFbGVtZW50KCk7Ci0gICAgCisKKyAgICBpZiAoaXNI
VE1MT3B0aW9uRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgICAgICByZXR1cm4gdG9IVE1M
T3B0aW9uRWxlbWVudChtX29wdGlvbkVsZW1lbnQpLT5vd25lclNlbGVjdEVsZW1lbnQoKTsKKwog
ICAgIGlmIChtX29wdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudCo+KG1fb3B0aW9uRWxlbWVu
dCktPm93bmVyU2VsZWN0RWxlbWVudCgpOwotICAgIAorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmNwcAppbmRleCBjYzYyYTFhZjA2ZGU2NGEzOTg0ZTZjNzg3NWU0NTll
NGU4NzcwNTY0Li44OGUyZTZlZTE1NjBkYjljMDI4MjIyZDYzMjcyMmMxNGI3MDA2ZmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKCkKIAogdm9pZCBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246OnNldEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykp
OworICAgIEFTU0VSVF9BUkcoZWxlbWVudCwgaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSk7
CiAgICAgbV9lbGVtZW50ID0gZWxlbWVudDsKIH0KIApAQCAtNTQsNyArNTQsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6aXNFbmFibGVkKCkgY29uc3QKIHsKICAgICAvLyBp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSByZXR1cm5zIHRydWUgaWYgdGhlIHBhcmVudCA8c2VsZWN0
PiBlbGVtZW50IGlzIGRpc2FibGVkLAogICAgIC8vIHdoaWNoIHdlIGRvbid0IHdhbnQuCi0gICAg
cmV0dXJuICFzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fZWxlbWVudC5nZXQoKSkt
Pm93bkVsZW1lbnREaXNhYmxlZCgpOworICAgIHJldHVybiAhdG9IVE1MT3B0aW9uRWxlbWVudCht
X2VsZW1lbnQuZ2V0KCkpLT5vd25FbGVtZW50RGlzYWJsZWQoKTsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb246OmlzVmlzaWJsZSgpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc09mZlNjcmVlbigpIGNvbnN0CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjppc1NlbGVjdGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihtX2VsZW1lbnQuZ2V0
KCkpLT5zZWxlY3RlZCgpOworICAgIHJldHVybiB0b0hUTUxPcHRpb25FbGVtZW50KG1fZWxlbWVu
dC5nZXQoKSktPnNlbGVjdGVkKCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjpzZXRTZWxlY3RlZChib29sIGIpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uOjpzZXRTZWxlY3RlZChib29sIGIpCiAgICAgaWYgKCFjYW5TZXRT
ZWxlY3RlZEF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWNfY2FzdDxI
VE1MT3B0aW9uRWxlbWVudCo+KG1fZWxlbWVudC5nZXQoKSktPnNldFNlbGVjdGVkKGIpOworICAg
IHRvSFRNTE9wdGlvbkVsZW1lbnQobV9lbGVtZW50LmdldCgpKS0+c2V0U2VsZWN0ZWQoYik7CiB9
CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246Om5hbWVGb3JNU0FBKCkgY29u
c3QKQEAgLTExNCw3ICsxMTQsNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbjo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxPcHRpb25FbGVtZW50Kj4obV9lbGVtZW50LmdldCgpKS0+dGV4dCgpOworICAgIHJldHVybiB0
b0hUTUxPcHRpb25FbGVtZW50KG1fZWxlbWVudC5nZXQoKSktPnRleHQoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCAwMzNjYTQ2YzFhMjk0
NGIzOWVhZmEzNzliZDI2OTNlZWVkMTkwZmU0Li42ZTY3ZjJjZjVjMmY0ZmJjMjUzYWFiY2M4ZjZh
MmUzNmU0MDQ3MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNZW51TGlzdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJNZW51TGlzdC5oIgogCkBAIC02OSw3ICs3MCw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QK
IAogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cDo6bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogewotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aGFzVGFnTmFtZShvcHRp
b25UYWcpKQorICAgIGlmICghZWxlbWVudCB8fCAhaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3Qg
PSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKE1lbnVMaXN0T3B0aW9u
Um9sZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNjZjZjYwNzhjNDM5OTA0OGE4MDliZjYw
MjczMTJkNDk5MGNiMzM3Li43OTdhYzQ2NTgzMmEyNmU5ZDgxNGM0MzBhZTZlYzBiYjU2Mjc1ODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTIyMDgsOCArMjIwOCw4IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvCiAgICAgaWYgKGlzSFRNTEFyZWFFbGVtZW50KG5vZGUpKQogICAgICAgICBy
ZXR1cm4gYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdCh0b0hUTUxBcmVhRWxlbWVudChub2Rl
KSwgcG9pbnQpOwogICAgIAotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCi0g
ICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG5vZGUpLT5vd25l
clNlbGVjdEVsZW1lbnQoKTsKKyAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChub2RlKSkKKyAg
ICAgICAgbm9kZSA9IHRvSFRNTE9wdGlvbkVsZW1lbnQobm9kZSktPm93bmVyU2VsZWN0RWxlbWVu
dCgpOwogICAgIAogICAgIFJlbmRlck9iamVjdCogb2JqID0gbm9kZS0+cmVuZGVyZXIoKTsKICAg
ICBpZiAoIW9iaikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZDhk
NmIzNTY2M2ZkNDc4MTFjNThiMjMzNWI4NDdiNWI4YzU3Nzk0ZS4uZGYxOThjNTZhYWJlYjIwYTIy
MDgyOTkxMDQ5ZTE1YTNlYWUwMGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUo
Y29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
RW5hYmxlZDoKLSAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgp
IHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KG9wdGdyb3VwVGFnKSkKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpIHx8IGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFn
TmFtZShvcHRncm91cFRhZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuICFlbGVtZW50LT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9GdWxsUGFnZU1lZGlhOgpAQCAtNjY1LDcgKzY2NSw3IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCk7CiAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Rpc2FibGVkOgotICAgICAgICAgICAgaWYg
KGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShv
cHRpb25UYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKQorICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgfHwgaXNIVE1MT3B0aW9uRWxl
bWVudChlbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvUmVhZE9ubHk6
CkBAIC02OTAsNyArNjkwLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50
KCk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPnNo
b3VsZEFwcGVhckNoZWNrZWQoKSAmJiAhaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJJbmRldGVy
bWluYXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykgJiYgdG9IVE1MT3B0aW9uRWxl
bWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNIVE1MT3B0
aW9uRWxlbWVudChlbGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxl
Y3RlZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCBjMGY3YWEwYjNhNWVjNzM1YmFjZjA2ZTg0YzIzZTM5OGExMDMyMDE2Li5hYTQ1NDNlM2M4
MTA1OTZjOTM1MWM0YTFiZmQ4NWU0ZWY5NmY5ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjYW5TaGFy
ZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHNoYXJlIHN0eWxlIGZvciBvcHRpb24gYW5kIG9wdGdyb3VwIHdoZW5l
dmVyIHBvc3NpYmxlLgogICAgIC8vIEJlZm9yZSBkb2luZyBzbywgd2UgbmVlZCB0byByZXNvbHZl
IGlzc3VlcyBpbiBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zCiAgICAgLy8gYW5k
IFJlbmRlck1lbnVMaXN0OjpzZXRUZXh0LiBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MDUKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShvcHRp
b25UYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKQorICAgIGlmIChpc0hU
TUxPcHRpb25FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBU
YWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGlzQ29udHJvbCA9IGVsZW1l
bnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCmluZGV4IGJlNjUzNWJlOTdjMmI4NGIyM2RjYjA5MWU5MTI1NWE0MDZkYmQyY2UuLjdi
N2FkN2FmMzdiNjBmNTI1ZTNkZTA4MGFhMzk2NTI0NGE5ZmUxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdGVtcGxhdGUgPD4gaW5s
aW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24qIGh0bWxDb2xs
ZWN0aW9uLAogICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykg
JiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKTsKICAgICBjYXNlIERh
dGFMaXN0T3B0aW9uczoKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvcHRpb25U
YWcpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gc3RhdGljX2Nh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgICAgIEhUTUxPcHRpb25F
bGVtZW50KiBvcHRpb24gPSB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpOwogICAgICAgICAg
ICAgaWYgKCFvcHRpb24tPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24tPnZhbHVl
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDg3ZDI1MzUwYTUw
MmQ2YWE4N2ExYTgzNTQyMTAzNWFlOGY3NGVlZDMuLjgxZTllOWE5ZDM0NTQxOWIzNmM0MTZkN2Zi
NjI4OTFlZTBjYmU5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgaW50IEhUTUxPcHRpb25FbGVtZW50OjppbmRleCgpIGNv
bnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gc2VsZWN0RWxlbWVu
dC0+bGlzdEl0ZW1zKCk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IGl0ZW1zLnNpemUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXRlbXNb
aV0tPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkKKyAgICAgICAgaWYgKCFpc0hUTUxPcHRpb25FbGVt
ZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaXRlbXNb
aV0gPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybiBvcHRpb25JbmRleDsKQEAgLTM4MywyMCAr
MzgzLDQgQEAgU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gdGV4dC50b1N0cmluZygpOwogfQogCi0jaWZuZGVmIE5ERUJV
RwotCi1IVE1MT3B0aW9uRWxlbWVudCogdG9IVE1MT3B0aW9uRWxlbWVudChOb2RlKiBub2RlKQot
ewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmhh
c1RhZ05hbWUob3B0aW9uVGFnKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxPcHRpb25F
bGVtZW50Kj4obm9kZSk7Ci19Ci0KLWNvbnN0IEhUTUxPcHRpb25FbGVtZW50KiB0b0hUTUxPcHRp
b25FbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTE9wdGlvbkVsZW1lbnQqPihub2RlKTsKLX0KLQot
I2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmgKaW5kZXggNWRmNTJmMTkyZTNmNGMyOGJhM2U2MzI5ODJhNTFiZDc5ODFkZjA0Yi4uM2Ri
Yjg4MmZhOGFkMjkwNjgyOTQ5YTA0YmNmYTBmMjg1MTY3ZGI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtOTUsMjYgKzk1LDE3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogfTsKIAotSFRNTE9wdGlvbkVsZW1lbnQqIHRv
SFRNTE9wdGlvbkVsZW1lbnQoTm9kZSopOwotY29uc3QgSFRNTE9wdGlvbkVsZW1lbnQqIHRvSFRN
TE9wdGlvbkVsZW1lbnQoY29uc3QgTm9kZSopOwotdm9pZCB0b0hUTUxPcHRpb25FbGVtZW50KGNv
bnN0IEhUTUxPcHRpb25FbGVtZW50Kik7IC8vIFRoaXMgb3ZlcmxvYWQgd2lsbCBjYXRjaCBhbnlv
bmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KLQotI2lmZGVmIE5ERUJVRwotCi0vLyBUaGUg
ZGVidWcgdmVyc2lvbnMgb2YgdGhlc2UsIHdpdGggYXNzZXJ0aW9ucywgYXJlIG5vdCBpbmxpbmVk
LgotCi1pbmxpbmUgSFRNTE9wdGlvbkVsZW1lbnQqIHRvSFRNTE9wdGlvbkVsZW1lbnQoTm9kZSog
bm9kZSkKK2lubGluZSBib29sIGlzSFRNTE9wdGlvbkVsZW1lbnQoTm9kZSogbm9kZSkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihub2RlKTsKKyAgICByZXR1
cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZyk7CiB9CiAKLWlubGluZSBj
b25zdCBIVE1MT3B0aW9uRWxlbWVudCogdG9IVE1MT3B0aW9uRWxlbWVudChjb25zdCBOb2RlKiBu
b2RlKQoraW5saW5lIEhUTUxPcHRpb25FbGVtZW50KiB0b0hUTUxPcHRpb25FbGVtZW50KE5vZGUq
IG5vZGUpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxPcHRpb25FbGVtZW50
Kj4obm9kZSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwg
aXNIVE1MT3B0aW9uRWxlbWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxP
cHRpb25FbGVtZW50Kj4obm9kZSk7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApp
bmRleCBmMjk0MmEyODNiNTQzZDNlOThjYzA4ODdlZjZmNGRlMTU4MTEzNjk4Li5kZGNmY2I0ODY4
ZjkzNTdiOWU4MjQ2ZmIyOTNlZDkyNDhkM2MxOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgSFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gZWxlbWVu
dCwgaW50IGluZGV4CiAgICAgaWYgKGluZGV4ID09IC0xIHx8IHVuc2lnbmVkKGluZGV4KSA+PSBs
ZW5ndGgoKSkKICAgICAgICAgc2VsZWN0LT5hZGQobmV3T3B0aW9uLCAwLCBlYyk7CiAgICAgZWxz
ZQotICAgICAgICBzZWxlY3QtPmFkZChuZXdPcHRpb24sIHN0YXRpY19jYXN0PEhUTUxPcHRpb25F
bGVtZW50Kj4oaXRlbShpbmRleCkpLCBlYyk7CisgICAgICAgIHNlbGVjdC0+YWRkKG5ld09wdGlv
biwgdG9IVE1MT3B0aW9uRWxlbWVudChpdGVtKGluZGV4KSksIGVjKTsKIAogICAgIEFTU0VSVCgh
ZWMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBh
YjFhMDBiZjZmNzFmNDA4Y2FiZmU4ZjI1ZDllMDA5ZDI5Nzc0YWI2Li44NzAxZTYzYjg1MDZiOTFm
M2IzNjQ3ZTZkZTVlYzhkNzA4YzA2NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6
Omhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24oKSBjb25zdAogICAgIEFTU0VSVChsaXN0SW5kZXgg
Pj0gMCk7CiAgICAgaWYgKGxpc3RJbmRleCA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1l
bnQqPihsaXN0SXRlbXMoKVtsaXN0SW5kZXhdKTsKKyAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0
aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChsaXN0SXRlbXMoKVtsaXN0SW5kZXhdKTsKICAgICBy
ZXR1cm4gIWxpc3RJbmRleCAmJiBvcHRpb24tPnZhbHVlKCkuaXNFbXB0eSgpOwogfQogCkBAIC0y
NDEsOCArMjQxLDExIEBAIFN0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUoKSBjb25zdAog
ewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewotICAgICAg
ICBpZiAoaXRlbXNbaV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpICYmIHN0YXRpY19jYXN0PEhU
TUxPcHRpb25FbGVtZW50Kj4oaXRlbXNbaV0pLT5zZWxlY3RlZCgpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oaXRlbXNbaV0pLT52YWx1ZSgpOwor
ICAgICAgICBpZiAoaXRlbXNbaV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpKSB7CisgICAgICAg
ICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChpdGVt
c1tpXSk7CisgICAgICAgICAgICBpZiAob3B0aW9uLT5zZWxlY3RlZCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBvcHRpb24tPnZhbHVlKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
ICIiOwogfQpAQCAtMjYwLDcgKzI2Myw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZh
bHVlKGNvbnN0IFN0cmluZyAmdmFsdWUpCiAgICAgdW5zaWduZWQgb3B0aW9uSW5kZXggPSAwOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgewogICAgICAg
ICBpZiAoaXRlbXNbaV0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihpdGVtc1tpXSktPnZhbHVlKCkgPT0g
dmFsdWUpIHsKKyAgICAgICAgICAgIGlmICh0b0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ldKS0+
dmFsdWUoKSA9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgob3B0
aW9uSW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTM0
Nyw3ICszNTAsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaAogICAgIGlmICghSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENv
bnRleHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCF1c2VzTWVudUxpc3QoKSkK
LSAgICAgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpvcHRpb25UYWcpIHx8IGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpvcHRncm91cFRhZykgfHwgdmFsaWRhdGlvbk1lc3NhZ2VTaGFkb3dUcmVlQ29udGFpbnMoY2hp
bGRDb250ZXh0Lm5vZGUoKSk7CisgICAgICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50KGNo
aWxkQ29udGV4dC5ub2RlKCkpIHx8IGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpvcHRncm91cFRhZykgfHwgdmFsaWRhdGlvbk1lc3NhZ2VTaGFkb3dUcmVlQ29udGFp
bnMoY2hpbGRDb250ZXh0Lm5vZGUoKSk7CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlU2hh
ZG93VHJlZUNvbnRhaW5zKGNoaWxkQ29udGV4dC5ub2RlKCkpOwogfQogCkBAIC00OTgsNyArNTAx
LDcgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleChpbnQgbGlzdEluZGV4
LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW4KICAgICBpbnQgc2l6ZSA9IGxpc3RJdGVtcy5z
aXplKCk7CiAgICAgZm9yIChsaXN0SW5kZXggKz0gZGlyZWN0aW9uOyBsaXN0SW5kZXggPj0gMCAm
JiBsaXN0SW5kZXggPCBzaXplOyBsaXN0SW5kZXggKz0gZGlyZWN0aW9uKSB7CiAgICAgICAgIC0t
c2tpcDsKLSAgICAgICAgaWYgKCFsaXN0SXRlbXNbbGlzdEluZGV4XS0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkgJiYgbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkg
eworICAgICAgICBpZiAoIWxpc3RJdGVtc1tsaXN0SW5kZXhdLT5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSAmJiBpc0hUTUxPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKSkgewogICAg
ICAgICAgICAgbGFzdEdvb2RJbmRleCA9IGxpc3RJbmRleDsKICAgICAgICAgICAgIGlmIChza2lw
IDw9IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODAsNyArNTgzLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24oKQogICAgIGNvbnN0IFZlY3RvcjxI
VE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IGl0ZW1zW2ldOwotICAgICAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5hcHBlbmQoZWxl
bWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpICYmIHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVu
dCktPnNlbGVjdGVkKCkpOworICAgICAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbi5hcHBlbmQo
aXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1l
bnQpLT5zZWxlY3RlZCgpKTsKICAgICB9CiB9CiAKQEAgLTU5NSw3ICs1OTgsNyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChpbnQgaW5kZXgp
CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb24uYXBwZW5kKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAm
JiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpKTsKKyAgICAgICAgbV9j
YWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbi5hcHBlbmQoaXNIVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpKTsKICAg
ICB9CiB9CiAKQEAgLTYxNSw3ICs2MTgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAgICAgY29uc3Qg
VmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShv
cHRpb25UYWcpIHx8IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpKQorICAgICAgICBpZiAoIWlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgfHwg
dG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaSA+PSBzdGFydCAmJiBpIDw9IGVu
ZCkKQEAgLTY0OCw3ICs2NTEsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25D
aGFuZ2UoKQogICAgIGJvb2wgZmlyZU9uQ2hhbmdlID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBlbGVtZW50LT5oYXNU
YWdOYW1lKG9wdGlvblRhZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0
ZWQoKTsKKyAgICAgICAgYm9vbCBzZWxlY3RlZCA9IGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVu
dCkgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKTsKICAgICAgICAg
aWYgKHNlbGVjdGVkICE9IG1fbGFzdE9uQ2hhbmdlU2VsZWN0aW9uW2ldKQogICAgICAgICAgICAg
ZmlyZU9uQ2hhbmdlID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0g
PSBzZWxlY3RlZDsKQEAgLTc1Niw3ICs3NTksNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNMaXN0SXRlbXMoYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykgY29uc3QKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChjdXJyZW50LT5oYXNUYWdOYW1lKG9wdGlv
blRhZykpIHsKKyAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoY3VycmVudCkpIHsKICAg
ICAgICAgICAgIG1fbGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKIAogICAgICAgICAgICAgaWYg
KHVwZGF0ZVNlbGVjdGVkU3RhdGVzICYmICFtX211bHRpcGxlKSB7CkBAIC03OTgsNyArODAxLDcg
QEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9w
dGlvblRhZykpIHsKKyAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGlmICh0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICsraW5kZXg7CkBA
IC04MzQsNyArODM3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKGlu
dCBvcHRpb25JbmRleCwgU2VsZWN0T3B0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSAwOwogICAgIGlmIChsaXN0SW5kZXggPj0gMCkgewogICAgICAgICBlbGVtZW50
ID0gaXRlbXNbbGlzdEluZGV4XTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0
aW9uVGFnKSkgeworICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPCAwIHx8IHNob3Vs
ZERlc2VsZWN0KQogICAgICAgICAgICAgICAgIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4
KGxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAobV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCA8
IDAgfHwgc2hvdWxkRGVzZWxlY3QpCkBAIC04NzcsNyArODgwLDcgQEAgaW50IEhUTUxTZWxlY3RF
bGVtZW50OjpvcHRpb25Ub0xpc3RJbmRleChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiAKICAgICBp
bnQgb3B0aW9uSW5kZXgyID0gLTE7CiAgICAgZm9yIChpbnQgbGlzdEluZGV4ID0gMDsgbGlzdElu
ZGV4IDwgbGlzdFNpemU7ICsrbGlzdEluZGV4KSB7Ci0gICAgICAgIGlmIChpdGVtc1tsaXN0SW5k
ZXhdLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKKyAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVs
ZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkpIHsKICAgICAgICAgICAgICsrb3B0aW9uSW5kZXgyOwog
ICAgICAgICAgICAgaWYgKG9wdGlvbkluZGV4MiA9PSBvcHRpb25JbmRleCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbGlzdEluZGV4OwpAQCAtODkwLDEzICs4OTMsMTMgQEAgaW50IEhUTUxTZWxl
Y3RFbGVtZW50OjpvcHRpb25Ub0xpc3RJbmRleChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiBpbnQg
SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0SW5kZXgpIGNvbnN0
CiB7CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7
Ci0gICAgaWYgKGxpc3RJbmRleCA8IDAgfHwgbGlzdEluZGV4ID49IHN0YXRpY19jYXN0PGludD4o
aXRlbXMuc2l6ZSgpKSB8fCAhaXRlbXNbbGlzdEluZGV4XS0+aGFzVGFnTmFtZShvcHRpb25UYWcp
KQorICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+
KGl0ZW1zLnNpemUoKSkgfHwgIWlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkp
CiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIEFjdHVhbCBpbmRleCBvZiBvcHRpb24gbm90
IGNvdW50aW5nIE9QVEdST1VQIGVudHJpZXMgdGhhdCBtYXkgYmUgaW4gbGlzdC4KICAgICBpbnQg
b3B0aW9uSW5kZXggPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdEluZGV4OyArK2kp
IHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAgICAg
IGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAgICsrb3B0aW9u
SW5kZXg7CiAgICAgfQogCkBAIC05MjcsNyArOTMwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6ZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEhUTUxFbGVtZW50KiBleGNsdWRlRWxl
bWUKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgaWYgKGVsZW1lbnQg
IT0gZXhjbHVkZUVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQorICAg
ICAgICBpZiAoZWxlbWVudCAhPSBleGNsdWRlRWxlbWVudCAmJiBpc0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpKQogICAgICAgICAgICAgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2V0
U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgfQogfQpAQCAtOTM4LDcgKzk0MSw3IEBAIEZvcm1D
b250cm9sU3RhdGUgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3QKICAgICBzaXplX3QgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwogICAgIEZvcm1Db250cm9sU3Rh
dGUgc3RhdGU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIGlmICghaXRlbXNbaV0tPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkKKyAgICAgICAgaWYg
KCFpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChp
dGVtc1tpXSk7CiAgICAgICAgIGlmICghb3B0aW9uLT5zZWxlY3RlZCgpKQpAQCAtOTU3LDcgKzk2
MCw3IEBAIHNpemVfdCBIVE1MU2VsZWN0RWxlbWVudDo6c2VhcmNoT3B0aW9uc0ZvclZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUsIHNpemVfdCBsaXN0CiAgICAgZm9yIChzaXplX3QgaSA9IGxpc3RJ
bmRleFN0YXJ0OyBpIDwgbG9vcEVuZEluZGV4OyArK2kpIHsKICAgICAgICAgaWYgKCFpdGVtc1tp
XS0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oaXRlbXNbaV0pLT52YWx1ZSgp
ID09IHZhbHVlKQorICAgICAgICBpZiAodG9IVE1MT3B0aW9uRWxlbWVudChpdGVtc1tpXSktPnZh
bHVlKCkgPT0gdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9CiAgICAgcmV0dXJu
IG5vdEZvdW5kOwpAQCAtOTc1LDcgKzk3OCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNTaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFp
dGVtc1tpXS0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihpdGVtc1tpXSktPnNldFNl
bGVjdGVkU3RhdGUoZmFsc2UpOworICAgICAgICB0b0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ld
KS0+c2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKCFtdWx0aXBsZSgp
KSB7CkBAIC0xMDIwLDcgKzEwMjMsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjphcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmIGxpc3QsIGJvb2wpCiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSBpdGVtc1tpXTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFn
KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpICYmICF0b0hUTUxP
cHRpb25FbGVtZW50KGVsZW1lbnQpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgeworICAgICAg
ICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiB0b0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpLT5zZWxlY3RlZCgpICYmICF0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICAgICAgbGlzdC5hcHBlbmREYXRhKG5h
bWUsIHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnZhbHVlKCkpOwogICAgICAgICAgICAg
c3VjY2Vzc2Z1bCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEwNDAsNyArMTA0Myw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0KCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tp
XTsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAgICAg
IGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChpdGVtc1tpXS0+ZmFzdEhhc0F0dHJpYnV0ZShzZWxlY3RlZEF0dHIp
KSB7CkBAIC0xMjU3LDcgKzEyNjAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVT
ZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgIGJv
b2wgbXVsdGlTZWxlY3QgPSBtX211bHRpcGxlICYmIG11bHRpICYmICFzaGlmdDsKIAogICAgIEhU
TUxFbGVtZW50KiBjbGlja2VkRWxlbWVudCA9IGxpc3RJdGVtcygpW2xpc3RJbmRleF07Ci0gICAg
aWYgKGNsaWNrZWRFbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKKyAgICBpZiAoaXNI
VE1MT3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCkpIHsKICAgICAgICAgLy8gS2VlcCB0cmFj
ayBvZiB3aGV0aGVyIGFuIGFjdGl2ZSBzZWxlY3Rpb24gKGxpa2UgZHVyaW5nIGRyYWcKICAgICAg
ICAgLy8gc2VsZWN0aW9uKSwgc2hvdWxkIHNlbGVjdCBvciBkZXNlbGVjdC4KICAgICAgICAgaWYg
KHRvSFRNTE9wdGlvbkVsZW1lbnQoY2xpY2tlZEVsZW1lbnQpLT5zZWxlY3RlZCgpICYmIG11bHRp
U2VsZWN0KQpAQCAtMTI3OCw3ICsxMjgxLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBk
YXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAg
ICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoc2VsZWN0ZWRJbmRleCgpKTsKIAog
ICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBjbGlja2VkIG9wdGlvbi4KLSAg
ICBpZiAoY2xpY2tlZEVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiAhdG9IVE1MT3B0
aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQorICAg
IGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KSAmJiAhdG9IVE1MT3B0aW9u
RWxlbWVudChjbGlja2VkRWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAg
ICB0b0hUTUxPcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KS0+c2V0U2VsZWN0ZWRTdGF0ZSh0
cnVlKTsKIAogICAgIC8vIElmIHRoZXJlIHdhcyBubyBzZWxlY3RlZEluZGV4KCkgZm9yIHRoZSBw
cmV2aW91cyBpbml0aWFsaXphdGlvbiwgb3IgSWYKQEAgLTE0ODMsNyArMTQ4Niw3IEBAIGludCBI
VE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4KCkgY29uc3QKICAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gaXRlbXMuc2l6ZSgpOyBpOykgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IGl0ZW1zWy0taV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRh
ZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKSkKKyAgICAgICAg
aWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KS0+c2VsZWN0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBpOwogICAgIH0KICAgICBy
ZXR1cm4gLTE7CkBAIC0xNTA0LDcgKzE1MDcsNyBAQCBTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6
Om9wdGlvbkF0SW5kZXgoaW50IGluZGV4KSBjb25zdAogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIAogICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gaXRlbXNbaW5kZXhdOwotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25U
YWcpIHx8IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpKQorICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCB0b0hUTUxPcHRp
b25FbGVtZW50KGVsZW1lbnQpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIHJldHVybiB0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT50
ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiB9CkBAIC0xNTQwLDcgKzE1NDMsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphY2Nlc3NLZXlTZXRTZWxlY3RlZEluZGV4KGludCBp
bmRleCkKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5kZXgpOwogICAg
IGlmIChsaXN0SW5kZXggPj0gMCkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGl0
ZW1zW2xpc3RJbmRleF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRh
ZykpIHsKKyAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAg
ICAgICAgIGlmICh0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpKQogICAg
ICAgICAgICAgICAgIHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnNldFNlbGVjdGVkU3Rh
dGUoZmFsc2UpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTU2Miw3ICsxNTY1LDcgQEAgdW5zaWdu
ZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiAKICAgICBjb25zdCBWZWN0b3I8
SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNU
YWdOYW1lKG9wdGlvblRhZykpCisgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1z
W2ldKSkKICAgICAgICAgICAgICsrb3B0aW9uczsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA4Njk3MGFh
YmVkMGM3OTE5ODNjMmFjMmY2YjJiZWYzMWIxMDBkMzkxLi5lYzMyMjBhNmZhNmUwZDU1NjRlZmEz
NTFjNTVlMWEwMGQ0NTY4ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
SFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MU3RhY2tJdGVtLmgiCkBAIC02Myw3ICs2NCw3IEBAIHN0YXRpYyBib29sIGhh
c0ltcGxpZWRFbmRUYWcoY29uc3QgSFRNTFN0YWNrSXRlbSogaXRlbSkKICAgICByZXR1cm4gaXRl
bS0+aGFzVGFnTmFtZShkZFRhZykKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShkdFRhZykK
ICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShsaVRhZykKLSAgICAgICAgfHwgaXRlbS0+aGFz
VGFnTmFtZShvcHRpb25UYWcpCisgICAgICAgIHx8IGlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbS0+
bm9kZSgpKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKQogICAgICAg
ICB8fCBpdGVtLT5oYXNUYWdOYW1lKHBUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUo
cnBUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2su
Y3BwCmluZGV4IDA2MjNkNTcwMmIzZjM3Y2IzNWEzY2Y1M2JiNzNiYzYyMzJhNWUwMzkuLjM0NmE3
NTk4ZTY4ODhmNWMyYjJlNDBlMjU0YWIwNTQ2ZDc0ZjUwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1
ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgpAQCAtMTIyLDggKzEyMyw3IEBAIGlubGluZSBib29sIGlzQnV0dG9uU2Nv
cGVNYXJrZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNTZWxlY3RTY29w
ZU1hcmtlcihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewotICAgIHJldHVybiAhaXRlbS0+aGFzVGFn
TmFtZShvcHRncm91cFRhZykKLSAgICAgICAgJiYgIWl0ZW0tPmhhc1RhZ05hbWUob3B0aW9uVGFn
KTsKKyAgICByZXR1cm4gIWl0ZW0tPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpICYmICFpc0hUTUxP
cHRpb25FbGVtZW50KGl0ZW0tPm5vZGUoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDIzNjk0YmE5YzI4ZGJjOTM1ZDEy
MTU1YjI0ZDEzMjhhMDM2MjVhZTAuLmIwYzFlNDIzNzI5MDI2NjUzYmMyOGEyODRjYWMyMmE4ZTQ5
ZDJlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIkhUTUxTdGFja0l0ZW0uaCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVt
ZW50LmgiCkBAIC04OTUsNyArODk2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2VuLT5u
YW1lKCkgPT0gb3B0aW9uVGFnKSB7Ci0gICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRl
bSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKKyAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVs
ZW1lbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgewogICAgICAgICAgICAg
QXRvbWljSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAg
ICAgIH0KQEAgLTEzNzQsNyArMTM3NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBvcHRpb25UYWcpIHsKLSAgICAg
ICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRh
ZykpIHsKKyAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50
U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4g
ZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAg
ICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAgICAgICAgICB9CkBA
IC0xMzgyLDcgKzEzODMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKLSAgICAgICAgICAg
IGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsK
KyAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJ
dGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0
aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAgICAgICAgICB9CkBAIC0yMjUw
LDcgKzIyNTEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNI
VE1MVG9rZW4qIHRva2VuKQogICAgIGNhc2UgSW5TZWxlY3RNb2RlOgogICAgICAgICBBU1NFUlQo
aW5zZXJ0aW9uTW9kZSgpID09IEluU2VsZWN0TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5T
ZWxlY3RJblRhYmxlTW9kZSk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3Vw
VGFnKSB7Ci0gICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFn
TmFtZShvcHRpb25UYWcpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIG1fdHJlZS5vbmVCZWxv
d1RvcCgpLT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkKKyAgICAgICAgICAgIGlmIChpc0hUTUxP
cHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVl
Lm9uZUJlbG93VG9wKCkgJiYgbV90cmVlLm9uZUJlbG93VG9wKCktPmhhc1RhZ05hbWUob3B0Z3Jv
dXBUYWcpKQogICAgICAgICAgICAgICAgIHByb2Nlc3NGYWtlRW5kVGFnKG9wdGlvblRhZyk7CiAg
ICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRn
cm91cFRhZykpIHsKICAgICAgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgp
OwpAQCAtMjI2MCw3ICsyMjYxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBvcHRpb25UYWcpIHsKLSAgICAgICAgICAg
IGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsK
KyAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJ
dGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCkt
PnBvcCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAzMjM1Y2Q0NmRhNjhjMzRk
NjUzZGViODJlMTJiZTEzYmMwZGI3MjA2Li5lMGJmYmU2MWU1NGFlZTcwN2I1YTZlMTllZjA2MDU4
NmY4Y2NmNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKICAg
ICAgICAgICAgIFN0cmluZyB0ZXh0OwogICAgICAgICAgICAgRm9udCBpdGVtRm9udCA9IHN0eWxl
KCktPmZvbnQoKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRh
ZykpCisgICAgICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkKICAgICAg
ICAgICAgICAgICB0ZXh0ID0gdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+dGV4dEluZGVu
dGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwogICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+
aGFzVGFnTmFtZShvcHRncm91cFRhZykpIHsKICAgICAgICAgICAgICAgICB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgSFRNTE9wdEdyb3VwRWxlbWVudCo+KGVsZW1lbnQpLT5ncm91cExhYmVsVGV4
dCgpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgY29u
c3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdC0+bGlzdEl0ZW1zKCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKG9wdGlvblRhZykgJiYgIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7Cisg
ICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpICYmICFlbGVtZW50LT5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkgewogICAgICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25h
cHBlZEludFJlY3QoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBpKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGl0ZW1UZXh0
OwotICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25U
YWcpOworICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXNIVE1MT3B0aW9uRWxlbWVudChlbGVt
ZW50KTsKICAgICBpZiAoaXNPcHRpb25FbGVtZW50KQogICAgICAgICBpdGVtVGV4dCA9IHRvSFRN
TE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwo
KTsKICAgICBlbHNlIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkKQEAgLTQ0
NCw3ICs0NDQsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CiAKICAgICBDb2xvciBiYWNrQ29sb3I7Ci0g
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiB0b0hUTUxPcHRpb25FbGVt
ZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpKSB7CisgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQo
ZWxlbWVudCkgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS0+c2VsZWN0ZWQoKSkgewog
ICAgICAgICBpZiAoZnJhbWUoKS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYm
IGRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkgPT0gbm9kZSgpKQogICAgICAgICAgICAgYmFj
a0NvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
OwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAppbmRleCBmYTBkMWQ1MmJlMWNmZWI1OWU3NGUxZmRjZjNhMzVlY2IxM2EzMDMwLi5kYjA5
MzhhZjkyNjgyNmRmNTVmMTYwNjFmYzliMzhjNTkzZjQwYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJl
bmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRl
bXNbaV07Ci0gICAgICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQorICAg
ICAgICBpZiAoIWlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBTdHJpbmcgdGV4dCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVu
dCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKQEAgLTIyNyw3ICsyMjcsNyBA
QCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzZXRUZXh0RnJvbU9wdGlvbihpbnQgb3B0aW9uSW5kZXgp
CiAgICAgU3RyaW5nIHRleHQgPSBlbXB0eVN0cmluZygpOwogICAgIGlmIChpID49IDAgJiYgaSA8
IHNpemUpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKLSAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgeworICAgICAgICBpZiAoaXNI
VE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgdGV4dCA9IHRvSFRNTE9w
dGlvbkVsZW1lbnQoZWxlbWVudCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsK
ICAgICAgICAgICAgIG1fb3B0aW9uU3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAg
ICAgICB9CkBAIC00MDcsNyArNDA3LDcgQEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4
dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJ
dGVtc1tsaXN0SW5kZXhdOwogICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFn
KSkKICAgICAgICAgaXRlbVN0cmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxPcHRHcm91cEVs
ZW1lbnQqPihlbGVtZW50KS0+Z3JvdXBMYWJlbFRleHQoKTsKLSAgICBlbHNlIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAgZWxzZSBpZiAoaXNIVE1MT3B0aW9uRWxlbWVu
dChlbGVtZW50KSkKICAgICAgICAgaXRlbVN0cmluZyA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxl
bWVudCktPnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKIAogICAgIGFwcGx5VGV4
dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdAogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRl
eF07Ci0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAgaWYgKCFp
c0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIGdyb3VwRW5hYmxlZCA9IHRydWU7CkBAIC02MDUsNyArNjA1LDcgQEAgYm9vbCBSZW5k
ZXJNZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAg
IGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07Ci0gICAg
cmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSAmJiB0b0hUTUxPcHRpb25FbGVt
ZW50KGVsZW1lbnQpLT5zZWxlY3RlZCgpOworICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50
KGVsZW1lbnQpICYmIHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCktPnNlbGVjdGVkKCk7CiB9
CiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tSXRlbSh1bnNpZ25lZCBsaXN0SW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBhNjY5ZmJm
ZjFjY2I0NjMxMmI1MzRlMWRlNjc1MDIyYjk0YWFlMDVkLi5jMGM1ODRkZGNhODI3ZGVkYjY2NjVm
OThlYTQ2OGNhYmM0YzcwYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVy
VGlja3MoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
ICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKG8tPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMtPml0ZW0oaSk7IGkr
KykgewotICAgICAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKTsKKyAgICAg
ICAgQVNTRVJUKGlzSFRNTE9wdGlvbkVsZW1lbnQobm9kZSkpOwogICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQobm9kZSk7CiAgICAg
ICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbkVsZW1lbnQtPnZhbHVlKCk7CiAgICAgICAgIGlmICgh
aW5wdXQtPmlzVmFsaWRWYWx1ZSh2YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAppbmRleCAxNmUyYzFhYjZl
ODc1OTUyMjhiNjNjYTJlNTk2YTZiYzQyYWY4ZjgxLi5jOGMwNjkxNDIyNzZjNWU0MTViNjY4ZTMy
YzQxZGI0ZGViNjk2MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKQEAgLTE5ODUsNyArMTk4NSw3IEBAIGJv
b2wgSW5wdXRIYW5kbGVyOjp3aWxsT3BlblBvcHVwRm9yTm9kZShOb2RlKiBub2RlKQogCiAgICAg
QVNTRVJUKCFub2RlLT5pc0luU2hhZG93VHJlZSgpKTsKIAotICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
b3B0aW9uVGFnKSkgeworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0
VGFnKSB8fCBpc0hUTUxPcHRpb25FbGVtZW50KG5vZGUpKSB7CiAgICAgICAgIC8vIFdlIG9wZW4g
bGlzdCBwb3B1cHMgZm9yIG9wdGlvbnMgYW5kIHNlbGVjdHMuCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTIwMTAsOCArMjAxMCw4IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpkaWROb2Rl
T3BlblBvcHVwKE5vZGUqIG5vZGUpCiAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpzZWxlY3RUYWcpKQogICAgICAgICByZXR1cm4gb3BlblNlbGVjdFBvcHVwKHN0YXRpY19jYXN0
PEhUTUxTZWxlY3RFbGVtZW50Kj4obm9kZSkpOwogCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpvcHRpb25UYWcpKSB7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihub2RlKTsKKyAgICBp
ZiAoaXNIVE1MT3B0aW9uRWxlbWVudChub2RlKSkgeworICAgICAgICBIVE1MT3B0aW9uRWxlbWVu
dCogb3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQobm9kZSk7CiAgICAgICAgIHJl
dHVybiBvcGVuU2VsZWN0UG9wdXAob3B0aW9uRWxlbWVudC0+b3duZXJTZWxlY3RFbGVtZW50KCkp
OwogICAgIH0KIApAQCAtMjA1Niw4ICsyMDU2LDggQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5T
ZWxlY3RQb3B1cChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0KQogICAgICAgICBpdGVtVHlwZXMg
PSBuZXcgaW50W3NpemVdOwogICAgICAgICBzZWxlY3RlZHMgPSBuZXcgYm9vbFtzaXplXTsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChs
aXN0SXRlbXNbaV0tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxPcHRp
b25FbGVtZW50Kj4obGlzdEl0ZW1zW2ldKTsKKyAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25F
bGVtZW50KGxpc3RJdGVtc1tpXSkpIHsKKyAgICAgICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVu
dCogb3B0aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChsaXN0SXRlbXNbaV0pOwogICAgICAgICAg
ICAgICAgIGxhYmVsc1tpXSA9IG9wdGlvbi0+dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJl
bCgpOwogICAgICAgICAgICAgICAgIGVuYWJsZWRzW2ldID0gb3B0aW9uLT5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKSA/IDAgOiAxOwogICAgICAgICAgICAgICAgIHNlbGVjdGVkc1tpXSA9IG9wdGlv
bi0+c2VsZWN0ZWQoKTsKQEAgLTIxMjIsOCArMjEyMiw4IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpz
ZXRQb3B1cExpc3RJbmRleGVzKGludCBzaXplLCBjb25zdCBib29sKiBzZWxlY3RlZHMpCiAKICAg
ICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgIGlmIChpdGVtc1tpXS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9w
dGlvblRhZykpIHsKLSAgICAgICAgICAgIG9wdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25F
bGVtZW50Kj4oaXRlbXNbaV0pOworICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChpdGVt
c1tpXSkpIHsKKyAgICAgICAgICAgIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNb
aV0pOwogICAgICAgICAgICAgb3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHNlbGVjdGVkc1tpXSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKaW5kZXggMDkxYmUwZGYw
NzAxNDM5NTRjN2E0ODYyMjY5NmIxMmJjYTk5MjIyNy4uZjQxM2IyNDgxZDQyMGI2ZDE3ZjlkN2Ri
NjEwYjkzY2M4ZjZjZmIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcApAQCAtMTU1LDggKzE1
NSw4IEBAIHZvaWQgU2VsZWN0UG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChjb25z
dCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogCiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b247CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7IGkrKykgewotICAg
ICAgICAgICAgaWYgKGl0ZW1zW2ldLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkg
ewotICAgICAgICAgICAgICAgIG9wdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50
Kj4oaXRlbXNbaV0pOworICAgICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNb
aV0pKSB7CisgICAgICAgICAgICAgICAgb3B0aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChpdGVt
c1tpXSk7CiAgICAgICAgICAgICAgICAgb3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHNlbGVjdGVk
c1tpXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFz
c2VzLmNwcAppbmRleCBjZDNkYzQ1Yjc1NzQ2NjczZmMxMGNjNTgzZDJlZTZlZGJiYWNmNDI2Li4w
NWUxZTcxY2FjZmM0MmI2ZWMzYjIxZTNlZmYwZDQ1MjY0MDgwOWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
RE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBJRE9NRWxlbWVudCogRE9N
RWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RWxlbWVudCogZSkKICAgICB9IGVsc2Ug
aWYgKGlzSFRNTElucHV0RWxlbWVudChlKSkgewogICAgICAgICBET01IVE1MSW5wdXRFbGVtZW50
KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJbnB1dEVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0g
bmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21F
bGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgeworICAg
IH0gZWxzZSBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlKSkgewogICAgICAgICBET01IVE1MT3B0
aW9uRWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MT3B0aW9uRWxlbWVudChlKTsKICAg
ICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2
b2lkKiopJmRvbUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShzZWxlY3RU
YWcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKaW5kZXggYjI0YmVlMjY4MjYz
M2Q2YmQ0NTQ2MDMxYTdmOWU0ZDE3NmUxYTE4ZS4uNjEyMDVjNzA1ZDJkODdjYzdiNGE5ZWQ4MzRk
M2ViZDAyYjRmMzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNz
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcApAQCAtODYy
LDggKzg2Miw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1l
bnQ6OnRleHQoCiAgICAgKnJlc3VsdCA9IDA7CiAKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAg
ICBBU1NFUlQobV9lbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpOwotICAgIEhUTUxPcHRp
b25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihtX2VsZW1lbnQpOworICAgIEFTU0VSVChpc0hUTUxPcHRpb25FbGVtZW50KG1fZWxlbWVudCkp
OworICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9IVE1MT3B0aW9uRWxl
bWVudChtX2VsZW1lbnQpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcob3B0aW9uRWxlbWVudC0+
dGV4dCgpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC04OTksOCArODk5LDggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoCiAg
ICAgKnJlc3VsdCA9IDA7CiAKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NFUlQobV9l
bGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpOwotICAgIEhUTUxPcHRpb25FbGVtZW50KiBv
cHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihtX2VsZW1lbnQp
OworICAgIEFTU0VSVChpc0hUTUxPcHRpb25FbGVtZW50KG1fZWxlbWVudCkpOworICAgIEhUTUxP
cHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9IVE1MT3B0aW9uRWxlbWVudChtX2VsZW1l
bnQpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcob3B0aW9uRWxlbWVudC0+bGFiZWwoKSkucmVs
ZWFzZSgpOwogICAgIHJldHVybiBTX09LOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>