<?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>178836</bug_id>
          
          <creation_ts>2017-10-25 15:49:32 -0700</creation_ts>
          <short_desc>DidMoveToNewDocumentAssertionScope shouldn&apos;t be necessary</short_desc>
          <delta_ts>2017-10-26 15:02:43 -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>DOM</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364551</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 15:49:32 -0700</bug_when>
    <thetext>DidMoveToNewDocumentAssertionScope is there to only ensure Node::didMoveToNewDocument
is eventually called by implementations in derived classes.

A better to way to ensure that Node::didMoveToNewDocument is always called is to simply call it directly.
Since only subclasses of Element and ShadowRoot override this virtual member function
and we already have a special case for ShadowRoot, we can de-vritualize for all non-Element cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364552</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 15:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/35008876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364573</commentid>
    <comment_count>2</comment_count>
      <attachid>324918</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 16:24:41 -0700</bug_when>
    <thetext>Created attachment 324918
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364575</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 16:27:25 -0700</bug_when>
    <thetext>Attachment 324918 did not pass style-queue:


ERROR: Source/WebCore/dom/ShadowRoot.cpp:105:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/ShadowRoot.cpp:111:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/ShadowRoot.cpp:121:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364582</commentid>
    <comment_count>4</comment_count>
      <attachid>324922</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 16:40:36 -0700</bug_when>
    <thetext>Created attachment 324922
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364730</commentid>
    <comment_count>5</comment_count>
      <attachid>324922</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-26 00:42:01 -0700</bug_when>
    <thetext>Comment on attachment 324922
Cleanup

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365041</commentid>
    <comment_count>6</comment_count>
      <attachid>324922</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 15:02:42 -0700</bug_when>
    <thetext>Comment on attachment 324922
Cleanup

Clearing flags on attachment: 324922

Committed r224053: &lt;https://trac.webkit.org/changeset/224053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365042</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-26 15:02:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324918</attachid>
            <date>2017-10-25 16:24:41 -0700</date>
            <delta_ts>2017-10-25 16:40:29 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-178836-20171025162440.patch</filename>
            <type>text/plain</type>
            <size>21567</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE3LTEwLTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIERpZE1vdmVUb05ld0RvY3VtZW50
QXNzZXJ0aW9uU2NvcGUgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODM2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNTAwODg3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlIHdhcyBpbnRyb2R1Y2Vk
IGluIHIyMTc5NzIgdG8gcmVwbGFjZSBhbiBleGlzdGluZyBhc3NlcnRpb24gdG8gbWFrZSBzdXJl
CisgICAgICAgIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50IGlzIGFsd2F5cyBjYWxsZWQgYnkg
aXRzIG92ZXJyaWRlcyBpbiBOb2RlJ3Mgc3ViY2xhc3Nlcy4gSG93ZXZlciwgd2UgY2FuIGVuc3Vy
ZQorICAgICAgICBiZXR0ZXIgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQgaXMgYWx3YXlzIGNh
bGxlZCBpZiB3ZSBjYWxsZWQgaXQgZGlyZWN0bHkgaW4gTm9kZTo6bW92ZVRyZWVUb05ld1Njb3Bl
LgorCisgICAgICAgIEJlY2F1c2Ugb25seSBzdWJjbGFzc2VzIG9mIEVsZW1lbnQgYW5kIFNoYWRv
d1Jvb3Qgb3ZlcnJpZGUgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQgYW5kIHdlIGFscmVhZHkg
aGF2ZQorICAgICAgICBhIHNwZWNpYWxpemVkIGNvZGUgcGF0aCB0byBhZG9wdCBhIFNoYWRvd1Jv
b3QgdG8gYSBuZXcgZG9jdW1lbnQsIHRoaXMgcmVmYWN0b3JpbmcgZWxpbWluYXRlcyB0aGUgbmVl
ZCBmb3IKKyAgICAgICAgaGF2aW5nIGEgdmlydHVhbCBmdW5jdGlvbiBvbiBOb2RlIGF0IGFsbC4K
KworICAgICAgICBIZW5jZSB0aGlzIHBhdGNoIG5hbWVzIE5vZGU6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50IHRvIE5vZGU6Om1vdmVUb05ld0RvY3VtZW50IGFuZCBtYWtlcyBpdCBub24tdmlydHVhbCwK
KyAgICAgICAgc3BsaXRzIFNoYWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50IGludG8gbW92
ZVNoYWRvd1Jvb3RUb05ld1BhcmVudFNjb3BlIGFuZCBtb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1l
bnQsCisgICAgICAgIGFuZCByZW1vdmVzIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2Nv
cGUgY29tcGxldGVseS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxk
IGJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnRTbG93Q2FzZSk6IFJlbmFtZWQgZnJvbSBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQu
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KTogSW5saW5lZCB0aGUgY2hlY2sgZm9yIGVt
cHRpbmVzcyBvZiBtX25vZGVJdGVyYXRvcnMgdG8KKyAgICAgICAgYXZvaWQga2VlcCBjYWxsaW5n
IG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlIG9uIGV2ZXJ5IHNpbmdsZSBu
b2RlIGdldHRpbmcgbW92ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBSZW1vdmVkIHRoZSBjYWxs
IHRvIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50IHNpbmNlIHRoaXMgaXMgdGhlCisgICAgICAg
IGJhc2UgdmlydHVhbCBmdW5jdGlvbiBub3cuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWRNb3ZlVG9OZXdEb2N1
bWVudEFzc2VydGlvblNjb3BlOjpEaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9u
U2NvcGU6On5EaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGU6OmRpZFJl
Y2lldmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVOb2RlVG9OZXdEb2N1
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptb3ZlU2hhZG93VHJlZVRv
TmV3RG9jdW1lbnQpOiBNYWRlIHRoaXMgYSBtZW1iZXIgZnVuY3Rpb24gb2YgTm9kZSBzaW5jZSBp
dCBuZWVkcyB0byBjYWxsCisgICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCwgd2hpY2ggaXMg
cHJpdmF0ZSB0byBOb2RlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92ZVRyZWVUb05ld1Nj
b3BlKTogUmVtb3ZlZCB0aGUgcmVsZWFzZSBhc3NlcnQgZm9yIHRoZSByb290IG5vZGUgc2luY2Ug
IHRoZSBzYW1lIGNoZWNrCisgICAgICAgIGV4aXN0cyBpbnNpZGUgdHJhdmVyc2VTdWJ0cmVlVG9V
cGRhdGVUcmVlU2NvcGUuIEFsc28gcmVtb3ZlZCB0aGUgcmVsZWFzZSBhc3NlcnRpb24gZm9yIGNo
ZWNraW5nIHRoYXQKKyAgICAgICAgbm9kZSdzIG9sZCBkb2N1bWVudCBtYXRjaGVzIHRoZSBvbGQg
ZG9jdW1lbnQgc2luY2UgZG9jdW1lbnQoKSBzaW1wbHkgY2FsbHMgdHJlZVNjb3BlKCkuZG9jdW1l
bnRTY29wZSgpCisgICAgICAgIGFuZCB3ZSdyZSBhbHJlYWR5IHJlbGVhc2UtYXNzZXJ0aW5nIHRo
YXQgdGhlIG9sZCBzY29wZSBvZiBhIG5vZGUgbWF0Y2hlcyB0aGUgb2xkIHNjb3BlIHdlIGtub3cg
b2YuCisgICAgICAgIFdlIHJlbGVhc2UtYXNzZXJ0IHRoYXQgdGhlIG9sZCB0cmVlIHNjb3BlJ3Mg
ZG9jdW1lbnQgZGlkbid0IGNoYW5nZSBhZnRlciB0aGUgdHJhdmVyc2FsIGluc3RlYWQuIEZpbmFs
bHksCisgICAgICAgIHJlcGxhY2VkIGEgYnVuY2ggb2YgUkVMRUFTRV9BU1NFUlQgd2l0aCBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KTogUmVuYW1lZCBmcm9tIGRpZE1vdmVUb05ld0Rv
Y3VtZW50LiBNb3ZlZCB0aGUgY29kZSByZWxhdGVkIHRvCisgICAgICAgIG11dGF0aW9uIG9ic2Vy
dmVycyBpbnNpZGUgaGFzUmFyZURhdGEoKSBjaGVjaywgYW5kIG1vdmVkIHRoZSB0aGUgY29kZSB0
byBtb3ZlIGV2ZW50IGxpc3RlbmVycyBpbnNpZGUKKyAgICAgICAgZXZlbnRUYXJnZXREYXRhKCkg
Y2hlY2sgYm90aCBmb3IgY2xhcml0eSwgYW5kIGF2b2lkIGRvaW5nIHRoZSB3b3JrIGZvciBldmVy
eSBzaW5nbGUgbm9kZSBiZWluZyBtb3ZlZC4KKyAgICAgICAgRmluYWxseSwgY2FsbCB0aGUgb2xk
IGRpZE1vdmVUb05ld0RvY3VtZW50IHdoZW4gInRoaXMiIGlzIGFuIEVsZW1lbnQuCisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3UGFyZW50U2NvcGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1
bWVudCk6IFJlbmFtZWQgZnJvbSBkaWRNb3ZlVG9OZXdEb2N1bWVudC4gV2Ugbm93IHJlbGVhc2Ut
YXNzZXJ0CisgICAgICAgIHRoYXQgcGFyZW50IHRyZWUgc2NvcGUncyBkb2N1bWVudCBtYXRjaGVz
IHRoZSBuZXcgZG9jdW1lbnQgaWYgYW55LgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisK
IDIwMTctMTAtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBhZGQgbWlzc2luZyBjb3B5cmlnaHQgaGVhZGVyIHRvIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlLmlkbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIz
OTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAzOCw4ICs0MDM4LDkgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNoTm9kZUl0ZXJhdG9yKE5v
ZGVJdAogICAgIG1fbm9kZUl0ZXJhdG9ycy5yZW1vdmUobmkpOwogfQogCi12b2lkIERvY3VtZW50
Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQoTm9kZSYgbm9kZSwgRG9jdW1lbnQmIG5l
d0RvY3VtZW50KQordm9pZCBEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50
U2xvd0Nhc2UoTm9kZSYgbm9kZSwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogeworICAgIEFTU0VS
VCghbV9ub2RlSXRlcmF0b3JzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChhdXRvKiBpdCA6IGNvcHlU
b1ZlY3RvcihtX25vZGVJdGVyYXRvcnMpKSB7CiAgICAgICAgIGlmICgmaXQtPnJvb3QoKSA9PSAm
bm9kZSkgewogICAgICAgICAgICAgZGV0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMjM5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUxLDcgKzc1MSwxMSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGF0dGFjaE5vZGVJdGVyYXRvcihOb2RlSXRlcmF0b3IqKTsKICAgICB2b2lkIGRldGFj
aE5vZGVJdGVyYXRvcihOb2RlSXRlcmF0b3IqKTsKLSAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3Jz
VG9OZXdEb2N1bWVudChOb2RlJiwgRG9jdW1lbnQmKTsKKyAgICB2b2lkIG1vdmVOb2RlSXRlcmF0
b3JzVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCisgICAg
eworICAgICAgICBpZiAoIW1fbm9kZUl0ZXJhdG9ycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBt
b3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnRTbG93Q2FzZShub2RlLCBuZXdEb2N1bWVudCk7
CisgICAgfQogCiAgICAgdm9pZCBhdHRhY2hSYW5nZShSYW5nZSopOwogICAgIHZvaWQgZGV0YWNo
UmFuZ2UoUmFuZ2UqKTsKQEAgLTE0MjMsNiArMTQyNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGJ1aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSogcm9vdCk7CiAKKyAgICB2b2lkIG1vdmVOb2Rl
SXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlKE5vZGUmLCBEb2N1bWVudCYpOworCiAgICAg
dm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGVuZGluZ1Rhc2tz
VGltZXJGaXJlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjIzOTg5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYxLDcgKzE1NjEsNiBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKQog
dm9pZCBFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTigmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwotICAgIE5vZGU6OmRpZE1vdmVU
b05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAKICAgICBpZiAob2xkRG9j
dW1lbnQuaW5RdWlya3NNb2RlKCkgIT0gZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkgewogICAg
ICAgICAvLyBFbGVtZW50RGF0YTo6bV9jbGFzc05hbWVzIG9yIEVsZW1lbnREYXRhOjptX2lkRm9y
U3R5bGVSZXNvbHV0aW9uIG5lZWQgdG8gYmUgdXBkYXRlZCB3aXRoIHRoZSByaWdodCBjYXNlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyMjM5ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDggQEAgcHVibGlj
OgogICAgIC8vIENsb25lcyBhbGwgYXR0cmlidXRlLWRlcml2ZWQgZGF0YSwgaW5jbHVkaW5nIHN1
YmNsYXNzIHNwZWNpZmljcyAodGhyb3VnaCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcy4pCiAg
ICAgdm9pZCBjbG9uZURhdGFGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1
bWVudCYgbmV3RG9jdW1lbnQpOworCiAgICAgYm9vbCBoYXNFcXVpdmFsZW50QXR0cmlidXRlcyhj
b25zdCBFbGVtZW50KiBvdGhlcikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgeyB9CkBAIC01NTYs
NyArNTU4LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygp
IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCk7Ci0gICAg
dm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50
JiBuZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNp
dGx5SWZOZWVkZWQoKTsKICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShpbnQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjIzOTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE3LDYyICsxOTE3LDYgQEAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgTm9kZTo6ZXZlbnRUYXJnZXRJbgogICAgIHJldHVybiBOb2RlRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKLWNsYXNzIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2Nv
cGUgewotcHVibGljOgotICAgIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGUoTm9k
ZSYgbm9kZSwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCi0g
ICAgICAgIDogbV9ub2RlKG5vZGUpCi0gICAgICAgICwgbV9vbGREb2N1bWVudChvbGREb2N1bWVu
dCkKLSAgICAgICAgLCBtX25ld0RvY3VtZW50KG5ld0RvY3VtZW50KQotICAgICAgICAsIG1fcHJl
dmlvdXNTY29wZShzX3Njb3BlKQotICAgIHsKLSAgICAgICAgc19zY29wZSA9IHRoaXM7Ci0gICAg
fQotCi0gICAgfkRpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGUoKQotICAgIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9jYWxsZWQpOwotICAgICAgICBzX3Njb3BlID0gbV9wcmV2
aW91c1Njb3BlOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2lldmVDYWxsKE5vZGUm
IG5vZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQotICAg
IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc19zY29wZSk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFzX3Njb3BlLT5tX2NhbGxlZCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCZzX3Njb3Bl
LT5tX25vZGUgPT0gJm5vZGUpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCgmc19zY29wZS0+bV9v
bGREb2N1bWVudCA9PSAmb2xkRG9jdW1lbnQpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCgmc19z
Y29wZS0+bV9uZXdEb2N1bWVudCA9PSAmbmV3RG9jdW1lbnQpOwotICAgICAgICBzX3Njb3BlLT5t
X2NhbGxlZCA9IHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE5vZGUmIG1fbm9kZTsKLSAg
ICBEb2N1bWVudCYgbV9vbGREb2N1bWVudDsKLSAgICBEb2N1bWVudCYgbV9uZXdEb2N1bWVudDsK
LSAgICBib29sIG1fY2FsbGVkIHsgZmFsc2UgfTsKLSAgICBEaWRNb3ZlVG9OZXdEb2N1bWVudEFz
c2VydGlvblNjb3BlKiBtX3ByZXZpb3VzU2NvcGU7Ci0KLSAgICBzdGF0aWMgRGlkTW92ZVRvTmV3
RG9jdW1lbnRBc3NlcnRpb25TY29wZSogc19zY29wZTsKLX07Ci0KLURpZE1vdmVUb05ld0RvY3Vt
ZW50QXNzZXJ0aW9uU2NvcGUqIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGU6OnNf
c2NvcGUgPSBudWxscHRyOwotCi0jZWxzZQotY2xhc3MgRGlkTW92ZVRvTmV3RG9jdW1lbnRBc3Nl
cnRpb25TY29wZSB7Ci1wdWJsaWM6Ci0gICAgRGlkTW92ZVRvTmV3RG9jdW1lbnRBc3NlcnRpb25T
Y29wZShOb2RlJiwgRG9jdW1lbnQmLCBEb2N1bWVudCYpIHsgfQotICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2lldmVDYWxsKE5vZGUmLCBEb2N1bWVudCYsIERvY3VtZW50JikgeyB9Ci19OwotI2VuZGlm
Ci0KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUm
IG5vZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQotewot
ICAgIEFTU0VSVCghbm9kZS5pc0Nvbm5lY3RlZCgpIHx8ICZvbGREb2N1bWVudCAhPSAmbmV3RG9j
dW1lbnQpOwotICAgIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGUgc2NvcGUobm9k
ZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICBub2RlLmRpZE1vdmVUb05ld0RvY3Vt
ZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoJm5vZGUu
ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTW92
ZU5vZGVGdW5jdGlvbiwgdHlwZW5hbWUgTW92ZVNoYWRvd1Jvb3RGdW5jdGlvbj4KIHN0YXRpYyB2
b2lkIHRyYXZlcnNlU3VidHJlZVRvVXBkYXRlVHJlZVNjb3BlKE5vZGUmIHJvb3QsIE1vdmVOb2Rl
RnVuY3Rpb24gbW92ZU5vZGUsIE1vdmVTaGFkb3dSb290RnVuY3Rpb24gbW92ZVNoYWRvd1Jvb3Qp
CiB7CkBAIC0xOTkzLDEyICsxOTM3LDEzIEBAIHN0YXRpYyB2b2lkIHRyYXZlcnNlU3VidHJlZVRv
VXBkYXRlVHJlZVMKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1vdmVTaGFkb3dUcmVlVG9OZXdE
b2N1bWVudChTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkKK2lubGluZSB2b2lkIE5vZGU6Om1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudChTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICB0cmF2ZXJzZVN1YnRyZWVUb1VwZGF0ZVRy
ZWVTY29wZShzaGFkb3dSb290LCBbJm9sZERvY3VtZW50LCAmbmV3RG9jdW1lbnRdKE5vZGUmIG5v
ZGUpIHsKLSAgICAgICAgbW92ZU5vZGVUb05ld0RvY3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CisgICAgICAgIG5vZGUubW92ZU5vZGVUb05ld0RvY3VtZW50KG9sZERvY3Vt
ZW50LCBuZXdEb2N1bWVudCk7CiAgICAgfSwgWyZvbGREb2N1bWVudCwgJm5ld0RvY3VtZW50XShT
aGFkb3dSb290JiBpbm5lclNoYWRvd1Jvb3QpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoJmlu
bmVyU2hhZG93Um9vdC5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmlubmVyU2hhZG93Um9vdC5kb2N1
bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgICAgIGlubmVyU2hhZG93Um9vdC5tb3ZlU2hh
ZG93Um9vdFRvTmV3RG9jdW1lbnQobmV3RG9jdW1lbnQpOwogICAgICAgICBtb3ZlU2hhZG93VHJl
ZVRvTmV3RG9jdW1lbnQoaW5uZXJTaGFkb3dSb290LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQp
OwogICAgIH0pOwogfQpAQCAtMjAwNiw3ICsxOTUxLDYgQEAgc3RhdGljIHZvaWQgbW92ZVNoYWRv
d1RyZWVUb05ld0RvY3VtZW50KAogdm9pZCBOb2RlOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYg
cm9vdCwgVHJlZVNjb3BlJiBvbGRTY29wZSwgVHJlZVNjb3BlJiBuZXdTY29wZSkKIHsKICAgICBB
U1NFUlQoJm9sZFNjb3BlICE9ICZuZXdTY29wZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoJnJvb3Qu
dHJlZVNjb3BlKCkgPT0gJm9sZFNjb3BlKTsKIAogICAgIERvY3VtZW50JiBvbGREb2N1bWVudCA9
IG9sZFNjb3BlLmRvY3VtZW50U2NvcGUoKTsKICAgICBEb2N1bWVudCYgbmV3RG9jdW1lbnQgPSBu
ZXdTY29wZS5kb2N1bWVudFNjb3BlKCk7CkBAIC0yMDE0LDIyICsxOTU4LDIyIEBAIHZvaWQgTm9k
ZTo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3QKICAgICAgICAgb2xkRG9jdW1lbnQuaW5j
cmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICAgICAgdHJhdmVyc2VTdWJ0cmVlVG9V
cGRhdGVUcmVlU2NvcGUocm9vdCwgWyZdKE5vZGUmIG5vZGUpIHsKICAgICAgICAgICAgIEFTU0VS
VCghbm9kZS5pc1RyZWVTY29wZSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCZub2Rl
LnRyZWVTY29wZSgpID09ICZvbGRTY29wZSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgm
bm9kZS5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZub2RlLnRyZWVTY29wZSgpID09ICZvbGRT
Y29wZSk7CiAgICAgICAgICAgICBub2RlLnNldFRyZWVTY29wZShuZXdTY29wZSk7Ci0gICAgICAg
ICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQobm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50
KTsKKyAgICAgICAgICAgIG5vZGUubW92ZU5vZGVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CiAgICAgICAgIH0sIFsmXShTaGFkb3dSb290JiBzaGFkb3dSb290KSB7CiAg
ICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmc2hhZG93Um9vdC5k
b2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7Ci0gICAgICAgICAgICBzaGFkb3dSb290LnNldFBh
cmVudFRyZWVTY29wZShuZXdTY29wZSk7CisgICAgICAgICAgICBzaGFkb3dSb290Lm1vdmVTaGFk
b3dSb290VG9OZXdQYXJlbnRTY29wZShuZXdTY29wZSwgbmV3RG9jdW1lbnQpOwogICAgICAgICAg
ICAgbW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KHNoYWRvd1Jvb3QsIG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CiAgICAgICAgIH0pOwogICAgICAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRS
ZWZlcmVuY2luZ05vZGVDb3VudCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCZvbGRTY29wZS5kb2N1bWVudFNjb3BlKCkgPT0gJm9sZERvY3VtZW50
ICYmICZuZXdTY29wZS5kb2N1bWVudFNjb3BlKCkgPT0gJm5ld0RvY3VtZW50KTsKICAgICB9IGVs
c2UgewogICAgICAgICB0cmF2ZXJzZVN1YnRyZWVUb1VwZGF0ZVRyZWVTY29wZShyb290LCBbJl0o
Tm9kZSYgbm9kZSkgewogICAgICAgICAgICAgQVNTRVJUKCFub2RlLmlzVHJlZVNjb3BlKCkpOwot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoJm5vZGUudHJlZVNjb3BlKCkgPT0gJm9sZFNjb3Bl
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Jm5vZGUudHJlZVNjb3BlKCkgPT0gJm9sZFNjb3BlKTsKICAgICAgICAgICAgIG5vZGUuc2V0VHJl
ZVNjb3BlKG5ld1Njb3BlKTsKLSAgICAgICAgICAgIGlmICghbm9kZS5oYXNSYXJlRGF0YSgpKQor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFub2RlLmhhc1JhcmVEYXRhKCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChhdXRvKiBub2RlTGlzdHMgPSBub2RlLnJh
cmVEYXRhKCktPm5vZGVMaXN0cygpKQogICAgICAgICAgICAgICAgIG5vZGVMaXN0cy0+YWRvcHRU
cmVlU2NvcGUoKTsKQEAgLTIwMzksNzIgKzE5ODMsNjkgQEAgdm9pZCBOb2RlOjptb3ZlVHJlZVRv
TmV3U2NvcGUoTm9kZSYgcm9vdAogICAgIH0KIH0KIAotdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKK3Zv
aWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9j
dW1lbnQmIG5ld0RvY3VtZW50KQogewotICAgIFJFTEVBU0VfQVNTRVJUKCZkb2N1bWVudCgpID09
ICZuZXdEb2N1bWVudCk7Ci0gICAgRGlkTW92ZVRvTmV3RG9jdW1lbnRBc3NlcnRpb25TY29wZTo6
ZGlkUmVjaWV2ZUNhbGwoKnRoaXMsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Ci0KICAgICBu
ZXdEb2N1bWVudC5pbmNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpOwogICAgIG9sZERvY3Vt
ZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAKICAgICBpZiAoaGFzUmFyZURh
dGEoKSkgewogICAgICAgICBpZiAoYXV0byogbm9kZUxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxp
c3RzKCkpCiAgICAgICAgICAgICBub2RlTGlzdHMtPmFkb3B0RG9jdW1lbnQob2xkRG9jdW1lbnQs
IG5ld0RvY3VtZW50KTsKKyAgICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDog
KnJlZ2lzdHJ5KQorICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZE11dGF0aW9uT2JzZXJ2
ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0aW9uVHlwZXMoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGF1dG8qIHRyYW5zaWVudFJlZ2lzdHJ5ID0gdHJhbnNpZW50TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJ5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnRy
YW5zaWVudFJlZ2lzdHJ5KQorICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZE11dGF0aW9u
T2JzZXJ2ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0aW9uVHlwZXMoKSk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoIW11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
KTsKKyAgICAgICAgQVNTRVJUKCF0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSk7
CiAgICAgfQogCiAgICAgb2xkRG9jdW1lbnQubW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50
KCp0aGlzLCBuZXdEb2N1bWVudCk7CiAKLSAgICBpZiAoYXV0byogZXZlbnRUYXJnZXREYXRhID0g
dGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKLSAgICAgICAgaWYgKCFldmVudFRhcmdldERhdGEt
PmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZXZlbnRUeXBlcygpKQotICAg
ICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKHR5cGUpOwot
ICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlF
bmFibGVkKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0gb2xkRG9jdW1lbnQuZXhpc3Rp
bmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKHRoaXMpOwogICAg
IH0KIAotICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpLnNpemUoKSArIGV2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS53aGVlbEV2ZW50KS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7Ci0gICAgICAgIG9sZERvY3VtZW50LmRp
ZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCp0aGlzKTsKLSAgICAgICAgbmV3RG9jdW1lbnQuZGlk
QWRkV2hlZWxFdmVudEhhbmRsZXIoKnRoaXMpOwotICAgIH0KKyAgICBpZiAoYXV0byogZXZlbnRU
YXJnZXREYXRhID0gdGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKKyAgICAgICAgaWYgKCFldmVu
dFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZXZlbnRU
eXBlcygpKQorICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlwZUlmTmVl
ZGVkKHR5cGUpOworICAgICAgICB9CiAKLSAgICB1bnNpZ25lZCBudW1Ub3VjaEV2ZW50TGlzdGVu
ZXJzID0gMDsKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBldmVudE5hbWVzKCkudG91Y2hFdmVudE5h
bWVzKCkpCi0gICAgICAgIG51bVRvdWNoRXZlbnRMaXN0ZW5lcnMgKz0gZXZlbnRMaXN0ZW5lcnMo
bmFtZSkuc2l6ZSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvdWNoRXZl
bnRMaXN0ZW5lcnM7ICsraSkgewotICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVUb3VjaEV2
ZW50SGFuZGxlcigqdGhpcyk7Ci0gICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFRvdWNoRXZlbnRI
YW5kbGVyKCp0aGlzKTsKKyAgICAgICAgdW5zaWduZWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzID0g
ZXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkuc2l6ZSgpICsgZXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndoZWVsRXZlbnQpLnNpemUoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CisgICAg
ICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7Cisg
ICAgICAgICAgICBuZXdEb2N1bWVudC5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7Cisg
ICAgICAgIH0KIAorICAgICAgICB1bnNpZ25lZCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzID0gMDsK
KyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogZXZlbnROYW1lcygpLnRvdWNoRXZlbnROYW1lcygp
KQorICAgICAgICAgICAgbnVtVG91Y2hFdmVudExpc3RlbmVycyArPSBldmVudExpc3RlbmVycyhu
YW1lKS5zaXplKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvdWNo
RXZlbnRMaXN0ZW5lcnM7ICsraSkgeworICAgICAgICAgICAgb2xkRG9jdW1lbnQuZGlkUmVtb3Zl
VG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICAgICAgbmV3RG9jdW1lbnQuZGlkQWRk
VG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBM
QVRGT1JNKElPUykKLSAgICAgICAgb2xkRG9jdW1lbnQucmVtb3ZlVG91Y2hFdmVudExpc3RlbmVy
KCp0aGlzKTsKLSAgICAgICAgbmV3RG9jdW1lbnQuYWRkVG91Y2hFdmVudExpc3RlbmVyKCp0aGlz
KTsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhp
cyk7CisgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMp
OwogI2VuZGlmCi0gICAgfQorICAgICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQotICAgIHVuc2lnbmVkIG51bUdlc3R1cmVFdmVu
dExpc3RlbmVycyA9IDA7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogZXZlbnROYW1lcygpLmdlc3R1
cmVFdmVudE5hbWVzKCkpCi0gICAgICAgIG51bUdlc3R1cmVFdmVudExpc3RlbmVycyArPSBldmVu
dExpc3RlbmVycyhuYW1lKS5zaXplKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtR2VzdHVyZUV2ZW50TGlzdGVuZXJzOyArK2kpIHsKLSAgICAgICAgb2xkRG9jdW1lbnQucmVt
b3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwotICAgICAgICBuZXdEb2N1bWVudC5hZGRUb3Vj
aEV2ZW50SGFuZGxlcigqdGhpcyk7Ci0gICAgfQorICAgICAgICB1bnNpZ25lZCBudW1HZXN0dXJl
RXZlbnRMaXN0ZW5lcnMgPSAwOworICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBldmVudE5hbWVz
KCkuZ2VzdHVyZUV2ZW50TmFtZXMoKSkKKyAgICAgICAgICAgIG51bUdlc3R1cmVFdmVudExpc3Rl
bmVycyArPSBldmVudExpc3RlbmVycyhuYW1lKS5zaXplKCk7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUdlc3R1cmVFdmVudExpc3RlbmVyczsgKytpKSB7CisgICAgICAg
ICAgICBvbGREb2N1bWVudC5yZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAgICAg
ICAgICBuZXdEb2N1bWVudC5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAgICAgIH0K
ICNlbmRpZgotCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJ5KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiAqcmVnaXN0cnkpCi0g
ICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cmF0
aW9uLT5tdXRhdGlvblR5cGVzKCkpOwotICAgIH0KLQotICAgIGlmIChhdXRvKiB0cmFuc2llbnRS
ZWdpc3RyeSA9IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnRyYW5zaWVudFJlZ2lzdHJ5KQotICAgICAgICAg
ICAgbmV3RG9jdW1lbnQuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJhdGlvbi0+bXV0
YXRpb25UeXBlcygpKTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShT
RUNVUklUWV9BU1NFUlRJT05TKQpAQCAtMjExNiw2ICsyMDU3LDkgQEAgdm9pZCBOb2RlOjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudAogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFvbGREb2N1bWVudC50b3VjaEV2ZW50VGFyZ2V0c0NvbnRhaW4oKnRoaXMpKTsKICNl
bmRpZgogI2VuZGlmCisKKyAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBkb3du
Y2FzdDxFbGVtZW50PigqdGhpcykuZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBFdmVudFRhcmdldDo6QWRkRXZlbnRMaXN0ZW5l
ck9wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIyMzk4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw4ICs0OTEs
NiBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50
LmgKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7Ci0KICAgICBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYm
LCBjb25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYsIGNvbnN0IExpc3RlbmVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCkBAIC02NzksNyArNjc3
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQqIG9wYXF1ZVJvb3RTbG93KCkgY29uc3Q7CiAKKyAg
ICBzdGF0aWMgdm9pZCBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYsIERv
Y3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsKICAgICBzdGF0aWMg
dm9pZCBtb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYsIFRyZWVTY29wZSYgb2xkU2NvcGUsIFRyZWVT
Y29wZSYgbmV3U2NvcGUpOworICAgIHZvaWQgbW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50
JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsKIAogICAgIGludCBtX3JlZkNv
dW50OwogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAyMjM5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxNyArMTAwLDI1IEBAIHZvaWQg
U2hhZG93Um9vdDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW0KICAgICAgICAgZG9jdW1lbnQoKS5k
aWRSZW1vdmVJbkRvY3VtZW50U2hhZG93Um9vdCgqdGhpcyk7CiB9CiAKLXZvaWQgU2hhZG93Um9v
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYg
bmV3RG9jdW1lbnQpCit2b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdQYXJlbnRT
Y29wZShUcmVlU2NvcGUmIG5ld1Njb3BlLCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm9sZERvY3Vt
ZW50IHx8ICZkb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oJm5ld1Njb3BlLmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1l
bnQpOworICAgIHNldFBhcmVudFRyZWVTY29wZShuZXdTY29wZSk7CiAgICAgc2V0RG9jdW1lbnRT
Y29wZShuZXdEb2N1bWVudCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
JmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CiAK
ICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgogICAgIG1fc3R5bGVT
Y29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAm
bmV3RG9jdW1lbnQpOworfQorCit2b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdE
b2N1bWVudChEb2N1bWVudCYgbmV3RG9jdW1lbnQpCit7CisgICAgc2V0RG9jdW1lbnRTY29wZShu
ZXdEb2N1bWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighcGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3Bl
KCkgPT0gJm5ld0RvY3VtZW50KTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAgLy8gU3R5bGUgc2NvcGVz
IGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KKyAgICBtX3N0eWxlU2NvcGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIAog
U3R5bGU6OlNjb3BlJiBTaGFkb3dSb290OjpzdHlsZVNjb3BlKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAkocmV2aXNpb24gMjIzOTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsOSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVs
ZW1lbnQmKTsKIAorICAgIHZvaWQgbW92ZVNoYWRvd1Jvb3RUb05ld1BhcmVudFNjb3BlKFRyZWVT
Y29wZSYsIERvY3VtZW50Jik7CisgICAgdm9pZCBtb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQmLCBTaGFk
b3dSb290TW9kZSk7CiAKQEAgLTk2LDcgKzk5LDYgQEAgcHJpdmF0ZToKIAogICAgIE5vZGU6Oklu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0
b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9j
dW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9yZXNldFN0eWxlSW5o
ZXJpdGFuY2UgeyBmYWxzZSB9OwogICAgIFNoYWRvd1Jvb3RNb2RlIG1fdHlwZSB7IFNoYWRvd1Jv
b3RNb2RlOjpVc2VyQWdlbnQgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324922</attachid>
            <date>2017-10-25 16:40:36 -0700</date>
            <delta_ts>2017-10-26 15:02:42 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-178836-20171025164034.patch</filename>
            <type>text/plain</type>
            <size>21356</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE3LTEwLTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIERpZE1vdmVUb05ld0RvY3VtZW50
QXNzZXJ0aW9uU2NvcGUgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODM2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNTAwODg3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBEaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlIHdhcyBpbnRyb2R1Y2Vk
IGluIHIyMTc5NzIgdG8gcmVwbGFjZSBhbiBleGlzdGluZyBhc3NlcnRpb24gdG8gbWFrZSBzdXJl
CisgICAgICAgIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50IGlzIGFsd2F5cyBjYWxsZWQgYnkg
aXRzIG92ZXJyaWRlcyBpbiBOb2RlJ3Mgc3ViY2xhc3Nlcy4gSG93ZXZlciwgd2UgY2FuIGVuc3Vy
ZQorICAgICAgICBiZXR0ZXIgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQgaXMgYWx3YXlzIGNh
bGxlZCBpZiB3ZSBjYWxsZWQgaXQgZGlyZWN0bHkgaW4gTm9kZTo6bW92ZVRyZWVUb05ld1Njb3Bl
LgorCisgICAgICAgIEJlY2F1c2Ugb25seSBzdWJjbGFzc2VzIG9mIEVsZW1lbnQgYW5kIFNoYWRv
d1Jvb3Qgb3ZlcnJpZGUgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQgYW5kIHdlIGFscmVhZHkg
aGF2ZQorICAgICAgICBhIHNwZWNpYWxpemVkIGNvZGUgcGF0aCB0byBhZG9wdCBhIFNoYWRvd1Jv
b3QgdG8gYSBuZXcgZG9jdW1lbnQsIHRoaXMgcmVmYWN0b3JpbmcgZWxpbWluYXRlcyB0aGUgbmVl
ZCBmb3IKKyAgICAgICAgaGF2aW5nIGEgdmlydHVhbCBmdW5jdGlvbiBvbiBOb2RlIGF0IGFsbC4K
KworICAgICAgICBIZW5jZSB0aGlzIHBhdGNoIG5hbWVzIE5vZGU6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50IHRvIE5vZGU6Om1vdmVUb05ld0RvY3VtZW50IGFuZCBtYWtlcyBpdCBub24tdmlydHVhbCwK
KyAgICAgICAgc3BsaXRzIFNoYWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50IGludG8gbW92
ZVNoYWRvd1Jvb3RUb05ld1BhcmVudFNjb3BlIGFuZCBtb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1l
bnQsCisgICAgICAgIGFuZCByZW1vdmVzIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2Nv
cGUgY29tcGxldGVseS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxk
IGJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnRTbG93Q2FzZSk6IFJlbmFtZWQgZnJvbSBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQu
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KTogSW5saW5lZCB0aGUgY2hlY2sgZm9yIGVt
cHRpbmVzcyBvZiBtX25vZGVJdGVyYXRvcnMgdG8KKyAgICAgICAgYXZvaWQga2VlcCBjYWxsaW5n
IG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlIG9uIGV2ZXJ5IHNpbmdsZSBu
b2RlIGdldHRpbmcgbW92ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBSZW1vdmVkIHRoZSBjYWxs
IHRvIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50IHNpbmNlIHRoaXMgaXMgdGhlCisgICAgICAg
IGJhc2UgdmlydHVhbCBmdW5jdGlvbiBub3cuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWRNb3ZlVG9OZXdEb2N1
bWVudEFzc2VydGlvblNjb3BlOjpEaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9u
U2NvcGU6On5EaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGU6OmRpZFJl
Y2lldmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1vdmVOb2RlVG9OZXdEb2N1
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptb3ZlU2hhZG93VHJlZVRv
TmV3RG9jdW1lbnQpOiBNYWRlIHRoaXMgYSBtZW1iZXIgZnVuY3Rpb24gb2YgTm9kZSBzaW5jZSBp
dCBuZWVkcyB0byBjYWxsCisgICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCwgd2hpY2ggaXMg
cHJpdmF0ZSB0byBOb2RlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92ZVRyZWVUb05ld1Nj
b3BlKTogUmVtb3ZlZCB0aGUgcmVsZWFzZSBhc3NlcnQgZm9yIHRoZSByb290IG5vZGUgc2luY2Ug
IHRoZSBzYW1lIGNoZWNrCisgICAgICAgIGV4aXN0cyBpbnNpZGUgdHJhdmVyc2VTdWJ0cmVlVG9V
cGRhdGVUcmVlU2NvcGUuIEFsc28gcmVtb3ZlZCB0aGUgcmVsZWFzZSBhc3NlcnRpb24gZm9yIGNo
ZWNraW5nIHRoYXQKKyAgICAgICAgbm9kZSdzIG9sZCBkb2N1bWVudCBtYXRjaGVzIHRoZSBvbGQg
ZG9jdW1lbnQgc2luY2UgZG9jdW1lbnQoKSBzaW1wbHkgY2FsbHMgdHJlZVNjb3BlKCkuZG9jdW1l
bnRTY29wZSgpCisgICAgICAgIGFuZCB3ZSdyZSBhbHJlYWR5IHJlbGVhc2UtYXNzZXJ0aW5nIHRo
YXQgdGhlIG9sZCBzY29wZSBvZiBhIG5vZGUgbWF0Y2hlcyB0aGUgb2xkIHNjb3BlIHdlIGtub3cg
b2YuCisgICAgICAgIFdlIHJlbGVhc2UtYXNzZXJ0IHRoYXQgdGhlIG9sZCB0cmVlIHNjb3BlJ3Mg
ZG9jdW1lbnQgZGlkbid0IGNoYW5nZSBhZnRlciB0aGUgdHJhdmVyc2FsIGluc3RlYWQuIEZpbmFs
bHksCisgICAgICAgIHJlcGxhY2VkIGEgYnVuY2ggb2YgUkVMRUFTRV9BU1NFUlQgd2l0aCBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KTogUmVuYW1lZCBmcm9tIGRpZE1vdmVUb05ld0Rv
Y3VtZW50LiBNb3ZlZCB0aGUgY29kZSByZWxhdGVkIHRvCisgICAgICAgIG11dGF0aW9uIG9ic2Vy
dmVycyBpbnNpZGUgaGFzUmFyZURhdGEoKSBjaGVjaywgYW5kIG1vdmVkIHRoZSB0aGUgY29kZSB0
byBtb3ZlIGV2ZW50IGxpc3RlbmVycyBpbnNpZGUKKyAgICAgICAgZXZlbnRUYXJnZXREYXRhKCkg
Y2hlY2sgYm90aCBmb3IgY2xhcml0eSwgYW5kIGF2b2lkIGRvaW5nIHRoZSB3b3JrIGZvciBldmVy
eSBzaW5nbGUgbm9kZSBiZWluZyBtb3ZlZC4KKyAgICAgICAgRmluYWxseSwgY2FsbCB0aGUgb2xk
IGRpZE1vdmVUb05ld0RvY3VtZW50IHdoZW4gInRoaXMiIGlzIGFuIEVsZW1lbnQuCisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3UGFyZW50U2NvcGUpOiBBZGRl
ZC4gRXh0cmFjdGVkIGZyb20gZGlkTW92ZVRvTmV3RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQpOiBSZW5hbWVkIGZyb20g
ZGlkTW92ZVRvTmV3RG9jdW1lbnQuIFdlIG5vdworICAgICAgICByZWxlYXNlLWFzc2VydCB0aGF0
IHBhcmVudCB0cmVlIHNjb3BlJ3MgZG9jdW1lbnQgbWF0Y2hlcyB0aGUgbmV3IGRvY3VtZW50IGlm
IGFueS4KKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorCiAyMDE3LTEwLTI1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIG1pc3Np
bmcgY29weXJpZ2h0IGhlYWRlciB0byBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5pZGwuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMzk4OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMzgsOCArNDAzOCw5IEBA
IHZvaWQgRG9jdW1lbnQ6OmRldGFjaE5vZGVJdGVyYXRvcihOb2RlSXQKICAgICBtX25vZGVJdGVy
YXRvcnMucmVtb3ZlKG5pKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNU
b05ld0RvY3VtZW50KE5vZGUmIG5vZGUsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKK3ZvaWQgRG9j
dW1lbnQ6Om1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlKE5vZGUmIG5vZGUs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKKyAgICBBU1NFUlQoIW1fbm9kZUl0ZXJhdG9ycy5p
c0VtcHR5KCkpOwogICAgIGZvciAoYXV0byogaXQgOiBjb3B5VG9WZWN0b3IobV9ub2RlSXRlcmF0
b3JzKSkgewogICAgICAgICBpZiAoJml0LT5yb290KCkgPT0gJm5vZGUpIHsKICAgICAgICAgICAg
IGRldGFjaE5vZGVJdGVyYXRvcihpdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjIzOTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1MSw3ICs3NTEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhdHRhY2hOb2RlSXRl
cmF0b3IoTm9kZUl0ZXJhdG9yKik7CiAgICAgdm9pZCBkZXRhY2hOb2RlSXRlcmF0b3IoTm9kZUl0
ZXJhdG9yKik7Ci0gICAgdm9pZCBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQoTm9kZSYs
IERvY3VtZW50Jik7CisgICAgdm9pZCBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQoTm9k
ZSYgbm9kZSwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX25v
ZGVJdGVyYXRvcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbW92ZU5vZGVJdGVyYXRvcnNUb05l
d0RvY3VtZW50U2xvd0Nhc2Uobm9kZSwgbmV3RG9jdW1lbnQpOworICAgIH0KIAogICAgIHZvaWQg
YXR0YWNoUmFuZ2UoUmFuZ2UqKTsKICAgICB2b2lkIGRldGFjaFJhbmdlKFJhbmdlKik7CkBAIC0x
NDIzLDYgKzE0MjcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBidWlsZEFjY2Vzc0tleU1hcChU
cmVlU2NvcGUqIHJvb3QpOwogCisgICAgdm9pZCBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnRTbG93Q2FzZShOb2RlJiwgRG9jdW1lbnQmKTsKKwogICAgIHZvaWQgbG9hZEV2ZW50RGVsYXlU
aW1lckZpcmVkKCk7CiAKICAgICB2b2lkIHBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzk4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2MSw3ICsxNTYxLDYgQEAgdm9p
ZCBFbGVtZW50OjpwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkKIHZvaWQgRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkg
PT0gJm5ld0RvY3VtZW50KTsKLSAgICBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1
bWVudCwgbmV3RG9jdW1lbnQpOwogCiAgICAgaWYgKG9sZERvY3VtZW50LmluUXVpcmtzTW9kZSgp
ICE9IGRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAgLy8gRWxlbWVudERhdGE6
Om1fY2xhc3NOYW1lcyBvciBFbGVtZW50RGF0YTo6bV9pZEZvclN0eWxlUmVzb2x1dGlvbiBuZWVk
IHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGUgcmlnaHQgY2FzZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAkocmV2aXNpb24gMjIzOTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoKICAgICAvLyBDbG9uZXMgYWxs
IGF0dHJpYnV0ZS1kZXJpdmVkIGRhdGEsIGluY2x1ZGluZyBzdWJjbGFzcyBzcGVjaWZpY3MgKHRo
cm91Z2ggY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMuKQogICAgIHZvaWQgY2xvbmVEYXRhRnJv
bUVsZW1lbnQoY29uc3QgRWxlbWVudCYpOwogCisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsK
KwogICAgIGJvb2wgaGFzRXF1aXZhbGVudEF0dHJpYnV0ZXMoY29uc3QgRWxlbWVudCogb3RoZXIp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJv
bUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIHsgfQpAQCAtNTU2LDcgKzU1OCw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAg
dm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJl
dmlzaW9uIDIyMzk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTkxNyw2MiArMTkxNyw2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIE5vZGU6OmV2
ZW50VGFyZ2V0SW4KICAgICByZXR1cm4gTm9kZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCi1j
bGFzcyBEaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlIHsKLXB1YmxpYzoKLSAgICBE
aWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKE5vZGUmIG5vZGUsIERvY3VtZW50JiBv
bGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQotICAgICAgICA6IG1fbm9kZShub2Rl
KQotICAgICAgICAsIG1fb2xkRG9jdW1lbnQob2xkRG9jdW1lbnQpCi0gICAgICAgICwgbV9uZXdE
b2N1bWVudChuZXdEb2N1bWVudCkKLSAgICAgICAgLCBtX3ByZXZpb3VzU2NvcGUoc19zY29wZSkK
LSAgICB7Ci0gICAgICAgIHNfc2NvcGUgPSB0aGlzOwotICAgIH0KLQotICAgIH5EaWRNb3ZlVG9O
ZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fY2FsbGVkKTsKLSAgICAgICAgc19zY29wZSA9IG1fcHJldmlvdXNTY29wZTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdm9pZCBkaWRSZWNpZXZlQ2FsbChOb2RlJiBub2RlLCBEb2N1bWVudCYgb2xk
RG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHNfc2NvcGUpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghc19zY29wZS0+bV9jYWxs
ZWQpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCgmc19zY29wZS0+bV9ub2RlID09ICZub2RlKTsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoJnNfc2NvcGUtPm1fb2xkRG9jdW1lbnQgPT0gJm9sZERv
Y3VtZW50KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoJnNfc2NvcGUtPm1fbmV3RG9jdW1lbnQg
PT0gJm5ld0RvY3VtZW50KTsKLSAgICAgICAgc19zY29wZS0+bV9jYWxsZWQgPSB0cnVlOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBOb2RlJiBtX25vZGU7Ci0gICAgRG9jdW1lbnQmIG1fb2xkRG9j
dW1lbnQ7Ci0gICAgRG9jdW1lbnQmIG1fbmV3RG9jdW1lbnQ7Ci0gICAgYm9vbCBtX2NhbGxlZCB7
IGZhbHNlIH07Ci0gICAgRGlkTW92ZVRvTmV3RG9jdW1lbnRBc3NlcnRpb25TY29wZSogbV9wcmV2
aW91c1Njb3BlOwotCi0gICAgc3RhdGljIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2Nv
cGUqIHNfc2NvcGU7Ci19OwotCi1EaWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlKiBE
aWRNb3ZlVG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlOjpzX3Njb3BlID0gbnVsbHB0cjsKLQot
I2Vsc2UKLWNsYXNzIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGUgewotcHVibGlj
OgotICAgIERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGUoTm9kZSYsIERvY3VtZW50
JiwgRG9jdW1lbnQmKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNpZXZlQ2FsbChOb2RlJiwg
RG9jdW1lbnQmLCBEb2N1bWVudCYpIHsgfQotfTsKLSNlbmRpZgotCi1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBEb2N1bWVudCYgb2xk
RG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIW5vZGUuaXND
b25uZWN0ZWQoKSB8fCAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50KTsKLSAgICBEaWRNb3Zl
VG9OZXdEb2N1bWVudEFzc2VydGlvblNjb3BlIHNjb3BlKG5vZGUsIG9sZERvY3VtZW50LCBuZXdE
b2N1bWVudCk7Ci0gICAgbm9kZS5kaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3
RG9jdW1lbnQpOwotICAgIFJFTEVBU0VfQVNTRVJUKCZub2RlLmRvY3VtZW50KCkgPT0gJm5ld0Rv
Y3VtZW50KTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIE1vdmVOb2RlRnVuY3Rpb24sIHR5cGVu
YW1lIE1vdmVTaGFkb3dSb290RnVuY3Rpb24+CiBzdGF0aWMgdm9pZCB0cmF2ZXJzZVN1YnRyZWVU
b1VwZGF0ZVRyZWVTY29wZShOb2RlJiByb290LCBNb3ZlTm9kZUZ1bmN0aW9uIG1vdmVOb2RlLCBN
b3ZlU2hhZG93Um9vdEZ1bmN0aW9uIG1vdmVTaGFkb3dSb290KQogewpAQCAtMTk5MywxMiArMTkz
NywxMyBAQCBzdGF0aWMgdm9pZCB0cmF2ZXJzZVN1YnRyZWVUb1VwZGF0ZVRyZWVTCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYg
c2hhZG93Um9vdCwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQp
CitpbmxpbmUgdm9pZCBOb2RlOjptb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9v
dCYgc2hhZG93Um9vdCwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCiB7CiAgICAgdHJhdmVyc2VTdWJ0cmVlVG9VcGRhdGVUcmVlU2NvcGUoc2hhZG93Um9vdCwg
WyZvbGREb2N1bWVudCwgJm5ld0RvY3VtZW50XShOb2RlJiBub2RlKSB7Ci0gICAgICAgIG1vdmVO
b2RlVG9OZXdEb2N1bWVudChub2RlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgICAg
ICBub2RlLm1vdmVOb2RlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwog
ICAgIH0sIFsmb2xkRG9jdW1lbnQsICZuZXdEb2N1bWVudF0oU2hhZG93Um9vdCYgaW5uZXJTaGFk
b3dSb290KSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCZpbm5lclNoYWRvd1Jvb3QuZG9jdW1l
bnQoKSA9PSAmb2xkRG9jdW1lbnQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCZpbm5lclNoYWRvd1Jvb3QuZG9jdW1lbnQoKSA9PSAmb2xkRG9jdW1l
bnQpOworICAgICAgICBpbm5lclNoYWRvd1Jvb3QubW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50
KG5ld0RvY3VtZW50KTsKICAgICAgICAgbW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KGlubmVy
U2hhZG93Um9vdCwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKICAgICB9KTsKIH0KQEAgLTIw
MDYsNyArMTk1MSw2IEBAIHN0YXRpYyB2b2lkIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudCgK
IHZvaWQgTm9kZTo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3QsIFRyZWVTY29wZSYgb2xk
U2NvcGUsIFRyZWVTY29wZSYgbmV3U2NvcGUpCiB7CiAgICAgQVNTRVJUKCZvbGRTY29wZSAhPSAm
bmV3U2NvcGUpOwotICAgIFJFTEVBU0VfQVNTRVJUKCZyb290LnRyZWVTY29wZSgpID09ICZvbGRT
Y29wZSk7CiAKICAgICBEb2N1bWVudCYgb2xkRG9jdW1lbnQgPSBvbGRTY29wZS5kb2N1bWVudFNj
b3BlKCk7CiAgICAgRG9jdW1lbnQmIG5ld0RvY3VtZW50ID0gbmV3U2NvcGUuZG9jdW1lbnRTY29w
ZSgpOwpAQCAtMjAxNCwyMiArMTk1OCwyMiBAQCB2b2lkIE5vZGU6Om1vdmVUcmVlVG9OZXdTY29w
ZShOb2RlJiByb290CiAgICAgICAgIG9sZERvY3VtZW50LmluY3JlbWVudFJlZmVyZW5jaW5nTm9k
ZUNvdW50KCk7CiAgICAgICAgIHRyYXZlcnNlU3VidHJlZVRvVXBkYXRlVHJlZVNjb3BlKHJvb3Qs
IFsmXShOb2RlJiBub2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW5vZGUuaXNUcmVlU2NvcGUo
KSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgmbm9kZS50cmVlU2NvcGUoKSA9PSAmb2xk
U2NvcGUpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoJm5vZGUuZG9jdW1lbnQoKSA9PSAm
b2xkRG9jdW1lbnQpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTigmbm9kZS50cmVlU2NvcGUoKSA9PSAmb2xkU2NvcGUpOwogICAgICAgICAgICAg
bm9kZS5zZXRUcmVlU2NvcGUobmV3U2NvcGUpOwotICAgICAgICAgICAgbW92ZU5vZGVUb05ld0Rv
Y3VtZW50KG5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAgICAgICAgICBub2Rl
Lm1vdmVOb2RlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgICAg
ICB9LCBbJl0oU2hhZG93Um9vdCYgc2hhZG93Um9vdCkgewogICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJnNoYWRvd1Jvb3QuZG9jdW1lbnQoKSA9PSAmb2xkRG9j
dW1lbnQpOwotICAgICAgICAgICAgc2hhZG93Um9vdC5zZXRQYXJlbnRUcmVlU2NvcGUobmV3U2Nv
cGUpOworICAgICAgICAgICAgc2hhZG93Um9vdC5tb3ZlU2hhZG93Um9vdFRvTmV3UGFyZW50U2Nv
cGUobmV3U2NvcGUsIG5ld0RvY3VtZW50KTsKICAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudChzaGFkb3dSb290LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgICAg
ICB9KTsKICAgICAgICAgb2xkRG9jdW1lbnQuZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQo
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmb2xk
U2NvcGUuZG9jdW1lbnRTY29wZSgpID09ICZvbGREb2N1bWVudCAmJiAmbmV3U2NvcGUuZG9jdW1l
bnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJhdmVy
c2VTdWJ0cmVlVG9VcGRhdGVUcmVlU2NvcGUocm9vdCwgWyZdKE5vZGUmIG5vZGUpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbm9kZS5pc1RyZWVTY29wZSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCZub2RlLnRyZWVTY29wZSgpID09ICZvbGRTY29wZSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZub2RlLnRyZWVTY29wZSgpID09
ICZvbGRTY29wZSk7CiAgICAgICAgICAgICBub2RlLnNldFRyZWVTY29wZShuZXdTY29wZSk7Ci0g
ICAgICAgICAgICBpZiAoIW5vZGUuaGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghbm9kZS5oYXNSYXJlRGF0YSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBpZiAoYXV0byogbm9kZUxpc3RzID0gbm9kZS5yYXJlRGF0YSgpLT5ub2RlTGlzdHMo
KSkKICAgICAgICAgICAgICAgICBub2RlTGlzdHMtPmFkb3B0VHJlZVNjb3BlKCk7CkBAIC0yMDM5
LDcyICsxOTgzLDY5IEBAIHZvaWQgTm9kZTo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3QK
ICAgICB9CiB9CiAKLXZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCit2b2lkIE5vZGU6Om1vdmVOb2RlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
IHsKLSAgICBSRUxFQVNFX0FTU0VSVCgmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwotICAg
IERpZE1vdmVUb05ld0RvY3VtZW50QXNzZXJ0aW9uU2NvcGU6OmRpZFJlY2lldmVDYWxsKCp0aGlz
LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotCiAgICAgbmV3RG9jdW1lbnQuaW5jcmVtZW50
UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRSZWZlcmVu
Y2luZ05vZGVDb3VudCgpOwogCiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIG5vZGVMaXN0cyA9IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQogICAgICAgICAgICAg
bm9kZUxpc3RzLT5hZG9wdERvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAg
ICAgIGlmIChhdXRvKiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6ICpyZWdpc3RyeSkKKyAgICAgICAg
ICAgICAgICBuZXdEb2N1bWVudC5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cmF0aW9u
LT5tdXRhdGlvblR5cGVzKCkpOworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0cmFuc2ll
bnRSZWdpc3RyeSA9IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6ICp0cmFuc2llbnRSZWdpc3RyeSkKKyAg
ICAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0
cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKCFtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSk7CisgICAgICAgIEFTU0VSVCgh
dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpOwogICAgIH0KIAogICAgIG9sZERv
Y3VtZW50Lm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudCgqdGhpcywgbmV3RG9jdW1lbnQp
OwogCi0gICAgaWYgKGF1dG8qIGV2ZW50VGFyZ2V0RGF0YSA9IHRoaXMtPmV2ZW50VGFyZ2V0RGF0
YSgpKSB7Ci0gICAgICAgIGlmICghZXZlbnRUYXJnZXREYXRhLT5ldmVudExpc3RlbmVyTWFwLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZXZlbnRUYXJnZXREYXRh
LT5ldmVudExpc3RlbmVyTWFwLmV2ZW50VHlwZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdEb2N1
bWVudC5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZCh0eXBlKTsKLSAgICAgICAgfQotICAgIH0KLQog
ICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBjYWNoZSA9IG9sZERvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQog
ICAgICAgICAgICAgY2FjaGUtPnJlbW92ZSh0aGlzKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBu
dW1XaGVlbEV2ZW50SGFuZGxlcnMgPSBldmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V3
aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2hlZWxFdmVu
dCkuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1XaGVlbEV2ZW50SGFu
ZGxlcnM7ICsraSkgewotICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFu
ZGxlcigqdGhpcyk7Ci0gICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVy
KCp0aGlzKTsKLSAgICB9CisgICAgaWYgKGF1dG8qIGV2ZW50VGFyZ2V0RGF0YSA9IHRoaXMtPmV2
ZW50VGFyZ2V0RGF0YSgpKSB7CisgICAgICAgIGlmICghZXZlbnRUYXJnZXREYXRhLT5ldmVudExp
c3RlbmVyTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZXZl
bnRUYXJnZXREYXRhLT5ldmVudExpc3RlbmVyTWFwLmV2ZW50VHlwZXMoKSkKKyAgICAgICAgICAg
ICAgICBuZXdEb2N1bWVudC5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZCh0eXBlKTsKKyAgICAgICAg
fQogCi0gICAgdW5zaWduZWQgbnVtVG91Y2hFdmVudExpc3RlbmVycyA9IDA7Ci0gICAgZm9yIChh
dXRvJiBuYW1lIDogZXZlbnROYW1lcygpLnRvdWNoRXZlbnROYW1lcygpKQotICAgICAgICBudW1U
b3VjaEV2ZW50TGlzdGVuZXJzICs9IGV2ZW50TGlzdGVuZXJzKG5hbWUpLnNpemUoKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzOyArK2kpIHsK
LSAgICAgICAgb2xkRG9jdW1lbnQuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwot
ICAgICAgICBuZXdEb2N1bWVudC5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAg
ICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpLnNpemUoKSArIGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS53aGVlbEV2ZW50KS5zaXplKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1XaGVlbEV2ZW50SGFuZGxlcnM7ICsraSkgeworICAgICAgICAgICAgb2xkRG9jdW1lbnQu
ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICAgICAgbmV3RG9jdW1l
bnQuZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICB9CiAKKyAgICAgICAg
dW5zaWduZWQgbnVtVG91Y2hFdmVudExpc3RlbmVycyA9IDA7CisgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IGV2ZW50TmFtZXMoKS50b3VjaEV2ZW50TmFtZXMoKSkKKyAgICAgICAgICAgIG51bVRv
dWNoRXZlbnRMaXN0ZW5lcnMgKz0gZXZlbnRMaXN0ZW5lcnMobmFtZSkuc2l6ZSgpOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzOyArK2kp
IHsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCp0
aGlzKTsKKyAgICAgICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKCp0
aGlzKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCi0gICAgICAg
IG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7Ci0gICAgICAgIG5l
d0RvY3VtZW50LmFkZFRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICBvbGRE
b2N1bWVudC5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgbmV3
RG9jdW1lbnQuYWRkVG91Y2hFdmVudExpc3RlbmVyKCp0aGlzKTsKICNlbmRpZgotICAgIH0KKyAg
ICAgICAgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgRU5BQkxFKElPU19HRVNUVVJF
X0VWRU5UUykKLSAgICB1bnNpZ25lZCBudW1HZXN0dXJlRXZlbnRMaXN0ZW5lcnMgPSAwOwotICAg
IGZvciAoYXV0byYgbmFtZSA6IGV2ZW50TmFtZXMoKS5nZXN0dXJlRXZlbnROYW1lcygpKQotICAg
ICAgICBudW1HZXN0dXJlRXZlbnRMaXN0ZW5lcnMgKz0gZXZlbnRMaXN0ZW5lcnMobmFtZSkuc2l6
ZSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdlc3R1cmVFdmVudExpc3Rl
bmVyczsgKytpKSB7Ci0gICAgICAgIG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRIYW5kbGVy
KCp0aGlzKTsKLSAgICAgICAgbmV3RG9jdW1lbnQuYWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMp
OwotICAgIH0KKyAgICAgICAgdW5zaWduZWQgbnVtR2VzdHVyZUV2ZW50TGlzdGVuZXJzID0gMDsK
KyAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogZXZlbnROYW1lcygpLmdlc3R1cmVFdmVudE5hbWVz
KCkpCisgICAgICAgICAgICBudW1HZXN0dXJlRXZlbnRMaXN0ZW5lcnMgKz0gZXZlbnRMaXN0ZW5l
cnMobmFtZSkuc2l6ZSgpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1H
ZXN0dXJlRXZlbnRMaXN0ZW5lcnM7ICsraSkgeworICAgICAgICAgICAgb2xkRG9jdW1lbnQucmVt
b3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICAgICAgbmV3RG9jdW1lbnQuYWRk
VG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAgICB9CiAjZW5kaWYKLQotICAgIGlmIChh
dXRvKiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnJlZ2lzdHJ5KQotICAgICAgICAgICAgbmV3RG9jdW1l
bnQuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJhdGlvbi0+bXV0YXRpb25UeXBlcygp
KTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byogdHJhbnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJh
dGlvbiA6ICp0cmFuc2llbnRSZWdpc3RyeSkKLSAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZE11
dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0aW9uVHlwZXMoKSk7CiAgICAg
fQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
QEAgLTIxMTYsNiArMjA1Nyw5IEBAIHZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2xkRG9jdW1lbnQu
dG91Y2hFdmVudFRhcmdldHNDb250YWluKCp0aGlzKSk7CiAjZW5kaWYKICNlbmRpZgorCisgICAg
aWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8RWxlbWVudD4oKnRoaXMp
LmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgY29uc3QgRXZlbnRUYXJnZXQ6OkFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMjM5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsOCArNDkxLDYgQEAgcHVibGljOgogICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsOyAvLyBJbXBsZW1lbnRlZCBpbiBEb2N1bWVudC5oCiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYg
bmV3RG9jdW1lbnQpOwotCiAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0ZW5l
ck9wdGlvbnMmKSBvdmVycmlkZTsKIApAQCAtNjc5LDcgKzY3Nyw5IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkKiBvcGFxdWVSb290U2xvdygpIGNvbnN0OwogCisgICAgc3RhdGljIHZvaWQgbW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCk7CiAgICAgc3RhdGljIHZvaWQgbW92ZVRyZWVUb05ld1Nj
b3BlKE5vZGUmLCBUcmVlU2NvcGUmIG9sZFNjb3BlLCBUcmVlU2NvcGUmIG5ld1Njb3BlKTsKKyAg
ICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3Vt
ZW50JiBuZXdEb2N1bWVudCk7CiAKICAgICBpbnQgbV9yZWZDb3VudDsKICAgICBtdXRhYmxlIHVp
bnQzMl90IG1fbm9kZUZsYWdzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2
aXNpb24gMjIzOTg5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsMTcgKzEwMCwyMCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtCiAgICAgICAgIGRvY3VtZW50KCkuZGlkUmVtb3ZlSW5Eb2N1bWVudFNo
YWRvd1Jvb3QoKnRoaXMpOwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQordm9pZCBT
aGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3UGFyZW50U2NvcGUoVHJlZVNjb3BlJiBuZXdT
Y29wZSwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQoreworICAgIHNldFBhcmVudFRyZWVTY29wZShu
ZXdTY29wZSk7CisgICAgbW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KG5ld0RvY3VtZW50KTsK
K30KKwordm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG5ld0RvY3VtZW50KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCZkb2N1bWVudCgpID09ICZvbGREb2N1bWVudCB8fCAmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1l
bnQpOwogICAgIHNldERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQpOwotICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5bGVTY29wZS0+ZG9jdW1lbnQo
KSA9PSAmb2xkRG9jdW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1l
bnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRv
Y3VtZW50IHNwZWNpZmljLgogICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcyk7Ci0KLSAgICBEb2N1bWVudEZyYWdtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3
RG9jdW1lbnQpOwogfQogCiBTdHlsZTo6U2NvcGUmIFNoYWRvd1Jvb3Q6OnN0eWxlU2NvcGUoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMjM5ODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw5IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxOb2RlKj4qIGFzc2lnbmVkTm9kZXNGb3JTbG90
KGNvbnN0IEhUTUxTbG90RWxlbWVudCYpOwogCisgICAgdm9pZCBtb3ZlU2hhZG93Um9vdFRvTmV3
UGFyZW50U2NvcGUoVHJlZVNjb3BlJiwgRG9jdW1lbnQmKTsKKyAgICB2b2lkIG1vdmVTaGFkb3dS
b290VG9OZXdEb2N1bWVudChEb2N1bWVudCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgU2hhZG93Um9v
dChEb2N1bWVudCYsIFNoYWRvd1Jvb3RNb2RlKTsKIApAQCAtOTYsNyArOTksNiBAQCBwcml2YXRl
OgogCiAgICAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5j
ZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9u
UG9pbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB7IGZhbHNlIH07CiAgICAgU2hhZG93Um9vdE1vZGUg
bV90eXBlIHsgU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>