<?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>158108</bug_id>
          <alias>CVE-2016-4759</alias>
          <creation_ts>2016-05-25 19:44:29 -0700</creation_ts>
          <short_desc>Crash in TreeScope::focusedElement</short_desc>
          <delta_ts>2017-10-11 10:27:05 -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>WebKit Misc.</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="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1196622</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-25 19:44:29 -0700</bug_when>
    <thetext>We can get into a state where a focused element&apos;s treeScope doesn&apos;t match that of Document yet the tree scope isn&apos;t of a shadow tree
because we can get into a state where document-&gt;m_focusedElement-&gt;document() != document.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00007fff96399aff WebCore::TreeScope::focusedElement() + 207
1   com.apple.WebCore             	0x00007fff9629b37f WebCore::Document::removeFocusedNodeOfSubtree(WebCore::Node*, bool) + 47
2   com.apple.WebCore             	0x00007fff966edc8e WebCore::Element::removeShadowRoot() + 78
3   com.apple.WebCore             	0x00007fff96234239 WebCore::Element::~Element() + 25
4   com.apple.WebCore             	0x00007fff962e700e WebCore::HTMLInputElement::~HTMLInputElement() + 14
5   com.apple.JavaScriptCore      	0x00007fff8dfb8ff6 JSC::MarkedBlock::FreeList JSC::MarkedBlock::sweepHelper&lt;true&gt;(JSC::MarkedBlock::SweepMode) + 326
6   com.apple.JavaScriptCore      	0x00007fff8da7f51b JSC::MarkedBlock::sweep(JSC::MarkedBlock::SweepMode) + 75
7   com.apple.JavaScriptCore      	0x00007fff8de68500 JSC::IncrementalSweeper::sweepNextBlock() + 96
8   com.apple.JavaScriptCore      	0x00007fff8da87bb8 JSC::IncrementalSweeper::doSweep(double) + 24
9   com.apple.JavaScriptCore      	0x00007fff8da87aaa JSC::HeapTimer::timerDidFire(__CFRunLoopTimer*, void*) + 186
10  com.apple.CoreFoundation      	0x00007fff8a1c3b94 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
11  com.apple.CoreFoundation      	0x00007fff8a1c3823 __CFRunLoopDoTimer + 1075
12  com.apple.CoreFoundation      	0x00007fff8a1c337a __CFRunLoopDoTimers + 298
13  com.apple.CoreFoundation      	0x00007fff8a1ba871 __CFRunLoopRun + 1841
14  com.apple.CoreFoundation      	0x00007fff8a1b9ed8 CFRunLoopRunSpecific + 296
15  com.apple.HIToolbox           	0x00007fff95ece935 RunCurrentEventLoopInMode + 235
16  com.apple.HIToolbox           	0x00007fff95ece76f ReceiveNextEventCommon + 432
17  com.apple.HIToolbox           	0x00007fff95ece5af _BlockUntilNextEventMatchingListInModeWithFilter + 71
18  com.apple.AppKit              	0x00007fff9438bdf6 _DPSNextEvent + 1067
19  com.apple.AppKit              	0x00007fff9438b226 -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454
20  com.apple.AppKit              	0x00007fff9437fd80 -[NSApplication run] + 682
21  com.apple.AppKit              	0x00007fff94349368 NSApplicationMain + 1176
22  libxpc.dylib                  	0x00007fff9a786194 _xpc_objc_main + 795
23  libxpc.dylib                  	0x00007fff9a784bbe xpc_main + 494
24  com.apple.WebKit.WebContent   	0x000000010cf70b4a 0x10cf70000 + 2890
25  libdyld.dylib                 	0x00007fff8b0c35ad start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196623</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-25 19:44:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/24337904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196661</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-25 23:25:48 -0700</bug_when>
    <thetext>Oh snap, that inconsistency is a lot tricker than I had initially thought.  There is a fundamental API design issue at a hand.

When an element is removed, we fire blur event if the element had been focused. We also fire unload event if it&apos;s an iframe. But we can focus the iframe back while unload event is being dispatched, or add the iframe back while focus event is being dispatched.

In a way, we can end up in a mutually recursive behavior between unloading an iframe and focusing the same iframe inside blur/unload event handlers.

The current behavior was introduced by http://trac.webkit.org/changeset/127534 four years ago, and it prefers keeping iframe in a consistent state.

For now, I&apos;m going to preserve the status quo and let this inconsistency manifest into m_focusedElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196662</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-25 23:31:00 -0700</bug_when>
    <thetext>Huh, that doesn&apos;t work either because of assertions in UserActionElementSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196969</commentid>
    <comment_count>4</comment_count>
      <attachid>279941</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-26 20:13:54 -0700</bug_when>
    <thetext>Created attachment 279941
Stops dispatching blur and change events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196988</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-26 22:43:02 -0700</bug_when>
    <thetext>I ran all layout tests in both debug WTR and DRT on El Capitan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197239</commentid>
    <comment_count>6</comment_count>
      <attachid>279941</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-05-27 15:25:07 -0700</bug_when>
    <thetext>Comment on attachment 279941
Stops dispatching blur and change events

Look ok to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197242</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-05-27 15:25:54 -0700</bug_when>
    <thetext>Just a bit worried about compatibility but I think it is worth trying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197245</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-27 15:30:31 -0700</bug_when>
    <thetext>Committed r201471: &lt;http://trac.webkit.org/changeset/201471&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279941</attachid>
            <date>2016-05-26 20:13:54 -0700</date>
            <delta_ts>2016-05-27 15:25:07 -0700</delta_ts>
            <desc>Stops dispatching blur and change events</desc>
            <filename>bug-158108-20160526201504.patch</filename>
            <type>text/plain</type>
            <size>25641</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTA1LTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENyYXNoIGluIFRyZWVTY29wZTo6
Zm9jdXNlZEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBhIGZsYXdlZCBzZXF1ZW5jZSBvZiBzdGVwcyB3
ZSB0b29rIHRvIHJlbW92ZSBhbiBlbGVtZW50LiBXaGVuIGFuIGVsZW1lbnQgaXMgcmVtb3ZlZCwK
KyAgICAgICAgd2lsbFJlbW92ZUNoaWxkIGFuZCB3aWxsUmVtb3ZlQ2hpbGRyZW4gZmlyZSBibHVy
IGV2ZW50cyBvbiByZW1vdmVkIGZvY3VzZWQgZWxlbWVudCBhbmQgaXRzIGFuY2VzdG9ycyBhbmQK
KyAgICAgICAgdW5sb2FkIGV2ZW50IG9uIGFueSByZW1vdmVkIGlmcmFtZXMuIEhvd2V2ZXIsIGl0
IHdhcyBwb3NzaWJsZSB0byBmb2N1cyBhbiBlbGVtZW50IG9uIHdoaWNoIHdlIGhhZCBmaXJlZCBi
bHVyCisgICAgICAgIGR1cmluZyBhbiB1bmxvYWQgZXZlbnQsIGxlYXZpbmcgbV9mb2N1c2VkRWxl
bWVudCBwb2ludCB0byBhbiBlbGVtZW50IHRoYXQncyBub3QgaW4gdGhlIGRvY3VtZW50IGFueW1v
cmUuCisKKyAgICAgICAgQ2hhbmdpbmcgdGhlIG9yZGVyIGRvZXNuJ3QgaGVscCBiZWNhdXNlIHRo
YXQgd291bGQgbWFrZSBpdCBwb3NzaWJsZSB0byBpbnNlcnQgdGhlIHJlbW92ZWQgaWZyYW1lcyBi
YWNrIGludG8KKyAgICAgICAgdGhlIGRvY3VtZW50IGluc2lkZSBhIGV2ZW50IGxpc3RlbmVyIG9m
IHRoZSBibHVyIGV2ZW50LCB3aGljaCB3YXMgc3BlY2lmaWNhbGx5IGZpeGVkIGJ5IHIxMjc1MzQg
Zm91ciB5ZWFycyBhZ28uCisKKyAgICAgICAgSW5zdGVhZCwgZml4IHRoZSBidWcgYnkgbm90IGZp
cmluZyBibHVyIGFuZCBjaGFuZ2UgZXZlbnRzIG9uIHJlbW92ZWQgbm9kZXMuIE5ldyBiZWhhdmlv
ciBtYXRjaGVzIEZpcmVmb3ggYW5kIEhUTUw1CisgICAgICAgIHNwZWNpZmljYXRpb246IGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVyYWN0aW9uLmh0bWwjZm9jdXMt
Zml4dXAtcnVsZS1vbmUKKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vc2hhZG93LXJv
b3QtYWN0aXZlLWVsZW1lbnQtY3Jhc2guaHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92ZUNoaWxkKTogTWFkZSB0aGlzIGZ1
bmN0aW9uIHN0YXRpYyBsb2NhbCBzaW5jZSBpdCBkaWRuJ3QgbmVlZCB0byBoYXZlIGFjY2VzcyB0
byBhbnkgcHJpdmF0ZQorICAgICAgICBtZW1iZXIgdmFyaWFibGVzLiBDYWxsIERvY3VtZW50Ojpu
b2RlV2lsbEJlUmVtb3ZlZCBhZnRlciBkaXNjb25uZWN0aW5nIGlmcmFtZXMgc2luY2UgdW5sb2Fk
IGV2ZW50IGhhbmRsZXIgY291bGQKKyAgICAgICAgYWxsb2NhdGUgbmV3IFJhbmdlcyBqdXN0IGxp
a2UgbXV0YXRpb24gZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6d2lsbFJlbW92ZUNoaWxkcmVu
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6
IFJlbW92ZWQgdGhlIGNhbGxzIHRvIHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlIGFu
ZAorICAgICAgICByZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSBhcyB0aGV5J3JlIG5vdyBjYWxs
ZWQgaW4gRG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUpOiBEb24ndCBkaXNwYXRjaCBi
bHVyIGFuZCBjaGFuZ2UgZXZlbnRzIHdoZW4gYSBub2RlIGlzIHJlbW92ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQpOiBBZGRlZCBGb2N1c1JlbW92YWxF
dmVudHNNb2RlIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4gQXZvaWQgZGlzcGF0Y2hpbmcgYmx1cgor
ICAgICAgICBhbmQgY2hhbmdlIGV2ZW50cyB3aGVuIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRp
c3BhdGNoIGlzIHNldC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlQ2hpbGRyZW5X
aWxsQmVSZW1vdmVkKTogQWRkZWQgY2FsbHMgdG8gcmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1
YnRyZWUgYW5kCisgICAgICAgIHJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlLiBBbHNvIGFzc2Vy
dCB0aGF0IG5vIGV2ZW50cyBhcmUgZmlyZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIElmIHdlIGV2
ZXIgZmlyZSBhbiBldmVudCBoZXJlLAorICAgICAgICAidW5sb2FkZWQiIGlmcmFtZXMgY2FuIGJl
IGluc2VydGVkIGJhY2sgaW50byBhIGRvY3VtZW50IGJlZm9yZSBDb250YWluZXJOb2RlOjpyZW1v
dmVDaGlsZCBhY3R1YWxseSByZW1vdmVzIHRoZW0uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6bm9kZVdpbGxCZVJlbW92ZWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6Zm9jdXNlZEVsZW1lbnQpOiBBZGRlZCBhIHJlbGVhc2UgYXNzZXJ0aW9uIHRvIG1ha2Ugc3Vy
ZSB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluIHRoZSBkb2N1bWVudAorICAgICAgICBvZiB0aGUg
dHJlZSBzY29wZSwgYW5kIGFkZGVkIGFuIGV4cGxpY2l0IHR5cGUgY2hlY2sganVzdCBpbiBjYXNl
LgorCiAyMDE2LTA1LTI1ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBXZWJLaXRBZGRpdGlvbnMgZXh0ZW5zaW9uIHBvaW50IGluIEhUTUxNZWRpYUVsZW1lbnQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCShyZXZpc2lvbiAyMDEzNjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2Rl
JiBuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6d2lsbFJlbW92
ZUNoaWxkKE5vZGUmIGNoaWxkKQorc3RhdGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkKENvbnRhaW5l
ck5vZGUmIGNvbnRhaW5lciwgTm9kZSYgY2hpbGQpCiB7CiAgICAgQVNTRVJUKGNoaWxkLnBhcmVu
dE5vZGUoKSk7CiAKQEAgLTQ2NiwxMiArNDY2LDE2IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6d2ls
bFJlbW92ZUNoaWxkKE5vZGUKICAgICBjaGlsZC5ub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVX
aWxsRGV0YWNoKCk7CiAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogCi0g
ICAgaWYgKGNoaWxkLnBhcmVudE5vZGUoKSAhPSB0aGlzKQorICAgIGlmIChjaGlsZC5wYXJlbnRO
b2RlKCkgIT0gJmNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2hpbGQuZG9jdW1l
bnQoKS5ub2RlV2lsbEJlUmVtb3ZlZChjaGlsZCk7IC8vIGUuZy4gbXV0YXRpb24gZXZlbnQgbGlz
dGVuZXIgY2FuIGNyZWF0ZSBhIG5ldyByYW5nZS4KICAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4o
Y2hpbGQpKQogICAgICAgICBkaXNjb25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoZG93bmNhc3Q8Q29u
dGFpbmVyTm9kZT4oY2hpbGQpLCBSb290QW5kRGVzY2VuZGFudHMpOworCisgICAgaWYgKGNoaWxk
LnBhcmVudE5vZGUoKSAhPSAmY29udGFpbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGls
ZC5kb2N1bWVudCgpLm5vZGVXaWxsQmVSZW1vdmVkKGNoaWxkKTsgLy8gZS5nLiBtdXRhdGlvbiBl
dmVudCBsaXN0ZW5lciBjYW4gY3JlYXRlIGEgbmV3IHJhbmdlLgogfQogCiBzdGF0aWMgdm9pZCB3
aWxsUmVtb3ZlQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyKQpAQCAtNDg4LDkgKzQ5
MiwxMCBAQCBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hpbGRyZW4oQ29udGFpbmVyCiAgICAgICAg
IGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkLmdldCgpKTsKICAgICB9CiAKKyAgICBk
aXNjb25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoY29udGFpbmVyLCBEZXNjZW5kYW50c09ubHkpOwor
CiAgICAgY29udGFpbmVyLmRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChjb250
YWluZXIpOwogCi0gICAgZGlzY29ubmVjdFN1YmZyYW1lc0lmTmVlZGVkKGNvbnRhaW5lciwgRGVz
Y2VuZGFudHNPbmx5KTsKIH0KIAogdm9pZCBDb250YWluZXJOb2RlOjpkaXNjb25uZWN0RGVzY2Vu
ZGFudEZyYW1lcygpCkBAIC01MTYsMTIgKzUyMSw2IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGQoTm9kZSYgb2wKIAogICAgIFJlZjxOb2RlPiBjaGlsZChvbGRDaGlsZCk7CiAKLSAg
ICBkb2N1bWVudCgpLnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKGNoaWxkLnB0cigpKTsKLQot
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBkb2N1bWVudCgpLnJlbW92ZUZ1bGxTY3Jl
ZW5FbGVtZW50T2ZTdWJ0cmVlKCZjaGlsZC5nZXQoKSk7Ci0jZW5kaWYKLQogICAgIC8vIEV2ZW50
cyBmaXJlZCB3aGVuIGJsdXJyaW5nIGN1cnJlbnRseSBmb2N1c2VkIG5vZGUgbWlnaHQgaGF2ZSBt
b3ZlZCB0aGlzCiAgICAgLy8gY2hpbGQgaW50byBhIGRpZmZlcmVudCBwYXJlbnQuCiAgICAgaWYg
KGNoaWxkLT5wYXJlbnROb2RlKCkgIT0gdGhpcykgewpAQCAtNTI5LDcgKzUyOCw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSYgb2wKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIHdpbGxSZW1vdmVDaGlsZChjaGlsZCk7CisgICAgd2lsbFJlbW92ZUNo
aWxkKCp0aGlzLCBjaGlsZCk7CiAKICAgICAvLyBNdXRhdGlvbiBldmVudHMgbWlnaHQgaGF2ZSBt
b3ZlZCB0aGlzIGNoaWxkIGludG8gYSBkaWZmZXJlbnQgcGFyZW50LgogICAgIGlmIChjaGlsZC0+
cGFyZW50Tm9kZSgpICE9IHRoaXMpIHsKQEAgLTYxMywxMyArNjEyLDYgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgLy8gVGhlIGNvbnRhaW5lciBub2RlIGNhbiBi
ZSByZW1vdmVkIGZyb20gZXZlbnQgaGFuZGxlcnMuCiAgICAgUmVmPENvbnRhaW5lck5vZGU+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgLy8gZXhjbHVkZSB0aGlzIG5vZGUgd2hlbiBsb29r
aW5nIGZvciByZW1vdmVkIGZvY3VzZWROb2RlIHNpbmNlIG9ubHkgY2hpbGRyZW4gd2lsbCBiZSBy
ZW1vdmVkCi0gICAgZG9jdW1lbnQoKS5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSh0aGlzLCB0
cnVlKTsKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBkb2N1bWVudCgpLnJlbW92
ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlKHRoaXMsIHRydWUpOwotI2VuZGlmCi0KICAgICAv
LyBEbyBhbnkgcHJlcCB3b3JrIG5lZWRlZCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgdG8gZGV0
YWNoCiAgICAgLy8gYW5kIHJlbW92ZS4uLiBlLmcuIHN0b3AgbG9hZGluZyBmcmFtZXMsIGZpcmUg
dW5sb2FkIGV2ZW50cy4KICAgICB3aWxsUmVtb3ZlQ2hpbGRyZW4oKnRoaXMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAyMDEzNjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDYg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNDb250YWluZXJOb2RlKCkgY29uc3QgPSBkZWxldGU7
CiAKLSAgICB2b2lkIHdpbGxSZW1vdmVDaGlsZChOb2RlJiBjaGlsZCk7Ci0KICAgICBOb2RlKiBt
X2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07CiAgICAgTm9kZSogbV9sYXN0Q2hpbGQgeyBudWxscHRy
IH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMDEzNjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAw
LDcgKzM3MDAsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlCiAg
ICAgICAgIG5vZGVJblN1YnRyZWUgPSAoZm9jdXNlZEVsZW1lbnQgPT0gbm9kZSkgfHwgZm9jdXNl
ZEVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG5vZGUpOwogICAgIAogICAgIGlmIChub2RlSW5TdWJ0
cmVlKQotICAgICAgICBzZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgc2V0Rm9j
dXNlZEVsZW1lbnQobnVsbHB0ciwgRm9jdXNEaXJlY3Rpb25Ob25lLCBGb2N1c1JlbW92YWxFdmVu
dHNNb2RlOjpEb05vdERpc3BhdGNoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6aG92ZXJlZEVsZW1l
bnREaWREZXRhY2goRWxlbWVudCogZWxlbWVudCkKQEAgLTM3MzgsNyArMzczOCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldEFubm90YXRlZFJlZ2lvbnMoY29uc3QKIH0KICNlbmRpZgogCi1ib29sIERv
Y3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24pCitib29sIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBl
bGVtZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGUg
ZXZlbnRzTW9kZSkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gbmV3Rm9jdXNlZEVsZW1lbnQgPSBl
bGVtZW50OwogICAgIC8vIE1ha2Ugc3VyZSBuZXdGb2N1c2VkRWxlbWVudCBpcyBhY3R1YWxseSBp
biB0aGlzIGRvY3VtZW50CkBAIC0zNzYxLDMzICszNzYxLDM2IEBAIGJvb2wgRG9jdW1lbnQ6OnNl
dEZvY3VzZWRFbGVtZW50KEVsZW1lbnQKIAogICAgICAgICBvbGRGb2N1c2VkRWxlbWVudC0+c2V0
Rm9jdXMoZmFsc2UpOwogCi0gICAgICAgIC8vIERpc3BhdGNoIGEgY2hhbmdlIGV2ZW50IGZvciBm
b3JtIGNvbnRyb2wgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gZWRpdGVkLgotICAgICAgICBpZiAo
aXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm9sZEZvY3VzZWRFbGVtZW50KSkgewotICAgICAg
ICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZm9ybUNvbnRyb2xFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKm9sZEZvY3VzZWRFbGVtZW50KTsKLSAgICAgICAg
ICAgIGlmIChmb3JtQ29udHJvbEVsZW1lbnQud2FzQ2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9s
Q2hhbmdlRXZlbnQoKSkKLSAgICAgICAgICAgICAgICBmb3JtQ29udHJvbEVsZW1lbnQuZGlzcGF0
Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50KCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGV2ZW50
c01vZGUgPT0gRm9jdXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpIHsKKyAgICAgICAgICAg
IC8vIERpc3BhdGNoIGEgY2hhbmdlIGV2ZW50IGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgdGhh
dCBoYXZlIGJlZW4gZWRpdGVkLgorICAgICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ+KCpvbGRGb2N1c2VkRWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50JiBmb3JtQ29udHJvbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Pigqb2xkRm9jdXNlZEVsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmIChmb3Jt
Q29udHJvbEVsZW1lbnQud2FzQ2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQo
KSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xFbGVtZW50LmRpc3BhdGNoRm9ybUNv
bnRyb2xDaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8vIERpc3BhdGNo
IHRoZSBibHVyIGV2ZW50IGFuZCBsZXQgdGhlIG5vZGUgZG8gYW55IG90aGVyIGJsdXIgcmVsYXRl
ZCBhY3Rpdml0aWVzIChpbXBvcnRhbnQgZm9yIHRleHQgZmllbGRzKQotICAgICAgICBvbGRGb2N1
c2VkRWxlbWVudC0+ZGlzcGF0Y2hCbHVyRXZlbnQobmV3Rm9jdXNlZEVsZW1lbnQuY29weVJlZigp
KTsKKyAgICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBibHVyIGV2ZW50IGFuZCBsZXQgdGhlIG5v
ZGUgZG8gYW55IG90aGVyIGJsdXIgcmVsYXRlZCBhY3Rpdml0aWVzIChpbXBvcnRhbnQgZm9yIHRl
eHQgZmllbGRzKQorICAgICAgICAgICAgb2xkRm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoQmx1ckV2
ZW50KG5ld0ZvY3VzZWRFbGVtZW50LmNvcHlSZWYoKSk7CiAKLSAgICAgICAgaWYgKG1fZm9jdXNl
ZEVsZW1lbnQpIHsKLSAgICAgICAgICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBmb2N1cwotICAgICAg
ICAgICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIG5ld0ZvY3VzZWRF
bGVtZW50ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgb2xkRm9jdXNl
ZEVsZW1lbnQtPmRpc3BhdGNoRm9jdXNPdXRFdmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVu
dCwgbmV3Rm9jdXNlZEVsZW1lbnQuY29weVJlZigpKTsgLy8gRE9NIGxldmVsIDMgbmFtZSBmb3Ig
dGhlIGJ1YmJsaW5nIGJsdXIgZXZlbnQuCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVt
b3ZlIGZpcmluZyBET01Gb2N1c091dEV2ZW50IGV2ZW50IHdoZW4gd2UgYXJlIHN1cmUgbm8gY29u
dGVudCBkZXBlbmRzCi0gICAgICAgIC8vIG9uIGl0LCBwcm9iYWJseSB3aGVuIDxyZGFyOi8vcHJv
YmxlbS84NTAzOTU4PiBpcyByZXNvbHZlZC4KLSAgICAgICAgb2xkRm9jdXNlZEVsZW1lbnQtPmRp
c3BhdGNoRm9jdXNPdXRFdmVudChldmVudE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVudCwgbmV3Rm9j
dXNlZEVsZW1lbnQuY29weVJlZigpKTsgLy8gRE9NIGxldmVsIDIgbmFtZSBmb3IgY29tcGF0aWJp
bGl0eS4KKyAgICAgICAgICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KSB7CisgICAgICAgICAgICAg
ICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCisgICAgICAgICAgICAgICAgZm9jdXNDaGFuZ2VC
bG9ja2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBuZXdGb2N1c2VkRWxlbWVudCA9IG51bGxw
dHI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9sZEZvY3VzZWRFbGVtZW50LT5kaXNw
YXRjaEZvY3VzT3V0RXZlbnQoZXZlbnROYW1lcygpLmZvY3Vzb3V0RXZlbnQsIG5ld0ZvY3VzZWRF
bGVtZW50LmNvcHlSZWYoKSk7IC8vIERPTSBsZXZlbCAzIG5hbWUgZm9yIHRoZSBidWJibGluZyBi
bHVyIGV2ZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgZmlyaW5n
IERPTUZvY3VzT3V0RXZlbnQgZXZlbnQgd2hlbiB3ZSBhcmUgc3VyZSBubyBjb250ZW50IGRlcGVu
ZHMKKyAgICAgICAgICAgIC8vIG9uIGl0LCBwcm9iYWJseSB3aGVuIDxyZGFyOi8vcHJvYmxlbS84
NTAzOTU4PiBpcyByZXNvbHZlZC4KKyAgICAgICAgICAgIG9sZEZvY3VzZWRFbGVtZW50LT5kaXNw
YXRjaEZvY3VzT3V0RXZlbnQoZXZlbnROYW1lcygpLkRPTUZvY3VzT3V0RXZlbnQsIG5ld0ZvY3Vz
ZWRFbGVtZW50LmNvcHlSZWYoKSk7IC8vIERPTSBsZXZlbCAyIG5hbWUgZm9yIGNvbXBhdGliaWxp
dHkuCisKKyAgICAgICAgICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50KSB7CisgICAgICAgICAgICAg
ICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCisgICAgICAgICAgICAgICAgZm9jdXNDaGFuZ2VC
bG9ja2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBuZXdGb2N1c2VkRWxlbWVudCA9IG51bGxw
dHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUKCFt
X2ZvY3VzZWRFbGVtZW50KTsKIAotICAgICAgICBpZiAobV9mb2N1c2VkRWxlbWVudCkgewotICAg
ICAgICAgICAgLy8gaGFuZGxlciBzaGlmdGVkIGZvY3VzCi0gICAgICAgICAgICBmb2N1c0NoYW5n
ZUJsb2NrZWQgPSB0cnVlOwotICAgICAgICAgICAgbmV3Rm9jdXNlZEVsZW1lbnQgPSBudWxscHRy
OwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgaWYgKG9sZEZvY3VzZWRFbGVtZW50
LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lKCktPmVkaXRvcigp
LmRpZEVuZEVkaXRpbmcoKTsKIApAQCAtMzk2Nyw2ICszOTcwLDE0IEBAIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVJhbmdlc0FmdGVyQ2hpbGRyZW4KIAogdm9pZCBEb2N1bWVudDo6bm9kZUNoaWxkcmVu
V2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlJiBjb250YWluZXIpCiB7CisgICAgTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKworICAgIHJlbW92ZUZvY3Vz
ZWROb2RlT2ZTdWJ0cmVlKCZjb250YWluZXIsIHRydWUgLyogYW1vbmdDaGlsZHJlbk9ubHkgKi8p
OworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHJlbW92ZUZ1bGxTY3JlZW5FbGVt
ZW50T2ZTdWJ0cmVlKCZjb250YWluZXIsIHRydWUgLyogYW1vbmdDaGlsZHJlbk9ubHkgKi8pOwor
I2VuZGlmCisKICAgICBmb3IgKGF1dG8qIHJhbmdlIDogbV9yYW5nZXMpCiAgICAgICAgIHJhbmdl
LT5ub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKGNvbnRhaW5lcik7CiAKQEAgLTM5OTEsNiArNDAw
MiwxNCBAQCB2b2lkIERvY3VtZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkCiAKIHZvaWQg
RG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkKE5vZGUmIG4pCiB7CisgICAgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKworICAgIHJlbW92ZUZvY3VzZWRO
b2RlT2ZTdWJ0cmVlKCZuKTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICByZW1v
dmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZSgmbik7CisjZW5kaWYKKwogICAgIGZvciAoYXV0
byogaXQgOiBtX25vZGVJdGVyYXRvcnMpCiAgICAgICAgIGl0LT5ub2RlV2lsbEJlUmVtb3ZlZChu
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwMTM2OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjIsNyArNzIyLDkg
QEAgcHVibGljOgogICAgIFN0cmluZyBzZWxlY3RlZFN0eWxlc2hlZXRTZXQoKSBjb25zdDsKICAg
ICB2b2lkIHNldFNlbGVjdGVkU3R5bGVzaGVldFNldChjb25zdCBTdHJpbmcmKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCosIEZvY3VzRGlyZWN0
aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKKyAgICBlbnVtIGNsYXNzIEZvY3VzUmVtb3ZhbEV2
ZW50c01vZGUgeyBEaXNwYXRjaCwgRG9Ob3REaXNwYXRjaCB9OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCosIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNE
aXJlY3Rpb25Ob25lLAorICAgICAgICBGb2N1c1JlbW92YWxFdmVudHNNb2RlID0gRm9jdXNSZW1v
dmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpOwogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9mb2N1c2VkRWxlbWVudC5nZXQoKTsgfQogICAgIFVzZXJBY3Rpb25F
bGVtZW50U2V0JiB1c2VyQWN0aW9uRWxlbWVudHMoKSAgeyByZXR1cm4gbV91c2VyQWN0aW9uRWxl
bWVudHM7IH0KICAgICBjb25zdCBVc2VyQWN0aW9uRWxlbWVudFNldCYgdXNlckFjdGlvbkVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyQWN0aW9uRWxlbWVudHM7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAyMDEzNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDggKzMxMSwxMyBAQCBFbGVt
ZW50KiBUcmVlU2NvcGU6OmZvY3VzZWRFbGVtZW50KCkKICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlID0gJmVsZW1lbnQt
PnRyZWVTY29wZSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCZkb2N1bWVudCA9PSAmdHJlZVNjb3Bl
LT5kb2N1bWVudFNjb3BlKCkpOwogICAgIHdoaWxlICh0cmVlU2NvcGUgIT0gdGhpcyAmJiB0cmVl
U2NvcGUgIT0gJmRvY3VtZW50KSB7Ci0gICAgICAgIGVsZW1lbnQgPSBkb3duY2FzdDxTaGFkb3dS
b290Pih0cmVlU2NvcGUtPnJvb3ROb2RlKCkpLmhvc3QoKTsKKyAgICAgICAgYXV0byYgcm9vdE5v
ZGUgPSB0cmVlU2NvcGUtPnJvb3ROb2RlKCk7CisgICAgICAgIGlmIChpczxTaGFkb3dSb290Pihy
b290Tm9kZSkpCisgICAgICAgICAgICBlbGVtZW50ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4ocm9v
dE5vZGUpLmhvc3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIHRyZWVTY29wZSA9ICZlbGVtZW50LT50cmVlU2NvcGUoKTsKICAgICB9CiAgICAg
aWYgKHRoaXMgIT0gdHJlZVNjb3BlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxMzY5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTYt
MDUtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ3Jhc2gg
aW4gVHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGFjY2Vzc2lu
ZyBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgYWZ0ZXIgcmUtZm9jdXNpbmcgYW4gZWxlbWVudAor
ICAgICAgICBpbnNpZGUgRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQgZXZlbnQgYW5kIHVubG9h
ZCBldmVudHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlc3RvcmVzIHRoZSBleHBlY3Rl
ZCByZXN1bHQgb2YgZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS5odG1sIHRvIHRoYXQgb2Ygd2hl
bgorICAgICAgICB0aGUgdGVzdCB3YXMgaW4gcjE1NzIwIGFuZCB1cGRhdGVkIGluIHIxOTAxNC4g
VGhlIGV4cGVjdGVkIHJlc3VsdCB3YXMgY2hhbmdlZCBpbiByODU0OTUgYXMgaXQgd2FzCisgICAg
ICAgIGNvbnZlcnRlZCB0byBhIGV2ZW50U2VuZGVyIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9SYW5nZS9yYW5nZS1jcmVhdGVkLWR1cmluZy1yZW1vdmUtY2hpbGRyZW4tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZG9tL1JhbmdlL3JhbmdlLWNyZWF0ZWQtZHVyaW5nLXJlbW92ZS1j
aGlsZHJlbi5odG1sOiBVcGRhdGUgdGhlIHRlc3QgdG8gdXNlIHVubG9hZCBldmVudAorICAgICAg
ICBvZiBhbiBpZnJhbWUgc2luY2Ugd2Ugbm8gbG9uZ2VyIGZpcmUgYmx1ciBldmVudCB3aGVuIHJl
bW92aW5nIGEgZm9jdXNlZCBlbGVtZW50LgorICAgICAgICAqIGZhc3QvZG9tL2Fkb3B0LW5vZGUt
cHJldmVudGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9hZG9wdC1ub2RlLXBy
ZXZlbnRlZC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2RvbS9yZW1vdmUtYm9keS1kdXJp
bmctYm9keS1yZXBsYWNlbWVudDIuaHRtbDogRGl0dG8uIFVzZSBET01Ob2RlUmVtb3ZlZCBpbnN0
ZWFkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL25lc3RlZC1ldmVudC1yZW1vdmUtbm9kZS1jcmFz
aC5odG1sOiBEaXR0by4gVXNlIERPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50IGluc3RlYWQuCisg
ICAgICAgICogZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS5odG1sOiBTZWUgYWJvdmUuCisgICAgICAgICog
ZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1yb290LWFjdGl2ZS1lbGVtZW50LWNyYXNoLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1yb290LWFjdGl2
ZS1lbGVtZW50LWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA1LTI0ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbnQgTG9hZGluZ10gQ3Jh
c2ggZHVyaW5nIGZvbnQgZG93bmxvYWQgZmFpbHVyZSBhZnRlciBnYXJiYWdlIGNvbGxlY3Rpb24K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Fkb3B0LW5vZGUtcHJldmVudGVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZG9wdC1ub2RlLXByZXZl
bnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwMTM2OSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2Fkb3B0LW5vZGUtcHJldmVudGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OCwzICs4LDQgQEAgUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogVEVTVCBDT01QTEVU
RQogUEFTUyB0YXJnZXQub3duZXJEb2N1bWVudC5sb2NhdGlvbiBpcyBkb2N1bWVudC5sb2NhdGlv
bgogCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2Fkb3B0LW5vZGUtcHJldmVudGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRvcHQtbm9kZS1wcmV2ZW50
ZWQuaHRtbAkocmV2aXNpb24gMjAxMzY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRvcHQt
bm9kZS1wcmV2ZW50ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxNCArNSwxNCBAQAogPC9o
ZWFkPgogPGJvZHk+CiAgIDxkaXYgaWQ9Im5ld1BhcmVudCI+PC9kaXY+Ci0gIDxhIGhyZWY9IiMi
IGlkPSJ0YXJnZXQiPjwvYT4KKyAgPGlmcmFtZSBocmVmPSIjIiBpZD0idGFyZ2V0Ij48L2lmcmFt
ZT4KIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGFkb3B0Tm9kZSBmYWlscyBzYWZl
bHkgaWYgcHJldmVudGVkIGJ5IGEgRE9NIG11dGF0aW9uLiIpOwogCiBmdW5jdGlvbiBydW4oKSB7
CiAgICAgbmV3UGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld1BhcmVudCIpOwog
ICAgIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKLSAgICB0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIGZ1bmN0aW9uICgpIHsgbmV3UGFyZW50LmFwcGVu
ZENoaWxkKHRhcmdldCk7IH0sIGZhbHNlKTsKKyAgICB0YXJnZXQuY29udGVudFdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJ1bmxvYWQiLCBmdW5jdGlvbiAoKSB7IG5ld1BhcmVudC5hcHBlbmRDaGls
ZCh0YXJnZXQpOyB9LCBmYWxzZSk7CiAgICAgdGFyZ2V0LmZvY3VzKCk7CiAgICAgdmFyIGFub3Ro
ZXJEb2N1bWVudCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCIiLCAi
IiwgbnVsbCk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZS1ib2R5LWR1cmlu
Zy1ib2R5LXJlcGxhY2VtZW50Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3JlbW92ZS1ib2R5LWR1cmluZy1ib2R5LXJlcGxhY2VtZW50Mi5odG1sCShyZXZpc2lvbiAy
MDEzNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZW1vdmUtYm9keS1kdXJpbmctYm9keS1y
ZXBsYWNlbWVudDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsNyBAQCBlbHNlIHsK
ICAgICB9CiAKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcignRE9NRm9jdXNPdXQnLCBmdW5jdGlvbiAoKSB7IGNyYXNoKCk7IH0s
IHRydWUpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3Zl
ZCcsIGZ1bmN0aW9uICgpIHsgY3Jhc2goKTsgfSwgdHJ1ZSk7CiAgICAgICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIGZ1bmN0aW9uICgpIHsgLyogbm9v
cCAqLyB9LCBmYWxzZSk7CiAgICAgICAgIGRvY3VtZW50LmRlc2lnbk1vZGUgPSAib24iOwogICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1jcmVhdGVkLWR1cmluZy1yZW1vdmUtY2hpbGRyZW4tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3Jhbmdl
LWNyZWF0ZWQtZHVyaW5nLXJlbW92ZS1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIw
MTM2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWNyZWF0ZWQtZHVyaW5n
LXJlbW92ZS1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACi1QQVNTIHJhbmdlc1siYmx1ciJdLnN0YXJ0Q29udGFpbmVyIGlzIHNhbXBsZQotUEFTUyBy
YW5nZXNbImJsdXIiXS5lbmRDb250YWluZXIgaXMgc2FtcGxlCi1QQVNTIHJhbmdlc1siYmx1ciJd
LnN0YXJ0T2Zmc2V0IGlzIDAKLVBBU1MgcmFuZ2VzWyJibHVyIl0uZW5kT2Zmc2V0IGlzIDAKK1BB
U1MgcmFuZ2VzWyJ1bmxvYWQiXS5zdGFydENvbnRhaW5lciBpcyBzYW1wbGUKK1BBU1MgcmFuZ2Vz
WyJ1bmxvYWQiXS5lbmRDb250YWluZXIgaXMgc2FtcGxlCitQQVNTIHJhbmdlc1sidW5sb2FkIl0u
c3RhcnRPZmZzZXQgaXMgMAorUEFTUyByYW5nZXNbInVubG9hZCJdLmVuZE9mZnNldCBpcyAwCiBQ
QVNTIHJhbmdlc1siRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQiXS5zdGFydENvbnRhaW5lciBp
cyBzYW1wbGUKIFBBU1MgcmFuZ2VzWyJET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudCJdLmVuZENv
bnRhaW5lciBpcyBzYW1wbGUKIFBBU1MgcmFuZ2VzWyJET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dCJdLnN0YXJ0T2Zmc2V0IGlzIDAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3Jh
bmdlLWNyZWF0ZWQtZHVyaW5nLXJlbW92ZS1jaGlsZHJlbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLWNyZWF0ZWQtZHVyaW5nLXJlbW92ZS1jaGls
ZHJlbi5odG1sCShyZXZpc2lvbiAyMDEzNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5n
ZS9yYW5nZS1jcmVhdGVkLWR1cmluZy1yZW1vdmUtY2hpbGRyZW4uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiA8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9InNhbXBsZSI+PHNwYW4gY29udGVudGVkaXRhYmxlPSJ0cnVlIj5m
b29iYXI8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJzYW1wbGUiPjxzcGFuIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSI+Zm9vYmFyPGlmcmFtZSBpZD0idGFyZ2V0Ij48L2lmcmFtZT48L3NwYW4+PC9kaXY+
CiA8L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CkBAIC0xNiwxNiArMTYsMTYgQEAg
ZnVuY3Rpb24gZXZlbnRIYW5kbGVyKGV2ZW50KSB7CiAgICAgcmFuZ2VzW2V2ZW50LnR5cGVdLnNl
bGVjdE5vZGVDb250ZW50cyhzYW1wbGUuZmlyc3RDaGlsZC5maXJzdENoaWxkKTsKIH0KIAotZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7Citkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKS5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ3VubG9hZCcsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7CiBkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCdET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudCcsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7CiAK
IHNhbXBsZS5maXJzdENoaWxkLmZvY3VzKCk7CiBzYW1wbGUuaW5uZXJIVE1MID0gJyc7CiAKLXNo
b3VsZEJlKCdyYW5nZXNbImJsdXIiXS5zdGFydENvbnRhaW5lcicsICdzYW1wbGUnKTsKLXNob3Vs
ZEJlKCdyYW5nZXNbImJsdXIiXS5lbmRDb250YWluZXInLCAnc2FtcGxlJyk7Ci1zaG91bGRCZSgn
cmFuZ2VzWyJibHVyIl0uc3RhcnRPZmZzZXQnLCAnMCcpOwotc2hvdWxkQmUoJ3Jhbmdlc1siYmx1
ciJdLmVuZE9mZnNldCcsICcwJyk7CitzaG91bGRCZSgncmFuZ2VzWyJ1bmxvYWQiXS5zdGFydENv
bnRhaW5lcicsICdzYW1wbGUnKTsKK3Nob3VsZEJlKCdyYW5nZXNbInVubG9hZCJdLmVuZENvbnRh
aW5lcicsICdzYW1wbGUnKTsKK3Nob3VsZEJlKCdyYW5nZXNbInVubG9hZCJdLnN0YXJ0T2Zmc2V0
JywgJzAnKTsKK3Nob3VsZEJlKCdyYW5nZXNbInVubG9hZCJdLmVuZE9mZnNldCcsICcwJyk7CiBz
aG91bGRCZSgncmFuZ2VzWyJET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudCJdLnN0YXJ0Q29udGFp
bmVyJywgJ3NhbXBsZScpOwogc2hvdWxkQmUoJ3Jhbmdlc1siRE9NTm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnQiXS5lbmRDb250YWluZXInLCAnc2FtcGxlJyk7CiBzaG91bGRCZSgncmFuZ2VzWyJET01O
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudCJdLnN0YXJ0T2Zmc2V0JywgJzAnKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL25lc3RlZC1ldmVudC1yZW1vdmUtbm9kZS1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL25lc3RlZC1ldmVudC1yZW1vdmUt
bm9kZS1jcmFzaC5odG1sCShyZXZpc2lvbiAyMDEzNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9uZXN0ZWQtZXZlbnQtcmVtb3ZlLW5vZGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAzLiB0aGUgZm9jdXNlZCBub2Rl
J3Mgb25ibHVyIHdpbGwgZmlyZQogICAgIDQuIHRoZSBvbmJsdXIgZXZlbnQgaGFuZGxlciB3aWxs
IHNlbmQgb2ZmIGFuIFhIUiB3aG8ncyBoYW5kbGVyIHdpbGwgcmVtb3ZlIHRoZSBub2RlCiAqLwot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVTZWxlY3QiKS5mb2N1cygpOworICAgIHZh
ciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGhlU2VsZWN0Iik7CisgICAgc2Vs
ZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50JywgZnVuY3Rp
b24gKCkgeyBzZW5kWEhSKCk7R0MoKTsgfSk7CisgICAgc2VsZWN0LmZvY3VzKCk7CiAgICAgc2Vu
ZFhIUigpOwogICAgIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDIwMTM2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uYmx1ci1yZW1vdmUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDkgQEAKLVRoaXMgdGVzdHMg
dGhhdCBlbGVtZW50cyBzaG91bGRuJ3QgZW1pdCBhbnkgb25ibHVyIGV2ZW50cyB3aGVuIHRoZXkg
YXJlIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQuIAotTm90ZSwgdGhpcyB0ZXN0IGlz
IGV4cGVjdGVkIHRvIGZhaWwgYXMgb2YgMDQvMjUvMjAxMS4gU2VlIGJ1ZyAjNTkzNzkuCitUaGlz
IHRlc3RzIHRoYXQgZWxlbWVudHMgc2hvdWxkbid0IGVtaXQgYW55IG9uYmx1ciBldmVudHMgd2hl
biB0aGV5IGFyZSBiZWluZyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50LgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIAotRkFJTCBPbmJsdXIgaGFuZGxlciBjYWxsZWQuCitQQVNTIGJs
dXJFdmVudENvdW50IGlzIDAKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9vbmJsdXItcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvb25ibHVyLXJlbW92ZS5odG1sCShyZXZpc2lvbiAyMDEzNjkpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9vbmJsdXItcmVtb3ZlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTUsNyArNSw3IEBACiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCi0gICAgICAgIHZhciBudW1CbHVycyA9IDA7
CisgICAgICAgIHZhciBibHVyRXZlbnRDb3VudCA9IDA7CiAKICAgICAgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQiKS5mb2N1cygp
OyB9CiAKQEAgLTE0LDEwICsxNCw3IEBACiAKICAgICAgICAgICAgIGYuaW5uZXJIVE1MID0gJyc7
CiAKLSAgICAgICAgICAgIGlmIChudW1CbHVycykKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCdPbmJsdXIgaGFuZGxlciBjYWxsZWQuJyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgnT25ibHVyIGhhbmRsZXIgbm90IGNhbGxlZC4nKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJibHVyRXZlbnRDb3VudCIsICIwIik7CiAKICAgICAgICAgICAgIGRlYnVn
KCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKICAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKQEAgLTI4LDEyICsyNSwxMSBAQAogPGJvZHk+
CiAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiAgICAgPGZvcm0gaWQ9J2YnPgotICAgICAg
PGlucHV0IGlkPSJpbnB1dCIgb25ibHVyPSJudW1CbHVycysrIiBvbmZvY3VzPSJzZXRUaW1lb3V0
KCdmaW5pc2goKScsIDApIj4KKyAgICAgIDxpbnB1dCBpZD0iaW5wdXQiIG9uYmx1cj0iYmx1ckV2
ZW50Q291bnQrKyIgb25mb2N1cz0ic2V0VGltZW91dCgnZmluaXNoKCknLCAwKSI+CiAgICAgPC9m
b3JtPgogICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogICAgIDxzY3JpcHQ+Ci0gICAgICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgZWxlbWVudHMgc2hvdWxkbid0IGVtaXQgYW55
IG9uYmx1ciBldmVudHMgd2hlbiB0aGV5IGFyZSBiZWluZyByZW1vdmVkIGZyb20gdGhlIGRvY3Vt
ZW50LiA8YnI+IiArCi0gICAgICAgICAgICAgICAgICAgICJOb3RlLCB0aGlzIHRlc3QgaXMgZXhw
ZWN0ZWQgdG8gZmFpbCBhcyBvZiAwNC8yNS8yMDExLiBTZWUgYnVnICM1OTM3OS4iKTsKKyAgICAg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBlbGVtZW50cyBzaG91bGRuJ3QgZW1pdCBh
bnkgb25ibHVyIGV2ZW50cyB3aGVuIHRoZXkgYXJlIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgZG9j
dW1lbnQuIik7CiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zaGFkb3ctcm9vdC1hY3RpdmUtZWxlbWVudC1jcmFzaC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3No
YWRvdy1yb290LWFjdGl2ZS1lbGVtZW50LWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zaGFkb3ctcm9vdC1hY3RpdmUtZWxlbWVu
dC1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3RzIHJlbW92aW5nIGEgZm9jdXNlZCBlbGVtZW50IGZyb20gYSBkb2N1bWVudCBhbmQgY2Fs
bGluZyBhY3RpdmVFbGVtZW50IG9uIGEgc2hhZG93IHRyZWUgaW4gdGhlIHNhbWUgZG9jdW1lbnQu
CitXZWJLaXQgc2hvdWxkIGNsZWFyIHRoZSBmb2N1c2VkIGVsZW1lbnQgZXZlbiBpZiB0aGUgcmVt
b3ZlZCBlbGVtZW50IHdhcyBmb2N1c2VkIGR1cmluZyByZW1vdmFsIGFuZCBzaG91bGQgbm90IGNy
YXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uCisKK1BBU1MgLSBkaWQgbm90IGNyYXNoCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2hhZG93LXJvb3QtYWN0aXZlLWVsZW1lbnQtY3Jh
c2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2hhZG93
LXJvb3QtYWN0aXZlLWVsZW1lbnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9zaGFkb3ctcm9vdC1hY3RpdmUtZWxlbWVudC1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgcmVtb3ZpbmcgYSBmb2N1c2VkIGVsZW1lbnQgZnJvbSBh
IGRvY3VtZW50IGFuZCBjYWxsaW5nIGFjdGl2ZUVsZW1lbnQgb24gYSBzaGFkb3cgdHJlZSBpbiB0
aGUgc2FtZSBkb2N1bWVudC48YnI+CitXZWJLaXQgc2hvdWxkIGNsZWFyIHRoZSBmb2N1c2VkIGVs
ZW1lbnQgZXZlbiBpZiB0aGUgcmVtb3ZlZCBlbGVtZW50IHdhcyBmb2N1c2VkIGR1cmluZyByZW1v
dmFsIGFuZCBzaG91bGQgbm90IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uPC9wPgorPHNjcmlw
dD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCit2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisKK3ZhciBkb2MgPSBpZnJhbWUuY29udGVu
dERvY3VtZW50OwordmFyIGhvc3QgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cit2YXIgc2hh
ZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworZG9jLmJvZHku
YXBwZW5kQ2hpbGQoaG9zdCk7CisKK3ZhciBpbnB1dCA9IGRvYy5jcmVhdGVFbGVtZW50KCdpbnB1
dCcpOworZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOworaW5wdXQuZm9jdXMoKTsKKworaW5w
dXQuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQnLCBmdW5jdGlv
biAoKSB7CisgICAgaW5wdXQuZm9jdXMoKTsKK30pOworCisvLyAxLiBDb250YWluZXJOb2RlOjpy
ZW1vdmVDaGlsZAorZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CitzaGFkb3dSb290
LmFjdGl2ZUVsZW1lbnQ7CisKKy8vIDIuIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuCitk
b2MuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CitpbnB1dC5mb2N1cygpOworZG9jLmJvZHkuaW5u
ZXJIVE1MID0gJyc7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0KTsKK3NoYWRvd1Jv
b3QuYWN0aXZlRWxlbWVudDsKKworCisvLyAzLiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCBm
b3IgZGlzY29ubmVjdGluZyBmcmFtZXMKK3ZhciBmb2N1c2FibGVJZnJhbWUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKK2RvYy5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOworZG9j
LmJvZHkuYXBwZW5kQ2hpbGQoZm9jdXNhYmxlSWZyYW1lKTsKK2ZvY3VzYWJsZUlmcmFtZS5mb2N1
cygpOworZm9jdXNhYmxlSWZyYW1lLmNvbnRlbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5s
b2FkJywgZnVuY3Rpb24gKCkgeworICAgIGZvY3VzYWJsZUlmcmFtZS5mb2N1cygpOworfSk7Citk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvY3VzYWJsZUlmcmFtZSk7CitzaGFkb3dSb290LmFj
dGl2ZUVsZW1lbnQ7CisKKy8vIDQuIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuIGZvciBk
aXNjb25uZWN0aW5nIGZyYW1lcworZm9jdXNhYmxlSWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaWZyYW1lJyk7Citkb2MuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKK2RvYy5ib2R5LmFw
cGVuZENoaWxkKGZvY3VzYWJsZUlmcmFtZSk7Citmb2N1c2FibGVJZnJhbWUuZm9jdXMoKTsKK2Zv
Y3VzYWJsZUlmcmFtZS5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VubG9hZCcsIGZ1
bmN0aW9uICgpIHsKKyAgICBmb2N1c2FibGVJZnJhbWUuZm9jdXMoKTsKK30pOworZG9jLmJvZHku
aW5uZXJIVE1MID0gJyc7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvY3VzYWJsZUlmcmFt
ZSk7CitzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7CisKK2RvY3VtZW50LndyaXRlKCdQQVNTIC0g
ZGlkIG5vdCBjcmFzaCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="303949"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>