<?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>130854</bug_id>
          
          <creation_ts>2014-03-27 13:13:03 -0700</creation_ts>
          <short_desc>Remove some unnecessary branches from LiveNodeList traversal</short_desc>
          <delta_ts>2014-03-27 13:50:42 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995027</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-27 13:13:03 -0700</bug_when>
    <thetext>We have some type() == Foo branches that can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995031</commentid>
    <comment_count>1</comment_count>
      <attachid>227971</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-27 13:28:19 -0700</bug_when>
    <thetext>Created attachment 227971
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995034</commentid>
    <comment_count>2</comment_count>
      <attachid>227971</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-27 13:33:45 -0700</bug_when>
    <thetext>Comment on attachment 227971
patch

Omg, what were we thinking? r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995043</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-27 13:50:42 -0700</bug_when>
    <thetext>https://trac.webkit.org/r166369</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227971</attachid>
            <date>2014-03-27 13:28:19 -0700</date>
            <delta_ts>2014-03-27 13:33:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>livenodelist-template-3.patch</filename>
            <type>text/plain</type>
            <size>33482</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE0LTAzLTI3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgc29tZSB1bm5lY2Vz
c2FyeSBicmFuY2hlcyBmcm9tIExpdmVOb2RlTGlzdCB0cmF2ZXJzYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDg1NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbXBpbGUgZGlmZmVyZW50IHRyYXZl
cnNhbCBjb2RlIHBhdGhzIGZvciBhbGwgTm9kZUxpc3Qgc3ViY2xhc3Nlcy4KKworICAgICAgICAq
IGRvbS9DbGFzc05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6
OkNsYXNzTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6fkNsYXNz
Tm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpDbGFz
c05vZGVMaXN0Ojpub2RlTWF0Y2hlc0lubGluZWQpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAg
ICAgICAgIFJlbW92ZSBzZXBhcmF0ZSBub2RlTWF0Y2hlc0lubGluZWQgZnVuY3Rpb25zLiAKKyAg
ICAgICAgICAgIFdlIG5vdyByZWx5IG9uIGV4YWN0IHR5cGVzIGFuZCBtYXJraW5nIGNsYXNzZXMg
ZmluYWwuCisKKyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpdmVOb2RlTGlzdDo6TGl2ZU5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpdmVO
b2RlTGlzdDo6fkxpdmVOb2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6
Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTWF0Y2hpbmdFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmZpcnN0TWF0Y2hpbmdFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Omxhc3RNYXRjaGluZ0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6bmV4dE1hdGNoaW5nRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpw
cmV2aW91c01hdGNoaW5nRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0cmF2
ZXJzZU1hdGNoaW5nRWxlbWVudHNGb3J3YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRyYXZlcnNlTWF0Y2hpbmdFbGVtZW50c0JhY2t3YXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpdmVOb2RlTGlzdDo6Y29sbGVjdGlvbkZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6Y29sbGVjdGlvbkxhc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0Ojpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6Y29sbGVjdGlvblRyYXZlcnNl
QmFja3dhcmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjpsZW5n
dGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0OjppdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpdmVOb2RlTGlzdDo6bWVtb3J5Q29zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGl2ZU5vZGVMaXN0OjppbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0Ojpjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjpDYWNoZWRMaXZlTm9kZUxp
c3QpOgorICAgICAgICAKKyAgICAgICAgICAgIEFkZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxp
c3RUeXBlPiB1dGlsaXR5IHR5cGUgdGhhdCBpbnRlcmZhY2VzIHdpdGggQ29sbGVjdGlvbkluZGV4
Q2FjaGUuCisgICAgICAgICAgICBJdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsIGNvbmNyZXRl
IExpdmVOb2RlTGlzdHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxO
b2RlTGlzdFR5cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uRmlyc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25M
YXN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRNYXRjaGluZ0VsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2
ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNNYXRjaGluZ0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNv
bGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpdmVO
b2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjppbnZhbGlkYXRlQ2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46
Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RU
eXBlPjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxp
c3RUeXBlPjo6bWVtb3J5Q29zdCk6CisgICAgICAgIAorICAgICAgICAgICAgVGVtcGxhdGVkIGNv
ZGUgbW92ZXMgdG8gaGVhZGVyLgorCisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6Okxp
dmVOb2RlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6On5M
aXZlTm9kZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0Ojpp
bnZhbGlkYXRlQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGl2ZU5vZGVMaXN0
Ojpjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaXZlTm9kZUxpc3Q6OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVM
aXN0OjpOYW1lTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuaDoKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0
ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlz
dHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNhY2hlcyk6CisgICAgICAgICogZG9tL1RhZ05vZGVMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05vZGVMaXN0OjpUYWdOb2RlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGFnTm9kZUxpc3Q6OkhUTUxUYWdOb2RlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFnTm9kZUxpc3Q6On5IVE1MVGFnTm9kZUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGFnTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWdOb2RlTGlzdDo6bm9kZU1hdGNoZXMpOiBEZWxldGVkLgorICAgICAgICAq
IGRvbS9UYWdOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6VGFnTm9kZUxpc3Q6Om5vZGVN
YXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWdOb2RlTGlzdDo6bm9kZU1hdGNoZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGFnTm9kZUxpc3Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGFnTm9kZUxpc3Q6Om5vZGVNYXRjaGVzSW5saW5lZCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYWJlbHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QpOgorICAgICAgICAqIGh0bWwvTGFiZWxz
Tm9kZUxpc3QuaDoKKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdCk6CisgICAgICAgICogaHRtbC9S
YWRpb05vZGVMaXN0Lmg6CisKIDIwMTQtMDMtMjcgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8Y2F2
YWxjYW50aWlAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21tZW50IGZyb20gRmlsdGVy
LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDE2NjI5
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDbGFzc05vZGVMaXN0
OjpDbGFzc05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBTdHJpbmcmIGNs
YXNzTmFtZXMpCi0gICAgOiBMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFR5cGU6OkNsYXNzTm9kZUxp
c3RUeXBlLCBJbnZhbGlkYXRlT25DbGFzc0F0dHJDaGFuZ2UpCisgICAgOiBDYWNoZWRMaXZlTm9k
ZUxpc3Qocm9vdE5vZGUsIFR5cGU6OkNsYXNzTm9kZUxpc3RUeXBlLCBJbnZhbGlkYXRlT25DbGFz
c0F0dHJDaGFuZ2UpCiAgICAgLCBtX2NsYXNzTmFtZXMoY2xhc3NOYW1lcywgZG9jdW1lbnQoKS5p
blF1aXJrc01vZGUoKSkKICAgICAsIG1fb3JpZ2luYWxDbGFzc05hbWVzKGNsYXNzTmFtZXMpCiB7
CkBAIC00NSwxMSArNDUsNiBAQCBDbGFzc05vZGVMaXN0OjpDbGFzc05vZGVMaXN0KENvbnRhaW5l
ck5vCiBDbGFzc05vZGVMaXN0Ojp+Q2xhc3NOb2RlTGlzdCgpCiB7CiAgICAgb3duZXJOb2RlKCku
bm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlV2l0aE5hbWUodGhpcywgbV9vcmlnaW5hbENsYXNzTmFt
ZXMpOwotfSAKLQotYm9vbCBDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0
Tm9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbm9kZU1hdGNoZXNJbmxpbmVkKHRlc3ROb2RlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Ns
YXNzTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2Rl
TGlzdC5oCShyZXZpc2lvbiAxNjYyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2Rl
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ2xhc3NOb2RlTGlzdCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgeworY2xh
c3MgQ2xhc3NOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8Q2xhc3NO
b2RlTGlzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsYXNzTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWVz
KQogICAgIHsKQEAgLTQ2LDI4ICs0NiwyNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGFz
c05vZGVMaXN0KCk7CiAKLSAgICBib29sIG5vZGVNYXRjaGVzSW5saW5lZChFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBDbGFzc05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
LCBjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpOwogCi0gICAgdmlydHVhbCBib29sIG5vZGVNYXRj
aGVzKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLQogICAgIFNwYWNlU3BsaXRTdHJpbmcgbV9j
bGFzc05hbWVzOwogICAgIFN0cmluZyBtX29yaWdpbmFsQ2xhc3NOYW1lczsKIH07CiAKLWlubGlu
ZSBib29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzSW5saW5lZChFbGVtZW50KiB0ZXN0Tm9k
ZSkgY29uc3QKK2lubGluZSBib29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCF0ZXN0Tm9kZS0+aGFzQ2xhc3MoKSkKKyAgICBp
ZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IW1fY2xhc3NOYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBGSVhN
RTogRE9NNCBhbGxvd3MgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB0byByZXR1cm4gbm9uIFN0eWxl
ZEVsZW1lbnQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk0NzE4Ci0gICAgaWYgKCF0ZXN0Tm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpCisgICAgaWYgKCFl
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0ZXN0Tm9kZS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zQWxsKG1fY2xhc3NOYW1lcyk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQtPmNsYXNzTmFtZXMoKS5jb250YWluc0FsbChtX2NsYXNzTmFtZXMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
TGl2ZU5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmNwcAkocmV2aXNpb24gMTY2MjkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1NCArMzEsMjEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1Db250YWluZXJOb2RlJiBMaXZlTm9kZUxpc3Q6OnJvb3ROb2RlKCkg
Y29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5E
b2N1bWVudCgpKQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKLQotICAg
IHJldHVybiBvd25lck5vZGUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4K
LWlubGluZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IE5vZGVMaXN0VHlwZSosIEVsZW1l
bnQqKTsKLQotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3Qg
TGl2ZU5vZGVMaXN0KiBub2RlTGlzdCwgRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICByZXR1cm4g
bm9kZUxpc3QtPm5vZGVNYXRjaGVzKGVsZW1lbnQpOworTGl2ZU5vZGVMaXN0OjpMaXZlTm9kZUxp
c3QoQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBUeXBlIHR5cGUsIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlKQorICAg
IDogbV9vd25lck5vZGUob3duZXJOb2RlKQorICAgICwgbV9yb290VHlwZShyb290VHlwZSkKKyAg
ICAsIG1faW52YWxpZGF0aW9uVHlwZShpbnZhbGlkYXRpb25UeXBlKQorICAgICwgbV90eXBlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSkKK3sKKyAgICBBU1NFUlQobV9yb290VHlwZSA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocm9vdFR5cGUpKTsKKyAgICBBU1NFUlQobV9pbnZhbGlkYXRp
b25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlKSk7CisgICAg
QVNTRVJUKG1fdHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOwogfQogCi10ZW1w
bGF0ZSA8PiBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MVGFnTm9kZUxp
c3QqIG5vZGVMaXN0LCBFbGVtZW50KiBlbGVtZW50KQorTGl2ZU5vZGVMaXN0Ojp+TGl2ZU5vZGVM
aXN0KCkKIHsKLSAgICByZXR1cm4gbm9kZUxpc3QtPm5vZGVNYXRjaGVzSW5saW5lZChlbGVtZW50
KTsKIH0KIAotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3Qg
Q2xhc3NOb2RlTGlzdCogbm9kZUxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJu
IG5vZGVMaXN0LT5ub2RlTWF0Y2hlc0lubGluZWQoZWxlbWVudCk7Ci19Ci0KLXRlbXBsYXRlIDxj
bGFzcyBOb2RlTGlzdFR5cGU+Ci1pbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQo
Y29uc3QgTm9kZUxpc3RUeXBlKiBub2RlTGlzdCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAg
ICBFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oJnJvb3Qp
OwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgZWxl
bWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQs
ICZyb290KTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLWlubGluZSBFbGVtZW50KiBsYXN0TWF0Y2hpbmdFbGVtZW50KGNvbnN0IE5vZGVM
aXN0VHlwZSogbm9kZUxpc3QsIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCog
ZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4oJnJvb3QpOwotICAgIHdoaWxl
IChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgZWxlbWVudCkpCi0gICAg
ICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91cyhlbGVtZW50LCAmcm9vdCk7
Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+
Ci1pbmxpbmUgRWxlbWVudCogbmV4dE1hdGNoaW5nRWxlbWVudChjb25zdCBOb2RlTGlzdFR5cGUq
IG5vZGVMaXN0LCBFbGVtZW50KiBjdXJyZW50LCBDb250YWluZXJOb2RlJiByb290KQotewotICAg
IGRvIHsKLSAgICAgICAgY3VycmVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoY3VycmVudCwg
JnJvb3QpOwotICAgIH0gd2hpbGUgKGN1cnJlbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5vZGVM
aXN0LCBjdXJyZW50KSk7Ci0gICAgcmV0dXJuIGN1cnJlbnQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFz
cyBOb2RlTGlzdFR5cGU+Ci1pbmxpbmUgRWxlbWVudCogcHJldmlvdXNNYXRjaGluZ0VsZW1lbnQo
Y29uc3QgTm9kZUxpc3RUeXBlKiBub2RlTGlzdCwgRWxlbWVudCogY3VycmVudCwgQ29udGFpbmVy
Tm9kZSYgcm9vdCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGN1cnJlbnQgPSBFbGVtZW50VHJhdmVy
c2FsOjpwcmV2aW91cyhjdXJyZW50LCAmcm9vdCk7Ci0gICAgfSB3aGlsZSAoY3VycmVudCAmJiAh
aXNNYXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsIGN1cnJlbnQpKTsKLSAgICByZXR1cm4gY3VycmVu
dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLWlubGluZSBFbGVtZW50KiB0
cmF2ZXJzZU1hdGNoaW5nRWxlbWVudHNGb3J3YXJkKGNvbnN0IE5vZGVMaXN0VHlwZSogbm9kZUxp
c3QsIEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2Vk
Q291bnQsIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9ICZj
dXJyZW50OwotICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNv
dW50OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdF
bGVtZW50KG5vZGVMaXN0LCBlbGVtZW50LCByb290KTsKLSAgICAgICAgaWYgKCFlbGVtZW50KQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBlbGVtZW50Owot
fQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotaW5saW5lIEVsZW1lbnQqIHRyYXZl
cnNlTWF0Y2hpbmdFbGVtZW50c0JhY2t3YXJkKGNvbnN0IE5vZGVMaXN0VHlwZSogbm9kZUxpc3Qs
IEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCBDb250YWluZXJOb2RlJiByb290KQot
ewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAmY3VycmVudDsKLSAgICBmb3IgKDsgY291bnQ7IC0t
Y291bnQpIHsKLSAgICAgICAgZWxlbWVudCA9IHByZXZpb3VzTWF0Y2hpbmdFbGVtZW50KG5vZGVM
aXN0LCBlbGVtZW50LCByb290KTsKLSAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBlbGVtZW50OwotfQotCi1FbGVtZW50
KiBMaXZlTm9kZUxpc3Q6OmNvbGxlY3Rpb25GaXJzdCgpIGNvbnN0Ci17Ci0gICAgYXV0byYgcm9v
dCA9IHJvb3ROb2RlKCk7Ci0gICAgaWYgKHR5cGUoKSA9PSBUeXBlOjpIVE1MVGFnTm9kZUxpc3RU
eXBlKQotICAgICAgICByZXR1cm4gZmlyc3RNYXRjaGluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8Y29u
c3QgSFRNTFRhZ05vZGVMaXN0Kj4odGhpcyksIHJvb3QpOwotICAgIGlmICh0eXBlKCkgPT0gVHlw
ZTo6Q2xhc3NOb2RlTGlzdFR5cGUpCi0gICAgICAgIHJldHVybiBmaXJzdE1hdGNoaW5nRWxlbWVu
dChzdGF0aWNfY2FzdDxjb25zdCBDbGFzc05vZGVMaXN0Kj4odGhpcyksIHJvb3QpOwotICAgIHJl
dHVybiBmaXJzdE1hdGNoaW5nRWxlbWVudChzdGF0aWNfY2FzdDxjb25zdCBMaXZlTm9kZUxpc3Qq
Pih0aGlzKSwgcm9vdCk7Ci19Ci0KLUVsZW1lbnQqIExpdmVOb2RlTGlzdDo6Y29sbGVjdGlvbkxh
c3QoKSBjb25zdAotewotICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIGlmICh0eXBl
KCkgPT0gVHlwZTo6SFRNTFRhZ05vZGVMaXN0VHlwZSkKLSAgICAgICAgcmV0dXJuIGxhc3RNYXRj
aGluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTFRhZ05vZGVMaXN0Kj4odGhpcyksIHJv
b3QpOwotICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6Q2xhc3NOb2RlTGlzdFR5cGUpCi0gICAgICAg
IHJldHVybiBsYXN0TWF0Y2hpbmdFbGVtZW50KHN0YXRpY19jYXN0PGNvbnN0IENsYXNzTm9kZUxp
c3QqPih0aGlzKSwgcm9vdCk7Ci0gICAgcmV0dXJuIGxhc3RNYXRjaGluZ0VsZW1lbnQoc3RhdGlj
X2Nhc3Q8Y29uc3QgTGl2ZU5vZGVMaXN0Kj4odGhpcyksIHJvb3QpOwotfQotCi1FbGVtZW50KiBM
aXZlTm9kZUxpc3Q6OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudCYgY3VycmVudCwg
dW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBh
dXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBpZiAodHlwZSgpID09IFR5cGU6OkhUTUxUYWdO
b2RlTGlzdFR5cGUpCi0gICAgICAgIHJldHVybiB0cmF2ZXJzZU1hdGNoaW5nRWxlbWVudHNGb3J3
YXJkKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUYWdOb2RlTGlzdCo+KHRoaXMpLCBjdXJyZW50LCBj
b3VudCwgdHJhdmVyc2VkQ291bnQsIHJvb3QpOwotICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6Q2xh
c3NOb2RlTGlzdFR5cGUpCi0gICAgICAgIHJldHVybiB0cmF2ZXJzZU1hdGNoaW5nRWxlbWVudHNG
b3J3YXJkKHN0YXRpY19jYXN0PGNvbnN0IENsYXNzTm9kZUxpc3QqPih0aGlzKSwgY3VycmVudCwg
Y291bnQsIHRyYXZlcnNlZENvdW50LCByb290KTsKLSAgICByZXR1cm4gdHJhdmVyc2VNYXRjaGlu
Z0VsZW1lbnRzRm9yd2FyZChzdGF0aWNfY2FzdDxjb25zdCBMaXZlTm9kZUxpc3QqPih0aGlzKSwg
Y3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50LCByb290KTsKLX0KLQotRWxlbWVudCogTGl2
ZU5vZGVMaXN0Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50JiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAg
ICBpZiAodHlwZSgpID09IFR5cGU6OkhUTUxUYWdOb2RlTGlzdFR5cGUpCi0gICAgICAgIHJldHVy
biB0cmF2ZXJzZU1hdGNoaW5nRWxlbWVudHNCYWNrd2FyZChzdGF0aWNfY2FzdDxjb25zdCBIVE1M
VGFnTm9kZUxpc3QqPih0aGlzKSwgY3VycmVudCwgY291bnQsIHJvb3QpOwotICAgIGlmICh0eXBl
KCkgPT0gVHlwZTo6Q2xhc3NOb2RlTGlzdFR5cGUpCi0gICAgICAgIHJldHVybiB0cmF2ZXJzZU1h
dGNoaW5nRWxlbWVudHNCYWNrd2FyZChzdGF0aWNfY2FzdDxjb25zdCBDbGFzc05vZGVMaXN0Kj4o
dGhpcyksIGN1cnJlbnQsIGNvdW50LCByb290KTsKLSAgICByZXR1cm4gdHJhdmVyc2VNYXRjaGlu
Z0VsZW1lbnRzQmFja3dhcmQoc3RhdGljX2Nhc3Q8Y29uc3QgTGl2ZU5vZGVMaXN0Kj4odGhpcyks
IGN1cnJlbnQsIGNvdW50LCByb290KTsKLX0KLQotdW5zaWduZWQgTGl2ZU5vZGVMaXN0OjpsZW5n
dGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsK
LX0KLQotTm9kZSogTGl2ZU5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywgb2Zmc2V0KTsKLX0KLQotc2l6
ZV90IExpdmVOb2RlTGlzdDo6bWVtb3J5Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5k
ZXhDYWNoZS5tZW1vcnlDb3N0KCk7Ci19Ci0KLXZvaWQgTGl2ZU5vZGVMaXN0OjppbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAotewotICAgIGlmICghbV9pbmRleENhY2hl
Lmhhc1ZhbGlkQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LnVucmVnaXN0
ZXJOb2RlTGlzdChjb25zdF9jYXN0PExpdmVOb2RlTGlzdCY+KCp0aGlzKSk7Ci0gICAgbV9pbmRl
eENhY2hlLmludmFsaWRhdGUoKTsKLX0KIAogTm9kZSogTGl2ZU5vZGVMaXN0OjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CkBAIC0xOTAsNyArNTcsNyBA
QCBOb2RlKiBMaXZlTm9kZUxpc3Q6Om5hbWVkSXRlbShjb25zdCBBdG9tCiAgICAgICAgIGlmIChl
bGVtZW50ICYmIG5vZGVNYXRjaGVzKGVsZW1lbnQpICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9m
KCZyb290Tm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgaWYgKCFl
bGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUgbm9kZXMgd2l0aCB0aGUgc2Ft
ZSBuYW1lLCBqdXN0IGZhbGwgdGhyb3VnaC4KICAgICB9CiAKQEAgLTIwNSw3ICs3Miw3IEBAIE5v
ZGUqIExpdmVOb2RlTGlzdDo6bmFtZWRJdGVtKGNvbnN0IEF0b20KICAgICAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5o
CShyZXZpc2lvbiAxNjYyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5k
ZXhDYWNoZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NTQsNDggKzU1LDIyIEBAIHB1YmxpYzoKICAgICAgICAgTGFiZWxzTm9kZUxpc3RUeXBlLAogICAg
IH07CiAKLSAgICBMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBUeXBlIHR5
cGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJv
b3RUeXBlIHJvb3RUeXBlID0gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKLSAgICAgICAgOiBtX293
bmVyTm9kZShvd25lck5vZGUpCi0gICAgICAgICwgbV9yb290VHlwZShyb290VHlwZSkKLSAgICAg
ICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZSkKLSAgICAgICAgLCBtX3R5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
cm9vdFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvb3RUeXBlKSk7Ci0gICAgICAgIEFT
U0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRh
dGlvblR5cGUpKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odHlwZSkpOwotICAgIH0KKyAgICBMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgb3duZXJO
b2RlLCBUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUpOwog
ICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29u
c3QgPSAwOwogCi0gICAgdmlydHVhbCB+TGl2ZU5vZGVMaXN0KCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS51
bnJlZ2lzdGVyTm9kZUxpc3QoKnRoaXMpOwotICAgIH0KLQotICAgIC8vIERPTSBBUEkKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IH5MaXZlTm9kZUxpc3QoKTsKIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Jvb3RlZEF0RG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERv
Y3VtZW50OyB9CiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52
YWxpZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0SW52YWxp
ZGF0aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQogICAgIEFMV0FZU19JTkxJTkUgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQogICAg
IENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KG1fb3duZXJOb2RlLmdldCgpKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpIGNvbnN0Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGludmFsaWRhdGVDYWNoZUZvckF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lKiBhdHRyTmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghYXR0ck5h
bWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25U
eXBlKCksICphdHRyTmFtZSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQo
KSk7CiAgICAgfQotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Q7Ci0K
LSAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9u
Rmlyc3QoKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAg
IEVsZW1lbnQqIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudCYsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OwotICAgIEVsZW1lbnQqIGNvbGxl
Y3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQmLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7Ci0g
ICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50
KCkucmVnaXN0ZXJOb2RlTGlzdChjb25zdF9jYXN0PExpdmVOb2RlTGlzdCY+KCp0aGlzKSk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3QgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9v
d25lck5vZGUtPmRvY3VtZW50KCk7IH0KQEAgLTExMCwxMyArODUsMzcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsKIAotICAgIG11dGFibGUgQ29sbGVj
dGlvbkluZGV4Q2FjaGU8TGl2ZU5vZGVMaXN0LCBFbGVtZW50PiBtX2luZGV4Q2FjaGU7Ci0KICAg
ICBjb25zdCB1bnNpZ25lZCBtX3Jvb3RUeXBlIDogMTsKICAgICBjb25zdCB1bnNpZ25lZCBtX2lu
dmFsaWRhdGlvblR5cGUgOiA0OwogICAgIGNvbnN0IHVuc2lnbmVkIG1fdHlwZSA6IDM7CiB9Owog
Cit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgorY2xhc3MgQ2FjaGVkTGl2ZU5vZGVMaXN0
IDogcHVibGljIExpdmVOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FjaGVkTGl2
ZU5vZGVMaXN0KCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOworCisgICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlCisgICAg
RWxlbWVudCogY29sbGVjdGlvbkZpcnN0KCkgY29uc3Q7CisgICAgRWxlbWVudCogY29sbGVjdGlv
bkxhc3QoKSBjb25zdDsKKyAgICBFbGVtZW50KiBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVs
ZW1lbnQmLCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsK
KyAgICBFbGVtZW50KiBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50JiwgdW5zaWdu
ZWQgY291bnQpIGNvbnN0OworICAgIGJvb2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hl
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikg
Y29uc3Q7CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwor
Citwcm90ZWN0ZWQ6CisgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlLCBUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgPSBO
b2RlTGlzdElzUm9vdGVkQXROb2RlKTsKKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIENvbGxlY3Rp
b25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgRWxlbWVudD4gbV9pbmRleENhY2hlOworfTsKKwog
QUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2Uo
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIHR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTQxLDYgKzE0MCwxMjMgQEAgQUxXQVlT
X0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlTwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAoraW5saW5lIENvbnRhaW5lck5vZGUmIExpdmVOb2RlTGlzdDo6cm9vdE5vZGUoKSBjb25zdAor
eworICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOworCisgICAgcmV0dXJu
IG93bmVyTm9kZSgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgorQ2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJO
b2RlJiBvd25lck5vZGUsIFR5cGUgdHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFs
aWRhdGlvblR5cGUsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUpCisgICAgOiBMaXZlTm9kZUxp
c3Qob3duZXJOb2RlLCB0eXBlLCBpbnZhbGlkYXRpb25UeXBlLCByb290VHlwZSkKK3sKK30KKwor
dGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KK0NhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlz
dFR5cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVMaXN0KCkKK3sKKyAgICBpZiAobV9pbmRleENhY2hlLmhh
c1ZhbGlkQ2FjaGUoKSkKKyAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9kZUxpc3QoKnRo
aXMpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgorRWxlbWVudCogQ2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25GaXJzdCgpIGNvbnN0Cit7Cisg
ICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCZyb290KTsKKyAgICB3aGlsZSAoZWxlbWVudCAmJiAh
c3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlKj4odGhpcyktPm5vZGVNYXRjaGVzKGVsZW1l
bnQpKQorICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50LCAm
cm9vdCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBOb2RlTGlz
dFR5cGU+CitFbGVtZW50KiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVj
dGlvbkxhc3QoKSBjb25zdAoreworICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOworICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKCZyb290KTsKKyAg
ICB3aGlsZSAoZWxlbWVudCAmJiAhc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlKj4odGhp
cyktPm5vZGVNYXRjaGVzKGVsZW1lbnQpKQorICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXMoZWxlbWVudCwgJnJvb3QpOworICAgIHJldHVybiBlbGVtZW50OworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgoraW5saW5lIEVsZW1lbnQqIG5leHRNYXRj
aGluZ0VsZW1lbnQoY29uc3QgTm9kZUxpc3RUeXBlKiBub2RlTGlzdCwgRWxlbWVudCogY3VycmVu
dCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKK3sKKyAgICBkbyB7CisgICAgICAgIGN1cnJlbnQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQsICZyb290KTsKKyAgICB9IHdoaWxlIChjdXJy
ZW50ICYmICFzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUqPihub2RlTGlzdCktPm5vZGVN
YXRjaGVzKGN1cnJlbnQpKTsKKyAgICByZXR1cm4gY3VycmVudDsKK30KKwordGVtcGxhdGUgPGNs
YXNzIE5vZGVMaXN0VHlwZT4KK0VsZW1lbnQqIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5
cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Cit7CisgICAgYXV0byYgcm9v
dCA9IHJvb3ROb2RlKCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9ICZjdXJyZW50OworICAgIGZv
ciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNl
ZENvdW50KSB7CisgICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdFbGVtZW50KHN0YXRpY19j
YXN0PGNvbnN0IE5vZGVMaXN0VHlwZSo+KHRoaXMpLCBlbGVtZW50LCByb290KTsKKyAgICAgICAg
aWYgKCFlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJl
dHVybiBlbGVtZW50OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgoraW5saW5l
IEVsZW1lbnQqIHByZXZpb3VzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IE5vZGVMaXN0VHlwZSogbm9k
ZUxpc3QsIEVsZW1lbnQqIGN1cnJlbnQsIENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgZG8g
eworICAgICAgICBjdXJyZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVudCwg
JnJvb3QpOworICAgIH0gd2hpbGUgKGN1cnJlbnQgJiYgIW5vZGVMaXN0LT5ub2RlTWF0Y2hlcyhj
dXJyZW50KSk7CisgICAgcmV0dXJuIGN1cnJlbnQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBOb2Rl
TGlzdFR5cGU+CitFbGVtZW50KiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudCYgY3VycmVudCwgdW5zaWduZWQgY291bnQp
IGNvbnN0Cit7CisgICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7CisgICAgRWxlbWVudCogZWxl
bWVudCA9ICZjdXJyZW50OworICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCkgeworICAgICAgICBl
bGVtZW50ID0gcHJldmlvdXNNYXRjaGluZ0VsZW1lbnQoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxp
c3RUeXBlKj4odGhpcyksIGVsZW1lbnQsIHJvb3QpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9
Cit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgordm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8
Tm9kZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0Cit7CisgICAgZG9j
dW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0KGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oc3RhdGlj
X2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBOb2RlTGlzdFR5cGU+Cit2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpp
bnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAoreworICAgIGlmICghbV9p
bmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvY3VtZW50
LnVucmVnaXN0ZXJOb2RlTGlzdChjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KHN0YXRpY19jYXN0
PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlk
YXRlKCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Cit1bnNpZ25lZCBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcykpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgorTm9kZSogQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAoreworICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KK3NpemVfdCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5
Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExpdmVOb2RlTGlzdF9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkocmV2aXNpb24gMTY2MjkwKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogTmFtZU5vZGVMaXN0OjpOYW1lTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IExpdmVOb2RlTGlzdChyb290Tm9kZSwg
VHlwZTo6TmFtZU5vZGVMaXN0VHlwZSwgSW52YWxpZGF0ZU9uTmFtZUF0dHJDaGFuZ2UpCisgICAg
OiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFR5cGU6Ok5hbWVOb2RlTGlzdFR5cGUsIElu
dmFsaWRhdGVPbk5hbWVBdHRyQ2hhbmdlKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCShyZXZpc2lvbiAxNjYyOTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTm9kZUxpc3Qgd2hpY2ggbGlzdHMgYWxsIE5v
ZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWUiIGF0dHJpYnV0ZQotY2xhc3MgTmFt
ZU5vZGVMaXN0IDogcHVibGljIExpdmVOb2RlTGlzdCB7CitjbGFzcyBOYW1lTm9kZUxpc3QgZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5hbWVOb2RlTGlzdD4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CkBA
IC00MSwxMSArNDEsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TmFtZU5vZGVMaXN0KCk7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0IG92ZXJyaWRl
OworCiBwcml2YXRlOgogICAgIE5hbWVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hl
cyhFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTY2MjkwKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDcgQEAgdm9p
ZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbAogI2VuZGlmCiAgICAgSGFzaFNl
dDxMaXZlTm9kZUxpc3QqPiBsaXN0cyA9IHN0ZDo6bW92ZShtX2xpc3RzSW52YWxpZGF0ZWRBdERv
Y3VtZW50KTsKICAgICBmb3IgKGF1dG8qIGxpc3QgOiBsaXN0cykKLSAgICAgICAgbGlzdC0+aW52
YWxpZGF0ZUNhY2hlKGF0dHJOYW1lKTsKKyAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlRm9y
QXR0cmlidXRlKGF0dHJOYW1lKTsKICAgICBIYXNoU2V0PEhUTUxDb2xsZWN0aW9uKj4gY29sbGVj
dGlvbnMgPSBzdGQ6Om1vdmUobV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCk7CiAg
ICAgZm9yIChhdXRvKiBjb2xsZWN0aW9uIDogY29sbGVjdGlvbnMpCiAgICAgICAgIGNvbGxlY3Rp
b24tPmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CkBAIC0xNjg1LDEwICsxNjg1LDEwIEBAIHZv
aWQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSAKIHZvaWQgTm9kZUxpc3RzTm9k
ZURhdGE6OmludmFsaWRhdGVDYWNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0ck5hbWUpCiB7
CiAgICAgZm9yIChhdXRvJiBhdG9taWNOYW1lIDogbV9hdG9taWNOYW1lQ2FjaGVzKQotICAgICAg
ICBhdG9taWNOYW1lLnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgICAgICBh
dG9taWNOYW1lLnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOwog
CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9uYW1lQ2FjaGVzKQotICAgICAgICBuYW1lLnZhbHVl
LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgICAgICBuYW1lLnZhbHVlLT5pbnZhbGlk
YXRlQ2FjaGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUpOwogCiAgICAgZm9yIChhdXRvJiBjb2xsZWN0
aW9uIDogbV9jYWNoZWRDb2xsZWN0aW9ucykKICAgICAgICAgY29sbGVjdGlvbi52YWx1ZS0+aW52
YWxpZGF0ZUNhY2hlKGF0dHJOYW1lKTsKQEAgLTE2OTcsNyArMTY5Nyw3IEBAIHZvaWQgTm9kZUxp
c3RzTm9kZURhdGE6OmludmFsaWRhdGVDYWNoZXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9y
IChhdXRvJiB0YWdOb2RlTGlzdCA6IG1fdGFnTm9kZUxpc3RDYWNoZU5TKQotICAgICAgICB0YWdO
b2RlTGlzdC52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKG51bGxwdHIpOworICAgICAgICB0YWdOb2Rl
TGlzdC52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlRm9yQXR0cmlidXRlKG51bGxwdHIpOwogfQogCiB2
b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxNjYyOTApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw4ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGFnTm9kZUxpc3Q6OlRhZ05v
ZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKLSAgICA6
IExpdmVOb2RlTGlzdChyb290Tm9kZSwgdHlwZSwgRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVD
aGFuZ2VzKQorVGFnTm9kZUxpc3Q6OlRhZ05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpCisgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFR5cGU6OlRhZ05v
ZGVMaXN0VHlwZSwgRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzKQogICAgICwgbV9u
YW1lc3BhY2VVUkkobmFtZXNwYWNlVVJJKQogICAgICwgbV9sb2NhbE5hbWUobG9jYWxOYW1lKQog
ewpAQCAtNDQsMjQgKzQ0LDE2IEBAIFRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3QoKQogICAgICAg
ICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVXaXRoUXVhbGlmaWVkTmFtZSh0
aGlzLCBtX25hbWVzcGFjZVVSSSwgbV9sb2NhbE5hbWUpOwogfQogCi1ib29sIFRhZ05vZGVMaXN0
Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkgY29uc3QKLXsKLSAgICAvLyBJbXBsZW1l
bnRzIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmlldy5o
dG1sI2NvbmNlcHQtZ2V0ZWxlbWVudHNieXRhZ25hbWVucwotICAgIGlmIChtX2xvY2FsTmFtZSAh
PSBzdGFyQXRvbSAmJiBtX2xvY2FsTmFtZSAhPSB0ZXN0Tm9kZS0+bG9jYWxOYW1lKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRv
bSB8fCBtX25hbWVzcGFjZVVSSSA9PSB0ZXN0Tm9kZS0+bmFtZXNwYWNlVVJJKCk7Ci19Ci0KIEhU
TUxUYWdOb2RlTGlzdDo6SFRNTFRhZ05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKLSAgICA6IFRhZ05vZGVMaXN0KHJvb3ROb2Rl
LCBUeXBlOjpIVE1MVGFnTm9kZUxpc3RUeXBlLCBzdGFyQXRvbSwgbG9jYWxOYW1lKQorICAgIDog
Q2FjaGVkTGl2ZU5vZGVMaXN0KHJvb3ROb2RlLCBUeXBlOjpIVE1MVGFnTm9kZUxpc3RUeXBlLCBE
b05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXMpCisgICAgLCBtX2xvY2FsTmFtZShsb2Nh
bE5hbWUpCiAgICAgLCBtX2xvd2VyZWRMb2NhbE5hbWUobG9jYWxOYW1lLmxvd2VyKCkpCiB7CiB9
CiAKLWJvb2wgSFRNTFRhZ05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0ZXN0Tm9kZSkg
Y29uc3QKK0hUTUxUYWdOb2RlTGlzdDo6fkhUTUxUYWdOb2RlTGlzdCgpCiB7Ci0gICAgcmV0dXJu
IG5vZGVNYXRjaGVzSW5saW5lZCh0ZXN0Tm9kZSk7CisgICAgb3duZXJOb2RlKCkubm9kZUxpc3Rz
KCktPnJlbW92ZUNhY2hlV2l0aEF0b21pY05hbWUodGhpcywgbV9sb2NhbE5hbWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuaAkocmV2
aXNpb24gMTY2MjkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDMyICszMSw0MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBO
b2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBhcnRpY3VsYXIgdGFnLgotY2xhc3MgVGFnTm9kZUxp
c3QgOiBwdWJsaWMgTGl2ZU5vZGVMaXN0IHsKK2NsYXNzIFRhZ05vZGVMaXN0IGZpbmFsIDogcHVi
bGljIENhY2hlZExpdmVOb2RlTGlzdDxUYWdOb2RlTGlzdD4gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lc3BhY2VVUkkgIT0gc3RhckF0b20p
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhZ05vZGVMaXN0KHJvb3ROb2RlLCBUeXBl
OjpUYWdOb2RlTGlzdFR5cGUsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFnTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+IGNy
ZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9
PSBUeXBlOjpUYWdOb2RlTGlzdFR5cGUpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRh
Z05vZGVMaXN0KHJvb3ROb2RlLCBUeXBlOjpUYWdOb2RlTGlzdFR5cGUsIHN0YXJBdG9tLCBsb2Nh
bE5hbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYWdOb2RlTGlzdChyb290Tm9k
ZSwgc3RhckF0b20sIGxvY2FsTmFtZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflRhZ05vZGVM
aXN0KCk7CiAKLXByb3RlY3RlZDoKLSAgICBUYWdOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290
Tm9kZSwgVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lKTsKLQogICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKK3Byb3RlY3RlZDoKKyAgICBUYWdOb2RlTGlzdChDb250
YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKwogICAgIEF0b21pY1N0cmluZyBtX25hbWVz
cGFjZVVSSTsKICAgICBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiB9OwogCi1jbGFzcyBIVE1M
VGFnTm9kZUxpc3QgOiBwdWJsaWMgVGFnTm9kZUxpc3QgeworaW5saW5lIGJvb2wgVGFnTm9kZUxp
c3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgLy8gSW1wbGVt
ZW50cyBodHRwOi8vZHZjcy53My5vcmcvaGcvZG9tY29yZS9yYXctZmlsZS90aXAvT3ZlcnZpZXcu
aHRtbCNjb25jZXB0LWdldGVsZW1lbnRzYnl0YWduYW1lbnMKKyAgICBpZiAobV9sb2NhbE5hbWUg
IT0gc3RhckF0b20gJiYgbV9sb2NhbE5hbWUgIT0gZWxlbWVudC0+bG9jYWxOYW1lKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRv
bSB8fCBtX25hbWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKK30KKworY2xh
c3MgSFRNTFRhZ05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxIVE1M
VGFnTm9kZUxpc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGFnTm9k
ZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgVHlwZSB0eXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKICAgICB7CkBAIC02NCwyNiArNzMsMjQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWdOb2RlTGlzdChyb290Tm9kZSwg
bG9jYWxOYW1lKSk7CiAgICAgfQogCi0gICAgYm9vbCBub2RlTWF0Y2hlc0lubGluZWQoRWxlbWVu
dCopIGNvbnN0OworICAgIHZpcnR1YWwgfkhUTUxUYWdOb2RlTGlzdCgpOworCisgICAgdmlydHVh
bCBib29sIG5vZGVNYXRjaGVzKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBIVE1MVGFnTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lKTsKIAotICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0KKyAgICBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAg
ICAgQXRvbWljU3RyaW5nIG1fbG93ZXJlZExvY2FsTmFtZTsKIH07CiAKLWlubGluZSBib29sIEhU
TUxUYWdOb2RlTGlzdDo6bm9kZU1hdGNoZXNJbmxpbmVkKEVsZW1lbnQqIHRlc3ROb2RlKSBjb25z
dAoraW5saW5lIGJvb2wgSFRNTFRhZ05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewogICAgIC8vIEltcGxlbWVudHMgaHR0cDovL2R2Y3MudzMub3JnL2hnL2Rv
bWNvcmUvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjY29uY2VwdC1nZXRlbGVtZW50c2J5dGFn
bmFtZQotICAgIGlmIChtX2xvY2FsTmFtZSAhPSBzdGFyQXRvbSkgewotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHRlc3ROb2RlLT5pc0hUTUxFbGVtZW50KCkgPyBtX2xv
d2VyZWRMb2NhbE5hbWUgOiBtX2xvY2FsTmFtZTsKLSAgICAgICAgaWYgKGxvY2FsTmFtZSAhPSB0
ZXN0Tm9kZS0+bG9jYWxOYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIEFTU0VSVChtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSk7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1fbG9jYWxOYW1lID09IHN0YXJBdG9tKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGVsZW1lbnQtPmlzSFRNTEVsZW1l
bnQoKSA/IG1fbG93ZXJlZExvY2FsTmFtZSA6IG1fbG9jYWxOYW1lOworICAgIHJldHVybiBsb2Nh
bE5hbWUgPT0gZWxlbWVudC0+bG9jYWxOYW1lKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAx
NjYyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBMYWJlbHNOb2RlTGlzdDo6TGFiZWxzTm9kZUxpc3QoTGFiZWxh
YmxlRWxlbWVudCYgZm9yTm9kZSkKLSAgICA6IExpdmVOb2RlTGlzdChmb3JOb2RlLCBUeXBlOjpM
YWJlbHNOb2RlTGlzdFR5cGUsIEludmFsaWRhdGVPbkZvckF0dHJDaGFuZ2UsIE5vZGVMaXN0SXNS
b290ZWRBdERvY3VtZW50KQorICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KGZvck5vZGUsIFR5cGU6
OkxhYmVsc05vZGVMaXN0VHlwZSwgSW52YWxpZGF0ZU9uRm9yQXR0ckNoYW5nZSwgTm9kZUxpc3RJ
c1Jvb3RlZEF0RG9jdW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFi
ZWxzTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05v
ZGVMaXN0LmgJKHJldmlzaW9uIDE2NjI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxz
Tm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIExhYmVsc05vZGVMaXN0IGZpbmFsIDogcHVibGljIExpdmVOb2Rl
TGlzdCB7CitjbGFzcyBMYWJlbHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9k
ZUxpc3Q8TGFiZWxzTm9kZUxpc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZjxMYWJl
bHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUsIFR5cGUgdHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJikKICAgICB7CkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgog
ICAgIH0KICAgICB+TGFiZWxzTm9kZUxpc3QoKTsKIAotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0
IExhYmVsc05vZGVMaXN0KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUpOwotCiAgICAgdmlydHVh
bCBib29sIG5vZGVNYXRjaGVzKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJlbGFibGVFbGVtZW50JiBmb3JOb2RlKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SYWRp
b05vZGVMaXN0LmNwcAkocmV2aXNpb24gMTY2MjkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9S
YWRpb05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSYWRpb05vZGVMaXN0
OjpSYWRpb05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCi0gICAgOiBMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFR5cGU6OlJhZGlvTm9kZUxp
c3RUeXBlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzLCBpc0hUTUxGb3JtRWxlbWVudChyb290
Tm9kZSkgPyBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudCA6IE5vZGVMaXN0SXNSb290ZWRBdE5v
ZGUpCisgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qocm9vdE5vZGUsIFR5cGU6OlJhZGlvTm9kZUxp
c3RUeXBlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzLCBpc0hUTUxGb3JtRWxlbWVudChyb290
Tm9kZSkgPyBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudCA6IE5vZGVMaXN0SXNSb290ZWRBdE5v
ZGUpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
UmFkaW9Ob2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9O
b2RlTGlzdC5oCShyZXZpc2lvbiAxNjYyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlv
Tm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFJhZGlvTm9kZUxpc3QgOiBwdWJsaWMgTGl2ZU5vZGVMaXN0IHsK
K2NsYXNzIFJhZGlvTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PFJh
ZGlvTm9kZUxpc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYWRpb05vZGVM
aXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIFR5cGUgdHlwZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogICAgIHsKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIFN0
cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAK
LXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="252228"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>