<?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>149236</bug_id>
          
          <creation_ts>2015-09-16 16:03:01 -0700</creation_ts>
          <short_desc>Turn ChildNodeInsertion/RemovalNotifier classes into functions</short_desc>
          <delta_ts>2017-10-16 22:32:30 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178376</see_also>
          <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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126499</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-16 16:03:01 -0700</bug_when>
    <thetext>Less architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126530</commentid>
    <comment_count>1</comment_count>
      <attachid>261341</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-16 17:22:43 -0700</bug_when>
    <thetext>Created attachment 261341
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126535</commentid>
    <comment_count>2</comment_count>
      <attachid>261341</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-16 17:35:22 -0700</bug_when>
    <thetext>Comment on attachment 261341
patch

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

Watch out for perf regressions.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:5
&gt; + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014 Apple Inc. All rights reserved.

2015?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126584</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-16 20:28:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/189896</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261341</attachid>
            <date>2015-09-16 17:22:43 -0700</date>
            <delta_ts>2015-09-16 17:35:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>childnodenotifier-function.patch</filename>
            <type>text/plain</type>
            <size>17786</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4OTg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA5LTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUdXJuIENoaWxkTm9kZUluc2Vy
dGlvbi9SZW1vdmFsTm90aWZpZXIgY2xhc3NlcyBpbnRvIGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MjM2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGVzcyBhcmNoaXRlY3R1cmUsIG1v
cmUgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpub3RpZnlDaGlsZEluc2VydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Om5vdGlmeUNoaWxkUmVtb3ZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeURl
c2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlE
ZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Tm9kZUluc2Vy
dGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpub3RpZnlDaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRG
cm9tRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OkNo
aWxkTm9kZVJlbW92YWxOb3RpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGls
ZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpu
b3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGRTaGFkb3dS
b290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdCk6CisKIDIwMTUtMDktMTYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJREw6IFJlbmFt
ZSBbUmV0dXJuTmV3T2JqZWN0XSB0byBbTmV3T2JqZWN0XSBhbmQgdXNlIGl0IG1vcmUgY29uc2lz
dGVudGx5IGluIERPTQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2
aXNpb24gMTg5ODQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpub3Rp
ZnlDaGlsZEluc2VydGVkKAogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUoKnRoaXMpLmNoaWxk
QWRkZWQoY2hpbGQpOwogCiAgICAgTm9kZVZlY3RvciBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9u
VGFyZ2V0czsKLSAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcigqdGhpcykubm90aWZ5KGNo
aWxkLCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgbm90aWZ5Q2hpbGRO
b2RlSW5zZXJ0ZWQoKnRoaXMsIGNoaWxkLCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cyk7CiAKICAgICBDaGlsZENoYW5nZSBjaGFuZ2U7CiAgICAgY2hhbmdlLnR5cGUgPSBjaGlsZC5p
c0VsZW1lbnROb2RlKCkgPyBFbGVtZW50SW5zZXJ0ZWQgOiBjaGlsZC5pc1RleHROb2RlKCkgPyBU
ZXh0SW5zZXJ0ZWQgOiBOb25Db250ZW50c0NoaWxkQ2hhbmdlZDsKQEAgLTM0NCw3ICszNDQsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6Om5vdGlmeUNoaWxkSW5zZXJ0ZWQoCiAKIHZvaWQgQ29udGFp
bmVyTm9kZTo6bm90aWZ5Q2hpbGRSZW1vdmVkKE5vZGUmIGNoaWxkLCBOb2RlKiBwcmV2aW91c1Np
YmxpbmcsIE5vZGUqIG5leHRTaWJsaW5nLCBDaGlsZENoYW5nZVNvdXJjZSBzb3VyY2UpCiB7Ci0g
ICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKCp0aGlzKS5ub3RpZnkoY2hpbGQpOworICAgIG5v
dGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsIGNoaWxkKTsKIAogICAgIENoaWxkQ2hhbmdlIGNo
YW5nZTsKICAgICBjaGFuZ2UudHlwZSA9IGlzPEVsZW1lbnQ+KGNoaWxkKSA/IEVsZW1lbnRSZW1v
dmVkIDogaXM8VGV4dD4oY2hpbGQpID8gVGV4dFJlbW92ZWQgOiBOb25Db250ZW50c0NoaWxkQ2hh
bmdlZDsKQEAgLTYzNiw5ICs2MzYsOSBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxk
cmVuKCkKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNw
ZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKICAgICAgICAgewogICAgICAgICAgICAgTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKLSAgICAgICAgICAgIHdo
aWxlIChSZWZQdHI8Tm9kZT4gbiA9IG1fZmlyc3RDaGlsZCkgewotICAgICAgICAgICAgICAgIHJl
bW92ZUJldHdlZW4oMCwgbV9maXJzdENoaWxkLT5uZXh0U2libGluZygpLCAqbV9maXJzdENoaWxk
KTsKLSAgICAgICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoKnRoaXMpLm5vdGlm
eSgqbik7CisgICAgICAgICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENo
aWxkKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlQmV0d2VlbigwLCBjaGlsZC0+bmV4dFNpYmxp
bmcoKSwgKmNoaWxkKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0
aGlzLCAqY2hpbGQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAkocmV2aXNpb24gMTg5
ODQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksNyArMjksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYgbm9k
ZSwgTm9kZVZlY3RvciYgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCit2b2lkIG5v
dGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBD
b250YWluZXJOb2RlJiwgTm9kZVZlY3RvciYgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHMpOwordm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYg
aW5zZXJ0aW9uUG9pbnQsIE5vZGUmLCBOb2RlVmVjdG9yJiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0
aW9uVGFyZ2V0cyk7Cit2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9k
ZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmKTsKK3ZvaWQgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5vZGUmKTsKKwor
c3RhdGljIHZvaWQgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5l
ck5vZGUmIGluc2VydGlvblBvaW50LCBDb250YWluZXJOb2RlJiBub2RlLCBOb2RlVmVjdG9yJiBw
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKIHsKICAgICBDaGlsZE5vZGVzTGF6eVNu
YXBzaG90IHNuYXBzaG90KG5vZGUpOwogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBz
bmFwc2hvdC5uZXh0Tm9kZSgpKSB7CkBAIC0zNyw3ICs0Miw3IEBAIHZvaWQgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXI6Om5vdGlmeUQKICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0ZWxs
IHRoZSByZXN0IG9mIG91ciBjaGlsZHJlbiB0aGF0IHRoZXkndmUgYmVlbgogICAgICAgICAvLyBp
bnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KICAgICAgICAg
aWYgKG5vZGUuaW5Eb2N1bWVudCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gJm5vZGUpCi0g
ICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKmNoaWxkLCBwb3N0SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsICpjaGlsZCwgcG9zdEluc2VydGlvbk5vdGlm
aWNhdGlvblRhcmdldHMpOwogICAgIH0KIAogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBA
IC00NSwzMCArNTAsNjkgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5
RAogCiAgICAgaWYgKFJlZlB0cjxTaGFkb3dSb290PiByb290ID0gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZSkuc2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChub2RlLmluRG9jdW1lbnQoKSAmJiBy
b290LT5ob3N0KCkgPT0gJm5vZGUpCi0gICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKnJvb3QsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKKyAgICAg
ICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChpbnNlcnRpb25Qb2ludCwgKnJv
b3QsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKICAgICB9CiB9CiAKLXZvaWQg
Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKENvbnRhaW5lck5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmlj
YXRpb25UYXJnZXRzKQorc3RhdGljIHZvaWQgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1Ry
ZWUoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmIG5vZGUsIE5v
ZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQogewogICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KCpjaGlsZCkpCi0g
ICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShkb3duY2FzdDxDb250YWluZXJO
b2RlPigqY2hpbGQpLCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgICAg
ICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShpbnNlcnRpb25Qb2ludCwgZG93bmNhc3Q8
Q29udGFpbmVyTm9kZT4oKmNoaWxkKSwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMp
OwogICAgIH0KIAogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gbm9kZS5zaGFkb3dSb290KCkp
Ci0gICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKCpyb290LCBwb3N0SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVl
KGluc2VydGlvblBvaW50LCAqcm9vdCwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMp
OworfQorCit2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2Rl
JiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSwgTm9kZVZlY3RvciYgcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHMpCit7CisgICAgQVNTRVJUKGluc2VydGlvblBvaW50LmluRG9jdW1l
bnQoKSk7CisgICAgaWYgKG5vZGUuaW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KSA9PSBOb2Rl
OjpJbnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKQorICAgICAgICBw
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7CisgICAgaWYgKGlz
PENvbnRhaW5lck5vZGU+KG5vZGUpKQorICAgICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KG5vZGUp
LCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7Cit9CisKK3ZvaWQgbm90aWZ5Tm9k
ZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5l
ck5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
KQoreworICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
CisgICAgQVNTRVJUKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpOworCisgICAgaWYgKG5v
ZGUuaW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KSA9PSBOb2RlOjpJbnNlcnRpb25TaG91bGRD
YWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKQorICAgICAgICBwb3N0SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7CisgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVk
SW50b1RyZWUoaW5zZXJ0aW9uUG9pbnQsIG5vZGUsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzKTsKIH0KIAotdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2Nl
bmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUmIG5vZGUpCit2b2lkIG5vdGlm
eUNoaWxkTm9kZUluc2VydGVkKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBOb2RlJiBu
b2RlLCBOb2RlVmVjdG9yJiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKIHsKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjppc0V2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEluc2VydERPTU5vZGUobm9kZS5kb2N1bWVudCgpLCBub2RlKTsKKworICAg
IFJlZjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgUmVm
PE5vZGU+IHByb3RlY3ROb2RlKG5vZGUpOworCisgICAgaWYgKGluc2VydGlvblBvaW50LmluRG9j
dW1lbnQoKSkKKyAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KGluc2VydGlv
blBvaW50LCBub2RlLCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgZWxz
ZSBpZiAoaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCisgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRl
ZEludG9UcmVlKGluc2VydGlvblBvaW50LCBkb3duY2FzdDxDb250YWluZXJOb2RlPihub2RlKSwg
cG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpOworfQorCit2b2lkIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBOb2RlJiBu
b2RlKQoreworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpOworICAgIG5v
ZGUucmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOworCisgICAgaWYgKCFpczxDb250YWluZXJO
b2RlPihub2RlKSkKKyAgICAgICAgcmV0dXJuOwogICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Qg
c25hcHNob3Qobm9kZSk7CiAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IHNuYXBzaG90
Lm5leHROb2RlKCkpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBk
b2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuIHdlCiAgICAgICAgIC8vIGRvbid0IHdhbnQg
dG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAg
ICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KICAg
ICAgICAgaWYgKCFub2RlLmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09ICZu
b2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoKmNoaWxkLmdl
dCgpKTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KGluc2VydGlv
blBvaW50LCAqY2hpbGQuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICghaXM8RWxlbWVudD4obm9k
ZSkpCkBAIC03OSwyMiArMTIzLDM4IEBAIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpu
b3RpZnlEZXMKIAogICAgIGlmIChSZWZQdHI8U2hhZG93Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVs
ZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIW5vZGUuaW5Eb2N1bWVu
dCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50KCpyb290LmdldCgpKTsKKyAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50KGluc2VydGlvblBvaW50LCAqcm9vdC5nZXQoKSk7CiAgICAgfQogfQog
Ci12b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRG
cm9tVHJlZShDb250YWluZXJOb2RlJiBub2RlKQordm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21U
cmVlKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBDb250YWluZXJOb2RlJiBub2RlKQog
eworICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Cisg
ICAgQVNTRVJUKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpOworCisgICAgbm9kZS5yZW1v
dmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CisKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChpczxDb250YWluZXJOb2RlPigqY2hpbGQpKQotICAgICAgICAgICAgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZShkb3duY2FzdDxDb250YWluZXJOb2RlPigqY2hpbGQpKTsKKyAgICAg
ICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoaW5zZXJ0aW9uUG9pbnQsIGRvd25jYXN0
PENvbnRhaW5lck5vZGU+KCpjaGlsZCkpOwogICAgIH0KIAogICAgIGlmICghaXM8RWxlbWVudD4o
bm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZWZQdHI8U2hhZG93Um9vdD4gcm9v
dCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgbm90aWZ5
Tm9kZVJlbW92ZWRGcm9tVHJlZSgqcm9vdC5nZXQoKSk7CisgICAgICAgIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbVRyZWUoaW5zZXJ0aW9uUG9pbnQsICpyb290LmdldCgpKTsKK30KKwordm9pZCBub3Rp
ZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBOb2RlJiBj
aGlsZCkKK3sKKyAgICBpZiAoIWNoaWxkLmluRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoaXM8
Q29udGFpbmVyTm9kZT4oY2hpbGQpKQorICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9t
VHJlZShpbnNlcnRpb25Qb2ludCwgZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oY2hpbGQpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChp
bnNlcnRpb25Qb2ludCwgY2hpbGQpOworICAgIGNoaWxkLmRvY3VtZW50KCkubm90aWZ5UmVtb3Zl
UGVuZGluZ1NoZWV0SWZOZWVkZWQoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCShyZXZpc2lvbiAxODk4
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0z
NCw0NCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXIoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCi0gICAgICAgIDogbV9p
bnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBu
b3RpZnkoTm9kZSYsIE5vZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
KTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1
bWVudChDb250YWluZXJOb2RlJiwgTm9kZVZlY3RvciYgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlv
blRhcmdldHMpOwotICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29u
dGFpbmVyTm9kZSYsIE5vZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
KTsKLSAgICB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChOb2RlJiwgTm9kZVZl
Y3RvciYgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpOwotICAgIHZvaWQgbm90aWZ5
Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSYsIE5vZGVWZWN0b3ImIHBvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKLQotICAgIENvbnRhaW5lck5vZGUmIG1faW5zZXJ0
aW9uUG9pbnQ7Ci19OwotCi1jbGFzcyBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihDb250YWluZXJOb2RlJiBy
ZW1vdmFsUG9pbnQpCi0gICAgICAgIDogbV9yZW1vdmFsUG9pbnQocmVtb3ZhbFBvaW50KQotICAg
IHsKLSAgICB9Ci0KLSAgICB2b2lkIG5vdGlmeShOb2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlJik7Ci0g
ICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUmKTsK
LSAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUmKTsKLSAgICB2b2lk
IG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSYpOwotCi0gICAgQ29udGFp
bmVyTm9kZSYgbV9yZW1vdmFsUG9pbnQ7Ci19Owordm9pZCBub3RpZnlDaGlsZE5vZGVJbnNlcnRl
ZChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYsIE5vZGVWZWN0b3ImIHBvc3RJ
bnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKK3ZvaWQgbm90aWZ5Q2hpbGROb2RlUmVtb3Zl
ZChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYpOwogCiBuYW1lc3BhY2UgUHJp
dmF0ZSB7Ci0KICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05v
ZGVDb250YWluZXI+CiAgICAgdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVy
aWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciYp
OwogCkBAIC0xNDAsNyArMTA2LDcgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAg
aWYgKERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5lci5vd25lckRvY3VtZW50
KCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZOZWVkZWQoJm5v
ZGUpOwogICAgICAgICAgICAgaWYgKG5vZGUuaW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgICAg
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2RlKTsKKyAgICAg
ICAgICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKGNvbnRhaW5lciwgbm9kZSk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0xOTIsNjggKzE1OCw2IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsK
IAogfSAvLyBuYW1lc3BhY2UgUHJpdmF0ZQogCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUmIG5vZGUsIE5v
ZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQotewotICAgIEFTU0VS
VChtX2luc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSk7Ci0gICAgaWYgKE5vZGU6Okluc2VydGlv
blNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUgPT0gbm9kZS5pbnNlcnRlZEludG8o
bV9pbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJn
ZXRzLmFwcGVuZChub2RlKTsKLSAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCi0gICAg
ICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChkb3duY2FzdDxDb250YWlu
ZXJOb2RlPihub2RlKSwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpOwotfQotCi1p
bmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVk
SW50b1RyZWUoQ29udGFpbmVyTm9kZSYgbm9kZSwgTm9kZVZlY3RvciYgcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHMpCi17Ci0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2Vy
dE5vRXZlbnREaXNwYXRjaDsKLSAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVu
dCgpKTsKLQotICAgIGlmIChOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRp
bmdTdWJ0cmVlID09IG5vZGUuaW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpKQotICAgICAg
ICBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7Ci0gICAgbm90
aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUobm9kZSwgcG9zdEluc2VydGlvbk5vdGlmaWNh
dGlvblRhcmdldHMpOwotfQotCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5KE5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRp
b25UYXJnZXRzKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKLQotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZShub2RlLmRvY3VtZW50
KCksIG5vZGUpOwotCi0gICAgUmVmPERvY3VtZW50PiBwcm90ZWN0RG9jdW1lbnQobm9kZS5kb2N1
bWVudCgpKTsKLSAgICBSZWY8Tm9kZT4gcHJvdGVjdE5vZGUobm9kZSk7Ci0KLSAgICBpZiAobV9p
bnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCi0gICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZElu
dG9Eb2N1bWVudChub2RlLCBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7Ci0gICAg
ZWxzZSBpZiAoaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCi0gICAgICAgIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9UcmVlKGRvd25jYXN0PENvbnRhaW5lck5vZGU+KG5vZGUpLCBwb3N0SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uVGFyZ2V0cyk7Ci19Ci0KLQotaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlJiBub2RlKQotewot
ICAgIEFTU0VSVChtX3JlbW92YWxQb2ludC5pbkRvY3VtZW50KCkpOwotICAgIG5vZGUucmVtb3Zl
ZEZyb20obV9yZW1vdmFsUG9pbnQpOwotCi0gICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KG5vZGUp
KQotICAgICAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChkb3duY2FzdDxD
b250YWluZXJOb2RlPihub2RlKSk7Ci19Ci0KLWlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlJiBub2RlKQot
ewotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Ci0g
ICAgQVNTRVJUKCFtX3JlbW92YWxQb2ludC5pbkRvY3VtZW50KCkpOwotCi0gICAgbm9kZS5yZW1v
dmVkRnJvbShtX3JlbW92YWxQb2ludCk7Ci0gICAgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9t
VHJlZShub2RlKTsKLX0KLQotaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpu
b3RpZnkoTm9kZSYgbm9kZSkKLXsKLSAgICBpZiAobm9kZS5pbkRvY3VtZW50KCkpIHsKLSAgICAg
ICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQobm9kZSk7Ci0gICAgICAgIG5vZGUuZG9j
dW1lbnQoKS5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpOwotICAgIH0gZWxzZSBp
ZiAoaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCi0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUoZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9kZSkpOwotfQotCiBlbnVtIFN1YmZyYW1l
RGlzY29ubmVjdFBvbGljeSB7CiAgICAgUm9vdEFuZERlc2NlbmRhbnRzLAogICAgIERlc2NlbmRh
bnRzT25seQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTg5ODQxKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE2LDcg
KzE2MTYsNyBAQCB2b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QoUmVmPFNoYWRvd1JvCiAgICAg
c2hhZG93Um9vdC5zZXRQYXJlbnRUcmVlU2NvcGUoJnRyZWVTY29wZSgpKTsKIAogICAgIE5vZGVW
ZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7Ci0gICAgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXIoKnRoaXMpLm5vdGlmeShzaGFkb3dSb290LCBwb3N0SW5zZXJ0aW9uTm90
aWZpY2F0aW9uVGFyZ2V0cyk7CisgICAgbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoKnRoaXMsIHNo
YWRvd1Jvb3QsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKIAogICAgIGZvciAo
YXV0byYgdGFyZ2V0IDogcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCiAgICAgICAg
IHRhcmdldC0+ZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCk7CkBAIC0xNjQ2LDcgKzE2NDYsNyBA
QCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIG9sZFJvb3QtPnNldEhvc3Qo
bnVsbHB0cik7CiAgICAgb2xkUm9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCgpKTsK
IAotICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcigqdGhpcykubm90aWZ5KCpvbGRSb290KTsK
KyAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqb2xkUm9vdCk7CiB9CiAKIFJlZlB0
cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KEV4Y2VwdGlvbkNvZGUmIGVj
KQo=
</data>
<flag name="review"
          id="286550"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>