<?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>86055</bug_id>
          
          <creation_ts>2012-05-09 20:45:33 -0700</creation_ts>
          <short_desc>[BlackBerry] [DRT] Ref-tests were not run by torch-launcher</short_desc>
          <delta_ts>2013-05-21 20:09:13 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Xiaobo Wang">xiaobwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mxie</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>620204</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-09 20:45:33 -0700</bug_when>
    <thetext>Currently torch-launcher only run tests parsed by NRWT, with ref-tests excluded. As a result, if a test have ref-tests (which were not run), our DumpRenderTree Perl script will think there&apos;s a crash and exit with code 1. So NRWT will report the result as CRASH.
We need to update DumpRenderTree.cpp to try to find ref-tests and run them.

Example:
When running test &quot;css2.1/20110323/border-conflict-element-001.htm&quot; we should be able to find its ref-test &quot;css2.1/20110323/border-conflict-element-001-expected.html&quot; and run it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620274</commentid>
    <comment_count>1</comment_count>
      <attachid>141090</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-09 23:21:15 -0700</bug_when>
    <thetext>Created attachment 141090
Git patch for bug 86055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620279</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 23:25:47 -0700</bug_when>
    <thetext>Attachment 141090 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Tools/DumpRenderTree/blackbe...&quot; exit_code: 1
Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:236:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:248:  Missing space before ( in if(  [whitespace/parens] [5]
Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:259:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 3 in 3 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>620296</commentid>
    <comment_count>3</comment_count>
      <attachid>141094</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-09 23:56:12 -0700</bug_when>
    <thetext>Created attachment 141094
Git patch updated for code style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621002</commentid>
    <comment_count>4</comment_count>
      <attachid>141094</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-10 14:39:47 -0700</bug_when>
    <thetext>Comment on attachment 141094
Git patch updated for code style

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

Looks good, can be cleaned up some more.

&gt; ChangeLog:1
&gt; +2012-05-09  Xiaobo Wang  &lt;xbwang@torchmobile.com.cn&gt;

You need an empty line here.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:206
&gt; +    const char* surfixes[] = {&quot;-expected&quot;, &quot;-expected-mismatch&quot;};

Typo, suffix.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:207
&gt; +    const int countofSurfixes = sizeof(surfixes) / sizeof(const char*);

Ditto.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:406
&gt; +    for (Vector&lt;WTF::String&gt;::iterator iter = files.begin(); files.end() != iter; ++iter)

Can you try if it works if you do not add WTF:: in this cpp file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621090</commentid>
    <comment_count>5</comment_count>
    <who name="Ming Xie">mxie</who>
    <bug_when>2012-05-10 15:59:02 -0700</bug_when>
    <thetext>Xiaobo, aren&apos;t you going to rename this?
+    int getRefTests(const WTF::String&amp; testName);

Also, the return value never gets checked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621302</commentid>
    <comment_count>6</comment_count>
      <attachid>141333</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-10 23:42:14 -0700</bug_when>
    <thetext>Created attachment 141333
Git patch updated for comments from Bob and Ming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621306</commentid>
    <comment_count>7</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-10 23:51:03 -0700</bug_when>
    <thetext>Thanks Rob, please forgive my poor spelling and carelessness:)
Without WTF:: it also works, so I cleaned it for all instances in DumpRenderTree.cpp and .h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621335</commentid>
    <comment_count>8</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-11 00:19:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Xiaobo, aren&apos;t you going to rename this?
&gt; +    int getRefTests(const WTF::String&amp; testName);
&gt; 
&gt; Also, the return value never gets checked.

Thanks Ming. updated to return void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621338</commentid>
    <comment_count>9</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-11 00:20:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=141333) [details]
&gt; Git patch updated for comments from Bob and Ming

Sorry, I mean Rob not Bob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621478</commentid>
    <comment_count>10</comment_count>
      <attachid>141333</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-11 04:32:12 -0700</bug_when>
    <thetext>Comment on attachment 141333
Git patch updated for comments from Bob and Ming

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

Looks much better! Please fix remaining issues before landing.

&gt; ChangeLog:8
&gt; +        Ref-tests are tests with surfix &quot;-expected&quot;, &quot;-expected-mismatch&quot; and a valid

surfix!

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:209
&gt; +    const char* extensions[] = {&quot;.html&quot;};

We may want to add .svg as possible ref-test extension later.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:222
&gt; +

Remove empty line.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:401
&gt; +    // and multiple mismatch ref-tests

Lacks a period at the end.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:403
&gt; +        getRefTests(*iter);

I think it should be getRefTest, not getRefTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621479</commentid>
    <comment_count>11</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-11 04:32:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=141333) [details] [details]
&gt; &gt; Git patch updated for comments from Bob and Ming
&gt; 
&gt; Sorry, I mean Rob not Bob.

No problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621503</commentid>
    <comment_count>12</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-11 05:12:06 -0700</bug_when>
    <thetext>(In reply to comment #10)
Again thanks for the good catches!

&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:209
&gt; &gt; +    const char* extensions[] = {&quot;.html&quot;};
&gt; 
&gt; We may want to add .svg as possible ref-test extension later.
Great, I&apos;ll add &quot;.svg&quot;to the array.
&gt; 

&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:403
&gt; &gt; +        getRefTests(*iter);
&gt; 
&gt; I think it should be getRefTest, not getRefTests.
Why do you think so? A test may have multiple ref-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621507</commentid>
    <comment_count>13</comment_count>
      <attachid>141382</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-05-11 05:28:07 -0700</bug_when>
    <thetext>Created attachment 141382
Git patch updated for more comments from Rob</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621513</commentid>
    <comment_count>14</comment_count>
      <attachid>141382</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-11 05:39:17 -0700</bug_when>
    <thetext>Comment on attachment 141382
Git patch updated for more comments from Rob

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621558</commentid>
    <comment_count>15</comment_count>
      <attachid>141382</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 06:25:00 -0700</bug_when>
    <thetext>Comment on attachment 141382
Git patch updated for more comments from Rob

Clearing flags on attachment: 141382

Committed r116758: &lt;http://trac.webkit.org/changeset/116758&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622422</commentid>
    <comment_count>16</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-12 15:01:07 -0700</bug_when>
    <thetext>Closing, this landed in r116758.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892104</commentid>
    <comment_count>17</comment_count>
      <attachid>141333</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2013-05-21 20:07:36 -0700</bug_when>
    <thetext>Comment on attachment 141333
Git patch updated for comments from Bob and Ming

Clear r/cq flags for obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892105</commentid>
    <comment_count>18</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2013-05-21 20:07:52 -0700</bug_when>
    <thetext>Clear r/cq flags for obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892106</commentid>
    <comment_count>19</comment_count>
      <attachid>141333</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2013-05-21 20:08:27 -0700</bug_when>
    <thetext>Comment on attachment 141333
Git patch updated for comments from Bob and Ming

Clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892107</commentid>
    <comment_count>20</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2013-05-21 20:09:13 -0700</bug_when>
    <thetext>close.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141090</attachid>
            <date>2012-05-09 23:21:15 -0700</date>
            <delta_ts>2012-05-09 23:56:12 -0700</delta_ts>
            <desc>Git patch for bug 86055</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree.cpp-to-also-run-ref.patch</filename>
            <type>text/plain</type>
            <size>8230</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA2YzE4YmM5NDY5ODFhYmVhYzRkOTAxZThkZjQzYjgzMTljNThkN2JmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE5OjAzOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZS5jcHAgdG8gYWxzbyBydW4gcmVmLXRl
c3RzCiBpZiB0aGVyZSdyZSBhbnkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjA1NQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWYtdGVzdHMgYXJlIHRl
c3RzIHdpdGggc3VyZml4ICItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1pc21hdGNoIiBhbmQgYSB2
YWxpZApleHRlbnNpb24oIi5odG1sIiwgIi5odG0iLCBldGMuKS4KQ3VycmVudGx5IHRvcmNoLWxh
dW5jaGVyIG9ubHkgcnVuIHRlc3RzIHBhcnNlZCBieSBOUldULCB3aXRoIHJlZi10ZXN0cwpleGNs
dWRlZC4gQXMgYSByZXN1bHQsIGlmIGEgdGVzdCBoYXZlIHJlZi10ZXN0cyAod2hpY2ggd2VyZSBu
b3QgcnVuKSwgb3VyCkR1bXBSZW5kZXJUcmVlIFBlcmwgc2NyaXB0IHdpbGwgdGhpbmsgdGhlcmUn
cyBhIGNyYXNoIGFuZCBleGl0IHdpdGggY29kZSAxLgpTbyBOUldUIHdpbGwgcmVwb3J0IHRoZSBy
ZXN1bHQgYXMgQ1JBU0guCldlIG5lZWQgdG8gdXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0byB0
cnkgdG8gZmluZCByZWYtdGVzdHMgYW5kIHJ1biB0aGVtLgoKKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OmdldFJlZlRlc3RzKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cyk6CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKER1bXBSZW5kZXJUcmVlKToKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrKysrCiBUb29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAgNzcgKysrKysrKysr
KysrKysrKy0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oICAg
ICAgICAgIHwgICAgNCArCiAzIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDE2IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyYTVk
YTI5Li5kNjYzY2IwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTItMDUtMDkgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9iaWxl
LmNvbS5jbj4KKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZS5jcHAg
dG8gYWxzbyBydW4gcmVmLXRlc3RzIGlmIHRoZXJlJ3JlIGFueQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYwNTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWYtdGVzdHMgYXJlIHRlc3RzIHdpdGggc3Vy
Zml4ICItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1pc21hdGNoIiBhbmQgYSB2YWxpZAorICAgICAg
ICBleHRlbnNpb24oIi5odG1sIiwgIi5odG0iLCBldGMuKS4KKyAgICAgICAgQ3VycmVudGx5IHRv
cmNoLWxhdW5jaGVyIG9ubHkgcnVuIHRlc3RzIHBhcnNlZCBieSBOUldULCB3aXRoIHJlZi10ZXN0
cworICAgICAgICBleGNsdWRlZC4gQXMgYSByZXN1bHQsIGlmIGEgdGVzdCBoYXZlIHJlZi10ZXN0
cyAod2hpY2ggd2VyZSBub3QgcnVuKSwgb3VyCisgICAgICAgIER1bXBSZW5kZXJUcmVlIFBlcmwg
c2NyaXB0IHdpbGwgdGhpbmsgdGhlcmUncyBhIGNyYXNoIGFuZCBleGl0IHdpdGggY29kZSAxLgor
ICAgICAgICBTbyBOUldUIHdpbGwgcmVwb3J0IHRoZSByZXN1bHQgYXMgQ1JBU0guCisgICAgICAg
IFdlIG5lZWQgdG8gdXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0byB0cnkgdG8gZmluZCByZWYt
dGVzdHMgYW5kIHJ1biB0aGVtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBS
ZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkR1bXBSZW5kZXJUcmVlOjpnZXRSZWZUZXN0cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3QpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5n
VGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVu
VGVzdHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRy
ZWVCbGFja0JlcnJ5Lmg6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZSk6CisKIDIwMTItMDUtMDkg
IEh1Z28gUGFyZW50ZSBMaW1hICA8aHVnby5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
VXNlIHN1aXRhYmxlIHZpZXdwb3J0IHZhbHVlcyBvbiBYSFRNTC1NUCBwYWdlcy4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
ZGQzNjc2YS4uNTc3MDEyZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xNDcsNiArMTQ3LDcgQEAgRHVtcFJlbmRlclRy
ZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAg
ICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0
VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBS
ZW5kZXJUcmVlOjpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKKyAg
ICAsIG1fcnVubmluZ1JlZlRlc3RzKGZhbHNlKQogewogICAgIFdURjo6U3RyaW5nIHNkY2FyZFBh
dGggPSBTRENBUkRfUEFUSDsKICAgICBtX3Jlc3VsdHNEaXIgPSBzZGNhcmRQYXRoICsgIi9yZXN1
bHRzLyI7CkBAIC0xOTYsNiArMTk3LDQ2IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmRvbmVEcnQo
KQogICAgIChtX3BhZ2UtPmNsaWVudCgpKS0+bm90aWZ5UnVuTGF5b3V0VGVzdHNGaW5pc2hlZCgp
OwogfQogCitpbnQgRHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKGNvbnN0IFdURjo6U3RyaW5n
JiB0ZXN0TmFtZSkKK3sKKyAgICBpbnQgY291bnRSZWZUZXN0cyA9IDA7CisgICAgaWYgKG1fcnVu
bmluZ1JlZlRlc3RzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IGNoYXIqIHN1cmZp
eGVzW10gPSB7Ii1leHBlY3RlZCIsICItZXhwZWN0ZWQtbWlzbWF0Y2gifTsKKyAgICBjb25zdCBp
bnQgY291bnRvZlN1cmZpeGVzID0gc2l6ZW9mKHN1cmZpeGVzKSAvIHNpemVvZihjb25zdCBjaGFy
Kik7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IGhhdmUgcmVmIHRlc3RzIHdpdGgg
Lmh0bWwgZXh0ZW5zaW9uLCB5b3UgbWFueSBuZWVkIHRvIGFkZCBtb3JlCisgICAgLy8gd2hlbiB0
aGV5IGhhdmUgbW9yZSBleHRlbnNpb25zICguaHRtLCAuc2h0bWwsIC54aHRtbCwgZXRjLikKKyAg
ICBjb25zdCBjaGFyKiBleHRlbnNpb25zW10gPSB7Ii5odG1sIn07CisgICAgY29uc3QgaW50IGNv
dW50b2ZFeHRlbnNpb25zID0gc2l6ZW9mKGV4dGVuc2lvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIq
KTsKKyAgICBXVEY6OlN0cmluZyBsYXlvdXREaXIgPSBrU0RDTGF5b3V0VGVzdHNVUkkgKyA3OyAv
LyA3OiBzdHJsZW4oImZpbGU6Ly8iKSwgbGF5b3V0RGlyOiAiL2RldmVsb3Blci9MYXlvdXRUZXN0
cy8iCisKKyAgICBzaXplX3QgaUVuZCA9IHRlc3ROYW1lLnJldmVyc2VGaW5kKCcuJyk7CisKKyAg
ICBXVEY6OlN0cmluZyBuYW1lV2l0aG91dEV4dGVuc2lvbiA9IHRlc3ROYW1lLnN1YnN0cmluZygw
LCBpRW5kKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50b2ZTdXJmaXhlczsgKytpKQor
ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50b2ZFeHRlbnNpb25zOyArK2opIHsKKyAg
ICAgICAgICAgIFdURjo6U3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlvdXREaXIgKyBuYW1lV2l0
aG91dEV4dGVuc2lvbiArIHN1cmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tqXTsKKyAgICAgICAgICAg
IGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwgRl9PSykpIHsKKyAgICAg
ICAgICAgICAgICBtX3JlZlRlc3RzLmFwcGVuZChuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1cmZp
eGVzW2ldICsgZXh0ZW5zaW9uc1tqXSk7CisgICAgICAgICAgICAgICAgKytjb3VudFJlZlRlc3Rz
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICByZXR1cm4gY291bnRSZWZUZXN0czsK
K30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3QoKQoreworICAgIGlmIChp
c0hUVFBUZXN0KG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCkpKSB7CisgICAgICAgIG1fY3Vy
cmVudEh0dHBUZXN0ID0gbV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKTsKKyAgICAgICAgbV9j
dXJyZW50SHR0cFRlc3QucmVtb3ZlKDAsIHN0cmxlbihodHRwVGVzdFN5bnRheCkpOworICAgICAg
ICBydW5UZXN0KGh0dHBQcmVmaXhVUkwgKyBtX2N1cnJlbnRIdHRwVGVzdCk7CisgICAgfQorICAg
IGVsc2UKKyAgICAgICAgcnVuVGVzdChrU0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJyZW50VGVz
dCk7Cit9CisKIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKCkKIHsKICAg
ICAvLyBGSVhNRTogZmZsdXNoIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJ1dCBpcyB0ZW1wb3Jh
cmlseSByZXF1aXJlZCBkdWUgdG8gYSBidWcgaW4gc3RkaW8gb3V0cHV0LgpAQCAtMjAzLDE3ICsy
NDQsMjIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgIGZm
bHVzaChzdGRlcnIpOwogCiAgICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90ZXN0cy5lbmQoKSAt
IDEpIHsKLSAgICAgICAgZG9uZURydCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIFJ1
biByZWYtdGVzdHMgYWZ0ZXIgcmVhbCB0ZXN0cyB3ZXJlIGZpbmlzaGVkCisgICAgICAgIGlmKCFt
X3J1bm5pbmdSZWZUZXN0cyAmJiAhbV9yZWZUZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IG1fdGVzdHMuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVzdHMuYXBwZW5kKG1fcmVmVGVzdHMp
OworICAgICAgICAgICAgbV9yZWZUZXN0cy5jbGVhcigpOworICAgICAgICAgICAgbV9jdXJyZW50
VGVzdCA9IG1fdGVzdHMuYmVnaW4oKTsKKyAgICAgICAgICAgIG1fcnVubmluZ1JlZlRlc3RzID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvbmVEcnQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1fY3VycmVu
dFRlc3QrKzsKIAotICAgIG1fY3VycmVudFRlc3QrKzsKLSAgICBpZiAoaXNIVFRQVGVzdChtX2N1
cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewotICAgICAgICBtX2N1cnJlbnRIdHRwVGVzdCA9
IG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCk7Ci0gICAgICAgIG1fY3VycmVudEh0dHBUZXN0
LnJlbW92ZSgwLCBzdHJsZW4oaHR0cFRlc3RTeW50YXgpKTsKLSAgICAgICAgcnVuVGVzdChodHRw
UHJlZml4VVJMICsgbV9jdXJyZW50SHR0cFRlc3QpOwotICAgIH0gZWxzZQotICAgICAgICBydW5U
ZXN0KGtTRENMYXlvdXRUZXN0c1VSSSArICptX2N1cnJlbnRUZXN0KTsKKyAgICBydW5DdXJyZW50
VGVzdCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZygpCkBAIC0zMDIsMTMgKzM0OCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6
OnJ1blRlc3RzKCkKICAgICAgICAgZG9uZURydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
Ci0gICAgaWYgKGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKLSAg
ICAgICAgbV9jdXJyZW50SHR0cFRlc3QgPSBtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpOwot
ICAgICAgICBtX2N1cnJlbnRIdHRwVGVzdC5yZW1vdmUoMCwgc3RybGVuKGh0dHBUZXN0U3ludGF4
KSk7Ci0gICAgICAgIHJ1blRlc3QoaHR0cFByZWZpeFVSTCArIG1fY3VycmVudEh0dHBUZXN0KTsK
LSAgICB9IGVsc2UKLSAgICAgICAgcnVuVGVzdChrU0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJy
ZW50VGVzdCk7CisgICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIAogCkBAIC0zNjIsNiArNDAyLDEx
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQogICAgIHMuc3BsaXQoIlxu
IiwgZmlsZXMpOwogCiAgICAgbV90ZXN0cyA9IGZpbGVzOworCisgICAgLy8gRmluZCByZWYtdGVz
dHMgZm9yIGVhY2ggb2YgdGhlIHJlYWwgdGVzdHMsIG9uZSB0ZXN0IG1heSBoYXZlIG11bHRpcGxl
IGV4cGVjdGVkIHJlZi10ZXN0cworICAgIC8vIGFuZCBtdWx0aXBsZSBtaXNtYXRjaCByZWYtdGVz
dHMKKyAgICBmb3IgKFZlY3RvcjxXVEY6OlN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBmaWxlcy5i
ZWdpbigpOyBmaWxlcy5lbmQoKSAhPSBpdGVyOyArK2l0ZXIpCisgICAgICAgIGdldFJlZlRlc3Rz
KCppdGVyKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZTo6aW52YWxpZGF0ZUFueVByZXZpb3Vz
V2FpdFRvRHVtcFdhdGNoZG9nKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGRiMmY2OWEuLjQ2
ZGEyZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJl
bmRlclRyZWVCbGFja0JlcnJ5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBydW5UZXN0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpOwogICAg
IHZvaWQgcnVuVGVzdHMoKTsKKyAgICB2b2lkIHJ1bkN1cnJlbnRUZXN0KCk7CisgICAgaW50IGdl
dFJlZlRlc3RzKGNvbnN0IFdURjo6U3RyaW5nJiB0ZXN0TmFtZSk7CiAKICAgICB2b2lkIHByb2Nl
c3NXb3JrKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiopOwogCkBAIC0xMjUsNiArMTI3
LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV90ZXN0czsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+OjppdGVyYXRvciBtX2N1cnJlbnRUZXN0OworICAgIFZlY3RvcjxX
VEY6OlN0cmluZz4gbV9yZWZUZXN0czsgLy8gUmVmZXJlbmNlIHRlc3RzIGZvciBjdXJyZW50IHRl
c3QKIAogICAgIFdURjo6U3RyaW5nIG1fcmVzdWx0c0RpcjsKICAgICBXVEY6OlN0cmluZyBtX2lu
ZGV4RmlsZTsKQEAgLTE0MSw2ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FjY2Vw
dHNFZGl0aW5nOwogICAgIGJvb2wgbV9sb2FkRmluaXNoZWQ7CisgICAgYm9vbCBtX3J1bm5pbmdS
ZWZUZXN0czsKICAgICBzdGF0aWMgYm9vbCBzX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQ7CiB9OwogfQotLSAKMS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141094</attachid>
            <date>2012-05-09 23:56:12 -0700</date>
            <delta_ts>2012-05-10 23:42:14 -0700</delta_ts>
            <desc>Git patch updated for code style</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree.cpp-to-also-run-ref.patch</filename>
            <type>text/plain</type>
            <size>8177</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA2ZDgyZmNiNTJlN2Q5NWYyOTY1OTBhYzcxMzJlNmYzNTI4YTgyNGIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE5OjAzOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZS5jcHAgdG8gYWxzbyBydW4gcmVmLXRl
c3RzCiBpZiB0aGVyZSdyZSBhbnkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjA1NQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWYtdGVzdHMgYXJlIHRl
c3RzIHdpdGggc3VyZml4ICItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1pc21hdGNoIiBhbmQgYSB2
YWxpZApleHRlbnNpb24oIi5odG1sIiwgIi5odG0iLCBldGMuKS4KQ3VycmVudGx5IHRvcmNoLWxh
dW5jaGVyIG9ubHkgcnVuIHRlc3RzIHBhcnNlZCBieSBOUldULCB3aXRoIHJlZi10ZXN0cwpleGNs
dWRlZC4gQXMgYSByZXN1bHQsIGlmIGEgdGVzdCBoYXZlIHJlZi10ZXN0cyAod2hpY2ggd2VyZSBu
b3QgcnVuKSwgb3VyCkR1bXBSZW5kZXJUcmVlIFBlcmwgc2NyaXB0IHdpbGwgdGhpbmsgdGhlcmUn
cyBhIGNyYXNoIGFuZCBleGl0IHdpdGggY29kZSAxLgpTbyBOUldUIHdpbGwgcmVwb3J0IHRoZSBy
ZXN1bHQgYXMgQ1JBU0guCldlIG5lZWQgdG8gdXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0byB0
cnkgdG8gZmluZCByZWYtdGVzdHMgYW5kIHJ1biB0aGVtLgoKKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OmdldFJlZlRlc3RzKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cyk6CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKER1bXBSZW5kZXJUcmVlKToKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrKysrCiBUb29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAgNzUgKysrKysrKysr
KysrKysrLS0tLQogLi4uL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmggICAg
ICAgICAgfCAgICA0ICsKIDMgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMTYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDJhNWRh
MjkuLmQ2NjNjYjAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0wNS0wOSAgWGlhb2JvIFdhbmcgIDx4YndhbmdAdG9yY2htb2JpbGUu
Y29tLmNuPgorICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0
byBhbHNvIHJ1biByZWYtdGVzdHMgaWYgdGhlcmUncmUgYW55CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZi10ZXN0cyBhcmUgdGVzdHMgd2l0aCBzdXJm
aXggIi1leHBlY3RlZCIsICItZXhwZWN0ZWQtbWlzbWF0Y2giIGFuZCBhIHZhbGlkCisgICAgICAg
IGV4dGVuc2lvbigiLmh0bWwiLCAiLmh0bSIsIGV0Yy4pLgorICAgICAgICBDdXJyZW50bHkgdG9y
Y2gtbGF1bmNoZXIgb25seSBydW4gdGVzdHMgcGFyc2VkIGJ5IE5SV1QsIHdpdGggcmVmLXRlc3Rz
CisgICAgICAgIGV4Y2x1ZGVkLiBBcyBhIHJlc3VsdCwgaWYgYSB0ZXN0IGhhdmUgcmVmLXRlc3Rz
ICh3aGljaCB3ZXJlIG5vdCBydW4pLCBvdXIKKyAgICAgICAgRHVtcFJlbmRlclRyZWUgUGVybCBz
Y3JpcHQgd2lsbCB0aGluayB0aGVyZSdzIGEgY3Jhc2ggYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisg
ICAgICAgIFNvIE5SV1Qgd2lsbCByZXBvcnQgdGhlIHJlc3VsdCBhcyBDUkFTSC4KKyAgICAgICAg
V2UgbmVlZCB0byB1cGRhdGUgRHVtcFJlbmRlclRyZWUuY3BwIHRvIHRyeSB0byBmaW5kIHJlZi10
ZXN0cyBhbmQgcnVuIHRoZW0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdU
ZXN0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5U
ZXN0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToKKwogMjAxMi0wNS0wOSAg
SHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBV
c2Ugc3VpdGFibGUgdmlld3BvcnQgdmFsdWVzIG9uIFhIVE1MLU1QIHBhZ2VzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBk
ZDM2NzZhLi5jOGI2YWRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTQ3LDYgKzE0Nyw3IEBAIER1bXBSZW5kZXJUcmVl
OjpEdW1wUmVuZGVyVHJlZShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIHBhZ2UpCiAgICAg
LCBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKHRoaXMsICZEdW1wUmVuZGVyVHJlZTo6d2FpdFRv
RHVtcFdhdGNoZG9nVGltZXJGaXJlZCkKICAgICAsIG1fd29ya1RpbWVyKHRoaXMsICZEdW1wUmVu
ZGVyVHJlZTo6cHJvY2Vzc1dvcmspCiAgICAgLCBtX2FjY2VwdHNFZGl0aW5nKHRydWUpCisgICAg
LCBtX3J1bm5pbmdSZWZUZXN0cyhmYWxzZSkKIHsKICAgICBXVEY6OlN0cmluZyBzZGNhcmRQYXRo
ID0gU0RDQVJEX1BBVEg7CiAgICAgbV9yZXN1bHRzRGlyID0gc2RjYXJkUGF0aCArICIvcmVzdWx0
cy8iOwpAQCAtMTk2LDE4ICsxOTcsMzcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZG9uZURydCgp
CiAgICAgKG1fcGFnZS0+Y2xpZW50KCkpLT5ub3RpZnlSdW5MYXlvdXRUZXN0c0ZpbmlzaGVkKCk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKCkKK2ludCBEdW1w
UmVuZGVyVHJlZTo6Z2V0UmVmVGVzdHMoY29uc3QgV1RGOjpTdHJpbmcmIHRlc3ROYW1lKQogewot
ICAgIC8vIEZJWE1FOiBmZmx1c2ggc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYnV0IGlzIHRlbXBv
cmFyaWx5IHJlcXVpcmVkIGR1ZSB0byBhIGJ1ZyBpbiBzdGRpbyBvdXRwdXQuCi0gICAgZmZsdXNo
KHN0ZG91dCk7Ci0gICAgZmZsdXNoKHN0ZGVycik7CisgICAgaW50IGNvdW50UmVmVGVzdHMgPSAw
OworICAgIGlmIChtX3J1bm5pbmdSZWZUZXN0cykKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBp
ZiAobV9jdXJyZW50VGVzdCA+PSBtX3Rlc3RzLmVuZCgpIC0gMSkgewotICAgICAgICBkb25lRHJ0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY29uc3QgY2hhciogc3VyZml4ZXNbXSA9
IHsiLWV4cGVjdGVkIiwgIi1leHBlY3RlZC1taXNtYXRjaCJ9OworICAgIGNvbnN0IGludCBjb3Vu
dG9mU3VyZml4ZXMgPSBzaXplb2Yoc3VyZml4ZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAg
ICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgaGF2ZSByZWYgdGVzdHMgd2l0aCAuaHRtbCBl
eHRlbnNpb24sIHlvdSBtYW55IG5lZWQgdG8gYWRkIG1vcmUKKyAgICAvLyB3aGVuIHRoZXkgaGF2
ZSBtb3JlIGV4dGVuc2lvbnMgKC5odG0sIC5zaHRtbCwgLnhodG1sLCBldGMuKQorICAgIGNvbnN0
IGNoYXIqIGV4dGVuc2lvbnNbXSA9IHsiLmh0bWwifTsKKyAgICBjb25zdCBpbnQgY291bnRvZkV4
dGVuc2lvbnMgPSBzaXplb2YoZXh0ZW5zaW9ucykgLyBzaXplb2YoY29uc3QgY2hhciopOworICAg
IFdURjo6U3RyaW5nIGxheW91dERpciA9IGtTRENMYXlvdXRUZXN0c1VSSSArIDc7IC8vIDc6IHN0
cmxlbigiZmlsZTovLyIpLCBsYXlvdXREaXI6ICIvZGV2ZWxvcGVyL0xheW91dFRlc3RzLyIKKwor
ICAgIHNpemVfdCBpRW5kID0gdGVzdE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKIAotICAgIG1fY3Vy
cmVudFRlc3QrKzsKKyAgICBXVEY6OlN0cmluZyBuYW1lV2l0aG91dEV4dGVuc2lvbiA9IHRlc3RO
YW1lLnN1YnN0cmluZygwLCBpRW5kKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50b2ZT
dXJmaXhlczsgKytpKQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50b2ZFeHRlbnNp
b25zOyArK2opIHsKKyAgICAgICAgICAgIFdURjo6U3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlv
dXREaXIgKyBuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1cmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tq
XTsKKyAgICAgICAgICAgIGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwg
Rl9PSykpIHsKKyAgICAgICAgICAgICAgICBtX3JlZlRlc3RzLmFwcGVuZChuYW1lV2l0aG91dEV4
dGVuc2lvbiArIHN1cmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tqXSk7CisgICAgICAgICAgICAgICAg
Kytjb3VudFJlZlRlc3RzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICByZXR1cm4g
Y291bnRSZWZUZXN0czsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3Qo
KQorewogICAgIGlmIChpc0hUVFBUZXN0KG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCkpKSB7
CiAgICAgICAgIG1fY3VycmVudEh0dHBUZXN0ID0gbV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEo
KTsKICAgICAgICAgbV9jdXJyZW50SHR0cFRlc3QucmVtb3ZlKDAsIHN0cmxlbihodHRwVGVzdFN5
bnRheCkpOwpAQCAtMjE2LDYgKzIzNiwzMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5SZW1h
aW5pbmdUZXN0cygpCiAgICAgICAgIHJ1blRlc3Qoa1NEQ0xheW91dFRlc3RzVVJJICsgKm1fY3Vy
cmVudFRlc3QpOwogfQogCit2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cygp
Cit7CisgICAgLy8gRklYTUU6IGZmbHVzaCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBidXQgaXMg
dGVtcG9yYXJpbHkgcmVxdWlyZWQgZHVlIHRvIGEgYnVnIGluIHN0ZGlvIG91dHB1dC4KKyAgICBm
Zmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKworICAgIGlmIChtX2N1cnJlbnRU
ZXN0ID49IG1fdGVzdHMuZW5kKCkgLSAxKSB7CisgICAgICAgIC8vIFJ1biByZWYtdGVzdHMgYWZ0
ZXIgcmVhbCB0ZXN0cyB3ZXJlIGZpbmlzaGVkCisgICAgICAgIGlmICghbV9ydW5uaW5nUmVmVGVz
dHMgJiYgIW1fcmVmVGVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX3Rlc3RzLmNsZWFy
KCk7CisgICAgICAgICAgICBtX3Rlc3RzLmFwcGVuZChtX3JlZlRlc3RzKTsKKyAgICAgICAgICAg
IG1fcmVmVGVzdHMuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fY3VycmVudFRlc3QgPSBtX3Rlc3Rz
LmJlZ2luKCk7CisgICAgICAgICAgICBtX3J1bm5pbmdSZWZUZXN0cyA9IHRydWU7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkb25lRHJ0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9jdXJyZW50VGVzdCsrOworCisgICAgcnVu
Q3VycmVudFRlc3QoKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogewogICAgIGlmIChpc0hUVFBUZXN0KG1fY3VycmVudFRl
c3QtPnV0ZjgoKS5kYXRhKCkpKQpAQCAtMzAyLDEzICszNDYsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cygpCiAgICAgICAgIGRvbmVEcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLQotICAgIGlmIChpc0hUVFBUZXN0KG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCkpKSB7
Ci0gICAgICAgIG1fY3VycmVudEh0dHBUZXN0ID0gbV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEo
KTsKLSAgICAgICAgbV9jdXJyZW50SHR0cFRlc3QucmVtb3ZlKDAsIHN0cmxlbihodHRwVGVzdFN5
bnRheCkpOwotICAgICAgICBydW5UZXN0KGh0dHBQcmVmaXhVUkwgKyBtX2N1cnJlbnRIdHRwVGVz
dCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJ1blRlc3Qoa1NEQ0xheW91dFRlc3RzVVJJICsgKm1f
Y3VycmVudFRlc3QpOworICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiB9CiAKIApAQCAtMzYyLDYgKzQw
MCwxMSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpnZXRUZXN0c1RvUnVuKCkKICAgICBzLnNwbGl0
KCJcbiIsIGZpbGVzKTsKIAogICAgIG1fdGVzdHMgPSBmaWxlczsKKworICAgIC8vIEZpbmQgcmVm
LXRlc3RzIGZvciBlYWNoIG9mIHRoZSByZWFsIHRlc3RzLCBvbmUgdGVzdCBtYXkgaGF2ZSBtdWx0
aXBsZSBleHBlY3RlZCByZWYtdGVzdHMKKyAgICAvLyBhbmQgbXVsdGlwbGUgbWlzbWF0Y2ggcmVm
LXRlc3RzCisgICAgZm9yIChWZWN0b3I8V1RGOjpTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gZmls
ZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkgIT0gaXRlcjsgKytpdGVyKQorICAgICAgICBnZXRSZWZU
ZXN0cygqaXRlcik7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWU6OmludmFsaWRhdGVBbnlQcmV2
aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaAppbmRleCBkYjJmNjlh
Li40NmRhMmRiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgcnVuVGVzdChjb25zdCBXVEY6OlN0cmluZyYgdXJsKTsK
ICAgICB2b2lkIHJ1blRlc3RzKCk7CisgICAgdm9pZCBydW5DdXJyZW50VGVzdCgpOworICAgIGlu
dCBnZXRSZWZUZXN0cyhjb25zdCBXVEY6OlN0cmluZyYgdGVzdE5hbWUpOwogCiAgICAgdm9pZCBw
cm9jZXNzV29yayhXZWJDb3JlOjpUaW1lcjxEdW1wUmVuZGVyVHJlZT4qKTsKIApAQCAtMTI1LDYg
KzEyNyw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fdGVzdHM7CiAg
ICAgVmVjdG9yPFdURjo6U3RyaW5nPjo6aXRlcmF0b3IgbV9jdXJyZW50VGVzdDsKKyAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fcmVmVGVzdHM7IC8vIFJlZmVyZW5jZSB0ZXN0cyBmb3IgY3VycmVu
dCB0ZXN0CiAKICAgICBXVEY6OlN0cmluZyBtX3Jlc3VsdHNEaXI7CiAgICAgV1RGOjpTdHJpbmcg
bV9pbmRleEZpbGU7CkBAIC0xNDEsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9h
Y2NlcHRzRWRpdGluZzsKICAgICBib29sIG1fbG9hZEZpbmlzaGVkOworICAgIGJvb2wgbV9ydW5u
aW5nUmVmVGVzdHM7CiAgICAgc3RhdGljIGJvb2wgc19zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkOwogfTsKIH0KLS0gCjEuNy42Cgo=
</data>
<flag name="review"
          id="147182"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141333</attachid>
            <date>2012-05-10 23:42:14 -0700</date>
            <delta_ts>2013-05-21 20:08:27 -0700</delta_ts>
            <desc>Git patch updated for comments from Bob and Ming</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree.cpp-to-also-run-ref.patch</filename>
            <type>text/plain</type>
            <size>25426</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBkZGZjZjkwODc0MGU3ZjQxNTZhM2MwMDIwMWU2YWMxNmE3NzdjOTMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE5OjAzOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZS5jcHAgdG8gYWxzbyBydW4gcmVmLXRl
c3RzCiBpZiB0aGVyZSdyZSBhbnkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjA1NQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWYtdGVzdHMgYXJlIHRl
c3RzIHdpdGggc3VyZml4ICItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1pc21hdGNoIiBhbmQgYSB2
YWxpZApleHRlbnNpb24oIi5odG1sIiwgIi5odG0iLCBldGMuKS4KQ3VycmVudGx5IHRvcmNoLWxh
dW5jaGVyIG9ubHkgcnVuIHRlc3RzIHBhcnNlZCBieSBOUldULCB3aXRoIHJlZi10ZXN0cwpleGNs
dWRlZC4gQXMgYSByZXN1bHQsIGlmIGEgdGVzdCBoYXZlIHJlZi10ZXN0cyAod2hpY2ggd2VyZSBu
b3QgcnVuKSwgb3VyCkR1bXBSZW5kZXJUcmVlIFBlcmwgc2NyaXB0IHdpbGwgdGhpbmsgdGhlcmUn
cyBhIGNyYXNoIGFuZCBleGl0IHdpdGggY29kZSAxLgpTbyBOUldUIHdpbGwgcmVwb3J0IHRoZSBy
ZXN1bHQgYXMgQ1JBU0guCldlIG5lZWQgdG8gdXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0byB0
cnkgdG8gZmluZCByZWYtdGVzdHMgYW5kIHJ1biB0aGVtLgoKKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OmdldFJlZlRlc3RzKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cyk6CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKER1bXBSZW5kZXJUcmVlKToKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKysrCiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAxNzMgKysrKysrKysrKysr
LS0tLS0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oICAgICAg
ICAgIHwgICA0NiArKystLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyksIDg4
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAy
YTVkYTI5Li5hNzk4NjQ5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDUtMDkgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIER1bXBSZW5kZXJUcmVl
LmNwcCB0byBhbHNvIHJ1biByZWYtdGVzdHMgaWYgdGhlcmUncmUgYW55CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZi10ZXN0cyBhcmUgdGVzdHMgd2l0
aCBzdXJmaXggIi1leHBlY3RlZCIsICItZXhwZWN0ZWQtbWlzbWF0Y2giIGFuZCBhIHZhbGlkCisg
ICAgICAgIGV4dGVuc2lvbigiLmh0bWwiLCAiLmh0bSIsIGV0Yy4pLgorICAgICAgICBDdXJyZW50
bHkgdG9yY2gtbGF1bmNoZXIgb25seSBydW4gdGVzdHMgcGFyc2VkIGJ5IE5SV1QsIHdpdGggcmVm
LXRlc3RzCisgICAgICAgIGV4Y2x1ZGVkLiBBcyBhIHJlc3VsdCwgaWYgYSB0ZXN0IGhhdmUgcmVm
LXRlc3RzICh3aGljaCB3ZXJlIG5vdCBydW4pLCBvdXIKKyAgICAgICAgRHVtcFJlbmRlclRyZWUg
UGVybCBzY3JpcHQgd2lsbCB0aGluayB0aGVyZSdzIGEgY3Jhc2ggYW5kIGV4aXQgd2l0aCBjb2Rl
IDEuCisgICAgICAgIFNvIE5SV1Qgd2lsbCByZXBvcnQgdGhlIHJlc3VsdCBhcyBDUkFTSC4KKyAg
ICAgICAgV2UgbmVlZCB0byB1cGRhdGUgRHVtcFJlbmRlclRyZWUuY3BwIHRvIHRyeSB0byBmaW5k
IHJlZi10ZXN0cyBhbmQgcnVuIHRoZW0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVz
dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5SZW1h
aW5pbmdUZXN0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVl
OjpydW5UZXN0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVu
ZGVyVHJlZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToKKwogMjAxMi0w
NS0wOSAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBVc2Ugc3VpdGFibGUgdmlld3BvcnQgdmFsdWVzIG9uIFhIVE1MLU1QIHBhZ2VzLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApp
bmRleCBkZDM2NzZhLi5lY2NiYzIzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtODIsMTkgKzgyLDE5IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBodHRwUHJlZml4VVJMID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC8iOwogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgV1RGOjpTdHJpbmcgZHJ0QWZmaW5pdHlEZXNj
cmlwdGlvbihXZWJDb3JlOjpFQWZmaW5pdHkgYWZmaW5pdHkpCitzdGF0aWMgU3RyaW5nIGRydEFm
ZmluaXR5RGVzY3JpcHRpb24oV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQogewogICAgIGlm
IChhZmZpbml0eSA9PSBXZWJDb3JlOjpVUFNUUkVBTSkKLSAgICAgICAgcmV0dXJuIFdURjo6U3Ry
aW5nKCJOU1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0iKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygiTlNTZWxlY3Rpb25BZmZpbml0eVVwc3RyZWFtIik7CiAgICAgaWYgKGFmZmluaXR5ID09IFdl
YkNvcmU6OkRPV05TVFJFQU0pCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZygiTlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0iKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygiTlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0iKTsKICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyBXVEY6
OlN0cmluZyBkcnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2RlKQorc3RhdGljIFN0cmluZyBk
cnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2RlKQogewogICAgIFdlYkNvcmU6Ok5vZGUqIHBh
cmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBXVEY6OlN0cmluZyBzdHIgPSBXVEY6OlN0
cmluZzo6Zm9ybWF0KCIlcyIsIG5vZGUtPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
U3RyaW5nIHN0ciA9IFN0cmluZzo6Zm9ybWF0KCIlcyIsIG5vZGUtPm5vZGVOYW1lKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgaWYgKHBhcmVudCkgewogICAgICAgICBzdHIuYXBwZW5kKCIgPiAiKTsK
ICAgICAgICAgc3RyLmFwcGVuZChkcnREdW1wUGF0aChwYXJlbnQpKTsKQEAgLTEwMiwyNyArMTAy
LDI3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkcnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2Rl
KQogICAgIHJldHVybiBzdHI7CiB9CiAKLXN0YXRpYyBXVEY6OlN0cmluZyBkcnRSYW5nZURlc2Ny
aXB0aW9uKFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKK3N0YXRpYyBTdHJpbmcgZHJ0UmFuZ2VEZXNj
cmlwdGlvbihXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuICIobnVsbCkiOwotICAgIHJldHVybiBXVEY6OlN0cmluZzo6Zm9ybWF0KCJyYW5n
ZSBmcm9tICVkIG9mICVzIHRvICVkIG9mICVzIiwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGRydER1
bXBQYXRoKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKS51dGY4KCkuZGF0YSgpLCByYW5nZS0+ZW5k
T2Zmc2V0KCksIGRydER1bXBQYXRoKHJhbmdlLT5lbmRDb250YWluZXIoKSkudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyYW5nZSBmcm9tICVkIG9mICVzIHRvICVk
IG9mICVzIiwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGRydER1bXBQYXRoKHJhbmdlLT5zdGFydENv
bnRhaW5lcigpKS51dGY4KCkuZGF0YSgpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGRydER1bXBQYXRo
KHJhbmdlLT5lbmRDb250YWluZXIoKSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXN0YXRpYyBXVEY6
OlN0cmluZyBkcnRGcmFtZURlc2NyaXB0aW9uKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3N0YXRp
YyBTdHJpbmcgZHJ0RnJhbWVEZXNjcmlwdGlvbihXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0g
ICAgV1RGOjpTdHJpbmcgbmFtZSA9IGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmco
KTsKKyAgICBTdHJpbmcgbmFtZSA9IGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmco
KTsKICAgICBpZiAoZnJhbWUgPT0gbWFpbkZyYW1lKSB7CiAgICAgICAgIGlmICghbmFtZS5pc051
bGwoKSAmJiBuYW1lLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpm
b3JtYXQoIm1haW4gZnJhbWUgXCIlc1wiIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWFpbiBmcmFtZSBcIiVzXCIiLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gIm1haW4gZnJhbWUiOwogICAgIH0KICAgICBpZiAo
IW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZzo6Zm9ybWF0KCJmcmFt
ZSBcIiVzXCIiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoImZyYW1lIFwiJXNcIiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuICJm
cmFtZSAoYW5vbnltb3VzKSI7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9hZERl
bGVnYXRlcyhjb25zdCBXVEY6OlN0cmluZyYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkTG9nRnJh
bWVMb2FkRGVsZWdhdGVzKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHJldHVybiB1cmwuY29u
dGFpbnMoImxvYWRpbmcvIik7CiB9CkBAIC0xMzMsNyArMTMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBEdW1wUmVuZGVyVHJlZSogRHVtcFJlbmRlclRyZWU6OnNfY3VycmVudEluc3RhbmNlID0g
MDsKIGJvb2wgRHVtcFJlbmRlclRyZWU6OnNfc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCA9IGZhbHNlOwogCi1zdGF0aWMgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdURjo6U3RyaW5nJiBm
aWxlTmFtZSkKK3N0YXRpYyB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IHsKICAgICBGSUxFKiBmZCA9IGZvcGVuKGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICJ3YiIpOwog
ICAgIGZjbG9zZShmZCk7CkBAIC0xNDcsOCArMTQ3LDkgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBS
ZW5kZXJUcmVlKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAgICAsIG1fd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0
Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVl
Ojpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKKyAgICAsIG1fcnVu
bmluZ1JlZlRlc3RzKGZhbHNlKQogewotICAgIFdURjo6U3RyaW5nIHNkY2FyZFBhdGggPSBTRENB
UkRfUEFUSDsKKyAgICBTdHJpbmcgc2RjYXJkUGF0aCA9IFNEQ0FSRF9QQVRIOwogICAgIG1fcmVz
dWx0c0RpciA9IHNkY2FyZFBhdGggKyAiL3Jlc3VsdHMvIjsKICAgICBtX2luZGV4RmlsZSA9IHNk
Y2FyZFBhdGggKyAiL2luZGV4LmRydCI7CiAgICAgbV9kb25lRmlsZSA9IHNkY2FyZFBhdGggKyAi
L2RvbmUiOwpAQCAtMTY0LDcgKzE2NSw3IEBAIER1bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRy
ZWUoKQogICAgIGRlbGV0ZSBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogfQogCi12b2lkIER1
bXBSZW5kZXJUcmVlOjpydW5UZXN0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCit2b2lkIER1bXBS
ZW5kZXJUcmVlOjpydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGNyZWF0ZUZpbGUo
bV9yZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAiLmR1bXAuY3Jhc2giKTsKIApAQCAtMTcy
LDggKzE3Myw4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3QoY29uc3QgV1RGOjpTdHJp
bmcmIHVybCkKICAgICByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogICAg
IGlmIChzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXModXJsKSkKICAgICAgICAgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwotICAgIFdURjo6
U3RyaW5nIHN0ZG91dEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZHVt
cCI7Ci0gICAgV1RGOjpTdHJpbmcgc3RkZXJyRmlsZSA9IG1fcmVzdWx0c0RpciArICptX2N1cnJl
bnRUZXN0ICsgIi5zdGRlcnIiOworICAgIFN0cmluZyBzdGRvdXRGaWxlID0gbV9yZXN1bHRzRGly
ICsgKm1fY3VycmVudFRlc3QgKyAiLmR1bXAiOworICAgIFN0cmluZyBzdGRlcnJGaWxlID0gbV9y
ZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAiLnN0ZGVyciI7CiAKICAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdGRvdXQgYW5kIHN0ZGVyciBoZXJlIGJ1
dCBhcmVuJ3QgZG9pbmcKICAgICAvLyB0aGF0IHlldCBkdWUgdG8gaXNzdWVzIHdpdGggZHVwLCBl
dGMuCkBAIC0xOTYsMTggKzE5NywzMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkb25lRHJ0KCkK
ICAgICAobV9wYWdlLT5jbGllbnQoKSktPm5vdGlmeVJ1bkxheW91dFRlc3RzRmluaXNoZWQoKTsK
IH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQordm9pZCBEdW1w
UmVuZGVyVHJlZTo6Z2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKIHsKLSAgICAv
LyBGSVhNRTogZmZsdXNoIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJ1dCBpcyB0ZW1wb3Jhcmls
eSByZXF1aXJlZCBkdWUgdG8gYSBidWcgaW4gc3RkaW8gb3V0cHV0LgotICAgIGZmbHVzaChzdGRv
dXQpOwotICAgIGZmbHVzaChzdGRlcnIpOwotCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90
ZXN0cy5lbmQoKSAtIDEpIHsKLSAgICAgICAgZG9uZURydCgpOworICAgIGlmIChtX3J1bm5pbmdS
ZWZUZXN0cykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIG1fY3VycmVudFRlc3QrKzsK
KyAgICBjb25zdCBjaGFyKiBzdWZmaXhlc1tdID0geyItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1p
c21hdGNoIn07CisgICAgY29uc3QgaW50IGNvdW50b2ZTdWZmaXhlcyA9IHNpemVvZihzdWZmaXhl
cykgLyBzaXplb2YoY29uc3QgY2hhciopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25s
eSBoYXZlIHJlZiB0ZXN0cyB3aXRoIC5odG1sIGV4dGVuc2lvbiwgeW91IG1hbnkgbmVlZCB0byBh
ZGQgbW9yZQorICAgIC8vIHdoZW4gdGhleSBoYXZlIG1vcmUgZXh0ZW5zaW9ucyAoLmh0bSwgLnNo
dG1sLCAueGh0bWwsIGV0Yy4pCisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uc1tdID0geyIuaHRt
bCJ9OworICAgIGNvbnN0IGludCBjb3VudG9mRXh0ZW5zaW9ucyA9IHNpemVvZihleHRlbnNpb25z
KSAvIHNpemVvZihjb25zdCBjaGFyKik7CisgICAgU3RyaW5nIGxheW91dERpciA9IGtTRENMYXlv
dXRUZXN0c1VSSSArIDc7IC8vIDc6IHN0cmxlbigiZmlsZTovLyIpLCBsYXlvdXREaXI6ICIvZGV2
ZWxvcGVyL0xheW91dFRlc3RzLyIKKworICAgIHNpemVfdCBpRW5kID0gdGVzdE5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKKworICAgIFN0cmluZyBuYW1lV2l0aG91dEV4dGVuc2lvbiA9IHRlc3ROYW1l
LnN1YnN0cmluZygwLCBpRW5kKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50b2ZTdWZm
aXhlczsgKytpKQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50b2ZFeHRlbnNpb25z
OyArK2opIHsKKyAgICAgICAgICAgIFN0cmluZyBjYW5kaWRhdGVGaWxlID0gbGF5b3V0RGlyICsg
bmFtZVdpdGhvdXRFeHRlbnNpb24gKyBzdWZmaXhlc1tpXSArIGV4dGVuc2lvbnNbal07CisgICAg
ICAgICAgICBpZiAoIWFjY2VzcyhjYW5kaWRhdGVGaWxlLnV0ZjgoKS5kYXRhKCksIEZfT0spKQor
ICAgICAgICAgICAgICAgIG1fcmVmVGVzdHMuYXBwZW5kKG5hbWVXaXRob3V0RXh0ZW5zaW9uICsg
c3VmZml4ZXNbaV0gKyBleHRlbnNpb25zW2pdKTsKKyAgICAgICAgfQorCit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKK3sKICAgICBpZiAoaXNIVFRQVGVzdChtX2N1
cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewogICAgICAgICBtX2N1cnJlbnRIdHRwVGVzdCA9
IG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCk7CiAgICAgICAgIG1fY3VycmVudEh0dHBUZXN0
LnJlbW92ZSgwLCBzdHJsZW4oaHR0cFRlc3RTeW50YXgpKTsKQEAgLTIxNiw2ICsyMzIsMzAgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgICAgICBydW5UZXN0
KGtTRENMYXlvdXRUZXN0c1VSSSArICptX2N1cnJlbnRUZXN0KTsKIH0KIAordm9pZCBEdW1wUmVu
ZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQoreworICAgIC8vIEZJWE1FOiBmZmx1c2ggc2hv
dWxkIG5vdCBiZSBuZWNlc3NhcnkgYnV0IGlzIHRlbXBvcmFyaWx5IHJlcXVpcmVkIGR1ZSB0byBh
IGJ1ZyBpbiBzdGRpbyBvdXRwdXQuCisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZsdXNoKHN0
ZGVycik7CisKKyAgICBpZiAobV9jdXJyZW50VGVzdCA+PSBtX3Rlc3RzLmVuZCgpIC0gMSkgewor
ICAgICAgICAvLyBSdW4gcmVmLXRlc3RzIGFmdGVyIHJlYWwgdGVzdHMgd2VyZSBmaW5pc2hlZAor
ICAgICAgICBpZiAoIW1fcnVubmluZ1JlZlRlc3RzICYmICFtX3JlZlRlc3RzLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgbV90ZXN0cy5jbGVhcigpOworICAgICAgICAgICAgbV90ZXN0cy5hcHBl
bmQobV9yZWZUZXN0cyk7CisgICAgICAgICAgICBtX3JlZlRlc3RzLmNsZWFyKCk7CisgICAgICAg
ICAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgICAgICAgICAgbV9ydW5u
aW5nUmVmVGVzdHMgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9uZURy
dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAg
IG1fY3VycmVudFRlc3QrKzsKKworICAgIHJ1bkN1cnJlbnRUZXN0KCk7Cit9CisKIHZvaWQgRHVt
cFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKIHsKICAg
ICBpZiAoaXNIVFRQVGVzdChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkKQEAgLTMwMiwy
NSArMzQyLDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKCkKICAgICAgICAgZG9u
ZURydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaWYgKGlzSFRUUFRlc3QobV9j
dXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKLSAgICAgICAgbV9jdXJyZW50SHR0cFRlc3Qg
PSBtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpOwotICAgICAgICBtX2N1cnJlbnRIdHRwVGVz
dC5yZW1vdmUoMCwgc3RybGVuKGh0dHBUZXN0U3ludGF4KSk7Ci0gICAgICAgIHJ1blRlc3QoaHR0
cFByZWZpeFVSTCArIG1fY3VycmVudEh0dHBUZXN0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcnVu
VGVzdChrU0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJyZW50VGVzdCk7CisgICAgcnVuQ3VycmVu
dFRlc3QoKTsKIH0KIAogCi1XVEY6OlN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0Fz
VGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCitTdHJpbmcgRHVtcFJlbmRlclRyZWU6OmR1bXBG
cmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFdURjo6U3RyaW5nIHM7
CisgICAgU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZG9jdW1lbnRF
bGVtZW50KQogICAgICAgICByZXR1cm4gcy51dGY4KCkuZGF0YSgpOwogCiAgICAgaWYgKGZyYW1l
LT50cmVlKCktPnBhcmVudCgpKQotICAgICAgICBzID0gV1RGOjpTdHJpbmc6OmZvcm1hdCgiXG4t
LS0tLS0tLVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4iLCBmcmFtZS0+dHJlZSgpLT51bmlxdWVO
YW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHMgPSBTdHJpbmc6OmZvcm1h
dCgiXG4tLS0tLS0tLVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4iLCBmcmFtZS0+dHJlZSgpLT51
bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBzICs9IGRvY3VtZW50
RWxlbWVudC0+aW5uZXJUZXh0KCkgKyAiXG4iOwogCkBAIC0zMzIsMTYgKzM2NiwxNiBAQCBXVEY6
OlN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dChXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBUb0ZpbGUoY29uc3Qg
V1RGOjpTdHJpbmcmIGRhdGEpCitzdGF0aWMgdm9pZCBkdW1wVG9GaWxlKGNvbnN0IFN0cmluZyYg
ZGF0YSkKIHsKICAgICBmd3JpdGUoZGF0YS51dGY4KCkuZGF0YSgpLCAxLCBkYXRhLnV0ZjgoKS5s
ZW5ndGgoKSwgc3Rkb3V0KTsKIH0KIAotYm9vbCBEdW1wUmVuZGVyVHJlZTo6aXNIVFRQVGVzdChj
b25zdCBXVEY6OlN0cmluZyYgdGVzdCkKK2Jvb2wgRHVtcFJlbmRlclRyZWU6OmlzSFRUUFRlc3Qo
Y29uc3QgU3RyaW5nJiB0ZXN0KQogewogICAgIGlmICh0ZXN0Lmxlbmd0aCgpIDwgc3RybGVuKGh0
dHBUZXN0U3ludGF4KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6U3RyaW5nIHRl
c3RMb3dlciA9IHRlc3QubG93ZXIoKTsKKyAgICBTdHJpbmcgdGVzdExvd2VyID0gdGVzdC5sb3dl
cigpOwogICAgIGludCBsZW5IdHRwVGVzdFN5bnRheCA9IHN0cmxlbihodHRwVGVzdFN5bnRheCk7
CiAgICAgcmV0dXJuIHRlc3RMb3dlci5zdWJzdHJpbmcoMCwgbGVuSHR0cFRlc3RTeW50YXgpID09
IGh0dHBUZXN0U3ludGF4CiAgICAgICAgICAgICAmJiB0ZXN0TG93ZXIuc3Vic3RyaW5nKGxlbkh0
dHBUZXN0U3ludGF4LCBzdHJsZW4obG9jYWxUZXN0U3ludGF4KSkgIT0gbG9jYWxUZXN0U3ludGF4
OwpAQCAtMzQ5LDcgKzM4Myw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWU6OmlzSFRUUFRlc3QoY29u
c3QgV1RGOjpTdHJpbmcmIHRlc3QpCiAKIHZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9S
dW4oKQogewotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gZmlsZXM7CisgICAgVmVjdG9yPFN0cmlu
Zz4gZmlsZXM7CiAKICAgICBGSUxFKiBmZCA9IGZvcGVuKG1faW5kZXhGaWxlLnV0ZjgoKS5kYXRh
KCksICJyIik7CiAgICAgZnNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKQEAgLTM1OCwxMCArMzkyLDE1
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQogICAgIE93bkFycmF5UHRy
PGNoYXI+IGJ1ZiA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbc2l6ZV0pOwogICAgIGZyZWFkKGJ1
Zi5nZXQoKSwgMSwgc2l6ZSwgZmQpOwogICAgIGZjbG9zZShmZCk7Ci0gICAgV1RGOjpTdHJpbmcg
cyhidWYuZ2V0KCksIHNpemUpOworICAgIFN0cmluZyBzKGJ1Zi5nZXQoKSwgc2l6ZSk7CiAgICAg
cy5zcGxpdCgiXG4iLCBmaWxlcyk7CiAKICAgICBtX3Rlc3RzID0gZmlsZXM7CisKKyAgICAvLyBG
aW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0aGUgcmVhbCB0ZXN0cywgb25lIHRlc3QgbWF5IGhh
dmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRlc3RzCisgICAgLy8gYW5kIG11bHRpcGxlIG1pc21h
dGNoIHJlZi10ZXN0cworICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBm
aWxlcy5iZWdpbigpOyBmaWxlcy5lbmQoKSAhPSBpdGVyOyArK2l0ZXIpCisgICAgICAgIGdldFJl
ZlRlc3RzKCppdGVyKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZTo6aW52YWxpZGF0ZUFueVBy
ZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkKQEAgLTM3MCw3ICs0MDksNyBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlOjppbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKQogICAg
IHdhaXRGb3JQb2xpY3kgPSBmYWxzZTsKIH0KIAotV1RGOjpTdHJpbmcgRHVtcFJlbmRlclRyZWU6
OnJlbmRlclRyZWVEdW1wKCkgY29uc3QKK1N0cmluZyBEdW1wUmVuZGVyVHJlZTo6cmVuZGVyVHJl
ZUR1bXAoKSBjb25zdAogewogICAgIGlmIChtYWluRnJhbWUpIHsKICAgICAgICAgaWYgKG1haW5G
cmFtZS0+dmlldygpICYmIG1haW5GcmFtZS0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkpCkBAIC0z
ODYsOSArNDI1LDkgQEAgc3RhdGljIGJvb2wgaGlzdG9yeUl0ZW1Db21wYXJlKGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mIGEsIGNvbnN0IFJlZlAKICAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZShhLT51cmxTdHJpbmcoKSwgYi0+dXJsU3RyaW5nKCkpIDwgMDsKIH0KIAotc3Rh
dGljIFdURjo6U3RyaW5nIGR1bXBIaXN0b3J5SXRlbShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3Rv
cnlJdGVtPiBpdGVtLCBpbnQgaW5kZW50LCBib29sIGN1cnJlbnQpCitzdGF0aWMgU3RyaW5nIGR1
bXBIaXN0b3J5SXRlbShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtLCBpbnQg
aW5kZW50LCBib29sIGN1cnJlbnQpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVzdWx0OworICAgIFN0
cmluZyByZXN1bHQ7CiAKICAgICBpbnQgc3RhcnQgPSAwOwogICAgIGlmIChjdXJyZW50KSB7CkBA
IC0zOTgsMTIgKzQzNywxMiBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZHVtcEhpc3RvcnlJdGVtKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0sIGludCBpbgogICAgIGZvciAoaW50
IGkgPSBzdGFydDsgaSA8IGluZGVudDsgaSsrKQogICAgICAgICByZXN1bHQgKz0gIiAiOwogCi0g
ICAgV1RGOjpTdHJpbmcgdXJsID0gaXRlbS0+dXJsU3RyaW5nKCk7CisgICAgU3RyaW5nIHVybCA9
IGl0ZW0tPnVybFN0cmluZygpOwogICAgIGlmICh1cmwuY29udGFpbnMoImZpbGU6Ly8iKSkgewot
ICAgICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGF5b3V0VGVzdHNTdHJpbmcoIi9MYXlvdXRUZXN0
cy8iKTsKLSAgICAgICAgc3RhdGljIFdURjo6U3RyaW5nIGZpbGVUZXN0U3RyaW5nKCIoZmlsZSB0
ZXN0KToiKTsKKyAgICAgICAgc3RhdGljIFN0cmluZyBsYXlvdXRUZXN0c1N0cmluZygiL0xheW91
dFRlc3RzLyIpOworICAgICAgICBzdGF0aWMgU3RyaW5nIGZpbGVUZXN0U3RyaW5nKCIoZmlsZSB0
ZXN0KToiKTsKIAotICAgICAgICBXVEY6OlN0cmluZyByZXMgPSB1cmwuc3Vic3RyaW5nKHVybC5m
aW5kKGxheW91dFRlc3RzU3RyaW5nKSArIGxheW91dFRlc3RzU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgU3RyaW5nIHJlcyA9IHVybC5zdWJzdHJpbmcodXJsLmZpbmQobGF5b3V0VGVzdHNTdHJp
bmcpICsgbGF5b3V0VGVzdHNTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBpZiAocmVzLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTQxMiw3ICs0NTEsNyBAQCBz
dGF0aWMgV1RGOjpTdHJpbmcgZHVtcEhpc3RvcnlJdGVtKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IGl0ZW0sIGludCBpbgogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgKz0gdXJs
OwogCi0gICAgV1RGOjpTdHJpbmcgdGFyZ2V0ID0gaXRlbS0+dGFyZ2V0KCk7CisgICAgU3RyaW5n
IHRhcmdldCA9IGl0ZW0tPnRhcmdldCgpOwogICAgIGlmICghdGFyZ2V0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmVzdWx0ICs9ICIgKGluIGZyYW1lIFwiIiArIHRhcmdldCArICJcIikiOwogCkBAIC00
MzAsOSArNDY5LDkgQEAgc3RhdGljIFdURjo6U3RyaW5nIGR1bXBIaXN0b3J5SXRlbShQYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtLCBpbnQgaW4KICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgV1RGOjpTdHJpbmcgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXco
KQorc3RhdGljIFN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldygpCiB7Ci0gICAg
V1RGOjpTdHJpbmcgcmVzdWx0ID0gIlxuPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3Qg
PT09PT09PT09PT09PT1cbiI7CisgICAgU3RyaW5nIHJlc3VsdCA9ICJcbj09PT09PT09PT09PT09
IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09XG4iOwogICAgIC8vIEZPUk1BVDoKICAg
ICAvLyAiICAgICAgICAoZmlsZSB0ZXN0KTpmYXN0L2xvYWRlci9yZXNvdXJjZXMvY2xpY2stZnJh
Z21lbnQtbGluay5odG1sICAqKm5hdiB0YXJnZXQqKiIKICAgICAvLyAiY3Vyci0+ICAoZmlsZSB0
ZXN0KTpmYXN0L2xvYWRlci9yZXNvdXJjZXMvY2xpY2stZnJhZ21lbnQtbGluay5odG1sI3Rlc3Rm
cmFnbWVudCAgKipuYXYgdGFyZ2V0KioiCkBAIC00NjAsMjQgKzQ5OSwyNCBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlOjpkdW1wKCkKIHsKICAgICBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1w
V2F0Y2hkb2coKTsKIAotICAgIFdURjo6U3RyaW5nIGR1bXBGaWxlID0gbV9yZXN1bHRzRGlyICsg
Km1fY3VycmVudFRlc3QgKyAiLmR1bXAiOworICAgIFN0cmluZyBkdW1wRmlsZSA9IG1fcmVzdWx0
c0RpciArICptX2N1cnJlbnRUZXN0ICsgIi5kdW1wIjsKIAotICAgIFdURjo6U3RyaW5nIHJlc3Vs
dE1pbWVUeXBlID0gInRleHQvcGxhaW4iOwotICAgIFdURjo6U3RyaW5nIHJlc3BvbnNlTWltZVR5
cGUgPSBtYWluRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZU1JTUVU
eXBlKCk7CisgICAgU3RyaW5nIHJlc3VsdE1pbWVUeXBlID0gInRleHQvcGxhaW4iOworICAgIFN0
cmluZyByZXNwb25zZU1pbWVUeXBlID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpOwogCiAgICAgYm9vbCBkdW1wQXNUZXh0ID0gZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCkgfHwgcmVzcG9uc2VNaW1lVHlwZSA9PSAidGV4
dC9wbGFpbiI7Ci0gICAgV1RGOjpTdHJpbmcgZGF0YSA9IGR1bXBBc1RleHQgPyBkdW1wRnJhbWVz
QXNUZXh0KG1haW5GcmFtZSkgOiByZW5kZXJUcmVlRHVtcCgpOworICAgIFN0cmluZyBkYXRhID0g
ZHVtcEFzVGV4dCA/IGR1bXBGcmFtZXNBc1RleHQobWFpbkZyYW1lKSA6IHJlbmRlclRyZWVEdW1w
KCk7CiAKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQmFja0ZvcndhcmRMaXN0
KCkpCiAgICAgICAgIGRhdGEgKz0gZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoKTsKIAot
ICAgIFdURjo6U3RyaW5nIHJlc3VsdCA9ICJDb250ZW50LVR5cGU6ICIgKyByZXN1bHRNaW1lVHlw
ZSArICJcbiIgKyBkYXRhOworICAgIFN0cmluZyByZXN1bHQgPSAiQ29udGVudC1UeXBlOiAiICsg
cmVzdWx0TWltZVR5cGUgKyAiXG4iICsgZGF0YTsKIAogICAgIGR1bXBUb0ZpbGUocmVzdWx0KTsK
ICAgICBpZiAobV9kdW1wUGl4ZWxzICYmICFkdW1wQXNUZXh0ICYmIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKSkKICAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoZ0xheW91dFRlc3RDb250cm9sbGVyLT5leHBlY3RlZFBp
eGVsSGFzaCgpKTsKIAotICAgIFdURjo6U3RyaW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5j
cmFzaCI7CisgICAgU3RyaW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAg
dW5saW5rKGNyYXNoRmlsZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsK
QEAgLTYwNSw3ICs2NDQsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKiwgSlNHbAogICAgIFdlYkNvcmVU
ZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwogfQogCi12b2lkIER1
bXBSZW5kZXJUcmVlOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKGNvbnN0IFN0cmluZyYgdGl0bGUsIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoIXRlc3REb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRp
dGxlOiAlc1xuIiwgZHJ0RnJhbWVEZXNjcmlwdGlvbihmcmFtZSkudXRmOCgpLmRhdGEoKSwgdGl0
bGUudXRmOCgpLmRhdGEoKSk7CkBAIC02MTUsNDUgKzY1NCw0NSBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIFdl
YkNvcmU6OgogfQogCiAvLyBDaHJvbWVDbGllbnQgZGVsZWdhdGVzLgotdm9pZCBEdW1wUmVuZGVy
VHJlZTo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VJRCkKK3ZvaWQg
RHVtcFJlbmRlclRyZWU6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKIHsKICAg
ICBwcmludGYoIkNPTlNPTEUgTUVTU0FHRTogbGluZSAlZDogJXNcbiIsIGxpbmVOdW1iZXIsIG1l
c3NhZ2UudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1bkphdmFT
Y3JpcHRBbGVydChjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRy
ZWU6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYg
KCF0ZXN0RG9uZSkKICAgICAgICAgcHJpbnRmKCJBTEVSVDogJXNcbiIsIG1lc3NhZ2UudXRmOCgp
LmRhdGEoKSk7CiB9CiAKLWJvb2wgRHVtcFJlbmRlclRyZWU6OnJ1bkphdmFTY3JpcHRDb25maXJt
KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKQorYm9vbCBEdW1wUmVuZGVyVHJlZTo6cnVuSmF2
YVNjcmlwdENvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghdGVzdERv
bmUpCiAgICAgICAgIHByaW50ZigiQ09ORklSTTogJXNcbiIsIG1lc3NhZ2UudXRmOCgpLmRhdGEo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVdURjo6U3RyaW5nIER1bXBSZW5kZXJUcmVlOjpy
dW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6
OlN0cmluZyYgZGVmYXVsdFZhbHVlKQorU3RyaW5nIER1bXBSZW5kZXJUcmVlOjpydW5KYXZhU2Ny
aXB0UHJvbXB0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFs
dWUpCiB7CiAgICAgaWYgKCF0ZXN0RG9uZSkKICAgICAgICAgcHJpbnRmKCJQUk9NUFQ6ICVzLCBk
ZWZhdWx0IHRleHQ6ICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIGRlZmF1bHRWYWx1ZS51
dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogfQogCi1ib29sIER1bXBS
ZW5kZXJUcmVlOjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UpCitib29sIER1bXBSZW5kZXJUcmVlOjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghdGVzdERvbmUpCiAgICAgICAg
IHByaW50ZigiQ09ORklSTSBOQVZJR0FUSU9OOiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6c2V0U3RhdHVz
VGV4dChjb25zdCBXVEY6OlN0cmluZyYgc3RhdHVzKQordm9pZCBEdW1wUmVuZGVyVHJlZTo6c2V0
U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1cykKIHsKICAgICBpZiAoZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kdW1wU3RhdHVzQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiVUkgREVM
RUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVzXG4iLCBzdGF0dXMudXRmOCgp
LmRhdGEoKSk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBXVEY6OlN0cmluZyYgbmFt
ZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCF0
ZXN0RG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBEYXRhYmFzZUNhbGxiYWNrcygp
KQogICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRl
ZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNc
biIsIG9yaWdpbi0+cHJvdG9jb2woKS51dGY4KCkuZGF0YSgpLCBvcmlnaW4tPmhvc3QoKS51dGY4
KCkuZGF0YSgpLCBvcmlnaW4tPnBvcnQoKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKQEAgLTY5Niw3
ICs3MzUsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogICAg
ICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
JXNcbiIsICJXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uIik7CiB9CiAKLWJv
b2wgRHVtcFJlbmRlclRyZWU6OmZpbmRTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZywg
V2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucykKK2Jvb2wgRHVtcFJlbmRlclRyZWU6OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IG1haW5GcmFtZSA/IG1haW5GcmFtZS0+cGFn
ZSgpIDogMDsKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5maW5kU3RyaW5nKHN0cmluZywgb3B0
aW9ucyk7CkBAIC03NTEsNyArNzkwLDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZTo6c2hvdWxkSW5z
ZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiBub2RlLCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UKICAgICBy
ZXR1cm4gbV9hY2NlcHRzRWRpdGluZzsKIH0KIAotYm9vbCBEdW1wUmVuZGVyVHJlZTo6c2hvdWxk
SW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0cmluZyYgdGV4dCwgV2ViQ29yZTo6UmFuZ2UqIHJhbmdl
LCBpbnQgYWN0aW9uKQorYm9vbCBEdW1wUmVuZGVyVHJlZTo6c2hvdWxkSW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlJhbmdlKiByYW5nZSwgaW50IGFjdGlvbikKIHsKICAg
ICBpZiAoIXRlc3REb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEVkaXRpbmdDYWxs
YmFja3MoKSkKICAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRU
ZXh0OiVzIHJlcGxhY2luZ0RPTVJhbmdlOiVzIGdpdmVuQWN0aW9uOiVzXG4iLCB0ZXh0LnV0Zjgo
KS5kYXRhKCksIGRydFJhbmdlRGVzY3JpcHRpb24ocmFuZ2UpLnV0ZjgoKS5kYXRhKCksIGluc2Vy
dEFjdGlvblN0cmluZygoV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKWFjdGlvbikpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJs
YWNrQmVycnkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRy
ZWVCbGFja0JlcnJ5LmgKaW5kZXggZGIyZjY5YS4uMmZmNjkxNiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJy
eS5oCkBAIC02NywyMCArNjcsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCosIEpTR2xvYmFsQ29udGV4dFJlZiwgSlNP
YmplY3RSZWYgd2luZG93T2JqZWN0KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
KGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKGNvbnN0IFN0cmluZyYgdGl0bGUsIFdlYkNvcmU6OkZyYW1l
Kik7CiAgICAgdm9pZCBkaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2b2lkIGRpZERpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCgpOwogICAg
IHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50IGRlbGVn
YXRlcwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXVEY6OlN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VJ
RCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UpOwotICAgIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgV1RGOjpTdHJpbmcmIG1l
c3NhZ2UpOwotICAgIFdURjo6U3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgV1RGOjpT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUpOwotICAgIGJv
b2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdl
KTsKLSAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lk
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKyAgICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisgICAgU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7CisgICAgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNldFN0YXR1c1RleHQo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wgYWxsb3dzT3Bl
bmluZ1dpbmRvdygpOwogICAgIHZvaWQgd2luZG93Q3JlYXRlZChXZWJQYWdlKik7CiAKQEAgLTkx
LDQ2ICs5MSw0OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAgICAgdm9p
ZCBkaWRDaGFuZ2UoKTsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbigpOwotICAgIGJvb2wg
ZmluZFN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkZpbmRPcHRpb25zKTsKKyAg
ICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMpOwog
ICAgIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZShXZWJDb3JlOjpSYW5nZSopOwog
ICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKTsKICAg
ICBib29sIHNob3VsZERlbGV0ZURPTVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgYm9vbCBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlVG9ET01SYW5nZUFmZmluaXR5U3RpbGxTZWxlY3Rp
bmcoV2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6UmFuZ2UqIHRvUmFuZ2UsIGlu
dCBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7CiAgICAgYm9vbCBzaG91bGRJbnNlcnRO
b2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpSYW5nZSosIGludCBpbnNlcnRBY3Rpb24pOwot
ICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OlJh
bmdlKiwgaW50IGluc2VydEFjdGlvbik7CisgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OlJhbmdlKiwgaW50IGluc2VydEFjdGlvbik7CiAKICAgICBib29s
IGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHNfc2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0U2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19zZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkID0gZW5hYmxlZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgcnVuVGVzdChj
b25zdCBXVEY6OlN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJ1blRlc3QoY29uc3QgU3RyaW5nJiB1
cmwpOwogICAgIHZvaWQgcnVuVGVzdHMoKTsKKyAgICB2b2lkIHJ1bkN1cnJlbnRUZXN0KCk7Cisg
ICAgdm9pZCBnZXRSZWZUZXN0cyhjb25zdCBTdHJpbmcmIHRlc3ROYW1lKTsKIAogICAgIHZvaWQg
cHJvY2Vzc1dvcmsoV2ViQ29yZTo6VGltZXI8RHVtcFJlbmRlclRyZWU+Kik7CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIER1bXBSZW5kZXJUcmVlKiBzX2N1cnJlbnRJbnN0YW5jZTsKIAotICAgIFdU
Rjo6U3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqKTsKKyAgICBTdHJpbmcg
ZHVtcEZyYW1lc0FzVGV4dChXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgbG9jYXRpb25DaGFu
Z2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCiAgICAgdm9pZCBkb25lRHJ0KCk7CiAgICAg
dm9pZCBnZXRUZXN0c1RvUnVuKCk7Ci0gICAgYm9vbCBpc0hUVFBUZXN0KGNvbnN0IFdURjo6U3Ry
aW5nJiB0ZXN0KTsKLSAgICBXVEY6OlN0cmluZyByZW5kZXJUcmVlRHVtcCgpIGNvbnN0OworICAg
IGJvb2wgaXNIVFRQVGVzdChjb25zdCBTdHJpbmcmIHRlc3QpOworICAgIFN0cmluZyByZW5kZXJU
cmVlRHVtcCgpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRl
c3RpbmcoKTsKICAgICB2b2lkIHJ1blJlbWFpbmluZ1Rlc3RzKCk7CiAgICAgdm9pZCBpbnZhbGlk
YXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKTsKICAgICB2b2lkIHdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RHVtcFJlbmRlclRyZWU+Kik7CiAKLSAg
ICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fdGVzdHM7Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPjo6
aXRlcmF0b3IgbV9jdXJyZW50VGVzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3Rlc3RzOworICAg
IFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBtX2N1cnJlbnRUZXN0OworICAgIFZlY3RvcjxTdHJp
bmc+IG1fcmVmVGVzdHM7IC8vIFJlZmVyZW5jZSB0ZXN0cyBmb3IgY3VycmVudCB0ZXN0CiAKLSAg
ICBXVEY6OlN0cmluZyBtX3Jlc3VsdHNEaXI7Ci0gICAgV1RGOjpTdHJpbmcgbV9pbmRleEZpbGU7
Ci0gICAgV1RGOjpTdHJpbmcgbV9kb25lRmlsZTsKLSAgICBXVEY6OlN0cmluZyBtX2N1cnJlbnRI
dHRwVGVzdDsKLSAgICBXVEY6OlN0cmluZyBtX2N1cnJlbnRUZXN0RmlsZTsKKyAgICBTdHJpbmcg
bV9yZXN1bHRzRGlyOworICAgIFN0cmluZyBtX2luZGV4RmlsZTsKKyAgICBTdHJpbmcgbV9kb25l
RmlsZTsKKyAgICBTdHJpbmcgbV9jdXJyZW50SHR0cFRlc3Q7CisgICAgU3RyaW5nIG1fY3VycmVu
dFRlc3RGaWxlOwogCiAgICAgR0NDb250cm9sbGVyKiBtX2djQ29udHJvbGxlcjsKICAgICBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlciogbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKQEAgLTE0MSw2
ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FjY2VwdHNFZGl0aW5nOwogICAgIGJv
b2wgbV9sb2FkRmluaXNoZWQ7CisgICAgYm9vbCBtX3J1bm5pbmdSZWZUZXN0czsKICAgICBzdGF0
aWMgYm9vbCBzX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9OwogfQotLSAKMS43
LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141382</attachid>
            <date>2012-05-11 05:28:07 -0700</date>
            <delta_ts>2012-05-11 06:25:00 -0700</delta_ts>
            <desc>Git patch updated for more comments from Rob</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree.cpp-to-also-run-ref.patch</filename>
            <type>text/plain</type>
            <size>25433</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA3MDU2Y2Y0ODg0MDlmZDQyZmNhNzkxNTNlMzhmNzFjOTcyMjFkYmE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE5OjAzOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZS5jcHAgdG8gYWxzbyBydW4gcmVmLXRl
c3RzCiBpZiB0aGVyZSdyZSBhbnkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjA1NQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWYtdGVzdHMgYXJlIHRl
c3RzIHdpdGggc3VmZml4ICItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1pc21hdGNoIiBhbmQgYSB2
YWxpZApleHRlbnNpb24oIi5odG1sIiwgIi5odG0iLCBldGMuKS4KQ3VycmVudGx5IHRvcmNoLWxh
dW5jaGVyIG9ubHkgcnVuIHRlc3RzIHBhcnNlZCBieSBOUldULCB3aXRoIHJlZi10ZXN0cwpleGNs
dWRlZC4gQXMgYSByZXN1bHQsIGlmIGEgdGVzdCBoYXZlIHJlZi10ZXN0cyAod2hpY2ggd2VyZSBu
b3QgcnVuKSwgb3VyCkR1bXBSZW5kZXJUcmVlIFBlcmwgc2NyaXB0IHdpbGwgdGhpbmsgdGhlcmUn
cyBhIGNyYXNoIGFuZCBleGl0IHdpdGggY29kZSAxLgpTbyBOUldUIHdpbGwgcmVwb3J0IHRoZSBy
ZXN1bHQgYXMgQ1JBU0guCldlIG5lZWQgdG8gdXBkYXRlIER1bXBSZW5kZXJUcmVlLmNwcCB0byB0
cnkgdG8gZmluZCByZWYtdGVzdHMgYW5kIHJ1biB0aGVtLgoKKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OmdldFJlZlRlc3RzKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlOjpydW5DdXJyZW50VGVzdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJU
cmVlOjpydW5UZXN0cyk6CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJl
ZUJsYWNrQmVycnkuaDoKKER1bXBSZW5kZXJUcmVlKToKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKysrCiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAxNzIgKysrKysrKysrKysr
LS0tLS0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oICAgICAg
ICAgIHwgICA0NiArKystLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDg4
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAy
YTVkYTI5Li5iMzM5MzM1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDUtMDkgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIER1bXBSZW5kZXJUcmVl
LmNwcCB0byBhbHNvIHJ1biByZWYtdGVzdHMgaWYgdGhlcmUncmUgYW55CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZi10ZXN0cyBhcmUgdGVzdHMgd2l0
aCBzdWZmaXggIi1leHBlY3RlZCIsICItZXhwZWN0ZWQtbWlzbWF0Y2giIGFuZCBhIHZhbGlkCisg
ICAgICAgIGV4dGVuc2lvbigiLmh0bWwiLCAiLmh0bSIsIGV0Yy4pLgorICAgICAgICBDdXJyZW50
bHkgdG9yY2gtbGF1bmNoZXIgb25seSBydW4gdGVzdHMgcGFyc2VkIGJ5IE5SV1QsIHdpdGggcmVm
LXRlc3RzCisgICAgICAgIGV4Y2x1ZGVkLiBBcyBhIHJlc3VsdCwgaWYgYSB0ZXN0IGhhdmUgcmVm
LXRlc3RzICh3aGljaCB3ZXJlIG5vdCBydW4pLCBvdXIKKyAgICAgICAgRHVtcFJlbmRlclRyZWUg
UGVybCBzY3JpcHQgd2lsbCB0aGluayB0aGVyZSdzIGEgY3Jhc2ggYW5kIGV4aXQgd2l0aCBjb2Rl
IDEuCisgICAgICAgIFNvIE5SV1Qgd2lsbCByZXBvcnQgdGhlIHJlc3VsdCBhcyBDUkFTSC4KKyAg
ICAgICAgV2UgbmVlZCB0byB1cGRhdGUgRHVtcFJlbmRlclRyZWUuY3BwIHRvIHRyeSB0byBmaW5k
IHJlZi10ZXN0cyBhbmQgcnVuIHRoZW0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFj
a2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVz
dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5SZW1h
aW5pbmdUZXN0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVl
OjpydW5UZXN0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVu
ZGVyVHJlZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToKKwogMjAxMi0w
NS0wOSAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBVc2Ugc3VpdGFibGUgdmlld3BvcnQgdmFsdWVzIG9uIFhIVE1MLU1QIHBhZ2VzLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApp
bmRleCBkZDM2NzZhLi5jOTZlN2MzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtODIsMTkgKzgyLDE5IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBodHRwUHJlZml4VVJMID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC8iOwogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgV1RGOjpTdHJpbmcgZHJ0QWZmaW5pdHlEZXNj
cmlwdGlvbihXZWJDb3JlOjpFQWZmaW5pdHkgYWZmaW5pdHkpCitzdGF0aWMgU3RyaW5nIGRydEFm
ZmluaXR5RGVzY3JpcHRpb24oV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQogewogICAgIGlm
IChhZmZpbml0eSA9PSBXZWJDb3JlOjpVUFNUUkVBTSkKLSAgICAgICAgcmV0dXJuIFdURjo6U3Ry
aW5nKCJOU1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0iKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygiTlNTZWxlY3Rpb25BZmZpbml0eVVwc3RyZWFtIik7CiAgICAgaWYgKGFmZmluaXR5ID09IFdl
YkNvcmU6OkRPV05TVFJFQU0pCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZygiTlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0iKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygiTlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0iKTsKICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyBXVEY6
OlN0cmluZyBkcnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2RlKQorc3RhdGljIFN0cmluZyBk
cnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2RlKQogewogICAgIFdlYkNvcmU6Ok5vZGUqIHBh
cmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBXVEY6OlN0cmluZyBzdHIgPSBXVEY6OlN0
cmluZzo6Zm9ybWF0KCIlcyIsIG5vZGUtPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
U3RyaW5nIHN0ciA9IFN0cmluZzo6Zm9ybWF0KCIlcyIsIG5vZGUtPm5vZGVOYW1lKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgaWYgKHBhcmVudCkgewogICAgICAgICBzdHIuYXBwZW5kKCIgPiAiKTsK
ICAgICAgICAgc3RyLmFwcGVuZChkcnREdW1wUGF0aChwYXJlbnQpKTsKQEAgLTEwMiwyNyArMTAy
LDI3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkcnREdW1wUGF0aChXZWJDb3JlOjpOb2RlKiBub2Rl
KQogICAgIHJldHVybiBzdHI7CiB9CiAKLXN0YXRpYyBXVEY6OlN0cmluZyBkcnRSYW5nZURlc2Ny
aXB0aW9uKFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKK3N0YXRpYyBTdHJpbmcgZHJ0UmFuZ2VEZXNj
cmlwdGlvbihXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuICIobnVsbCkiOwotICAgIHJldHVybiBXVEY6OlN0cmluZzo6Zm9ybWF0KCJyYW5n
ZSBmcm9tICVkIG9mICVzIHRvICVkIG9mICVzIiwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGRydER1
bXBQYXRoKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKS51dGY4KCkuZGF0YSgpLCByYW5nZS0+ZW5k
T2Zmc2V0KCksIGRydER1bXBQYXRoKHJhbmdlLT5lbmRDb250YWluZXIoKSkudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyYW5nZSBmcm9tICVkIG9mICVzIHRvICVk
IG9mICVzIiwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGRydER1bXBQYXRoKHJhbmdlLT5zdGFydENv
bnRhaW5lcigpKS51dGY4KCkuZGF0YSgpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGRydER1bXBQYXRo
KHJhbmdlLT5lbmRDb250YWluZXIoKSkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXN0YXRpYyBXVEY6
OlN0cmluZyBkcnRGcmFtZURlc2NyaXB0aW9uKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3N0YXRp
YyBTdHJpbmcgZHJ0RnJhbWVEZXNjcmlwdGlvbihXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0g
ICAgV1RGOjpTdHJpbmcgbmFtZSA9IGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmco
KTsKKyAgICBTdHJpbmcgbmFtZSA9IGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmco
KTsKICAgICBpZiAoZnJhbWUgPT0gbWFpbkZyYW1lKSB7CiAgICAgICAgIGlmICghbmFtZS5pc051
bGwoKSAmJiBuYW1lLmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpm
b3JtYXQoIm1haW4gZnJhbWUgXCIlc1wiIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWFpbiBmcmFtZSBcIiVzXCIiLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gIm1haW4gZnJhbWUiOwogICAgIH0KICAgICBpZiAo
IW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6OlN0cmluZzo6Zm9ybWF0KCJmcmFt
ZSBcIiVzXCIiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoImZyYW1lIFwiJXNcIiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuICJm
cmFtZSAoYW5vbnltb3VzKSI7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9hZERl
bGVnYXRlcyhjb25zdCBXVEY6OlN0cmluZyYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkTG9nRnJh
bWVMb2FkRGVsZWdhdGVzKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHJldHVybiB1cmwuY29u
dGFpbnMoImxvYWRpbmcvIik7CiB9CkBAIC0xMzMsNyArMTMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBEdW1wUmVuZGVyVHJlZSogRHVtcFJlbmRlclRyZWU6OnNfY3VycmVudEluc3RhbmNlID0g
MDsKIGJvb2wgRHVtcFJlbmRlclRyZWU6OnNfc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCA9IGZhbHNlOwogCi1zdGF0aWMgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdURjo6U3RyaW5nJiBm
aWxlTmFtZSkKK3N0YXRpYyB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IHsKICAgICBGSUxFKiBmZCA9IGZvcGVuKGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICJ3YiIpOwog
ICAgIGZjbG9zZShmZCk7CkBAIC0xNDcsOCArMTQ3LDkgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBS
ZW5kZXJUcmVlKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAgICAsIG1fd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0
Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVl
Ojpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKKyAgICAsIG1fcnVu
bmluZ1JlZlRlc3RzKGZhbHNlKQogewotICAgIFdURjo6U3RyaW5nIHNkY2FyZFBhdGggPSBTRENB
UkRfUEFUSDsKKyAgICBTdHJpbmcgc2RjYXJkUGF0aCA9IFNEQ0FSRF9QQVRIOwogICAgIG1fcmVz
dWx0c0RpciA9IHNkY2FyZFBhdGggKyAiL3Jlc3VsdHMvIjsKICAgICBtX2luZGV4RmlsZSA9IHNk
Y2FyZFBhdGggKyAiL2luZGV4LmRydCI7CiAgICAgbV9kb25lRmlsZSA9IHNkY2FyZFBhdGggKyAi
L2RvbmUiOwpAQCAtMTY0LDcgKzE2NSw3IEBAIER1bXBSZW5kZXJUcmVlOjp+RHVtcFJlbmRlclRy
ZWUoKQogICAgIGRlbGV0ZSBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogfQogCi12b2lkIER1
bXBSZW5kZXJUcmVlOjpydW5UZXN0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCit2b2lkIER1bXBS
ZW5kZXJUcmVlOjpydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGNyZWF0ZUZpbGUo
bV9yZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAiLmR1bXAuY3Jhc2giKTsKIApAQCAtMTcy
LDggKzE3Myw4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3QoY29uc3QgV1RGOjpTdHJp
bmcmIHVybCkKICAgICByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogICAg
IGlmIChzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXModXJsKSkKICAgICAgICAgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwotICAgIFdURjo6
U3RyaW5nIHN0ZG91dEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZHVt
cCI7Ci0gICAgV1RGOjpTdHJpbmcgc3RkZXJyRmlsZSA9IG1fcmVzdWx0c0RpciArICptX2N1cnJl
bnRUZXN0ICsgIi5zdGRlcnIiOworICAgIFN0cmluZyBzdGRvdXRGaWxlID0gbV9yZXN1bHRzRGly
ICsgKm1fY3VycmVudFRlc3QgKyAiLmR1bXAiOworICAgIFN0cmluZyBzdGRlcnJGaWxlID0gbV9y
ZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAiLnN0ZGVyciI7CiAKICAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdGRvdXQgYW5kIHN0ZGVyciBoZXJlIGJ1
dCBhcmVuJ3QgZG9pbmcKICAgICAvLyB0aGF0IHlldCBkdWUgdG8gaXNzdWVzIHdpdGggZHVwLCBl
dGMuCkBAIC0xOTYsMTggKzE5NywzMiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkb25lRHJ0KCkK
ICAgICAobV9wYWdlLT5jbGllbnQoKSktPm5vdGlmeVJ1bkxheW91dFRlc3RzRmluaXNoZWQoKTsK
IH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQordm9pZCBEdW1w
UmVuZGVyVHJlZTo6Z2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKIHsKLSAgICAv
LyBGSVhNRTogZmZsdXNoIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJ1dCBpcyB0ZW1wb3Jhcmls
eSByZXF1aXJlZCBkdWUgdG8gYSBidWcgaW4gc3RkaW8gb3V0cHV0LgotICAgIGZmbHVzaChzdGRv
dXQpOwotICAgIGZmbHVzaChzdGRlcnIpOwotCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90
ZXN0cy5lbmQoKSAtIDEpIHsKLSAgICAgICAgZG9uZURydCgpOworICAgIGlmIChtX3J1bm5pbmdS
ZWZUZXN0cykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIG1fY3VycmVudFRlc3QrKzsK
KyAgICBjb25zdCBjaGFyKiBzdWZmaXhlc1tdID0geyItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1p
c21hdGNoIn07CisgICAgY29uc3QgaW50IGNvdW50b2ZTdWZmaXhlcyA9IHNpemVvZihzdWZmaXhl
cykgLyBzaXplb2YoY29uc3QgY2hhciopOworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25s
eSBoYXZlIHJlZiB0ZXN0cyB3aXRoIC5odG1sIGV4dGVuc2lvbiwgeW91IG1hbnkgbmVlZCB0byBh
ZGQgbW9yZQorICAgIC8vIHdoZW4gdGhleSBoYXZlIG1vcmUgZXh0ZW5zaW9ucyguaHRtLCAuc2h0
bWwsIC54aHRtbCwgZXRjLikuCisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uc1tdID0geyIuaHRt
bCIsICIuc3ZnIn07CisgICAgY29uc3QgaW50IGNvdW50b2ZFeHRlbnNpb25zID0gc2l6ZW9mKGV4
dGVuc2lvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKKyAgICBTdHJpbmcgbGF5b3V0RGlyID0g
a1NEQ0xheW91dFRlc3RzVVJJICsgNzsgLy8gNzogc3RybGVuKCJmaWxlOi8vIiksIGxheW91dERp
cjogIi9kZXZlbG9wZXIvTGF5b3V0VGVzdHMvIgorCisgICAgc2l6ZV90IGlFbmQgPSB0ZXN0TmFt
ZS5yZXZlcnNlRmluZCgnLicpOworCisgICAgU3RyaW5nIG5hbWVXaXRob3V0RXh0ZW5zaW9uID0g
dGVzdE5hbWUuc3Vic3RyaW5nKDAsIGlFbmQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnRvZlN1ZmZpeGVzOyArK2kpCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnRvZkV4
dGVuc2lvbnM7ICsraikgeworICAgICAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlv
dXREaXIgKyBuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1ZmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tq
XTsKKyAgICAgICAgICAgIGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwg
Rl9PSykpCisgICAgICAgICAgICAgICAgbV9yZWZUZXN0cy5hcHBlbmQobmFtZVdpdGhvdXRFeHRl
bnNpb24gKyBzdWZmaXhlc1tpXSArIGV4dGVuc2lvbnNbal0pOworICAgICAgICB9Cit9CisKK3Zv
aWQgRHVtcFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKK3sKICAgICBpZiAoaXNIVFRQVGVz
dChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewogICAgICAgICBtX2N1cnJlbnRIdHRw
VGVzdCA9IG1fY3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCk7CiAgICAgICAgIG1fY3VycmVudEh0
dHBUZXN0LnJlbW92ZSgwLCBzdHJsZW4oaHR0cFRlc3RTeW50YXgpKTsKQEAgLTIxNiw2ICsyMzEs
MzAgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgICAgICBy
dW5UZXN0KGtTRENMYXlvdXRUZXN0c1VSSSArICptX2N1cnJlbnRUZXN0KTsKIH0KIAordm9pZCBE
dW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQoreworICAgIC8vIEZJWE1FOiBmZmx1
c2ggc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYnV0IGlzIHRlbXBvcmFyaWx5IHJlcXVpcmVkIGR1
ZSB0byBhIGJ1ZyBpbiBzdGRpbyBvdXRwdXQuCisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZs
dXNoKHN0ZGVycik7CisKKyAgICBpZiAobV9jdXJyZW50VGVzdCA+PSBtX3Rlc3RzLmVuZCgpIC0g
MSkgeworICAgICAgICAvLyBSdW4gcmVmLXRlc3RzIGFmdGVyIHJlYWwgdGVzdHMgd2VyZSBmaW5p
c2hlZAorICAgICAgICBpZiAoIW1fcnVubmluZ1JlZlRlc3RzICYmICFtX3JlZlRlc3RzLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgbV90ZXN0cy5jbGVhcigpOworICAgICAgICAgICAgbV90ZXN0
cy5hcHBlbmQobV9yZWZUZXN0cyk7CisgICAgICAgICAgICBtX3JlZlRlc3RzLmNsZWFyKCk7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgICAgICAgICAg
bV9ydW5uaW5nUmVmVGVzdHMgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZG9uZURydCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIG1fY3VycmVudFRlc3QrKzsKKworICAgIHJ1bkN1cnJlbnRUZXN0KCk7Cit9CisKIHZv
aWQgRHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkK
IHsKICAgICBpZiAoaXNIVFRQVGVzdChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkKQEAg
LTMwMiwyNSArMzQxLDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKCkKICAgICAg
ICAgZG9uZURydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgaWYgKGlzSFRUUFRl
c3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKLSAgICAgICAgbV9jdXJyZW50SHR0
cFRlc3QgPSBtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpOwotICAgICAgICBtX2N1cnJlbnRI
dHRwVGVzdC5yZW1vdmUoMCwgc3RybGVuKGh0dHBUZXN0U3ludGF4KSk7Ci0gICAgICAgIHJ1blRl
c3QoaHR0cFByZWZpeFVSTCArIG1fY3VycmVudEh0dHBUZXN0KTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgcnVuVGVzdChrU0RDTGF5b3V0VGVzdHNVUkkgKyAqbV9jdXJyZW50VGVzdCk7CisgICAgcnVu
Q3VycmVudFRlc3QoKTsKIH0KIAogCi1XVEY6OlN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZy
YW1lc0FzVGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCitTdHJpbmcgRHVtcFJlbmRlclRyZWU6
OmR1bXBGcmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewotICAgIFdURjo6U3Ry
aW5nIHM7CisgICAgU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZG9jdW1lbnRFbGVt
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZG9j
dW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gcy51dGY4KCkuZGF0YSgpOwogCiAgICAgaWYg
KGZyYW1lLT50cmVlKCktPnBhcmVudCgpKQotICAgICAgICBzID0gV1RGOjpTdHJpbmc6OmZvcm1h
dCgiXG4tLS0tLS0tLVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4iLCBmcmFtZS0+dHJlZSgpLT51
bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHMgPSBTdHJpbmc6
OmZvcm1hdCgiXG4tLS0tLS0tLVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4iLCBmcmFtZS0+dHJl
ZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBzICs9IGRv
Y3VtZW50RWxlbWVudC0+aW5uZXJUZXh0KCkgKyAiXG4iOwogCkBAIC0zMzIsMTYgKzM2NSwxNiBA
QCBXVEY6OlN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1lc0FzVGV4dChXZWJDb3JlOjpG
cmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBUb0ZpbGUo
Y29uc3QgV1RGOjpTdHJpbmcmIGRhdGEpCitzdGF0aWMgdm9pZCBkdW1wVG9GaWxlKGNvbnN0IFN0
cmluZyYgZGF0YSkKIHsKICAgICBmd3JpdGUoZGF0YS51dGY4KCkuZGF0YSgpLCAxLCBkYXRhLnV0
ZjgoKS5sZW5ndGgoKSwgc3Rkb3V0KTsKIH0KIAotYm9vbCBEdW1wUmVuZGVyVHJlZTo6aXNIVFRQ
VGVzdChjb25zdCBXVEY6OlN0cmluZyYgdGVzdCkKK2Jvb2wgRHVtcFJlbmRlclRyZWU6OmlzSFRU
UFRlc3QoY29uc3QgU3RyaW5nJiB0ZXN0KQogewogICAgIGlmICh0ZXN0Lmxlbmd0aCgpIDwgc3Ry
bGVuKGh0dHBUZXN0U3ludGF4KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6U3Ry
aW5nIHRlc3RMb3dlciA9IHRlc3QubG93ZXIoKTsKKyAgICBTdHJpbmcgdGVzdExvd2VyID0gdGVz
dC5sb3dlcigpOwogICAgIGludCBsZW5IdHRwVGVzdFN5bnRheCA9IHN0cmxlbihodHRwVGVzdFN5
bnRheCk7CiAgICAgcmV0dXJuIHRlc3RMb3dlci5zdWJzdHJpbmcoMCwgbGVuSHR0cFRlc3RTeW50
YXgpID09IGh0dHBUZXN0U3ludGF4CiAgICAgICAgICAgICAmJiB0ZXN0TG93ZXIuc3Vic3RyaW5n
KGxlbkh0dHBUZXN0U3ludGF4LCBzdHJsZW4obG9jYWxUZXN0U3ludGF4KSkgIT0gbG9jYWxUZXN0
U3ludGF4OwpAQCAtMzQ5LDcgKzM4Miw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWU6OmlzSFRUUFRl
c3QoY29uc3QgV1RGOjpTdHJpbmcmIHRlc3QpCiAKIHZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRl
c3RzVG9SdW4oKQogewotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gZmlsZXM7CisgICAgVmVjdG9y
PFN0cmluZz4gZmlsZXM7CiAKICAgICBGSUxFKiBmZCA9IGZvcGVuKG1faW5kZXhGaWxlLnV0Zjgo
KS5kYXRhKCksICJyIik7CiAgICAgZnNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKQEAgLTM1OCwxMCAr
MzkxLDE1IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQogICAgIE93bkFy
cmF5UHRyPGNoYXI+IGJ1ZiA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbc2l6ZV0pOwogICAgIGZy
ZWFkKGJ1Zi5nZXQoKSwgMSwgc2l6ZSwgZmQpOwogICAgIGZjbG9zZShmZCk7Ci0gICAgV1RGOjpT
dHJpbmcgcyhidWYuZ2V0KCksIHNpemUpOworICAgIFN0cmluZyBzKGJ1Zi5nZXQoKSwgc2l6ZSk7
CiAgICAgcy5zcGxpdCgiXG4iLCBmaWxlcyk7CiAKICAgICBtX3Rlc3RzID0gZmlsZXM7CisKKyAg
ICAvLyBGaW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0aGUgcmVhbCB0ZXN0cywgb25lIHRlc3Qg
bWF5IGhhdmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRlc3RzCisgICAgLy8gYW5kIG11bHRpcGxl
IG1pc21hdGNoIHJlZi10ZXN0cy4KKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBp
dGVyID0gZmlsZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkgIT0gaXRlcjsgKytpdGVyKQorICAgICAg
ICBnZXRSZWZUZXN0cygqaXRlcik7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWU6OmludmFsaWRh
dGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCkBAIC0zNzAsNyArNDA4LDcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZTo6aW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9n
KCkKICAgICB3YWl0Rm9yUG9saWN5ID0gZmFsc2U7CiB9CiAKLVdURjo6U3RyaW5nIER1bXBSZW5k
ZXJUcmVlOjpyZW5kZXJUcmVlRHVtcCgpIGNvbnN0CitTdHJpbmcgRHVtcFJlbmRlclRyZWU6OnJl
bmRlclRyZWVEdW1wKCkgY29uc3QKIHsKICAgICBpZiAobWFpbkZyYW1lKSB7CiAgICAgICAgIGlm
IChtYWluRnJhbWUtPnZpZXcoKSAmJiBtYWluRnJhbWUtPnZpZXcoKS0+bGF5b3V0UGVuZGluZygp
KQpAQCAtMzg2LDkgKzQyNCw5IEBAIHN0YXRpYyBib29sIGhpc3RvcnlJdGVtQ29tcGFyZShjb25z
dCBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiBhLCBjb25zdCBSZWZQCiAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmUoYS0+dXJsU3RyaW5nKCksIGItPnVybFN0cmluZygpKSA8IDA7CiB9
CiAKLXN0YXRpYyBXVEY6OlN0cmluZyBkdW1wSGlzdG9yeUl0ZW0oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4gaXRlbSwgaW50IGluZGVudCwgYm9vbCBjdXJyZW50KQorc3RhdGljIFN0
cmluZyBkdW1wSGlzdG9yeUl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRl
bSwgaW50IGluZGVudCwgYm9vbCBjdXJyZW50KQogewotICAgIFdURjo6U3RyaW5nIHJlc3VsdDsK
KyAgICBTdHJpbmcgcmVzdWx0OwogCiAgICAgaW50IHN0YXJ0ID0gMDsKICAgICBpZiAoY3VycmVu
dCkgewpAQCAtMzk4LDEyICs0MzYsMTIgQEAgc3RhdGljIFdURjo6U3RyaW5nIGR1bXBIaXN0b3J5
SXRlbShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtLCBpbnQgaW4KICAgICBm
b3IgKGludCBpID0gc3RhcnQ7IGkgPCBpbmRlbnQ7IGkrKykKICAgICAgICAgcmVzdWx0ICs9ICIg
IjsKIAotICAgIFdURjo6U3RyaW5nIHVybCA9IGl0ZW0tPnVybFN0cmluZygpOworICAgIFN0cmlu
ZyB1cmwgPSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBpZiAodXJsLmNvbnRhaW5zKCJmaWxlOi8v
IikpIHsKLSAgICAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxheW91dFRlc3RzU3RyaW5nKCIvTGF5
b3V0VGVzdHMvIik7Ci0gICAgICAgIHN0YXRpYyBXVEY6OlN0cmluZyBmaWxlVGVzdFN0cmluZygi
KGZpbGUgdGVzdCk6Iik7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgbGF5b3V0VGVzdHNTdHJpbmco
Ii9MYXlvdXRUZXN0cy8iKTsKKyAgICAgICAgc3RhdGljIFN0cmluZyBmaWxlVGVzdFN0cmluZygi
KGZpbGUgdGVzdCk6Iik7CiAKLSAgICAgICAgV1RGOjpTdHJpbmcgcmVzID0gdXJsLnN1YnN0cmlu
Zyh1cmwuZmluZChsYXlvdXRUZXN0c1N0cmluZykgKyBsYXlvdXRUZXN0c1N0cmluZy5sZW5ndGgo
KSk7CisgICAgICAgIFN0cmluZyByZXMgPSB1cmwuc3Vic3RyaW5nKHVybC5maW5kKGxheW91dFRl
c3RzU3RyaW5nKSArIGxheW91dFRlc3RzU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgaWYgKHJl
cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC00MTIsNyArNDUw
LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGR1bXBIaXN0b3J5SXRlbShQYXNzUmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiBpdGVtLCBpbnQgaW4KICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0
ICs9IHVybDsKIAotICAgIFdURjo6U3RyaW5nIHRhcmdldCA9IGl0ZW0tPnRhcmdldCgpOworICAg
IFN0cmluZyB0YXJnZXQgPSBpdGVtLT50YXJnZXQoKTsKICAgICBpZiAoIXRhcmdldC5pc0VtcHR5
KCkpCiAgICAgICAgIHJlc3VsdCArPSAiIChpbiBmcmFtZSBcIiIgKyB0YXJnZXQgKyAiXCIpIjsK
IApAQCAtNDMwLDkgKzQ2OCw5IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkdW1wSGlzdG9yeUl0ZW0o
UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSwgaW50IGluCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RhdGljIFdURjo6U3RyaW5nIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JX
ZWJWaWV3KCkKK3N0YXRpYyBTdHJpbmcgZHVtcEJhY2tGb3J3YXJkTGlzdEZvcldlYlZpZXcoKQog
ewotICAgIFdURjo6U3RyaW5nIHJlc3VsdCA9ICJcbj09PT09PT09PT09PT09IEJhY2sgRm9yd2Fy
ZCBMaXN0ID09PT09PT09PT09PT09XG4iOworICAgIFN0cmluZyByZXN1bHQgPSAiXG49PT09PT09
PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PVxuIjsKICAgICAvLyBGT1JN
QVQ6CiAgICAgLy8gIiAgICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2Ns
aWNrLWZyYWdtZW50LWxpbmsuaHRtbCAgKipuYXYgdGFyZ2V0KioiCiAgICAgLy8gImN1cnItPiAg
KGZpbGUgdGVzdCk6ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2NsaWNrLWZyYWdtZW50LWxpbmsuaHRt
bCN0ZXN0ZnJhZ21lbnQgICoqbmF2IHRhcmdldCoqIgpAQCAtNDYwLDI0ICs0OTgsMjQgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiB7CiAgICAgaW52YWxpZGF0ZUFueVByZXZpb3VzV2Fp
dFRvRHVtcFdhdGNoZG9nKCk7CiAKLSAgICBXVEY6OlN0cmluZyBkdW1wRmlsZSA9IG1fcmVzdWx0
c0RpciArICptX2N1cnJlbnRUZXN0ICsgIi5kdW1wIjsKKyAgICBTdHJpbmcgZHVtcEZpbGUgPSBt
X3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZHVtcCI7CiAKLSAgICBXVEY6OlN0cmlu
ZyByZXN1bHRNaW1lVHlwZSA9ICJ0ZXh0L3BsYWluIjsKLSAgICBXVEY6OlN0cmluZyByZXNwb25z
ZU1pbWVUeXBlID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9u
c2VNSU1FVHlwZSgpOworICAgIFN0cmluZyByZXN1bHRNaW1lVHlwZSA9ICJ0ZXh0L3BsYWluIjsK
KyAgICBTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZSA9IG1haW5GcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKTsKIAogICAgIGJvb2wgZHVtcEFzVGV4dCA9
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpIHx8IHJlc3BvbnNlTWltZVR5cGUg
PT0gInRleHQvcGxhaW4iOwotICAgIFdURjo6U3RyaW5nIGRhdGEgPSBkdW1wQXNUZXh0ID8gZHVt
cEZyYW1lc0FzVGV4dChtYWluRnJhbWUpIDogcmVuZGVyVHJlZUR1bXAoKTsKKyAgICBTdHJpbmcg
ZGF0YSA9IGR1bXBBc1RleHQgPyBkdW1wRnJhbWVzQXNUZXh0KG1haW5GcmFtZSkgOiByZW5kZXJU
cmVlRHVtcCgpOwogCiAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEJhY2tGb3J3
YXJkTGlzdCgpKQogICAgICAgICBkYXRhICs9IGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3
KCk7CiAKLSAgICBXVEY6OlN0cmluZyByZXN1bHQgPSAiQ29udGVudC1UeXBlOiAiICsgcmVzdWx0
TWltZVR5cGUgKyAiXG4iICsgZGF0YTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gIkNvbnRlbnQtVHlw
ZTogIiArIHJlc3VsdE1pbWVUeXBlICsgIlxuIiArIGRhdGE7CiAKICAgICBkdW1wVG9GaWxlKHJl
c3VsdCk7CiAgICAgaWYgKG1fZHVtcFBpeGVscyAmJiAhZHVtcEFzVGV4dCAmJiBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkpCiAgICAgICAgIGR1bXBXZWJWaWV3
QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZXhw
ZWN0ZWRQaXhlbEhhc2goKSk7CiAKLSAgICBXVEY6OlN0cmluZyBjcmFzaEZpbGUgPSBkdW1wRmls
ZSArICIuY3Jhc2giOworICAgIFN0cmluZyBjcmFzaEZpbGUgPSBkdW1wRmlsZSArICIuY3Jhc2gi
OwogICAgIHVubGluayhjcmFzaEZpbGUudXRmOCgpLmRhdGEoKSk7CiAKICAgICB0ZXN0RG9uZSA9
IHRydWU7CkBAIC02MDUsNyArNjQzLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCosIEpTR2wKICAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdChjb250ZXh0KTsKIH0KIAot
dm9pZCBEdW1wUmVuZGVyVHJlZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit2b2lkIER1bXBSZW5kZXJUcmVl
OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpG
cmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCF0ZXN0RG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJl
Y2VpdmVUaXRsZTogJXNcbiIsIGRydEZyYW1lRGVzY3JpcHRpb24oZnJhbWUpLnV0ZjgoKS5kYXRh
KCksIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNjE1LDQ1ICs2NTMsNDUgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIHRp
dGxlLCBXZWJDb3JlOjoKIH0KIAogLy8gQ2hyb21lQ2xpZW50IGRlbGVnYXRlcy4KLXZvaWQgRHVt
cFJlbmRlclRyZWU6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlSUQp
Cit2b2lkIER1bXBSZW5kZXJUcmVlOjphZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQp
CiB7CiAgICAgcHJpbnRmKCJDT05TT0xFIE1FU1NBR0U6IGxpbmUgJWQ6ICVzXG4iLCBsaW5lTnVt
YmVyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpy
dW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIER1bXBS
ZW5kZXJUcmVlOjpydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIGlmICghdGVzdERvbmUpCiAgICAgICAgIHByaW50ZigiQUxFUlQ6ICVzXG4iLCBtZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIER1bXBSZW5kZXJUcmVlOjpydW5KYXZhU2NyaXB0
Q29uZmlybShjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSkKK2Jvb2wgRHVtcFJlbmRlclRyZWU6
OnJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAo
IXRlc3REb25lKQogICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4iLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1XVEY6OlN0cmluZyBEdW1wUmVuZGVy
VHJlZTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKK1N0cmluZyBEdW1wUmVuZGVyVHJlZTo6cnVu
SmF2YVNjcmlwdFByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlKQogewogICAgIGlmICghdGVzdERvbmUpCiAgICAgICAgIHByaW50ZigiUFJPTVBU
OiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCBkZWZhdWx0
VmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIH0KIAotYm9v
bCBEdW1wUmVuZGVyVHJlZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFdURjo6
U3RyaW5nJiBtZXNzYWdlKQorYm9vbCBEdW1wUmVuZGVyVHJlZTo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIXRlc3REb25lKQog
ICAgICAgICBwcmludGYoIkNPTkZJUk0gTkFWSUdBVElPTjogJXNcbiIsIG1lc3NhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OnNl
dFN0YXR1c1RleHQoY29uc3QgV1RGOjpTdHJpbmcmIHN0YXR1cykKK3ZvaWQgRHVtcFJlbmRlclRy
ZWU6OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXMpCiB7CiAgICAgaWYgKGdMYXlv
dXRUZXN0Q29udHJvbGxlci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQogICAgICAgICBwcmludGYo
IlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolc1xuIiwgc3RhdHVz
LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpleGNlZWRlZERhdGFi
YXNlUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUpCit2b2lkIER1bXBSZW5kZXJUcmVlOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IGlmICghdGVzdERvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRGF0YWJhc2VDYWxs
YmFja3MoKSkKICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzog
ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFi
YXNlOiVzXG4iLCBvcmlnaW4tPnByb3RvY29sKCkudXRmOCgpLmRhdGEoKSwgb3JpZ2luLT5ob3N0
KCkudXRmOCgpLmRhdGEoKSwgb3JpZ2luLT5wb3J0KCksIG5hbWUudXRmOCgpLmRhdGEoKSk7CkBA
IC02OTYsNyArNzM0LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZGlkQ2hhbmdlU2VsZWN0aW9u
KCkKICAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOiVzXG4iLCAiV2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbiIpOwog
fQogCi1ib29sIER1bXBSZW5kZXJUcmVlOjpmaW5kU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBz
dHJpbmcsIFdlYkNvcmU6OkZpbmRPcHRpb25zIG9wdGlvbnMpCitib29sIER1bXBSZW5kZXJUcmVl
OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBv
cHRpb25zKQogewogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBtYWluRnJhbWUgPyBtYWluRnJh
bWUtPnBhZ2UoKSA6IDA7CiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+ZmluZFN0cmluZyhzdHJp
bmcsIG9wdGlvbnMpOwpAQCAtNzUxLDcgKzc4OSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWU6OnNo
b3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSwgV2ViQ29yZTo6UmFuZ2UqIHJhbmdl
CiAgICAgcmV0dXJuIG1fYWNjZXB0c0VkaXRpbmc7CiB9CiAKLWJvb2wgRHVtcFJlbmRlclRyZWU6
OnNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlJhbmdl
KiByYW5nZSwgaW50IGFjdGlvbikKK2Jvb2wgRHVtcFJlbmRlclRyZWU6OnNob3VsZEluc2VydFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UsIGludCBhY3Rpb24p
CiB7CiAgICAgaWYgKCF0ZXN0RG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0VGV4dDolcyByZXBsYWNpbmdET01SYW5nZTolcyBnaXZlbkFjdGlvbjolc1xuIiwgdGV4
dC51dGY4KCkuZGF0YSgpLCBkcnRSYW5nZURlc2NyaXB0aW9uKHJhbmdlKS51dGY4KCkuZGF0YSgp
LCBpbnNlcnRBY3Rpb25TdHJpbmcoKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbilhY3Rpb24p
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRl
clRyZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGRiMmY2OWEuLjJmZjY5MTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJs
YWNrQmVycnkuaApAQCAtNjcsMjAgKzY3LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lkIGRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqLCBKU0dsb2JhbENvbnRleHRS
ZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIFdlYkNvcmU6OkZyYW1lKik7CisgICAg
dm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3Jl
OjpGcmFtZSopOwogICAgIHZvaWQgZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWREaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
KTsKICAgICB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIENocm9tZUNsaWVu
dCBkZWxlZ2F0ZXMKLSAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV1RGOjpTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBXVEY6OlN0cmluZyYg
c291cmNlSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFdURjo6U3RyaW5n
JiBtZXNzYWdlKTsKLSAgICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFdURjo6U3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBXVEY6OlN0cmluZyBydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0
IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXVEY6OlN0cmluZyYgZGVmYXVsdFZhbHVlKTsK
LSAgICBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBXVEY6OlN0cmluZyYg
bWVzc2FnZSk7Ci0gICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFdURjo6U3RyaW5nJik7Ci0g
ICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBXVEY6OlN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CisgICAgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOworICAgIFN0cmluZyBydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpOworICAgIGJvb2wgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzZXRTdGF0
dXNUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBib29sIGFs
bG93c09wZW5pbmdXaW5kb3coKTsKICAgICB2b2lkIHdpbmRvd0NyZWF0ZWQoV2ViUGFnZSopOwog
CkBAIC05MSw0NiArOTEsNDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oKTsKLSAg
ICBib29sIGZpbmRTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9u
cyk7CisgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbmRPcHRp
b25zKTsKICAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2UoV2ViQ29yZTo6UmFu
Z2UqKTsKICAgICBib29sIHNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlKFdlYkNvcmU6OlJhbmdl
Kik7CiAgICAgYm9vbCBzaG91bGREZWxldGVET01SYW5nZShXZWJDb3JlOjpSYW5nZSopOwogICAg
IGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZVRvRE9NUmFuZ2VBZmZpbml0eVN0aWxs
U2VsZWN0aW5nKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiB0b1Jh
bmdlLCBpbnQgYWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpOwogICAgIGJvb2wgc2hvdWxk
SW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UmFuZ2UqLCBpbnQgaW5zZXJ0QWN0
aW9uKTsKLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJD
b3JlOjpSYW5nZSosIGludCBpbnNlcnRBY3Rpb24pOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIGludCBpbnNlcnRBY3Rpb24pOwogCiAg
ICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBzX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFNlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfc2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHJ1
blRlc3QoY29uc3QgV1RGOjpTdHJpbmcmIHVybCk7CisgICAgdm9pZCBydW5UZXN0KGNvbnN0IFN0
cmluZyYgdXJsKTsKICAgICB2b2lkIHJ1blRlc3RzKCk7CisgICAgdm9pZCBydW5DdXJyZW50VGVz
dCgpOworICAgIHZvaWQgZ2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CiAKICAg
ICB2b2lkIHByb2Nlc3NXb3JrKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiopOwogCiBw
cml2YXRlOgogICAgIHN0YXRpYyBEdW1wUmVuZGVyVHJlZSogc19jdXJyZW50SW5zdGFuY2U7CiAK
LSAgICBXVEY6OlN0cmluZyBkdW1wRnJhbWVzQXNUZXh0KFdlYkNvcmU6OkZyYW1lKik7CisgICAg
U3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2b2lkIGxvY2F0
aW9uQ2hhbmdlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKIAogICAgIHZvaWQgZG9uZURydCgp
OwogICAgIHZvaWQgZ2V0VGVzdHNUb1J1bigpOwotICAgIGJvb2wgaXNIVFRQVGVzdChjb25zdCBX
VEY6OlN0cmluZyYgdGVzdCk7Ci0gICAgV1RGOjpTdHJpbmcgcmVuZGVyVHJlZUR1bXAoKSBjb25z
dDsKKyAgICBib29sIGlzSFRUUFRlc3QoY29uc3QgU3RyaW5nJiB0ZXN0KTsKKyAgICBTdHJpbmcg
cmVuZGVyVHJlZUR1bXAoKSBjb25zdDsKICAgICB2b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKCk7CiAgICAgdm9pZCBydW5SZW1haW5pbmdUZXN0cygpOwogICAgIHZvaWQg
aW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7CiAgICAgdm9pZCB3YWl0
VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiop
OwogCi0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX3Rlc3RzOwotICAgIFZlY3RvcjxXVEY6OlN0
cmluZz46Oml0ZXJhdG9yIG1fY3VycmVudFRlc3Q7CisgICAgVmVjdG9yPFN0cmluZz4gbV90ZXN0
czsKKyAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgbV9jdXJyZW50VGVzdDsKKyAgICBWZWN0
b3I8U3RyaW5nPiBtX3JlZlRlc3RzOyAvLyBSZWZlcmVuY2UgdGVzdHMgZm9yIGN1cnJlbnQgdGVz
dAogCi0gICAgV1RGOjpTdHJpbmcgbV9yZXN1bHRzRGlyOwotICAgIFdURjo6U3RyaW5nIG1faW5k
ZXhGaWxlOwotICAgIFdURjo6U3RyaW5nIG1fZG9uZUZpbGU7Ci0gICAgV1RGOjpTdHJpbmcgbV9j
dXJyZW50SHR0cFRlc3Q7Ci0gICAgV1RGOjpTdHJpbmcgbV9jdXJyZW50VGVzdEZpbGU7CisgICAg
U3RyaW5nIG1fcmVzdWx0c0RpcjsKKyAgICBTdHJpbmcgbV9pbmRleEZpbGU7CisgICAgU3RyaW5n
IG1fZG9uZUZpbGU7CisgICAgU3RyaW5nIG1fY3VycmVudEh0dHBUZXN0OworICAgIFN0cmluZyBt
X2N1cnJlbnRUZXN0RmlsZTsKIAogICAgIEdDQ29udHJvbGxlciogbV9nY0NvbnRyb2xsZXI7CiAg
ICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CkBA
IC0xNDEsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9hY2NlcHRzRWRpdGluZzsK
ICAgICBib29sIG1fbG9hZEZpbmlzaGVkOworICAgIGJvb2wgbV9ydW5uaW5nUmVmVGVzdHM7CiAg
ICAgc3RhdGljIGJvb2wgc19zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOwogfTsKIH0K
LS0gCjEuNy42Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>