<?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>152775</bug_id>
          
          <creation_ts>2016-01-05 22:14:02 -0800</creation_ts>
          <short_desc>Modern IDB: storage/indexeddb/transaction-scope-sequencing.html fails</short_desc>
          <delta_ts>2016-01-06 11:25:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1152990</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-05 22:14:02 -0800</bug_when>
    <thetext>Modern IDB: storage/indexeddb/transaction-scope-sequencing.html fails

The test is sound, and Modern IDB&apos;s transaction scheduler is non-complaint.

tx1 blocks tx2, and tx2 blocks tx3.

Our scheduler starts tx1, then sees that tx2 is blocked so it passes over it. It then sees that tx3 is *not* blocked by in-progress tx1, so it starts tx3.

But the spec actually says any previous transaction that overlaps with your scope must run to completion before you get to run.

So because tx3 is blocked by tx2, it can&apos;t run until tx2 finishes. Which means tx3 is implicitly blocked by tx1.

The fix will be easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153088</commentid>
    <comment_count>1</comment_count>
      <attachid>268375</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-06 10:41:29 -0800</bug_when>
    <thetext>Created attachment 268375
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153091</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-06 10:43:51 -0800</bug_when>
    <thetext>Attachment 268375 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1140:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153096</commentid>
    <comment_count>3</comment_count>
      <attachid>268376</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-06 10:52:19 -0800</bug_when>
    <thetext>Created attachment 268376
Patch v2 - Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153107</commentid>
    <comment_count>4</comment_count>
      <attachid>268376</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-06 11:21:13 -0800</bug_when>
    <thetext>Comment on attachment 268376
Patch v2 - Fix style

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

&gt; LayoutTests/storage/indexeddb/modern/resources/transaction-scheduler-4.js:34
&gt; +

This is a lot of space.

&gt; LayoutTests/storage/indexeddb/modern/transaction-scheduler-4.html:-7
&gt; -That last read-only transaction *should* start while the read-write transaction is still blocked,&lt;br&gt;

Yep, this was invalid because this transaction reads something that could have been written to by a previous read-write transaction.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1141
&gt; +            hasOverlappingScopes = hasOverlappingScopes || scopesOverlap(m_objectStoreWriteTransactions, currentTransaction-&gt;objectStoreIdentifiers());

||=

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1150
&gt; +            hasOverlappingScopes = hasOverlappingScopes || scopesOverlap(deferredReadWriteScopes, currentTransaction-&gt;objectStoreIdentifiers());

||=

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h:206
&gt; +    // The key into these sets are the object store ID.

key -&gt; keys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153109</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-06 11:25:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/194649</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268375</attachid>
            <date>2016-01-06 10:41:29 -0800</date>
            <delta_ts>2016-01-06 10:52:19 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22905</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkM2NkMjc1Li4xYmQwMjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDEt
MDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCBm
YWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
YWRkaXRpb24gdG8gZW5hYmxpbmcgdGhlIHByZXZpb3VzbHkgc2tpcHBlZCB0ZXN0LCB0aGlzIGFs
c28gY29tcGxldGVseSByZXdyaXRlcyB0cmFuc2FjdGlvbi1zY2hlZHVsZXItNCwgCisgICAgICAg
IHdoaWNoIGNvdmVyZWQgaW5jb3JyZWN0IGJlaGF2aW9yLCB0byBjb3ZlciBuZXdseSBpbXBsZW1l
bnRlZCBjb3JyZWN0IGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQuanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00
Lmh0bWw6CisKIDIwMTYtMDEtMDYgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBEYXRlLnByb3RvdHlwZSBzaG91bGQgYmUgYSBwbGFp
biBvYmplY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA1OWQ5MDc4Li5lNDQ5YWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04Nyw3ICs4Nyw2IEBAIHN0b3JhZ2UvaW5kZXhlZGRi
L29kZC1zdHJpbmdzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZGIt
cHJpdmF0ZS1icm93c2luZy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9wcm9w
ZXJ0aWVzLWRpc2FibGVkLWF0LXJ1bnRpbWUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvc2V0dmVyc2lvbi1ibG9ja2VkLWJ5LXZlcnNpb25jaGFuZ2UtY2xvc2UuaHRtbCBbIEZh
aWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5o
dG1sIFsgRmFpbHVyZSBdCiAKICMgUmVsaWVzIG9uIGludGVybmFscy5vYnNlcnZlR0MKIHN0b3Jh
Z2UvaW5kZXhlZGRiL2Nvbm5lY3Rpb24tbGVhay5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXNjaGVkdWxlci00LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44N2VmMDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5q
cwpAQCAtMCwwICsxLDU3IEBACitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0aGF0IGEgcmVhZC1v
bmx5IHRyYW5zYWN0aW9uIHNjaGVkdWxlZCBhZnRlciBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24g
d2l0aCBvdmVybGFwcGluZyBzY29wZSBkb2VzIG5vdCBzdGFydCB1bnRpbCB0aGUgcmVhZC13cml0
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZXMiKTsKKworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJh
c2UsIHZlcnNpb25DaGFuZ2VTdWNjZXNzQ2FsbGJhY2spOworCitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQoreworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKK30KKworZnVuY3Rpb24gdmVyc2lvbkNoYW5nZVN1Y2Nl
c3NDYWxsYmFjaygpCit7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gY29ubmVjdGlv
bi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJyk7Iik7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24yID0gY29ubmVjdGlvbi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHkn
KTsiKTsKKyAgICBldmFsQW5kTG9nKCJnZXRSZXF1ZXN0ID0gdHJhbnNhY3Rpb24yLm9iamVjdFN0
b3JlKCdzdG9yZScpLmdldCgnZm9vJyk7Iik7CisKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYSBzZXJp
ZXMgb2YgMjAgcHV0cyBpbiB0aGUgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIG1ha2Ugc3VyZSB0
aGUgcmVhZG9ubHkgdHJhbnNhY3Rpb24gaXMgZGVmZXJyZWQgZm9yIHNvbWUgdGltZSIpOworICAg
IGV2YWxBbmRMb2coInB1dENvdW50ID0gMDsiKTsKKyAgICBldmFsQW5kTG9nKCJyZWFkV3JpdGVU
cmFuc2FjdGlvbkRvbmUgPSBmYWxzZTsiKTsKKyAgICBldmFsQW5kTG9nKCJnZXRSZXF1ZXN0RG9u
ZSA9IGZhbHNlOyIpOworICAgIHZhciBwdXRTdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGlmICgrK3B1dENvdW50ID09IDIwKSB7CisgICAgICAgICAgICBkZWJ1ZygiMjB0aCBwdXQgY29t
cGxldGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdmFyIG5ld1JlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KCdiYXInLCAnZm9vJyk7CisgICAgICAgIG5ld1JlcXVlc3Qub25zdWNjZXNzID0gcHV0U3VjY2Vz
czsKKyAgICB9OworCisgICAgdmFyIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUo
J3N0b3JlJykucHV0KCdiYXInLCAnZm9vJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRT
dWNjZXNzOworCisKKworICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGRlYnVnKCJUcmFuc2FjdGlvbiAxIChyZWFkd3JpdGUpIGNvbXBsZXRlZCB3aXRo
ICIgKyBwdXRDb3VudCArICIgcHV0cyBjb21wbGV0ZWQuIik7CisgICAgICAgIHNob3VsZEJlRmFs
c2UoImdldFJlcXVlc3REb25lIik7CisgICAgICAgIHNob3VsZEJlKCJwdXRDb3VudCIsICIyMCIp
OworICAgICAgICByZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUgPSB0cnVlOworICAgIH0KKworICAg
IGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJHZXR0
aW5nIHRoZSB2YWx1ZSBvZiAnZm9vJyBjb21wbGV0ZWQgLSBUaGlzIG1lYW5zIHRoZSByZWFkb25s
eSB0cmFuc2FjdGlvbiBzdGFydGVkLiBBdCB0aGlzIHBvaW50ICIgKyBwdXRDb3VudCArICIgcHV0
cyBjb21wbGV0ZWQgaW4gdGhlIHJlYWR3cml0ZSB0cmFuc2FjdGlvbi4iKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJyZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUiKTsKKyAgICAgICAgc2hvdWxkQmUo
InB1dENvdW50IiwgIjIwIik7CisgICAgICAgIGdldFJlcXVlc3REb25lID0gdHJ1ZTsKKyAgICB9
CisKKyAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBk
ZWJ1ZygiVHJhbnNhY3Rpb24gMSAocmVhZG9ubHkpIGNvbXBsZXRlZCIpOworICAgICAgICBzaG91
bGRCZVRydWUoInJlYWRXcml0ZVRyYW5zYWN0aW9uRG9uZSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImdldFJlcXVlc3REb25lIik7CisgICAgICAgIHNob3VsZEJlKCJwdXRDb3VudCIsICIyMCIp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0
aW9uLXNjaGVkdWxlci00LWV4cGVjdGVkLnR4dAppbmRleCBmOTE2ZmQ0Li41NWQxZjg3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24t
c2NoZWR1bGVyLTQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1leHBlY3RlZC50eHQKQEAgLTEsMjAg
KzEsMzQgQEAKLUFMRVJUOiBVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQotQUxFUlQ6IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVkCi1BTEVS
VDogU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkb25s
eSB0cmFuc2FjdGlvbgotQUxFUlQ6IE90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24g
Z2V0IHN1Y2Nlc3MgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IE90aGVyIG9iamVjdHN0b3JlIHJl
YWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFJlYWQgdHJh
bnNhY3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFdyaXRlIHRyYW5zYWN0
aW9uIGZpcnN0IHB1dCBzdWNjZXNzCi1BTEVSVDogU2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlv
biBnZXQgc3VjY2VzcyAtIFtvYmplY3QgRXZlbnRdCi1BTEVSVDogV3JpdGUgdHJhbnNhY3Rpb24g
Y29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFNlY29uZCByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdCBv
cGVucyBhIGxvbmcgcnVubmluZyByZWFkLW9ubHkgdHJhbnNhY3Rpb24gdG8gYW4gb2JqZWN0IHN0
b3JlLCBhbmQgdGhlbiBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gdG8gdGhlIHNhbWUgb2JqZWN0
IHN0b3JlLgotVGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIGJsb2NrZWQgd2hp
bGUgdGhlIGxvbmcgcnVubmluZyByZWFkLW9ubHkgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3Mu
Ci1JdCBhbHNvIHF1ZXVlcyB1cCBhIHNlY29uZCByZWFkLW9ubHkgdHJhbnNhY3Rpb24gdG8gdGhh
dCBzYW1lIG9iamVjdCBzdG9yZSBiZWhpbmQgdGhlIGJsb2NrZWQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbi4KLUV2ZW4gdGhvdWdoIHRoYXQgc2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiBjb3Vs
ZCBzdGFydCB3aGlsZSB0aGUgZmlyc3QgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSByZWFkLXdyaXRl
IHRyYW5zYWN0aW9uIGlzIGJsb2NrZWQsCi1pdCBzaG91bGQgKm5vdCogc3RhcnQgYmVjYXVzZSBk
b2luZyBzbyB3b3VsZCByaXNrIGNvbnRpbnVpbmcgdG8gYmxvY2sgdGhlIHJlYWQtd3JpdGUgdHJh
bnNhY3Rpb24uCi1JdCBhbHNvIHF1ZXVlcyB1cCBhIHJlYWQtb25seSB0byBhIGRpZmZlcmVudCBv
YmplY3Qgc3RvcmUgYmVoaW5kIHRob3NlIGZpcnN0IHRocmVlIHRyYW5zYWN0aW9ucy4KLVRoYXQg
bGFzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb24gKnNob3VsZCogc3RhcnQgd2hpbGUgdGhlIHJlYWQt
d3JpdGUgdHJhbnNhY3Rpb24gaXMgc3RpbGwgYmxvY2tlZCwKLWFzIGRvaW5nIHNvIHdvbid0IHJp
c2sgYmxvY2tpbmcgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gZnVydGhlci4KK01ha2VzIHN1
cmUgdGhhdCBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiBzY2hlZHVsZWQgYWZ0ZXIgYSByZWFkLXdy
aXRlIHRyYW5zYWN0aW9uIHdpdGggb3ZlcmxhcHBpbmcgc2NvcGUgZG9lcyBub3Qgc3RhcnQgdW50
aWwgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGVzCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtp
dEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNl
bGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwi
CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1l
KQorY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitvYmplY3RTdG9yZSA9IGNvbm5l
Y3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyk7Cit0cmFuc2FjdGlvbjEgPSBjb25uZWN0
aW9uLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKTsKK3RyYW5zYWN0aW9uMiA9IGNv
bm5lY3Rpb24udHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5Jyk7CitnZXRSZXF1ZXN0ID0g
dHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLmdldCgnZm9vJyk7CitTdGFydGluZyBh
IHNlcmllcyBvZiAyMCBwdXRzIGluIHRoZSByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBz
dXJlIHRoZSByZWFkb25seSB0cmFuc2FjdGlvbiBpcyBkZWZlcnJlZCBmb3Igc29tZSB0aW1lCitw
dXRDb3VudCA9IDA7CityZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUgPSBmYWxzZTsKK2dldFJlcXVl
c3REb25lID0gZmFsc2U7CisyMHRoIHB1dCBjb21wbGV0ZQorVHJhbnNhY3Rpb24gMSAocmVhZHdy
aXRlKSBjb21wbGV0ZWQgd2l0aCAyMCBwdXRzIGNvbXBsZXRlZC4KK1BBU1MgZ2V0UmVxdWVzdERv
bmUgaXMgZmFsc2UKK1BBU1MgcHV0Q291bnQgaXMgMjAKK0dldHRpbmcgdGhlIHZhbHVlIG9mICdm
b28nIGNvbXBsZXRlZCAtIFRoaXMgbWVhbnMgdGhlIHJlYWRvbmx5IHRyYW5zYWN0aW9uIHN0YXJ0
ZWQuIEF0IHRoaXMgcG9pbnQgMjAgcHV0cyBjb21wbGV0ZWQgaW4gdGhlIHJlYWR3cml0ZSB0cmFu
c2FjdGlvbi4KK1BBU1MgcmVhZFdyaXRlVHJhbnNhY3Rpb25Eb25lIGlzIHRydWUKK1BBU1MgcHV0
Q291bnQgaXMgMjAKK1RyYW5zYWN0aW9uIDEgKHJlYWRvbmx5KSBjb21wbGV0ZWQKK1BBU1MgcmVh
ZFdyaXRlVHJhbnNhY3Rpb25Eb25lIGlzIHRydWUKK1BBU1MgZ2V0UmVxdWVzdERvbmUgaXMgdHJ1
ZQorUEFTUyBwdXRDb3VudCBpcyAyMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKaW5kZXgg
M2M2NTllYi4uMGE2MzI1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKQEAg
LTEsMjMzICsxLDkgQEAKLVRoaXMgdGVzdCBvcGVucyBhIGxvbmcgcnVubmluZyByZWFkLW9ubHkg
dHJhbnNhY3Rpb24gdG8gYW4gb2JqZWN0IHN0b3JlLCBhbmQgdGhlbiBhIHJlYWQtd3JpdGUgdHJh
bnNhY3Rpb24gdG8gdGhlIHNhbWUgb2JqZWN0IHN0b3JlLjxicj4KLVRoZSByZWFkLXdyaXRlIHRy
YW5zYWN0aW9uIHNob3VsZCBiZSBibG9ja2VkIHdoaWxlIHRoZSBsb25nIHJ1bm5pbmcgcmVhZC1v
bmx5IHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzLjxicj4KLUl0IGFsc28gcXVldWVzIHVwIGEg
c2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB0byB0aGF0IHNhbWUgb2JqZWN0IHN0b3JlIGJl
aGluZCB0aGUgYmxvY2tlZCByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLjxicj4KLUV2ZW4gdGhvdWdo
IHRoYXQgc2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiBjb3VsZCBzdGFydCB3aGlsZSB0aGUg
Zmlyc3QgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGlzIGJs
b2NrZWQsPGJyPgotaXQgc2hvdWxkICpub3QqIHN0YXJ0IGJlY2F1c2UgZG9pbmcgc28gd291bGQg
cmlzayBjb250aW51aW5nIHRvIGJsb2NrIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLjxicj4K
LUl0IGFsc28gcXVldWVzIHVwIGEgcmVhZC1vbmx5IHRvIGEgZGlmZmVyZW50IG9iamVjdCBzdG9y
ZSBiZWhpbmQgdGhvc2UgZmlyc3QgdGhyZWUgdHJhbnNhY3Rpb25zLjxicj4KLVRoYXQgbGFzdCBy
ZWFkLW9ubHkgdHJhbnNhY3Rpb24gKnNob3VsZCogc3RhcnQgd2hpbGUgdGhlIHJlYWQtd3JpdGUg
dHJhbnNhY3Rpb24gaXMgc3RpbGwgYmxvY2tlZCw8YnI+Ci1hcyBkb2luZyBzbyB3b24ndCByaXNr
IGJsb2NraW5nIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGZ1cnRoZXIuPGJyPgotPHNjcmlw
dD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUo
KQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyNERhdGFiYXNlIik7Ci0K
LWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBh
bGVydCgiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24g
KyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNp
b25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiT1MiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LnB1dCgiYmFyIiwgImZvbyIpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoImZpcnN0IHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiT3RoZXJPUyIpOwotICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJh
ciIsICJmb28iKTsKLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgic2Vjb25kIHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0
KCk7Ci0gICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci0KLXZhciBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb247Ci1mdW5jdGlvbiBj
b250aW51ZVRlc3QoKQotewotICAgIHZhciBsb25nUnVubmluZ1JlYWRSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjREYXRhYmFzZSIsIDEpOwotICAg
IGxvbmdSdW5uaW5nUmVhZFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRp
bmcgcmVhZG9ubHkgdHJhbnNhY3Rpb24iKTsKLSAgICAgICAgc2Vjb25kRGF0YWJhc2VDb25uZWN0
aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgCi0gICAgICAgIHZhciB0cmFuc2Fj
dGlvbiA9IHNlY29uZERhdGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZG9u
bHkiKTsKLSAgICAgICAgCi0gICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gZXJyb3Ig
LSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVy
dCgiVW5leHBlY3RlZCB0cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7Ci0gICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJSZWFkIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIC0gIiArIGV2ZW50KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmlyc3RS
ZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCB0cnVlKTsKLSAgICB9Ci0gICAgbG9uZ1J1
bm5pbmdSZWFkUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkxvbmcgcnVubmluZyByZWFkIHJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgbG9uZ1J1bm5pbmdSZWFkUmVxdWVzdC5v
bmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiTG9uZyBydW5uaW5n
IHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotICAgIGxvbmdSdW5uaW5nUmVhZFJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkxvbmcgcnVubmluZyByZWFkIHJl
cXVlc3QgdW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0gCi19Ci0KLXZhciBzaG91bGRFbmRSZWFkVHJhbnNhY3Rpb24gPSBmYWxzZTsK
LQotZnVuY3Rpb24gZmlyc3RSZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBpc0ZpcnN0
VGltZSkKLXsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgi
T1MiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiZm9vIik7Ci0gICAgCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoc2hv
dWxkRW5kUmVhZFRyYW5zYWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ci0gICAgICAgIGZpcnN0UmVhZFRyYW5zYWN0aW9uTG9vcChldmVudC50YXJnZXQudHJhbnNhY3Rp
b24sIGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyB0aGF0IHRoZSByZWFkIHRyYW5z
YWN0aW9uIGlzIG9wZW4sIHRoZSBvdGhlciB0cmFuc2FjdGlvbnMgY2FuIGJlIHF1ZXVlZCB1cC4K
LSAgICAgICAgaWYgKGlzRmlyc3RUaW1lKQotICAgICAgICAgICAgIHN0YXJ0T3RoZXJUcmFuc2Fj
dGlvbnMoKQotICAgIH0KLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIHJlcXVlc3QgZXJyb3IgLSAiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi12YXIgc2hvdWxkRW5kUmVhZFRyYW5zYWN0aW9u
ID0gZmFsc2U7Ci12YXIgbG9nZ2VkV3JpdGVQdXRTdWNjZXNzT25jZSA9IGZhbHNlOwotZnVuY3Rp
b24gd3JpdGVUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rpb24pCi17Ci0gICAgdmFyIG9iamVjdFN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCFsb2dnZWRXcml0ZVB1dFN1Y2Nlc3NPbmNl
KSB7Ci0gICAgICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNhY3Rpb24gZmlyc3QgcHV0IHN1Y2Nl
c3MiKTsKLSAgICAgICAgICAgIGxvZ2dlZFdyaXRlUHV0U3VjY2Vzc09uY2UgPSB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChzaG91bGRFbmRSZWFkVHJhbnNhY3Rpb24pCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB3cml0ZVRyYW5zYWN0aW9uTG9vcCh0cmFuc2Fj
dGlvbik7Ci0gICAgfQotICAgIAotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiBwdXQgdW5leHBlY3RlZCBlcnJv
ciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHN0
YXJ0T3RoZXJUcmFuc2FjdGlvbnMoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IHNlY29uZERh
dGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZHdyaXRlIik7Ci0KLSAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIldy
aXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IC0g
IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNh
Y3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQpOwotICAgIH0KLSAgICAKLSAgICB3cml0ZVRyYW5z
YWN0aW9uTG9vcCh0cmFuc2FjdGlvbik7Ci0KLSAgICAvLyBUaGlzIHJlYWQtb25seSB0cmFuc2Fj
dGlvbiBzaG91bGQgYmUgYmxvY2tlZCBiZWhpbmQgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24g
YWJvdmUsIAotICAgIC8vIGFuZCBzaG91bGQgbm90IHN0YXJ0IHVudGlsIGl0IGZpbmlzaGVzLgot
ICAgIHRyYW5zYWN0aW9uID0gc2Vjb25kRGF0YWJhc2VDb25uZWN0aW9uLnRyYW5zYWN0aW9uKCJP
UyIsICJyZWFkb25seSIpOwotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vj
b25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IC0gIiArIGV2ZW50KTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQtb25seSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7Ci0g
ICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoImZvbyIpOwotCi0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQt
b25seSB0cmFuc2FjdGlvbiBnZXQgc3VjY2VzcyAtICIgKyBldmVudCk7Ci0gICAgfQotICAgIAot
ICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJT
ZWNvbmQgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIHB1dCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2
ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgcmVhZC1vbmx5IHRy
YW5zYWN0aW9uIGlzIHF1ZXVlZCBiZWhpbmQgdGhlIDMgcHJldmlvdXMgdHJhbnNhY3Rpb25zLCBi
dXQgc2hvdWxkIG5vdAotICAgIC8vIGJlIGJsb2NrZWQgYmVjYXVzZSBpdHMgc2NvcGUgZG9lc24n
dCBvdmVybGFwIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLgotICAgIHRyYW5zYWN0aW9uID0g
c2Vjb25kRGF0YWJhc2VDb25uZWN0aW9uLnRyYW5zYWN0aW9uKCJPdGhlck9TIiwgInJlYWRvbmx5
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBl
cnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIk90aGVyIG9i
amVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCAtICIgKyBldmVudCk7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQg
dHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQpOwotICAgICAgICBzaG91bGRFbmRSZWFk
VHJhbnNhY3Rpb24gPSB0cnVlOwotICAgIH0KLQotICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIk90aGVyT1MiKTsKLSAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0
KCJmb28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gZ2V0IHN1Y2Nl
c3MgLSAiICsgZXZlbnQpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiT3RoZXIgb2JqZWN0c3RvcmUgcmVhZCB0cmFu
c2FjdGlvbiBnZXQgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjN2UyY2YuLjUyODI5MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxNi0wMS0wNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc2NvcGUtc2VxdWVuY2luZy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKEF0IGxlYXN0IG9uZSBmYWlsaW5n
IHRlc3Qgbm93IHBhc3NlcywgcGx1cyBjaGFuZ2VzIHRvIGFub3RoZXIgZXhpc3RpbmcgdGVzdCku
CisgICAgICAgIAorICAgICAgICBBbnkgdHJhbnNhY3Rpb24gZW5xdWV1ZWQgYWZ0ZXIgYSByZWFk
LXdyaXRlIHRyYW5zYWN0aW9uIHdob3NlIHNjb3BlIG92ZXJsYXBzIHdpdGgKKyAgICAgICAgdGhh
dCByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGNhbm5vdCBydW4gdW50aWwgYWZ0ZXIgdGhhdCByZWFk
LXdyaXRlIHRyYW5zYWN0aW9uIHJ1bnMuCisgICAgICAgIAorICAgICAgICBBZGRpdGlvbmFsbHks
IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgd2VyZSBhY3R1YWxseSBzb21ldGltZXMgcnVubmluZyBl
dmVuIHRob3VnaCB0aGVpciBzY29wZXMKKyAgICAgICAgb3ZlcmxhcHBlZCB3aXRoIGEgcnVubmlu
ZyByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBm
aXhlcyBib3RoIG9mIHRob3NlIGlzc3Vlcy4KKyAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnRh
a2VOZXh0UnVubmFibGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCiAy
MDE2LTAxLTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgc2hv
d1JlbmRlclRyZWU6IGFkZCBpbmxpbmUtYmxvY2svaW5saW5lL2Jsb2NrIGNvbHVtbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDA3MjQ2NjEuLjc2MTU4MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcApAQCAtMTA2Nyw4ICsxMDY3LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Om9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXJGaXJlZCgpCiAKICAgICBpZiAodHJhbnNh
Y3Rpb24pIHsKICAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlv
bi0+aW5mbygpLmlkZW50aWZpZXIoKSwgdHJhbnNhY3Rpb24pOwotICAgICAgICBmb3IgKGF1dG8g
b2JqZWN0U3RvcmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKQorICAg
ICAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVu
dGlmaWVycygpKSB7CiAgICAgICAgICAgICBtX29iamVjdFN0b3JlVHJhbnNhY3Rpb25Db3VudHMu
YWRkKG9iamVjdFN0b3JlKTsKKyAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24tPmlzUmVhZE9u
bHkoKSkgeworICAgICAgICAgICAgICAgIG1fb2JqZWN0U3RvcmVXcml0ZVRyYW5zYWN0aW9ucy5h
ZGQob2JqZWN0U3RvcmUpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX29iamVjdFN0b3JlVHJh
bnNhY3Rpb25Db3VudHMuY291bnQob2JqZWN0U3RvcmUpID09IDEpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAKICAgICAgICAgYWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKCp0
cmFuc2FjdGlvbik7CiAKQEAgLTExMjUsMjYgKzExMzAsMzUgQEAgUmVmUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlVHJh
bnNhY3QKICAgICBEZXF1ZTxSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IGRl
ZmVycmVkVHJhbnNhY3Rpb25zOwogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uPiBjdXJyZW50VHJhbnNhY3Rpb247CiAKKyAgICBIYXNoU2V0PHVpbnQ2NF90PiBkZWZlcnJl
ZFJlYWRXcml0ZVNjb3BlczsKKwogICAgIHdoaWxlICghbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSkgewogICAgICAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBtX3BlbmRpbmdUcmFuc2Fj
dGlvbnMudGFrZUZpcnN0KCk7CiAKICAgICAgICAgc3dpdGNoIChjdXJyZW50VHJhbnNhY3Rpb24t
PmluZm8oKS5tb2RlKCkpIHsKICAgICAgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZE9ubHk6Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGRlZmVycmVkIHRy
YW5zYWN0aW9ucywgdGhlIGZpcnN0IG9uZSBpcyBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gd2Ug
bmVlZCB0byB1bmJsb2NrLgotICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCBza2lwIHRoaXMgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIGlmIGl0cyBzY29wZSBvdmVybGFwcyB3aXRoIHRoYXQgcmVhZC13
cml0ZSB0cmFuc2FjdGlvbi4KLSAgICAgICAgICAgIGlmICghZGVmZXJyZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRlZmVycmVkVHJhbnNhY3Rpb25z
LmZpcnN0KCktPmluZm8oKS5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJl
YWRXcml0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3Blc092ZXJsYXAoZGVmZXJyZWRUcmFu
c2FjdGlvbnMuZmlyc3QoKS0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpLCBjdXJyZW50VHJhbnNh
Y3Rpb24tPm9iamVjdFN0b3JlSWRlbnRpZmllcnMoKSkpCi0gICAgICAgICAgICAgICAgICAgIGRl
ZmVycmVkVHJhbnNhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGN1cnJlbnRUcmFuc2FjdGlvbikpOwot
ICAgICAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBib29sIGhhc092ZXJsYXBwaW5n
U2NvcGVzID0gc2NvcGVzT3ZlcmxhcChkZWZlcnJlZFJlYWRXcml0ZVNjb3BlcywgY3VycmVudFRy
YW5zYWN0aW9uLT5vYmplY3RTdG9yZUlkZW50aWZpZXJzKCkpOworICAgICAgICAgICAgaGFzT3Zl
cmxhcHBpbmdTY29wZXMgPSBoYXNPdmVybGFwcGluZ1Njb3BlcyB8fCBzY29wZXNPdmVybGFwKG1f
b2JqZWN0U3RvcmVXcml0ZVRyYW5zYWN0aW9ucywgY3VycmVudFRyYW5zYWN0aW9uLT5vYmplY3RT
dG9yZUlkZW50aWZpZXJzKCkpOworCisgICAgICAgICAgICBpZiAoaGFzT3ZlcmxhcHBpbmdTY29w
ZXMpCisgICAgICAgICAgICAgICAgZGVmZXJyZWRUcmFuc2FjdGlvbnMuYXBwZW5kKFdURk1vdmUo
Y3VycmVudFRyYW5zYWN0aW9uKSk7CiAKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJlYWRXcml0ZToKLSAgICAg
ICAgICAgIC8vIElmIHRoaXMgcmVhZC13cml0ZSB0cmFuc2FjdGlvbidzIHNjb3BlIG92ZXJsYXBz
IHdpdGggcnVubmluZyB0cmFuc2FjdGlvbnMsIGl0IG11c3QgYmUgZGVmZXJyZWQuCi0gICAgICAg
ICAgICBpZiAoc2NvcGVzT3ZlcmxhcChtX29iamVjdFN0b3JlVHJhbnNhY3Rpb25Db3VudHMsIGN1
cnJlbnRUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgYm9vbCBoYXNPdmVybGFwcGluZ1Njb3BlcyA9IHNjb3Blc092ZXJsYXAobV9v
YmplY3RTdG9yZVRyYW5zYWN0aW9uQ291bnRzLCBjdXJyZW50VHJhbnNhY3Rpb24tPm9iamVjdFN0
b3JlSWRlbnRpZmllcnMoKSk7CisgICAgICAgICAgICBoYXNPdmVybGFwcGluZ1Njb3BlcyA9IGhh
c092ZXJsYXBwaW5nU2NvcGVzIHx8IHNjb3Blc092ZXJsYXAoZGVmZXJyZWRSZWFkV3JpdGVTY29w
ZXMsIGN1cnJlbnRUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKTsKKworICAg
ICAgICAgICAgaWYgKGhhc092ZXJsYXBwaW5nU2NvcGVzKSB7CisgICAgICAgICAgICAgICAgZm9y
IChhdXRvIG9iamVjdFN0b3JlIDogY3VycmVudFRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZUlkZW50
aWZpZXJzKCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkUmVhZFdyaXRlU2NvcGVzLmFk
ZChvYmplY3RTdG9yZSk7CiAgICAgICAgICAgICAgICAgZGVmZXJyZWRUcmFuc2FjdGlvbnMuYXBw
ZW5kKFdURk1vdmUoY3VycmVudFRyYW5zYWN0aW9uKSk7CisgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGU6OlZlcnNpb25DaGFuZ2U6CiAgICAgICAgICAgICAvLyBWZXJzaW9uIGNoYW5nZSB0
cmFuc2FjdGlvbnMgc2hvdWxkIG5ldmVyIGJlIHNjaGVkdWxlZCBpbiB0aGUgdHJhZGl0aW9uYWwg
bWFubmVyLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEx
NzEsOCArMTE4NSwxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNh
Y3Rpb25Db21wbGV0ZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8gb2JqZWN0U3Rv
cmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKQorICAgIGZvciAoYXV0
byBvYmplY3RTdG9yZSA6IHRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZUlkZW50aWZpZXJzKCkpIHsK
KyAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CisgICAgICAgICAgICBt
X29iamVjdFN0b3JlV3JpdGVUcmFuc2FjdGlvbnMucmVtb3ZlKG9iamVjdFN0b3JlKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtX29iamVjdFN0b3JlVHJhbnNhY3Rpb25Db3VudHMuY291bnQob2JqZWN0
U3RvcmUpID09IDEpOworICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0U3RvcmVUcmFuc2FjdGlv
bkNvdW50cy5yZW1vdmUob2JqZWN0U3RvcmUpOworICAgIH0KIAogICAgIGlmICghdHJhbnNhY3Rp
b24tPmRhdGFiYXNlQ29ubmVjdGlvbigpLmhhc05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkpCiAg
ICAgICAgIG1fY2xvc2VQZW5kaW5nRGF0YWJhc2VDb25uZWN0aW9ucy5yZW1vdmUoJnRyYW5zYWN0
aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDM1
YTk3YWUuLjMwYzEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0yMDMsMTEgKzIwMywx
MCBAQCBwcml2YXRlOgogICAgIERlcXVlPFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uPj4gbV9wZW5kaW5nVHJhbnNhY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVu
dGlmaWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IG1faW5Qcm9ncmVz
c1RyYW5zYWN0aW9uczsKIAotICAgIC8vIFRoZSBrZXkgaW50byB0aGlzIHNldCBpcyB0aGUgb2Jq
ZWN0IHN0b3JlIElELgotICAgIC8vIFRoZSBzZXQgY291bnRzIGhvdyBtYW55IHRyYW5zYWN0aW9u
cyBhcmUgb3BlbiB0byB0aGUgZ2l2ZW4gb2JqZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaGVscHMg
bWFrZSBzdXJlIG9wZW5pbmcgbmFycm93bHkgc2NvcGVkIHRyYW5zYWN0aW9ucyAob25lIG9yIHR3
byBvYmplY3Qgc3RvcmVzKQotICAgIC8vIGRvZXNuJ3QgY29udGludW91c2x5IGJsb2NrIHdpZGVs
eSBzY29wZWQgd3JpdGUgdHJhbnNhY3Rpb25zLgorICAgIC8vIFRoZSBrZXkgaW50byB0aGVzZSBz
ZXRzIGFyZSB0aGUgb2JqZWN0IHN0b3JlIElELgorICAgIC8vIFRoZXNlIHNldHMgaGVscCB0byBk
ZWNpZGUgd2hpY2ggdHJhbnNhY3Rpb25zIGNhbiBiZSBzdGFydGVkIGFuZCB3aGljaCBtdXN0IGJl
IGRlZmVycmVkLgogICAgIEhhc2hDb3VudGVkU2V0PHVpbnQ2NF90PiBtX29iamVjdFN0b3JlVHJh
bnNhY3Rpb25Db3VudHM7CisgICAgSGFzaFNldDx1aW50NjRfdD4gbV9vYmplY3RTdG9yZVdyaXRl
VHJhbnNhY3Rpb25zOwogCiAgICAgYm9vbCBtX2RlbGV0ZVBlbmRpbmcgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9kZWxldGVCYWNraW5nU3RvcmVJblByb2dyZXNzIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268376</attachid>
            <date>2016-01-06 10:52:19 -0800</date>
            <delta_ts>2016-01-06 11:21:13 -0800</delta_ts>
            <desc>Patch v2 - Fix style</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22992</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkM2NkMjc1Li4xYmQwMjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDEt
MDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmcuaHRtbCBm
YWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
Nzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
YWRkaXRpb24gdG8gZW5hYmxpbmcgdGhlIHByZXZpb3VzbHkgc2tpcHBlZCB0ZXN0LCB0aGlzIGFs
c28gY29tcGxldGVseSByZXdyaXRlcyB0cmFuc2FjdGlvbi1zY2hlZHVsZXItNCwgCisgICAgICAg
IHdoaWNoIGNvdmVyZWQgaW5jb3JyZWN0IGJlaGF2aW9yLCB0byBjb3ZlciBuZXdseSBpbXBsZW1l
bnRlZCBjb3JyZWN0IGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQuanM6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00
Lmh0bWw6CisKIDIwMTYtMDEtMDYgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBEYXRlLnByb3RvdHlwZSBzaG91bGQgYmUgYSBwbGFp
biBvYmplY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA1OWQ5MDc4Li5lNDQ5YWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC04Nyw3ICs4Nyw2IEBAIHN0b3JhZ2UvaW5kZXhlZGRi
L29kZC1zdHJpbmdzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZGIt
cHJpdmF0ZS1icm93c2luZy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9wcm9w
ZXJ0aWVzLWRpc2FibGVkLWF0LXJ1bnRpbWUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvc2V0dmVyc2lvbi1ibG9ja2VkLWJ5LXZlcnNpb25jaGFuZ2UtY2xvc2UuaHRtbCBbIEZh
aWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc2NvcGUtc2VxdWVuY2luZy5o
dG1sIFsgRmFpbHVyZSBdCiAKICMgUmVsaWVzIG9uIGludGVybmFscy5vYnNlcnZlR0MKIHN0b3Jh
Z2UvaW5kZXhlZGRiL2Nvbm5lY3Rpb24tbGVhay5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXNjaGVkdWxlci00LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44N2VmMDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5q
cwpAQCAtMCwwICsxLDU3IEBACitkZXNjcmlwdGlvbigiTWFrZXMgc3VyZSB0aGF0IGEgcmVhZC1v
bmx5IHRyYW5zYWN0aW9uIHNjaGVkdWxlZCBhZnRlciBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24g
d2l0aCBvdmVybGFwcGluZyBzY29wZSBkb2VzIG5vdCBzdGFydCB1bnRpbCB0aGUgcmVhZC13cml0
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZXMiKTsKKworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJh
c2UsIHZlcnNpb25DaGFuZ2VTdWNjZXNzQ2FsbGJhY2spOworCitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQoreworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKK30KKworZnVuY3Rpb24gdmVyc2lvbkNoYW5nZVN1Y2Nl
c3NDYWxsYmFjaygpCit7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24xID0gY29ubmVjdGlv
bi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJyk7Iik7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24yID0gY29ubmVjdGlvbi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZG9ubHkn
KTsiKTsKKyAgICBldmFsQW5kTG9nKCJnZXRSZXF1ZXN0ID0gdHJhbnNhY3Rpb24yLm9iamVjdFN0
b3JlKCdzdG9yZScpLmdldCgnZm9vJyk7Iik7CisKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYSBzZXJp
ZXMgb2YgMjAgcHV0cyBpbiB0aGUgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIG1ha2Ugc3VyZSB0
aGUgcmVhZG9ubHkgdHJhbnNhY3Rpb24gaXMgZGVmZXJyZWQgZm9yIHNvbWUgdGltZSIpOworICAg
IGV2YWxBbmRMb2coInB1dENvdW50ID0gMDsiKTsKKyAgICBldmFsQW5kTG9nKCJyZWFkV3JpdGVU
cmFuc2FjdGlvbkRvbmUgPSBmYWxzZTsiKTsKKyAgICBldmFsQW5kTG9nKCJnZXRSZXF1ZXN0RG9u
ZSA9IGZhbHNlOyIpOworICAgIHZhciBwdXRTdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGlmICgrK3B1dENvdW50ID09IDIwKSB7CisgICAgICAgICAgICBkZWJ1ZygiMjB0aCBwdXQgY29t
cGxldGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdmFyIG5ld1JlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KCdiYXInLCAnZm9vJyk7CisgICAgICAgIG5ld1JlcXVlc3Qub25zdWNjZXNzID0gcHV0U3VjY2Vz
czsKKyAgICB9OworCisgICAgdmFyIHJlcXVlc3QgPSB0cmFuc2FjdGlvbjEub2JqZWN0U3RvcmUo
J3N0b3JlJykucHV0KCdiYXInLCAnZm9vJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRT
dWNjZXNzOworCisKKworICAgIHRyYW5zYWN0aW9uMS5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGRlYnVnKCJUcmFuc2FjdGlvbiAxIChyZWFkd3JpdGUpIGNvbXBsZXRlZCB3aXRo
ICIgKyBwdXRDb3VudCArICIgcHV0cyBjb21wbGV0ZWQuIik7CisgICAgICAgIHNob3VsZEJlRmFs
c2UoImdldFJlcXVlc3REb25lIik7CisgICAgICAgIHNob3VsZEJlKCJwdXRDb3VudCIsICIyMCIp
OworICAgICAgICByZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUgPSB0cnVlOworICAgIH0KKworICAg
IGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJHZXR0
aW5nIHRoZSB2YWx1ZSBvZiAnZm9vJyBjb21wbGV0ZWQgLSBUaGlzIG1lYW5zIHRoZSByZWFkb25s
eSB0cmFuc2FjdGlvbiBzdGFydGVkLiBBdCB0aGlzIHBvaW50ICIgKyBwdXRDb3VudCArICIgcHV0
cyBjb21wbGV0ZWQgaW4gdGhlIHJlYWR3cml0ZSB0cmFuc2FjdGlvbi4iKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJyZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUiKTsKKyAgICAgICAgc2hvdWxkQmUo
InB1dENvdW50IiwgIjIwIik7CisgICAgICAgIGdldFJlcXVlc3REb25lID0gdHJ1ZTsKKyAgICB9
CisKKyAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBk
ZWJ1ZygiVHJhbnNhY3Rpb24gMSAocmVhZG9ubHkpIGNvbXBsZXRlZCIpOworICAgICAgICBzaG91
bGRCZVRydWUoInJlYWRXcml0ZVRyYW5zYWN0aW9uRG9uZSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImdldFJlcXVlc3REb25lIik7CisgICAgICAgIHNob3VsZEJlKCJwdXRDb3VudCIsICIyMCIp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0
aW9uLXNjaGVkdWxlci00LWV4cGVjdGVkLnR4dAppbmRleCBmOTE2ZmQ0Li41NWQxZjg3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24t
c2NoZWR1bGVyLTQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1leHBlY3RlZC50eHQKQEAgLTEsMjAg
KzEsMzQgQEAKLUFMRVJUOiBVcGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQotQUxFUlQ6IHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGVkCi1BTEVS
VDogU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkb25s
eSB0cmFuc2FjdGlvbgotQUxFUlQ6IE90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24g
Z2V0IHN1Y2Nlc3MgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IE90aGVyIG9iamVjdHN0b3JlIHJl
YWQgdHJhbnNhY3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFJlYWQgdHJh
bnNhY3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFdyaXRlIHRyYW5zYWN0
aW9uIGZpcnN0IHB1dCBzdWNjZXNzCi1BTEVSVDogU2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlv
biBnZXQgc3VjY2VzcyAtIFtvYmplY3QgRXZlbnRdCi1BTEVSVDogV3JpdGUgdHJhbnNhY3Rpb24g
Y29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IFNlY29uZCByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24gY29tcGxldGUgLSBbb2JqZWN0IEV2ZW50XQotQUxFUlQ6IERvbmUKLVRoaXMgdGVzdCBv
cGVucyBhIGxvbmcgcnVubmluZyByZWFkLW9ubHkgdHJhbnNhY3Rpb24gdG8gYW4gb2JqZWN0IHN0
b3JlLCBhbmQgdGhlbiBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gdG8gdGhlIHNhbWUgb2JqZWN0
IHN0b3JlLgotVGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIGJsb2NrZWQgd2hp
bGUgdGhlIGxvbmcgcnVubmluZyByZWFkLW9ubHkgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3Mu
Ci1JdCBhbHNvIHF1ZXVlcyB1cCBhIHNlY29uZCByZWFkLW9ubHkgdHJhbnNhY3Rpb24gdG8gdGhh
dCBzYW1lIG9iamVjdCBzdG9yZSBiZWhpbmQgdGhlIGJsb2NrZWQgcmVhZC13cml0ZSB0cmFuc2Fj
dGlvbi4KLUV2ZW4gdGhvdWdoIHRoYXQgc2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiBjb3Vs
ZCBzdGFydCB3aGlsZSB0aGUgZmlyc3QgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSByZWFkLXdyaXRl
IHRyYW5zYWN0aW9uIGlzIGJsb2NrZWQsCi1pdCBzaG91bGQgKm5vdCogc3RhcnQgYmVjYXVzZSBk
b2luZyBzbyB3b3VsZCByaXNrIGNvbnRpbnVpbmcgdG8gYmxvY2sgdGhlIHJlYWQtd3JpdGUgdHJh
bnNhY3Rpb24uCi1JdCBhbHNvIHF1ZXVlcyB1cCBhIHJlYWQtb25seSB0byBhIGRpZmZlcmVudCBv
YmplY3Qgc3RvcmUgYmVoaW5kIHRob3NlIGZpcnN0IHRocmVlIHRyYW5zYWN0aW9ucy4KLVRoYXQg
bGFzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb24gKnNob3VsZCogc3RhcnQgd2hpbGUgdGhlIHJlYWQt
d3JpdGUgdHJhbnNhY3Rpb24gaXMgc3RpbGwgYmxvY2tlZCwKLWFzIGRvaW5nIHNvIHdvbid0IHJp
c2sgYmxvY2tpbmcgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gZnVydGhlci4KK01ha2VzIHN1
cmUgdGhhdCBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiBzY2hlZHVsZWQgYWZ0ZXIgYSByZWFkLXdy
aXRlIHRyYW5zYWN0aW9uIHdpdGggb3ZlcmxhcHBpbmcgc2NvcGUgZG9lcyBub3Qgc3RhcnQgdW50
aWwgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGVzCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtp
dEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNl
bGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gInRyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwi
CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1l
KQorY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CitvYmplY3RTdG9yZSA9IGNvbm5l
Y3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyk7Cit0cmFuc2FjdGlvbjEgPSBjb25uZWN0
aW9uLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKTsKK3RyYW5zYWN0aW9uMiA9IGNv
bm5lY3Rpb24udHJhbnNhY3Rpb24oJ3N0b3JlJywgJ3JlYWRvbmx5Jyk7CitnZXRSZXF1ZXN0ID0g
dHJhbnNhY3Rpb24yLm9iamVjdFN0b3JlKCdzdG9yZScpLmdldCgnZm9vJyk7CitTdGFydGluZyBh
IHNlcmllcyBvZiAyMCBwdXRzIGluIHRoZSByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBz
dXJlIHRoZSByZWFkb25seSB0cmFuc2FjdGlvbiBpcyBkZWZlcnJlZCBmb3Igc29tZSB0aW1lCitw
dXRDb3VudCA9IDA7CityZWFkV3JpdGVUcmFuc2FjdGlvbkRvbmUgPSBmYWxzZTsKK2dldFJlcXVl
c3REb25lID0gZmFsc2U7CisyMHRoIHB1dCBjb21wbGV0ZQorVHJhbnNhY3Rpb24gMSAocmVhZHdy
aXRlKSBjb21wbGV0ZWQgd2l0aCAyMCBwdXRzIGNvbXBsZXRlZC4KK1BBU1MgZ2V0UmVxdWVzdERv
bmUgaXMgZmFsc2UKK1BBU1MgcHV0Q291bnQgaXMgMjAKK0dldHRpbmcgdGhlIHZhbHVlIG9mICdm
b28nIGNvbXBsZXRlZCAtIFRoaXMgbWVhbnMgdGhlIHJlYWRvbmx5IHRyYW5zYWN0aW9uIHN0YXJ0
ZWQuIEF0IHRoaXMgcG9pbnQgMjAgcHV0cyBjb21wbGV0ZWQgaW4gdGhlIHJlYWR3cml0ZSB0cmFu
c2FjdGlvbi4KK1BBU1MgcmVhZFdyaXRlVHJhbnNhY3Rpb25Eb25lIGlzIHRydWUKK1BBU1MgcHV0
Q291bnQgaXMgMjAKK1RyYW5zYWN0aW9uIDEgKHJlYWRvbmx5KSBjb21wbGV0ZWQKK1BBU1MgcmVh
ZFdyaXRlVHJhbnNhY3Rpb25Eb25lIGlzIHRydWUKK1BBU1MgZ2V0UmVxdWVzdERvbmUgaXMgdHJ1
ZQorUEFTUyBwdXRDb3VudCBpcyAyMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKaW5kZXgg
M2M2NTllYi4uMGE2MzI1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci00Lmh0bWwKQEAg
LTEsMjMzICsxLDkgQEAKLVRoaXMgdGVzdCBvcGVucyBhIGxvbmcgcnVubmluZyByZWFkLW9ubHkg
dHJhbnNhY3Rpb24gdG8gYW4gb2JqZWN0IHN0b3JlLCBhbmQgdGhlbiBhIHJlYWQtd3JpdGUgdHJh
bnNhY3Rpb24gdG8gdGhlIHNhbWUgb2JqZWN0IHN0b3JlLjxicj4KLVRoZSByZWFkLXdyaXRlIHRy
YW5zYWN0aW9uIHNob3VsZCBiZSBibG9ja2VkIHdoaWxlIHRoZSBsb25nIHJ1bm5pbmcgcmVhZC1v
bmx5IHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzLjxicj4KLUl0IGFsc28gcXVldWVzIHVwIGEg
c2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB0byB0aGF0IHNhbWUgb2JqZWN0IHN0b3JlIGJl
aGluZCB0aGUgYmxvY2tlZCByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLjxicj4KLUV2ZW4gdGhvdWdo
IHRoYXQgc2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiBjb3VsZCBzdGFydCB3aGlsZSB0aGUg
Zmlyc3QgaXMgaW4gcHJvZ3Jlc3MgYW5kIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGlzIGJs
b2NrZWQsPGJyPgotaXQgc2hvdWxkICpub3QqIHN0YXJ0IGJlY2F1c2UgZG9pbmcgc28gd291bGQg
cmlzayBjb250aW51aW5nIHRvIGJsb2NrIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLjxicj4K
LUl0IGFsc28gcXVldWVzIHVwIGEgcmVhZC1vbmx5IHRvIGEgZGlmZmVyZW50IG9iamVjdCBzdG9y
ZSBiZWhpbmQgdGhvc2UgZmlyc3QgdGhyZWUgdHJhbnNhY3Rpb25zLjxicj4KLVRoYXQgbGFzdCBy
ZWFkLW9ubHkgdHJhbnNhY3Rpb24gKnNob3VsZCogc3RhcnQgd2hpbGUgdGhlIHJlYWQtd3JpdGUg
dHJhbnNhY3Rpb24gaXMgc3RpbGwgYmxvY2tlZCw8YnI+Ci1hcyBkb2luZyBzbyB3b24ndCByaXNr
IGJsb2NraW5nIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGZ1cnRoZXIuPGJyPgotPHNjcmlw
dD4KLQotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGRvbmUo
KQotewotICAgIGFsZXJ0KCJEb25lIik7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotdmFyIGNyZWF0ZVJlcXVlc3QgPSB3
aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRyYW5zYWN0aW9uU2NoZWR1bGVyNERhdGFiYXNlIik7Ci0K
LWNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBh
bGVydCgiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24g
KyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOwotCi0gICAgdmFyIHZlcnNp
b25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Ci0gICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiT1MiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LnB1dCgiYmFyIiwgImZvbyIpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgYWxlcnQoImZpcnN0IHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAg
ICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVP
YmplY3RTdG9yZSgiT3RoZXJPUyIpOwotICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJh
ciIsICJmb28iKTsKLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICBhbGVydCgic2Vjb25kIHB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gYWJvcnRlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICAgICAgY29udGludWVUZXN0
KCk7Ci0gICAgICAgIGRhdGFiYXNlLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgidmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBlcnJvcidlZCAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci0KLXZhciBzZWNvbmREYXRhYmFzZUNvbm5lY3Rpb247Ci1mdW5jdGlvbiBj
b250aW51ZVRlc3QoKQotewotICAgIHZhciBsb25nUnVubmluZ1JlYWRSZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJUcmFuc2FjdGlvblNjaGVkdWxlcjREYXRhYmFzZSIsIDEpOwotICAg
IGxvbmdSdW5uaW5nUmVhZFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uIC0gU3RhcnRp
bmcgcmVhZG9ubHkgdHJhbnNhY3Rpb24iKTsKLSAgICAgICAgc2Vjb25kRGF0YWJhc2VDb25uZWN0
aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgCi0gICAgICAgIHZhciB0cmFuc2Fj
dGlvbiA9IHNlY29uZERhdGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZG9u
bHkiKTsKLSAgICAgICAgCi0gICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gZXJyb3Ig
LSAiICsgZXZlbnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBhbGVy
dCgiVW5leHBlY3RlZCB0cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7Ci0gICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGFsZXJ0KCJSZWFkIHRyYW5zYWN0aW9uIGNv
bXBsZXRlIC0gIiArIGV2ZW50KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmlyc3RS
ZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCB0cnVlKTsKLSAgICB9Ci0gICAgbG9uZ1J1
bm5pbmdSZWFkUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxl
cnQoIkxvbmcgcnVubmluZyByZWFkIHJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVu
dCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAgbG9uZ1J1bm5pbmdSZWFkUmVxdWVzdC5v
bmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiTG9uZyBydW5uaW5n
IHJlYWQgcmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotICAgIGxvbmdSdW5uaW5nUmVhZFJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIkxvbmcgcnVubmluZyByZWFkIHJl
cXVlc3QgdW5leHBlY3RlZCB1cGdyYWRlbmVlZGVkIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0gCi19Ci0KLXZhciBzaG91bGRFbmRSZWFkVHJhbnNhY3Rpb24gPSBmYWxzZTsK
LQotZnVuY3Rpb24gZmlyc3RSZWFkVHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBpc0ZpcnN0
VGltZSkKLXsKLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgi
T1MiKTsKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCgiZm9vIik7Ci0gICAgCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoc2hv
dWxkRW5kUmVhZFRyYW5zYWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ci0gICAgICAgIGZpcnN0UmVhZFRyYW5zYWN0aW9uTG9vcChldmVudC50YXJnZXQudHJhbnNhY3Rp
b24sIGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyB0aGF0IHRoZSByZWFkIHRyYW5z
YWN0aW9uIGlzIG9wZW4sIHRoZSBvdGhlciB0cmFuc2FjdGlvbnMgY2FuIGJlIHF1ZXVlZCB1cC4K
LSAgICAgICAgaWYgKGlzRmlyc3RUaW1lKQotICAgICAgICAgICAgIHN0YXJ0T3RoZXJUcmFuc2Fj
dGlvbnMoKQotICAgIH0KLQotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGFsZXJ0KCJVbmV4cGVjdGVkIHJlcXVlc3QgZXJyb3IgLSAiICsgZXZlbnQpOwot
ICAgICAgICBkb25lKCk7Ci0gICAgfQotfQotCi12YXIgc2hvdWxkRW5kUmVhZFRyYW5zYWN0aW9u
ID0gZmFsc2U7Ci12YXIgbG9nZ2VkV3JpdGVQdXRTdWNjZXNzT25jZSA9IGZhbHNlOwotZnVuY3Rp
b24gd3JpdGVUcmFuc2FjdGlvbkxvb3AodHJhbnNhY3Rpb24pCi17Ci0gICAgdmFyIG9iamVjdFN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5wdXQoImJheiIsICJmb28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCFsb2dnZWRXcml0ZVB1dFN1Y2Nlc3NPbmNl
KSB7Ci0gICAgICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNhY3Rpb24gZmlyc3QgcHV0IHN1Y2Nl
c3MiKTsKLSAgICAgICAgICAgIGxvZ2dlZFdyaXRlUHV0U3VjY2Vzc09uY2UgPSB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChzaG91bGRFbmRSZWFkVHJhbnNhY3Rpb24pCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICB3cml0ZVRyYW5zYWN0aW9uTG9vcCh0cmFuc2Fj
dGlvbik7Ci0gICAgfQotICAgIAotICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiBwdXQgdW5leHBlY3RlZCBlcnJv
ciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHN0
YXJ0T3RoZXJUcmFuc2FjdGlvbnMoKQotewotICAgIHZhciB0cmFuc2FjdGlvbiA9IHNlY29uZERh
dGFiYXNlQ29ubmVjdGlvbi50cmFuc2FjdGlvbigiT1MiLCAicmVhZHdyaXRlIik7Ci0KLSAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIldy
aXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAiICsgZXZlbnQpOwotICAgICAgICBk
b25lKCk7Ci0gICAgfQotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGFsZXJ0KCJXcml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IC0g
IiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiV3JpdGUgdHJhbnNh
Y3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQpOwotICAgIH0KLSAgICAKLSAgICB3cml0ZVRyYW5z
YWN0aW9uTG9vcCh0cmFuc2FjdGlvbik7Ci0KLSAgICAvLyBUaGlzIHJlYWQtb25seSB0cmFuc2Fj
dGlvbiBzaG91bGQgYmUgYmxvY2tlZCBiZWhpbmQgdGhlIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24g
YWJvdmUsIAotICAgIC8vIGFuZCBzaG91bGQgbm90IHN0YXJ0IHVudGlsIGl0IGZpbmlzaGVzLgot
ICAgIHRyYW5zYWN0aW9uID0gc2Vjb25kRGF0YWJhc2VDb25uZWN0aW9uLnRyYW5zYWN0aW9uKCJP
UyIsICJyZWFkb25seSIpOwotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIC0gIiArIGV2ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vj
b25kIHJlYWQtb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IC0gIiArIGV2ZW50KTsK
LSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQtb25seSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZSAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIk9TIik7Ci0g
ICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoImZvbyIpOwotCi0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiU2Vjb25kIHJlYWQt
b25seSB0cmFuc2FjdGlvbiBnZXQgc3VjY2VzcyAtICIgKyBldmVudCk7Ci0gICAgfQotICAgIAot
ICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGFsZXJ0KCJT
ZWNvbmQgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIHB1dCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2
ZW50KTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgcmVhZC1vbmx5IHRy
YW5zYWN0aW9uIGlzIHF1ZXVlZCBiZWhpbmQgdGhlIDMgcHJldmlvdXMgdHJhbnNhY3Rpb25zLCBi
dXQgc2hvdWxkIG5vdAotICAgIC8vIGJlIGJsb2NrZWQgYmVjYXVzZSBpdHMgc2NvcGUgZG9lc24n
dCBvdmVybGFwIHRoZSByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLgotICAgIHRyYW5zYWN0aW9uID0g
c2Vjb25kRGF0YWJhc2VDb25uZWN0aW9uLnRyYW5zYWN0aW9uKCJPdGhlck9TIiwgInJlYWRvbmx5
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBl
cnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIk90aGVyIG9i
amVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCAtICIgKyBldmVudCk7
Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQg
dHJhbnNhY3Rpb24gY29tcGxldGUgLSAiICsgZXZlbnQpOwotICAgICAgICBzaG91bGRFbmRSZWFk
VHJhbnNhY3Rpb24gPSB0cnVlOwotICAgIH0KLQotICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIk90aGVyT1MiKTsKLSAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0
KCJmb28iKTsKLQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgYWxlcnQoIk90aGVyIG9iamVjdHN0b3JlIHJlYWQgdHJhbnNhY3Rpb24gZ2V0IHN1Y2Nl
c3MgLSAiICsgZXZlbnQpOwotICAgIH0KLSAgICAKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBhbGVydCgiT3RoZXIgb2JqZWN0c3RvcmUgcmVhZCB0cmFu
c2FjdGlvbiBnZXQgdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7Ci0gICAgICAgIGRvbmUo
KTsKLSAgICB9Ci19Ci0KLTwvc2NyaXB0PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTQuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjN2UyY2YuLjUyODI5MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxNi0wMS0wNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc2NvcGUtc2VxdWVuY2luZy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKEF0IGxlYXN0IG9uZSBmYWlsaW5n
IHRlc3Qgbm93IHBhc3NlcywgcGx1cyBjaGFuZ2VzIHRvIGFub3RoZXIgZXhpc3RpbmcgdGVzdCku
CisgICAgICAgIAorICAgICAgICBBbnkgdHJhbnNhY3Rpb24gZW5xdWV1ZWQgYWZ0ZXIgYSByZWFk
LXdyaXRlIHRyYW5zYWN0aW9uIHdob3NlIHNjb3BlIG92ZXJsYXBzIHdpdGgKKyAgICAgICAgdGhh
dCByZWFkLXdyaXRlIHRyYW5zYWN0aW9uIGNhbm5vdCBydW4gdW50aWwgYWZ0ZXIgdGhhdCByZWFk
LXdyaXRlIHRyYW5zYWN0aW9uIHJ1bnMuCisgICAgICAgIAorICAgICAgICBBZGRpdGlvbmFsbHks
IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgd2VyZSBhY3R1YWxseSBzb21ldGltZXMgcnVubmluZyBl
dmVuIHRob3VnaCB0aGVpciBzY29wZXMKKyAgICAgICAgb3ZlcmxhcHBlZCB3aXRoIGEgcnVubmlu
ZyByZWFkLXdyaXRlIHRyYW5zYWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBm
aXhlcyBib3RoIG9mIHRob3NlIGlzc3Vlcy4KKyAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnRh
a2VOZXh0UnVubmFibGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCiAy
MDE2LTAxLTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgc2hv
d1JlbmRlclRyZWU6IGFkZCBpbmxpbmUtYmxvY2svaW5saW5lL2Jsb2NrIGNvbHVtbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDA3MjQ2NjEuLjM3ZTNkNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcApAQCAtMTA2Nyw4ICsxMDY3LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Om9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXJGaXJlZCgpCiAKICAgICBpZiAodHJhbnNh
Y3Rpb24pIHsKICAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlv
bi0+aW5mbygpLmlkZW50aWZpZXIoKSwgdHJhbnNhY3Rpb24pOwotICAgICAgICBmb3IgKGF1dG8g
b2JqZWN0U3RvcmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKQorICAg
ICAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVu
dGlmaWVycygpKSB7CiAgICAgICAgICAgICBtX29iamVjdFN0b3JlVHJhbnNhY3Rpb25Db3VudHMu
YWRkKG9iamVjdFN0b3JlKTsKKyAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24tPmlzUmVhZE9u
bHkoKSkgeworICAgICAgICAgICAgICAgIG1fb2JqZWN0U3RvcmVXcml0ZVRyYW5zYWN0aW9ucy5h
ZGQob2JqZWN0U3RvcmUpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX29iamVjdFN0b3JlVHJh
bnNhY3Rpb25Db3VudHMuY291bnQob2JqZWN0U3RvcmUpID09IDEpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAKICAgICAgICAgYWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKCp0
cmFuc2FjdGlvbik7CiAKQEAgLTExMjUsMjYgKzExMzAsMzMgQEAgUmVmUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24+IFVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlVHJh
bnNhY3QKICAgICBEZXF1ZTxSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IGRl
ZmVycmVkVHJhbnNhY3Rpb25zOwogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uPiBjdXJyZW50VHJhbnNhY3Rpb247CiAKKyAgICBIYXNoU2V0PHVpbnQ2NF90PiBkZWZlcnJl
ZFJlYWRXcml0ZVNjb3BlczsKKwogICAgIHdoaWxlICghbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSkgewogICAgICAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBtX3BlbmRpbmdUcmFuc2Fj
dGlvbnMudGFrZUZpcnN0KCk7CiAKICAgICAgICAgc3dpdGNoIChjdXJyZW50VHJhbnNhY3Rpb24t
PmluZm8oKS5tb2RlKCkpIHsKLSAgICAgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZTo6UmVhZE9ubHk6Ci0gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGRlZmVycmVkIHRy
YW5zYWN0aW9ucywgdGhlIGZpcnN0IG9uZSBpcyBhIHJlYWQtd3JpdGUgdHJhbnNhY3Rpb24gd2Ug
bmVlZCB0byB1bmJsb2NrLgotICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCBza2lwIHRoaXMgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIGlmIGl0cyBzY29wZSBvdmVybGFwcyB3aXRoIHRoYXQgcmVhZC13
cml0ZSB0cmFuc2FjdGlvbi4KLSAgICAgICAgICAgIGlmICghZGVmZXJyZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGRlZmVycmVkVHJhbnNhY3Rpb25z
LmZpcnN0KCktPmluZm8oKS5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJl
YWRXcml0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3Blc092ZXJsYXAoZGVmZXJyZWRUcmFu
c2FjdGlvbnMuZmlyc3QoKS0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpLCBjdXJyZW50VHJhbnNh
Y3Rpb24tPm9iamVjdFN0b3JlSWRlbnRpZmllcnMoKSkpCi0gICAgICAgICAgICAgICAgICAgIGRl
ZmVycmVkVHJhbnNhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGN1cnJlbnRUcmFuc2FjdGlvbikpOwot
ICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkT25seTogeworICAgICAgICAgICAgYm9vbCBoYXNPdmVybGFwcGluZ1Njb3BlcyA9IHNjb3Bl
c092ZXJsYXAoZGVmZXJyZWRSZWFkV3JpdGVTY29wZXMsIGN1cnJlbnRUcmFuc2FjdGlvbi0+b2Jq
ZWN0U3RvcmVJZGVudGlmaWVycygpKTsKKyAgICAgICAgICAgIGhhc092ZXJsYXBwaW5nU2NvcGVz
ID0gaGFzT3ZlcmxhcHBpbmdTY29wZXMgfHwgc2NvcGVzT3ZlcmxhcChtX29iamVjdFN0b3JlV3Jp
dGVUcmFuc2FjdGlvbnMsIGN1cnJlbnRUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVy
cygpKTsKKworICAgICAgICAgICAgaWYgKGhhc092ZXJsYXBwaW5nU2NvcGVzKQorICAgICAgICAg
ICAgICAgIGRlZmVycmVkVHJhbnNhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGN1cnJlbnRUcmFuc2Fj
dGlvbikpOwogCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uTW9kZTo6UmVhZFdyaXRlOgotICAgICAgICAgICAgLy8gSWYgdGhpcyByZWFkLXdy
aXRlIHRyYW5zYWN0aW9uJ3Mgc2NvcGUgb3ZlcmxhcHMgd2l0aCBydW5uaW5nIHRyYW5zYWN0aW9u
cywgaXQgbXVzdCBiZSBkZWZlcnJlZC4KLSAgICAgICAgICAgIGlmIChzY29wZXNPdmVybGFwKG1f
b2JqZWN0U3RvcmVUcmFuc2FjdGlvbkNvdW50cywgY3VycmVudFRyYW5zYWN0aW9uLT5vYmplY3RT
dG9yZUlkZW50aWZpZXJzKCkpKQorICAgICAgICB9CisgICAgICAgIGNhc2UgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGU6OlJlYWRXcml0ZTogeworICAgICAgICAgICAgYm9vbCBoYXNPdmVybGFw
cGluZ1Njb3BlcyA9IHNjb3Blc092ZXJsYXAobV9vYmplY3RTdG9yZVRyYW5zYWN0aW9uQ291bnRz
LCBjdXJyZW50VHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlSWRlbnRpZmllcnMoKSk7CisgICAgICAg
ICAgICBoYXNPdmVybGFwcGluZ1Njb3BlcyA9IGhhc092ZXJsYXBwaW5nU2NvcGVzIHx8IHNjb3Bl
c092ZXJsYXAoZGVmZXJyZWRSZWFkV3JpdGVTY29wZXMsIGN1cnJlbnRUcmFuc2FjdGlvbi0+b2Jq
ZWN0U3RvcmVJZGVudGlmaWVycygpKTsKKworICAgICAgICAgICAgaWYgKGhhc092ZXJsYXBwaW5n
U2NvcGVzKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIG9iamVjdFN0b3JlIDogY3VycmVu
dFRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZUlkZW50aWZpZXJzKCkpCisgICAgICAgICAgICAgICAg
ICAgIGRlZmVycmVkUmVhZFdyaXRlU2NvcGVzLmFkZChvYmplY3RTdG9yZSk7CiAgICAgICAgICAg
ICAgICAgZGVmZXJyZWRUcmFuc2FjdGlvbnMuYXBwZW5kKFdURk1vdmUoY3VycmVudFRyYW5zYWN0
aW9uKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2U6CiAg
ICAgICAgICAgICAvLyBWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMgc2hvdWxkIG5ldmVyIGJl
IHNjaGVkdWxlZCBpbiB0aGUgdHJhZGl0aW9uYWwgbWFubmVyLgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExNzEsOCArMTE4MywxMyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlv
bik7CiAKLSAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmUgOiB0cmFuc2FjdGlvbi0+b2JqZWN0U3Rv
cmVJZGVudGlmaWVycygpKQorICAgIGZvciAoYXV0byBvYmplY3RTdG9yZSA6IHRyYW5zYWN0aW9u
LT5vYmplY3RTdG9yZUlkZW50aWZpZXJzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi0+
aXNSZWFkT25seSgpKSB7CisgICAgICAgICAgICBtX29iamVjdFN0b3JlV3JpdGVUcmFuc2FjdGlv
bnMucmVtb3ZlKG9iamVjdFN0b3JlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX29iamVjdFN0b3Jl
VHJhbnNhY3Rpb25Db3VudHMuY291bnQob2JqZWN0U3RvcmUpID09IDEpOworICAgICAgICB9CiAg
ICAgICAgIG1fb2JqZWN0U3RvcmVUcmFuc2FjdGlvbkNvdW50cy5yZW1vdmUob2JqZWN0U3RvcmUp
OworICAgIH0KIAogICAgIGlmICghdHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29ubmVjdGlvbigpLmhh
c05vbkZpbmlzaGVkVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgIG1fY2xvc2VQZW5kaW5nRGF0YWJh
c2VDb25uZWN0aW9ucy5yZW1vdmUoJnRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDM1YTk3YWUuLjMwYzEzNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5oCkBAIC0yMDMsMTEgKzIwMywxMCBAQCBwcml2YXRlOgogICAgIERlcXVlPFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPj4gbV9wZW5kaW5nVHJhbnNhY3Rpb25z
OwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbj4+IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9uczsKIAotICAgIC8vIFRo
ZSBrZXkgaW50byB0aGlzIHNldCBpcyB0aGUgb2JqZWN0IHN0b3JlIElELgotICAgIC8vIFRoZSBz
ZXQgY291bnRzIGhvdyBtYW55IHRyYW5zYWN0aW9ucyBhcmUgb3BlbiB0byB0aGUgZ2l2ZW4gb2Jq
ZWN0IHN0b3JlLgotICAgIC8vIFRoaXMgaGVscHMgbWFrZSBzdXJlIG9wZW5pbmcgbmFycm93bHkg
c2NvcGVkIHRyYW5zYWN0aW9ucyAob25lIG9yIHR3byBvYmplY3Qgc3RvcmVzKQotICAgIC8vIGRv
ZXNuJ3QgY29udGludW91c2x5IGJsb2NrIHdpZGVseSBzY29wZWQgd3JpdGUgdHJhbnNhY3Rpb25z
LgorICAgIC8vIFRoZSBrZXkgaW50byB0aGVzZSBzZXRzIGFyZSB0aGUgb2JqZWN0IHN0b3JlIElE
LgorICAgIC8vIFRoZXNlIHNldHMgaGVscCB0byBkZWNpZGUgd2hpY2ggdHJhbnNhY3Rpb25zIGNh
biBiZSBzdGFydGVkIGFuZCB3aGljaCBtdXN0IGJlIGRlZmVycmVkLgogICAgIEhhc2hDb3VudGVk
U2V0PHVpbnQ2NF90PiBtX29iamVjdFN0b3JlVHJhbnNhY3Rpb25Db3VudHM7CisgICAgSGFzaFNl
dDx1aW50NjRfdD4gbV9vYmplY3RTdG9yZVdyaXRlVHJhbnNhY3Rpb25zOwogCiAgICAgYm9vbCBt
X2RlbGV0ZVBlbmRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWxldGVCYWNraW5nU3RvcmVJ
blByb2dyZXNzIHsgZmFsc2UgfTsK
</data>
<flag name="review"
          id="293323"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>