<?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>92091</bug_id>
          
          <creation_ts>2012-07-24 03:19:15 -0700</creation_ts>
          <short_desc>[DRT] LTC:: pageNumberForElementById() could be moved to Internals</short_desc>
          <delta_ts>2012-07-30 03:34:08 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87284</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kaustubh Atrawalkar">kaustubh.ra</reporter>
          <assigned_to name="Kaustubh Atrawalkar">kaustubh.ra</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>kaustubh.ra</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>676601</commentid>
    <comment_count>0</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-24 03:19:15 -0700</bug_when>
    <thetext>This one is a printing test specific API and can be moved to Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676643</commentid>
    <comment_count>1</comment_count>
      <attachid>154016</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-24 04:24:11 -0700</bug_when>
    <thetext>Created attachment 154016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676645</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 04:26:27 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676655</commentid>
    <comment_count>3</comment_count>
      <attachid>154016</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 04:39:38 -0700</bug_when>
    <thetext>Comment on attachment 154016
Patch

Attachment 154016 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13326413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676657</commentid>
    <comment_count>4</comment_count>
      <attachid>154016</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-24 04:41:32 -0700</bug_when>
    <thetext>Comment on attachment 154016
Patch

The code looks good. I&apos;m not confident whether this API isn&apos;t used outside DRT, especially Mac port.
Do you know the revision where the API was added? If it indicates that the API is only for test, it is good news.
Or you could ask some Apple folks if it is used in production or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676658</commentid>
    <comment_count>5</comment_count>
      <attachid>154016</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-24 04:42:56 -0700</bug_when>
    <thetext>Comment on attachment 154016
Patch

r- due to cr-linux redness. You keep the API for now and romove it after chromium side change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676671</commentid>
    <comment_count>6</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-24 05:00:13 -0700</bug_when>
    <thetext>The API was added in https://trac.webkit.org/changeset/54205. 
After that only remaining port specific LTC implementations were added (https://trac.webkit.org/search?changeset=on&amp;wiki=on&amp;q=pageNumberForElementById).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676706</commentid>
    <comment_count>7</comment_count>
      <attachid>154029</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-24 05:47:10 -0700</bug_when>
    <thetext>Created attachment 154029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676738</commentid>
    <comment_count>8</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-24 06:16:15 -0700</bug_when>
    <thetext>Chromium patch uploaded at - http://codereview.chromium.org/10800093/ Please review the same also. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676995</commentid>
    <comment_count>9</comment_count>
      <attachid>154029</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 10:38:47 -0700</bug_when>
    <thetext>Comment on attachment 154029
Patch

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

This is very close, but I&apos;d like to iterate on this patch once more.

&gt; Source/WebCore/testing/Internals.h:56
&gt; +#define MAX_PAGE_WIDTH  800
&gt; +#define MAX_PAGE_HEIGTH 600

Generally, we don&apos;t use #define for constants.  Instead, we use the &quot;const&quot; keyword.

&gt; Source/WebCore/testing/Internals.h:200
&gt; +    int pageNumber(Element* element) { return pageNumber(element, MAX_PAGE_WIDTH, MAX_PAGE_HEIGTH); }
&gt; +    int pageNumber(Element* element, float pageWidth) { return pageNumber(element, MAX_PAGE_WIDTH, MAX_PAGE_HEIGTH); }
&gt; +    int pageNumber(Element*, float, float);

The compiler can do this work for you automatically:

int pageNumber(Element*, float pageWidth = 800, float pageHeight = 600);

&gt; Source/WebKit/win/Interfaces/IWebFramePrivate.idl:-101
&gt; -    HRESULT pageNumberForElementById([in] BSTR id, [in] float pageWidthInPixels, [in] float pageHeightInPixels, [out, retval] int* pageNumber);

I&apos;m not sure if we need to keep binary compatibility for IWebFramePrivate.idl.  To be on the same side, I would leave this in the IDL and just have an empty implementation with a comment.

&gt; Source/autotools/symbols.filter:56
&gt; +_ZN7WebCore12PrintContext20pageNumberForElementEPNS_7ElementERKNS_9FloatSizeE;

I think we need something similar to this for the apple-mac (or maybe the apple-win build).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677860</commentid>
    <comment_count>10</comment_count>
      <attachid>154311</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-25 03:20:06 -0700</bug_when>
    <thetext>Created attachment 154311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678096</commentid>
    <comment_count>11</comment_count>
      <attachid>154311</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:40:07 -0700</bug_when>
    <thetext>Comment on attachment 154311
Patch

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

One question below.

&gt; Source/WebKit/gtk/ChangeLog:14
&gt; +2012-07-24  Kaustubh Atrawalkar  &lt;kaustubh@motorola.com&gt;

This ChangeLog got corrupted.

&gt; Source/WebKit/mac/Misc/WebCoreStatistics.h:-89
&gt; -- (int)pageNumberForElement:(DOMElement*)element:(float)pageWidthInPixels:(float)pageHeightInPixels;

I don&apos;t know whether this is a public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678101</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:42:04 -0700</bug_when>
    <thetext>Perhaps Timothy Hatcher knows whether Source/WebKit/mac/Misc/WebCoreStatistics.h	is a public header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678102</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:43:46 -0700</bug_when>
    <thetext>In #webkit, we determined that it was SPI.

I would be on the safe side and leave it.  If someone from Apple says it&apos;s ok to remove, we can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678107</commentid>
    <comment_count>14</comment_count>
      <attachid>154311</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-07-25 08:47:41 -0700</bug_when>
    <thetext>Comment on attachment 154311
Patch

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

&gt;&gt; Source/WebKit/mac/Misc/WebCoreStatistics.h:-89
&gt;&gt; -- (int)pageNumberForElement:(DOMElement*)element:(float)pageWidthInPixels:(float)pageHeightInPixels;
&gt; 
&gt; I don&apos;t know whether this is a public API.

Yes, please add this back. There might be internal Apple clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678128</commentid>
    <comment_count>15</comment_count>
      <attachid>154311</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 09:03:28 -0700</bug_when>
    <thetext>Comment on attachment 154311
Patch

I think a more precise state for this patch would be r+/cq-.  Please revert the changes to Source/WebKit/mac before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678939</commentid>
    <comment_count>16</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-26 00:06:31 -0700</bug_when>
    <thetext>Thanks Adam. I have reverted the mac changes. Added comment in win/WebFrame.cpp for removing the function later. Landing the patch soon. Thanks for the review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678940</commentid>
    <comment_count>17</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-26 00:08:18 -0700</bug_when>
    <thetext>Committed r123711: &lt;http://trac.webkit.org/changeset/123711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679120</commentid>
    <comment_count>18</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 03:31:33 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679122</commentid>
    <comment_count>19</comment_count>
      <attachid>154603</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 03:31:43 -0700</bug_when>
    <thetext>Created attachment 154603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679125</commentid>
    <comment_count>20</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 03:36:18 -0700</bug_when>
    <thetext>Committed r123725: &lt;http://trac.webkit.org/changeset/123725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681727</commentid>
    <comment_count>21</comment_count>
      <attachid>155219</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-30 00:01:16 -0700</bug_when>
    <thetext>Created attachment 155219
Cr Patch

Patch for removing cr specific code after merging cr glue patch - http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=148610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681732</commentid>
    <comment_count>22</comment_count>
      <attachid>155219</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 00:13:34 -0700</bug_when>
    <thetext>Comment on attachment 155219
Cr Patch

Cleared review? from attachment 155219 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681737</commentid>
    <comment_count>23</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-30 00:21:07 -0700</bug_when>
    <thetext>Need to fix chromium patch for the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681743</commentid>
    <comment_count>24</comment_count>
      <attachid>155225</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-07-30 00:32:29 -0700</bug_when>
    <thetext>Created attachment 155225
Cr Patch

Trying once again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681832</commentid>
    <comment_count>25</comment_count>
      <attachid>155225</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 03:33:59 -0700</bug_when>
    <thetext>Comment on attachment 155225
Cr Patch

Clearing flags on attachment: 155225

Committed r124011: &lt;http://trac.webkit.org/changeset/124011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681833</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-30 03:34:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154016</attachid>
            <date>2012-07-24 04:24:11 -0700</date>
            <delta_ts>2012-07-24 05:46:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92091-20120724165353.patch</filename>
            <type>text/plain</type>
            <size>42514</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTI0ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExU
Qzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIElu
dGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1w
bGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3QgY2FzZXMuCisKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNv
dW50ZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6cGFnZU51bWJlcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKEludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhZ2VOdW1iZXIp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wNy0yNCAgQW50aG9u
eSBTY2lhbiAgPGFzY2lhbkByaW0uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3IgW0pTQ106
IEVuYWJsZSBpbml0aWF0b3IgY29sdW1uIGluIG5ldHdvcmsgcGFuZWwuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg
QEAKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1
ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VHJlZUFzVGV4dC5oIgpAQCAtMTEwNyw2ICsxMTA4LDE0IEBAIFN0cmluZyBJbnRlcm5hbHM6OmNv
dW50ZXJWYWx1ZShFbGVtZW50KgogICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGVs
ZW1lbnQpOwogfQogCitpbnQgSW50ZXJuYWxzOjpwYWdlTnVtYmVyKEVsZW1lbnQqIGVsZW1lbnQs
IGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKK3sKKyAgICBpZiAoIWVsZW1lbnQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJl
ckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwor
fQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IEludGVybmFsczo6aWNvblVSTHMoRG9jdW1l
bnQqIGRvY3VtZW50KSBjb25zdAogewogICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMcyA9IGRv
Y3VtZW50LT5pY29uVVJMcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShy
ZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIGNsYXNzIFdlYktpdFBvaW50OwogCiB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwogCisjZGVmaW5lIE1BWF9QQUdFX1dJRFRIICA4MDAKKyNk
ZWZpbmUgTUFYX1BBR0VfSEVJR1RIIDYwMAorCiBjbGFzcyBJbnRlcm5hbHMgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbnRlcm5hbHM+CiAgICAgICAgICAgICAgICAgLCBwdWJsaWMgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtMTQ2LDcgKzE0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIGludCBsYXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZShEb2N1bWVudCosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBpbnQgbGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZShEb2N1bWVu
dCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAKKwogICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKSBjb25zdDsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIApAQCAtMTkxLDYgKzE5NCwxMCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIFN0cmluZyBjb3VudGVyVmFsdWUoRWxlbWVudCopOworCisgICAgaW50
IHBhZ2VOdW1iZXIoRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gcGFnZU51bWJlcihlbGVtZW50
LCBNQVhfUEFHRV9XSURUSCwgTUFYX1BBR0VfSEVJR1RIKTsgfQorICAgIGludCBwYWdlTnVtYmVy
KEVsZW1lbnQqIGVsZW1lbnQsIGZsb2F0IHBhZ2VXaWR0aCkgeyByZXR1cm4gcGFnZU51bWJlcihl
bGVtZW50LCBNQVhfUEFHRV9XSURUSCwgTUFYX1BBR0VfSEVJR1RIKTsgfQorICAgIGludCBwYWdl
TnVtYmVyKEVsZW1lbnQqLCBmbG9hdCwgZmxvYXQpOwogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gaWNvblVSTHMoRG9jdW1lbnQqKSBjb25zdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDEy
MzQzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBbQ29uZGl0
aW9uYWw9SU5TUEVDVE9SXSBzZXF1ZW5jZTxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlQXJndW1lbnRD
b3VudHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpOwogCiAgICAgICAgIERPTVN0cmluZyBjb3VudGVy
VmFsdWUoaW4gRWxlbWVudCBlbGVtZW50KTsKKyAgICAgICAgbG9uZyBwYWdlTnVtYmVyKGluIEVs
ZW1lbnQgZWxlbWVudCwgaW4gW09wdGlvbmFsXSBmbG9hdCBwYWdlV2lkdGgsIGluIFtPcHRpb25h
bF0gZmxvYXQgcGFnZUhlaWdodCk7CiAgICAgICAgIERPTVN0cmluZ1tdIGljb25VUkxzKGluIERv
Y3VtZW50IGRvY3VtZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAm
JiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMjM0NTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJhd2Fs
a2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBh
bmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRp
b25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAq
IHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
V2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorCiAyMDEyLTA3LTI0ICBB
bnRob255IFNjaWFuICA8YXNjaWFuQHJpbS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvciBb
SlNDXTogRW5hYmxlIGluaXRpYXRvciBjb2x1bW4gaW4gbmV0d29yayBwYW5lbC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gMTIzNDMzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjMwLDEyICs2MzAsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbHMgbWFya2VyVGV4dEZv
ckxpc3RJdGVtKCkgZGVmaW5lZCBpbiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmguCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IFdl
YkVsZW1lbnQmKSBjb25zdCA9IDA7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGFn
ZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQuCi0gICAgLy8gVGhpcyBt
ZXRob2QgaXMgdXNlZCB0byBzdXBwb3J0IGxheW91dCB0ZXN0cy4KLSAgICB2aXJ0dWFsIGludCBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgV2ViU3RyaW5nJiBpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VIZWlnaHRJ
blBpeGVscykgY29uc3QgPSAwOwotCiAgICAgLy8gUHJpbnRzIGFsbCBvZiB0aGUgcGFnZXMgaW50
byB0aGUgY2FudmFzLCB3aXRoIHBhZ2UgYm91bmRhcmllcyBkcmF3biBhcwogICAgIC8vIG9uZSBw
aXhlbCB3aWRlIGJsdWUgbGluZXMuIFRoaXMgbWV0aG9kIGV4aXN0cyB0byBzdXBwb3J0IGxheW91
dCB0ZXN0cy4KICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKFdlYkNh
bnZhcyosIGNvbnN0IFdlYlNpemUmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMDEs
MjEgKzIwMDEsNiBAQCBXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjptYXJrZXJUZXh0Rm9yTGlzCiAg
ICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdF9jYXN0PEVsZW1l
bnQqPih3ZWJFbGVtZW50LmNvbnN0VW53cmFwPEVsZW1lbnQ+KCkpKTsKIH0KIAotaW50IFdlYkZy
YW1lSW1wbDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFdlYlN0cmluZyYgaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgcGFnZUhlaWdodEluUGl4ZWxzKSBjb25zdAotewotICAgIGlmICghbV9mcmFtZSkKLSAgICAg
ICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVy
biAtMTsKLQotICAgIEZsb2F0U2l6ZSBwYWdlU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhl
aWdodEluUGl4ZWxzKTsKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxl
bWVudChlbGVtZW50LCBwYWdlU2l6ZSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVJbXBsOjpwcmludFBh
Z2VzV2l0aEJvdW5kYXJpZXMoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlNpemUmIHBhZ2VT
aXplSW5QaXhlbHMpCiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0LmdldCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiAxMjM0
MzMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDkgKzIyOCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBjb250ZW50QXNNYXJrdXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyByZW5kZXJU
cmVlQXNUZXh0KFJlbmRlckFzVGV4dENvbnRyb2xzIHRvU2hvdyA9IFJlbmRlckFzVGV4dE5vcm1h
bCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNv
bnN0IFdlYkVsZW1lbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoY29uc3QgV2ViU3RyaW5nJiBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykgY29uc3Q7
CiAgICAgdmlydHVhbCBXZWJSZWN0IHNlbGVjdGlvbkJvdW5kc1JlY3QoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGludCBmcm9t
LCBpbnQgbGVuZ3RoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQ1
MikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90
b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQg
ZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3Zl
IHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2
ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisKIDIwMTItMDctMjMgIFBpZXJyZSBS
b3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5pZnkgbnVtVG91Y2hF
dmVudEhhbmRsZXJzQ2hhbmdlZCBhbmQgbmVlZFRvdWNoRXZlbnRzIGluIHRoZSBjaHJvbWUgY2xp
ZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MywyMSArMTczLDYgQEAgaW50IER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQYQogICAgIHJldHVybiBXZWJDb3JlOjpQcmludENvbnRl
eHQ6Om51bWJlck9mUGFnZXMoZnJhbWUsIFdlYkNvcmU6OkZsb2F0U2l6ZShwYWdlV2lkdGgsIHBh
Z2VIZWlnaHQpKTsKIH0KIAotaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQ
YWdlc0ZvckVsZW1lbnRJZChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIq
IGVsZW1lbnRJZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQotewotICAgIFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShld2tGcmFtZSk7Ci0K
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdlYkNvcmU6OkVsZW1l
bnQgKmVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElk
KTsKLQotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBXZWJD
b3JlOjpGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7Ci19Ci0KIFN0cmluZyBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHBhZ2VOdW1iZXIsIGludCB3aWR0aCwgaW50IGhlaWdo
dCwgaW50IG1hcmdpblRvcCwgaW50IG1hcmdpblJpZ2h0LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQg
bWFyZ2luTGVmdCkKIHsKICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBFV0tQcml2YXRlOjpj
b3JlRnJhbWUoZXdrRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzNDUy
KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDctMjQgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgW0RSVF0gTFRDOjogcGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCBm
cm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1vdmUg
dGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZl
bHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ayk6CisKIDIwMTItMDctMjMgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5pZnkgbnVtVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCBhbmQg
bmVlZFRvdWNoRXZlbnRzIGluIHRoZSBjaHJvbWUgY2xpZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OSwyOSArMTg5LDYgQEAgQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBS
ZQogfQogCiAvKioKLSAqIG51bWJlckZvckVsZW1lbnRCeUlkCi0gKiBAZnJhbWU6IGEgI1dlYktp
dFdlYkZyYW1lCi0gKiBAaWQ6IGFuIGVsZW1lbnQgSUQgc3RyaW5nCi0gKiBAcGFnZVdpZHRoOiB3
aWR0aCBvZiBhIHBhZ2UKLSAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2YgYSBwYWdlCi0gKgotICog
UmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVt
ZW50IHdpbGwgYmUgcHV0Ci0gKi8KLWludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIGlk
LCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCi17Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIDApOwotCi0gICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gLTE7Ci0KLSAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGlkKSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50KGNvcmVFbGVtZW50LCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0
KSk7Ci19Ci0KLS8qKgogICogbnVtYmVyT2ZQYWdlc0ZvckZyYW1lCiAgKiBAZnJhbWU6IGEgI1dl
YktpdFdlYkZyYW1lCiAgKiBAcGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5oCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpA
QCAtNTksNyArNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdTTGlzdCogZ2V0RnJhbWVDaGls
ZHJlbihXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgZ2V0SW5uZXJU
ZXh0KFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIFdURjo6Q1N0cmluZyBkdW1wUmVuZGVy
VHJlZShXZWJLaXRXZWJGcmFtZSopOwotICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKFdlYktpdFdlYkZyYW1lKiwgY29uc3QgY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzRm9yRnJhbWUo
V2ViS2l0V2ViRnJhbWUqLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpOwogICAg
IHN0YXRpYyBXVEY6OkNTdHJpbmcgcGFnZVByb3BlcnR5KFdlYktpdFdlYkZyYW1lKiwgY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7CiAgICAgc3RhdGljIFdURjo6Q1N0
cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhXZWJLaXRXZWJGcmFtZSosIGludCBwYWdl
TnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5S
aWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTIzNDUyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMjQgIEthdXN0dWJoIEF0cmF3
YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0RSVF0gTFRDOjogcGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJuYWxz
IGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE1pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW06CisgICAgICAgICogV2ViS2l0Lm9yZGVyOgorCiAyMDEyLTA3LTIzICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBhcnQgMiBv
ZjogSW1wbGVtZW50IHN0aWNreSBwb3NpdGlvbmluZwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViS2l0Lm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRl
cgkocmV2aXNpb24gMTIzNDMzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjc3LDcgKzIyNzcsNiBAQCBfX1hQQ1JlbW92ZVByb3BlcnR5CiBf
V0tQQ1JlbW92ZVByb3BlcnR5CiBfX1pONldlYktpdDI3TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5MTRyZW1vdmVQcm9wZXJ0eUVqUktOM0pTQzEwSWRlbnRpZmllckUKIF9fWk42V2ViS2l0MjdO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkxNHJlbW92ZVByb3BlcnR5RWpqCi0tW1dlYkZyYW1l
KFdlYktpdERlYnVnKSBwYWdlTnVtYmVyRm9yRWxlbWVudDo6Ol0KIC1bV2ViRnJhbWUoV2ViS2l0
RGVidWcpIG51bWJlck9mUGFnZXM6Ol0KIC1bV2ViRnJhbWUoV2ViS2l0RGVidWcpIHBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzOjo6Ojo6Ol0KIC1bV2ViRnJhbWUoV2ViS2l0RGVidWcpIGlzUGFn
ZUJveFZpc2libGU6XQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRp
c3RpY3MuaAkocmV2aXNpb24gMTIzNDMzKQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIEBpbnRlcmZh
Y2UgV2ViQ29yZVN0YXRpc3RpY3MgOiBOU09iamVjdAogQGludGVyZmFjZSBXZWJGcmFtZSAoV2Vi
S2l0RGVidWcpCiAtIChOU1N0cmluZyAqKXJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRp
b25Gb3JQcmludGluZzooQk9PTClmb3JQcmludGluZzsKIC0gKE5TU3RyaW5nICopY291bnRlclZh
bHVlRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDsKLS0gKGludClwYWdlTnVtYmVyRm9y
RWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZs
b2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKGludCludW1iZXJPZlBhZ2VzOihmbG9hdClwYWdl
V2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoTlNTdHJpbmcgKilw
YWdlUHJvcGVydHk6KGNvbnN0IGNoYXIqKXByb3BlcnR5TmFtZTooaW50KXBhZ2VOdW1iZXI7CiAt
IChib29sKWlzUGFnZUJveFZpc2libGU6KGludClwYWdlTnVtYmVyOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCShyZXZpc2lvbiAxMjM0MzMpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzgsMTEgKzI3OCw2IEBAIC0gKE5TU3RyaW5nICopY291bnRlclZhbHVlRm9yRWxl
bWVudDooRE8KICAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVudChjb3JlKGVsZW1lbnQp
KTsKIH0KIAotLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50
OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzCi17Ci0g
ICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZShlbGVtZW50
KSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKLX0K
LQogLSAoaW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClw
YWdlSGVpZ2h0SW5QaXhlbHMKIHsKICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBh
Z2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFn
ZUhlaWdodEluUGl4ZWxzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTIzNDUyKQor
KysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wNy0yNCAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xh
LmNvbT4KKworICAgICAgICBbRFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBj
b3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20g
TGF5b3V0VGVzdENvdHJvbGxlciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUg
b2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0
ZXN0cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKwogMjAxMi0wNy0yMyAgUGllcnJlIFJvc3NpICA8cGll
cnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBVbmlmeSBudW1Ub3VjaEV2ZW50SGFuZGxl
cnNDaGFuZ2VkIGFuZCBuZWVkVG91Y2hFdmVudHMgaW4gdGhlIGNocm9tZSBjbGllbnQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg2LDE5ICszODYsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpn
YXJiYWdlQ29sCiAgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRo
cmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKIH0KIAotaW50IER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgRnJhbWUq
IGNvcmVGcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJhbWUpOwotICAgIGlmICghY29y
ZUZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gY29y
ZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKLSAg
ICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENv
bnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7Ci19Ci0KIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQYWdlcyhR
V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQogewogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4
LDcgKzEyOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJl
Y3RvcmllcygpOwogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJG
cmFtZSopOwogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIGZyYW1lLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCk7CiAgICAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFX
ZWJGcmFtZSogZnJhbWUpOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50
SWQpOwogICAgIHN0YXRpYyB2b2lkIHNldFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9y
KFFXZWJQYWdlKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM0NTIpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wNy0yNCAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNv
bT4KKworICAgICAgICBbRFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3Vs
ZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5
b3V0VGVzdENvdHJvbGxlciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xk
IHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0
cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFt
ZVByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFt
ZS5oOgorCiAyMDEyLTA3LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEJ1aWxkIGZpeCBpZiBOT01JTk1BWCBpcyBkZWZpbmVkIGJ5IHRoZSBidWls
ZCBzeXN0ZW0uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3Nywy
OCArODc3LDYgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZQogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoCi0gICAgLyogW2luXSAqLyBCU1RSIGlkLAotICAgIC8q
IFtpbl0gKi8gZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsCi0gICAgLyogW2luXSAqLyBmbG9hdCBw
YWdlSGVpZ2h0SW5QaXhlbHMsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkK
LXsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAg
ICByZXR1cm4gRV9GQUlMOwotCi0gICAgU3RyaW5nIGNvcmVJZCA9IFN0cmluZyhpZCwgU3lzU3Ry
aW5nTGVuKGlkKSk7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChjb3JlSWQpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0ID0gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9y
RWxlbWVudChlbGVtZW50LCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJ
blBpeGVscykpOwotICAgIHJldHVybiBTX09LOwotfQotCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpudW1iZXJPZlBhZ2VzKAogICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFnZVdp
ZHRoSW5QaXhlbHMsCiAgICAgLyogW2luXSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MywxMiArMTYzLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKEJTVFIqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihCT09MIGZvclByaW50aW5nLCBC
U1RSICpyZXN1bHQpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCgKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGlkLAotICAg
ICAgICAvKiBbaW5dICovIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAvKiBbaW5d
ICovIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQqIHJlc3VsdCk7Ci0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bnVtYmVyT2ZQYWdlcygKICAgICAgICAgLyogW2luXSAqLyBmbG9hdCBwYWdlV2lkdGhJblBpeGVs
cywKICAgICAgICAgLyogW2luXSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJ
KHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZy
YW1lUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTk4LDggKzk4LDYgQEAgaW50ZXJmYWNl
IElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCB2aXNpYmxlQ29udGVu
dFJlY3QoW291dCwgcmV0dmFsXSBSRUNUKik7CiAKLSAgICBIUkVTVUxUIHBhZ2VOdW1iZXJGb3JF
bGVtZW50QnlJZChbaW5dIEJTVFIgaWQsIFtpbl0gZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIFtp
bl0gZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLCBbb3V0LCByZXR2YWxdIGludCogcGFnZU51bWJl
cik7Ci0KICAgICBIUkVTVUxUIG51bWJlck9mUGFnZXMoW2luXSBmbG9hdCBwYWdlV2lkdGhJblBp
eGVscywgW2luXSBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsIFtvdXQsIHJldHZhbF0gaW50KiBw
YWdlTnVtYmVyKTsKIAogICAgIEhSRVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQsIHJldHZhbF0g
QlNUUiogcmVzdWx0KTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQ1MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2Fy
ICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25z
IGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRUZXN0Q29u
dHJvbGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0UHJpbnRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXIpOgorCiAyMDEyLTA3LTI0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBFV2ViTGF1bmNoZXIgc2hvdWxkIG5vdCByZXF1aXJlIGNvbmZp
Zy5oIGluIHRoZSBzdHlsZSBjaGVjawpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjEs
MjIgKzgyMSw2IEBAIHN0YXRpYyBib29sIHBhcnNlUGFnZU51bWJlclNpemVNYXJpbmdzKEoKICAg
ICB9CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBmbG9hdCBwYWdlV2lkdGhJ
blBpeGVscyA9IDA7Ci0gICAgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzID0gMDsKLSAgICBpZiAo
IXBhcnNlUGFnZVBhcmFtZXRlcnMoY29udGV4dCwgYXJndW1lbnRDb3VudCAtIDEsIGFyZ3VtZW50
cyArIDEsIGV4Y2VwdGlvbiwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICBpZiAoKmV4Y2VwdGlv
bikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgaW50IHBh
Z2VOdW1iZXIgPSBjb250cm9sbGVyLT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoZWxlbWVudElk
LmdldCgpLCBwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKLSAgICByZXR1
cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgcGFnZU51bWJlcik7Ci19Ci0KIHN0YXRpYyBK
U1ZhbHVlUmVmIG51bWJlck9mUGFnZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CiAgICAgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwpAQCAtMjMzMSw3ICsyMzE1
LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7
ICJub3RpZnlEb25lIiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJlZmVy
ZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCIsIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIiwgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlUHJvcGVydHkiLCBwYWdlUHJvcGVydHlD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRv
TG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDYgQEAgcHVibGljOgogICAgIGludCBudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0
aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIGludCBudW1iZXJPZlBl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpOwogICAgIHZvaWQgb3ZlcnJpZGVQ
cmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwotICAgIGludCBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aElu
UGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51
bWJlcikgY29uc3Q7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhZ2VTaXplQW5kTWFy
Z2luc0luUGl4ZWxzKGludCBwYWdlTnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBt
YXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxl
ZnQpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVmIHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0
UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9MYXlvdXRUZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MTYsMTIgKzUxNiw2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHIKICAgICByZXR1cm4gMDsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAtMTsKLX0KLQogaW50IExheW91dFRlc3RDb250cm9s
bGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0LCBmbG9hdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjksNyArMTY5LDYgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bAogICAgIGJpbmRNZXRob2QoIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjogbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIGJpbmRNZXRob2QoIm9iakNJZGVudGl0eUlzRXF1
YWwiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6Om9iakNJZGVudGl0eUlzRXF1YWwpOwogICAgIGJp
bmRNZXRob2QoIm92ZXJyaWRlUHJlZmVyZW5jZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3Zl
cnJpZGVQcmVmZXJlbmNlKTsKLSAgICBiaW5kTWV0aG9kKCJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk7CiAg
ICAgYmluZE1ldGhvZCgicGFnZVByb3BlcnR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
UHJvcGVydHkpOwogICAgIGJpbmRNZXRob2QoInBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk7CiAgICAg
YmluZE1ldGhvZCgicGF0aFRvTG9jYWxSZXNvdXJjZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGF0aFRvTG9jYWxSZXNvdXJjZSk7CkBAIC0xNzIyLDI0ICsxNzIxLDYgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0UHJpbnRpbmcoYwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQog
Ci12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAg
ICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpbnQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwotICAg
IGludCBwYWdlSGVpZ2h0SW5QaXhlbHMgPSAwOwotICAgIGlmICghcGFyc2VQYWdlU2l6ZVBhcmFt
ZXRlcnMoYXJndW1lbnRzLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBh
Z2VXaWR0aEluUGl4ZWxzLCAmcGFnZUhlaWdodEluUGl4ZWxzKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBX
ZWJGcmFtZSogZnJhbWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOwotICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICByZXN1bHQtPnNldChmcmFtZS0+cGFnZU51
bWJlckZvckVsZW1lbnRCeUlkKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBhZ2VXaWR0aEluUGl4ZWxzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihwYWdlSGVpZ2h0SW5QaXhl
bHMpKSk7Ci19Ci0KIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2lu
c0luUGl4ZWxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoIiIpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAx
MjM0MzMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsOSArMzI3LDYgQEAgcHVibGljOgogICAgIC8v
IENhdXNlcyBsYXlvdXQgdG8gaGFwcGVuIGFzIGlmIHRhcmdldHRlZCB0byBwcmludGVkIHBhZ2Vz
LgogICAgIHZvaWQgc2V0UHJpbnRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCi0gICAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmll
ZCBlbGVtZW50IHdpbGwgYmUgcHV0LgotICAgIHZvaWQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIC8vIEdldHMgdGhl
IHBhZ2Ugc2l6ZSBhbmQgbWFyZ2lucyBmb3IgYSBwcmludGVkIHBhZ2UuCiAgICAgdm9pZCBwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxl
ckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRl
c3RDb250cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDExICsxMjMsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRy
CiAgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIiIpKTsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpudW1iZXJPZlBhZ2VzRm9yRWxlbWVudElkKGJyb3dzZXItPm1haW5GcmFtZSgpLCBpZC0+dXN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7Ci19Ci0KIGludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGgsIGZsb2F0
IHBhZ2VIZWlnaHQpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVt
YmVyT2ZQYWdlcyhicm93c2VyLT5tYWluRnJhbWUoKSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDE0
ICsxMTksNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAgICAg
cmV0dXJuIHN0cmluZzsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFn
ZUhlaWdodCkKLXsKLSAgICBnY2hhciogaWRHQ2hhciA9IEpTU3RyaW5nQ29weVVURjhDU3RyaW5n
KGlkKTsKLSAgICBpbnQgcGFnZU51bWJlciA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKG1haW5GcmFtZSwgaWRHQ2hhciwgcGFnZVdpZHRoLCBwYWdl
SGVpZ2h0KTsKLSAgICBnX2ZyZWUoaWRHQ2hhcik7Ci0gICAgcmV0dXJuIHBhZ2VOdW1iZXI7Ci19
Ci0KIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lk
dGgsIGZsb2F0IHBhZ2VIZWlnaHQpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6bnVtYmVyT2ZQYWdlc0ZvckZyYW1lKG1haW5GcmFtZSwgcGFnZVdpZHRoLCBwYWdlSGVp
Z2h0KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDEyMzQzMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg0
LDE4ICsyODQsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAg
ICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKLWludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBp
eGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQotewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBpZCkpOwotICAgIE5TU3RyaW5nICppZE5TID0gKE5TU3RyaW5nICopaWRDRi5nZXQoKTsK
LQotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0
RWxlbWVudEJ5SWQ6aWROU107Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7
Ci0KLSAgICByZXR1cm4gW21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBh
Z2VXaWR0aEluUGl4ZWxzOnBhZ2VIZWlnaHRJblBpeGVsc107Ci19Ci0KIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0CiB7CiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHBhZ2VQcm9wZXJ0eTpwcm9wZXJ0eU5hbWU6cGFn
ZU51bWJlcl0pKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE2LDE3ICs3MTYsNiBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENv
CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3b3JrZXJUaHJlYWRDb3VudCgp
OwogfQogCi1pbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICAv
LyBJZiBubyBzaXplIHNwZWNpZmllZCwgd2VicGFnZSB2aWV3cG9ydCBzaXplIGlzIHVzZWQKLSAg
ICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKLSAgICAgICAgd2lkdGggPSBtX2RydC0+d2ViUGFn
ZSgpLT52aWV3cG9ydFNpemUoKS53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBtX2RydC0+d2Vi
UGFnZSgpLT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2Vi
UGFnZSgpLT5tYWluRnJhbWUoKSwgaWQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBpbnQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
IHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mUGFnZXMobV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNp
b24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDYgQEAgcHVibGljIHNsb3RzOgog
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgdm9p
ZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVu
LCBjb25zdCBRU3RyaW5nJiBzY2hlbWUpOwogICAgIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOwot
ICAgIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0
IHdpZHRoID0gMCwgZmxvYXQgaGVpZ2h0ID0gMCk7CiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxv
YXQgd2lkdGggPSBtYXhWaWV3V2lkdGgsIGZsb2F0IGhlaWdodCA9IG1heFZpZXdIZWlnaHQpOwog
ICAgIGJvb2wgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCk7CiAgICAgLy8gRm9yIG5vdywgdGhp
cyBpcyBhIG5vLW9wLiBUaGlzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG91dGNvbWUgb2YKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMCwyMSAr
MTMwMCw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFZpc2kKICAgICBz
aGFyZWRIaXN0b3J5UHJpdmF0ZS0+cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiB9CiAKLWludCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVm
IGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQot
ewotICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1l
KTsKLSAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB3c3Ry
aW5nIGlkV3N0cmluZyA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKGlkKTsKLSAgICBCU1RSIGlkQlNU
UiA9IFN5c0FsbG9jU3RyaW5nTGVuKChPTEVDSEFSKilpZFdzdHJpbmcuY19zdHIoKSwgaWRXc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICBpbnQgcGFnZU51bWJlciA9IC0xOwotICAgIGlmIChGQUlMRUQo
ZnJhbWVQcml2YXRlLT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoaWRCU1RSLCBwYWdlV2lkdGhJ
blBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzLCAmcGFnZU51bWJlcikpKQotICAgICAgICBwYWdl
TnVtYmVyID0gLTE7Ci0gICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOwotICAgIHJldHVybiBwYWdl
TnVtYmVyOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxv
YXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAgICBD
T01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMiArNDcyLDYgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2Nyb2xsYmFyUAogICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50Ci0gICAgcmV0dXJuIC0xOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51
bWJlck9mUGFnZXMoZmxvYXQsIGZsb2F0KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDEyICszNzQsNiBAQCBpbnQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om51bWJlck9mUGFnZXMoCiAgICAgcmV0dXJuIFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIG1haW5GcmFtZSwgcGFnZVdpZHRoSW5Q
aXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7CiB9CiAKLWludCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBkb3VibGUgcGFnZVdp
ZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCi17Ci0gICAgV0tCdW5kbGVG
cmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAgICByZXR1cm4gV0tCdW5kbGVQYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBtYWlu
RnJhbWUsIHRvV0soaWQpLmdldCgpLCBwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4
ZWxzKTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRv
bSwgaW50IG1hcmdpbkxlZnQpCiB7CiAgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+
cGFnZSgpKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDEyMzQzMykK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw2IEBAIHB1YmxpYzoKIAogICAg
IC8vIFByaW50aW5nCiAgICAgaW50IG51bWJlck9mUGFnZXMoZG91YmxlIHBhZ2VXaWR0aEluUGl4
ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKTsKLSAgICBpbnQgcGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBw
YWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1h
cmdpbkxlZnQpOwogICAgIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKIApJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlv
dXRUZXN0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHJldmlz
aW9uIDEyMzQzMykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw2IEBAIG1vZHVsZSBXVFIgewogCiAgICAgICAgIC8vIFByaW50aW5nCiAgICAgICAgIGludCBu
dW1iZXJPZlBhZ2VzKGluIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgaW4gZG91YmxlIHBhZ2VI
ZWlnaHRJblBpeGVscyk7Ci0gICAgICAgIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoaW4g
RE9NU3RyaW5nIGlkLCBpbiBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGluIGRvdWJsZSBwYWdl
SGVpZ2h0SW5QaXhlbHMpOwogICAgICAgICBET01TdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5Q
aXhlbHMoaW4gaW50IHBhZ2VJbmRleCwgaW4gaW50IHdpZHRoLCBpbiBpbnQgaGVpZ2h0LCBpbiBp
bnQgbWFyZ2luVG9wLCBpbiBpbnQgbWFyZ2luUmlnaHQsIGluIGludCBtYXJnaW5Cb3R0b20sIGlu
IGludCBtYXJnaW5MZWZ0KTsKICAgICAgICAgYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGluIGlu
dCBwYWdlSW5kZXgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM0NTIpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0yNCAg
S2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBb
RFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxl
ciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNp
ZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBwcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRl
c3QtdXRpbHMuanM6CisgICAgICAgIChwYWdlTnVtYmVyRm9yRWxlbWVudFNob3VsZEJlKToKKyAg
ICAgICAgKiBwcmludGluZy9yZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0bWw6CisgICAgICAg
ICogcHJpbnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzOgorCiAy
MDEyLTA3LTI0ICBBbnRob255IFNjaWFuICA8YXNjaWFuQHJpbS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvciBbSlNDXTogRW5hYmxlIGluaXRpYXRvciBjb2x1bW4gaW4gbmV0d29yayBwYW5l
bC4KSW5kZXg6IExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJG
b3JFbGVtZW50QnlJZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEyMzQzMykKKysrIExheW91dFRl
c3RzL3ByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVRlc3QgZm9yIHRlc3RSdW5uZXIucGFnZU51bWJlckZv
ckVsZW1lbnRCeUlkKCkKK1Rlc3QgZm9yIGludGVybmFscy5wYWdlTnVtYmVyKCkKIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9wcmludGluZy9yZXR1cm4t
ZnJvbS1wcmludGluZy1tb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRp
bmcvcmV0dXJuLWZyb20tcHJpbnRpbmctbW9kZS5odG1sCShyZXZpc2lvbiAxMjM0MzMpCisrKyBM
YXlvdXRUZXN0cy9wcmludGluZy9yZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTgsNyArOCw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKCd0ZXN0MScpOworICAgICAgICBpbnRlcm5hbHMucGFnZU51bWJlcihkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdDEnKSk7CiB9CiA8L3NjcmlwdD4KIDxoZWFkPgpJbmRleDogTGF5b3V0
VGVzdHMvcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3Qt
dXRpbHMuanMJKHJldmlzaW9uIDEyMzQzMykKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3Jlc291
cmNlcy9wYWdlZC1tZWRpYS10ZXN0LXV0aWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsx
Miw3IEBAIGZ1bmN0aW9uIGFwcGVuZFJlc3VsdChyZXN1bHQpCiAKIGZ1bmN0aW9uIHBhZ2VOdW1i
ZXJGb3JFbGVtZW50U2hvdWxkQmUoaWQsIGV4cGVjdGVkUGFnZU51bWJlcikKIHsKLSAgICB2YXIg
YWN0dWFsUGFnZU51bWJlciA9IHRlc3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGlk
KTsKKyAgICB2YXIgYWN0dWFsUGFnZU51bWJlciA9IGludGVybmFscy5wYWdlTnVtYmVyKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7CiAgICAgaWYgKGFjdHVhbFBhZ2VOdW1iZXIgPT0gZXhw
ZWN0ZWRQYWdlTnVtYmVyKQogICAgICAgICBhcHBlbmRSZXN1bHQoJ1BBU1M6IHBhZ2UgbnVtYmVy
IG9mICInICsgaWQgKyAnIiBpcyAnICsgYWN0dWFsUGFnZU51bWJlcik7CiAgICAgZWxzZSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZU51bWVyRm9yRWxlbWVu
dEJ5SWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3Rz
L3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzCShyZXZpc2lvbiAxMjM0MzMpCisrKyBMYXlvdXRU
ZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgdGVzdFJ1
bm5lci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSIpOworZGVzY3JpcHRpb24oIlRlc3QgZm9y
IGludGVybmFscy5wYWdlTnVtYmVyKCkiKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154029</attachid>
            <date>2012-07-24 05:47:10 -0700</date>
            <delta_ts>2012-07-25 03:19:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92091-20120724181653.patch</filename>
            <type>text/plain</type>
            <size>40714</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQ2
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3
LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAg
ICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVk
IHRvIEludGVybmFscy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXhwb3J0aW5nIEludGVybmFsczo6cGFnZU51bWJlciBzeW1ib2xzIGZvciB0aGUgR3Rr
IGJ1aWxkLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwog
MjAxMi0wNy0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0dUS10gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNwYWNlIGluIHRoZSBwcmV2aW91cyBj
b21taXQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM0NjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNy0yNCAg
S2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBb
RFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxl
ciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNp
ZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0IGNhc2VzLgorCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpjb3VudGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnBhZ2VOdW1iZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6
CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdl
TnVtYmVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDctMjMg
IEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVlY2ggSmF2
YVNjcmlwdCBBUEk6IEFkZCB0aGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuZW1tYSBhdHRyaWJ1
dGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDEyMzQz
MykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUHJpbnRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCkBAIC0xMTA3LDYgKzExMDgsMTQgQEAgU3Ry
aW5nIEludGVybmFsczo6Y291bnRlclZhbHVlKEVsZW1lbnQqCiAgICAgcmV0dXJuIGNvdW50ZXJW
YWx1ZUZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKK2ludCBJbnRlcm5hbHM6OnBhZ2VOdW1iZXIo
RWxlbWVudCogZWxlbWVudCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQorewor
ICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gUHJpbnRD
b250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBGbG9hdFNpemUocGFnZVdpZHRo
LCBwYWdlSGVpZ2h0KSk7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSW50ZXJuYWxz
OjppY29uVVJMcyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEljb25V
Ukw+IGljb25VUkxzID0gZG9jdW1lbnQtPmljb25VUkxzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDkgQEAgY2xhc3MgV2Vi
S2l0UG9pbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKKyNkZWZpbmUgTUFYX1BB
R0VfV0lEVEggIDgwMAorI2RlZmluZSBNQVhfUEFHRV9IRUlHVEggNjAwCisKIGNsYXNzIEludGVy
bmFscyA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4KICAgICAgICAgICAgICAgICAsIHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC0xNDYsNyArMTQ5
LDcgQEAgcHVibGljOgogCiAgICAgaW50IGxhc3RTcGVsbENoZWNrUmVxdWVzdFNlcXVlbmNlKERv
Y3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGludCBsYXN0U3BlbGxDaGVja1Byb2Nlc3Nl
ZFNlcXVlbmNlKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIAorCiAgICAgVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogCkBAIC0xOTEsNiAr
MTk0LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgU3RyaW5nIGNvdW50ZXJWYWx1ZShFbGVt
ZW50Kik7CisKKyAgICBpbnQgcGFnZU51bWJlcihFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiBw
YWdlTnVtYmVyKGVsZW1lbnQsIE1BWF9QQUdFX1dJRFRILCBNQVhfUEFHRV9IRUlHVEgpOyB9Cisg
ICAgaW50IHBhZ2VOdW1iZXIoRWxlbWVudCogZWxlbWVudCwgZmxvYXQgcGFnZVdpZHRoKSB7IHJl
dHVybiBwYWdlTnVtYmVyKGVsZW1lbnQsIE1BWF9QQUdFX1dJRFRILCBNQVhfUEFHRV9IRUlHVEgp
OyB9CisgICAgaW50IHBhZ2VOdW1iZXIoRWxlbWVudCosIGZsb2F0LCBmbG9hdCk7CiAgICAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBpY29uVVJMcyhEb2N1bWVudCopIGNvbnN0OwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAkocmV2aXNpb24gMTIzNDMzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDcgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIHNlcXVlbmNlPFN0cmluZz4gY29uc29s
ZU1lc3NhZ2VBcmd1bWVudENvdW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCk7CiAKICAgICAgICAg
RE9NU3RyaW5nIGNvdW50ZXJWYWx1ZShpbiBFbGVtZW50IGVsZW1lbnQpOworICAgICAgICBsb25n
IHBhZ2VOdW1iZXIoaW4gRWxlbWVudCBlbGVtZW50LCBpbiBbT3B0aW9uYWxdIGZsb2F0IHBhZ2VX
aWR0aCwgaW4gW09wdGlvbmFsXSBmbG9hdCBwYWdlSGVpZ2h0KTsKICAgICAgICAgRE9NU3RyaW5n
W10gaWNvblVSTHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTIzNDYyKQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIEthdXN0dWJoIEF0cmF3
YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0RSVF0gTFRDOjogcGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJuYWxz
IGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKwog
MjAxMi0wNy0yMyAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbmlmeSBudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkIGFuZCBuZWVkVG91Y2hFdmVu
dHMgaW4gdGhlIGNocm9tZSBjbGllbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAko
cmV2aXNpb24gMTIzNDMzKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDIxICsxNzMs
NiBAQCBpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpudW1iZXJPZlBhCiAgICAgcmV0dXJu
IFdlYkNvcmU6OlByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhmcmFtZSwgV2ViQ29yZTo6Rmxv
YXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwogfQogCi1pbnQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpudW1iZXJPZlBhZ2VzRm9yRWxlbWVudElkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgY29uc3QgY2hhciogZWxlbWVudElkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBh
Z2VIZWlnaHQpCi17Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gRVdLUHJpdmF0ZTo6Y29y
ZUZyYW1lKGV3a0ZyYW1lKTsKLQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgV2ViQ29yZTo6RWxlbWVudCAqZWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpOwotCi0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIHJldHVybiBXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JF
bGVtZW50KGVsZW1lbnQsIFdlYkNvcmU6OkZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQp
KTsKLX0KLQogU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGFnZVNpemVBbmRNYXJn
aW5zSW5QaXhlbHMoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgcGFnZU51bWJlciwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQsIGlu
dCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KQogewogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShld2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjM0NjIpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNy0yNCAgS2F1c3R1YmggQXRyYXdh
bGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJUXSBMVEM6OiBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKworMjAxMi0wNy0yNCAgS2F1c3R1YmggQXRyYXdhbGth
ciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJUXSBMVEM6OiBwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGFnZU51bWJl
ckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxlciB0byBJbnRlcm5hbHMgYW5k
CisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9u
cyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMi0wNy0yMyAgUGllcnJlIFJvc3NpICA8
cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBVbmlmeSBudW1Ub3VjaEV2ZW50SGFu
ZGxlcnNDaGFuZ2VkIGFuZCBuZWVkVG91Y2hFdmVudHMgaW4gdGhlIGNocm9tZSBjbGllbnQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gMTIzNDMzKQorKysgU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg5LDI5ICsxODksNiBAQCBDU3RyaW5nIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6ZHVtcFJlCiB9CiAKIC8qKgotICogbnVtYmVyRm9yRWxlbWVudEJ5SWQKLSAq
IEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqIEBpZDogYW4gZWxlbWVudCBJRCBzdHJpbmcK
LSAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEgcGFnZQotICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBv
ZiBhIHBhZ2UKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IFRoZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0
aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQKLSAqLwotaW50IER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKLXsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7
Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJh
bWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29y
ZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKLSAg
ICBpZiAoIWNvcmVFbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIFByaW50
Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZUVsZW1lbnQsIEZsb2F0U2l6ZShwYWdl
V2lkdGgsIHBhZ2VIZWlnaHQpKTsKLX0KLQotLyoqCiAgKiBudW1iZXJPZlBhZ2VzRm9yRnJhbWUK
ICAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKICAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEg
cGFnZQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1NM
aXN0KiBnZXRGcmFtZUNoaWxkcmVuKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIFdURjo6
Q1N0cmluZyBnZXRJbm5lclRleHQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgV1RGOjpD
U3RyaW5nIGR1bXBSZW5kZXJUcmVlKFdlYktpdFdlYkZyYW1lKik7Ci0gICAgc3RhdGljIGludCBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBpZCwg
ZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKICAgICBzdGF0aWMgaW50IG51bWJl
ck9mUGFnZXNGb3JGcmFtZShXZWJLaXRXZWJGcmFtZSosIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQg
cGFnZUhlaWdodCk7CiAgICAgc3RhdGljIFdURjo6Q1N0cmluZyBwYWdlUHJvcGVydHkoV2ViS2l0
V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAg
ICBzdGF0aWMgV1RGOjpDU3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKFdlYktpdFdl
YkZyYW1lKiwgaW50IHBhZ2VOdW1iZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1hcmdp
blRvcCwgaW50IG1hcmdpblJpZ2h0LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQgbWFyZ2luTGVmdCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM0NjIpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0y
NCAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAg
ICBbRFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0
byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJv
bGxlciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKiBXZWJLaXQub3JkZXI6
CisKIDIwMTItMDctMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUGFydCAyIG9mOiBJbXBsZW1lbnQgc3RpY2t5IHBvc2l0aW9uaW5nCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsNyArMjI3Nyw2IEBAIF9fWFBD
UmVtb3ZlUHJvcGVydHkKIF9XS1BDUmVtb3ZlUHJvcGVydHkKIF9fWk42V2ViS2l0MjdOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkxNHJlbW92ZVByb3BlcnR5RWpSS04zSlNDMTBJZGVudGlmaWVy
RQogX19aTjZXZWJLaXQyN05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTE0cmVtb3ZlUHJvcGVy
dHlFamoKLS1bV2ViRnJhbWUoV2ViS2l0RGVidWcpIHBhZ2VOdW1iZXJGb3JFbGVtZW50Ojo6XQog
LVtXZWJGcmFtZShXZWJLaXREZWJ1ZykgbnVtYmVyT2ZQYWdlczo6XQogLVtXZWJGcmFtZShXZWJL
aXREZWJ1ZykgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHM6Ojo6Ojo6XQogLVtXZWJGcmFtZShX
ZWJLaXREZWJ1ZykgaXNQYWdlQm94VmlzaWJsZTpdCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcg
Kzg2LDYgQEAgQGludGVyZmFjZSBXZWJDb3JlU3RhdGlzdGljcyA6IE5TT2JqZWN0CiBAaW50ZXJm
YWNlIFdlYkZyYW1lIChXZWJLaXREZWJ1ZykKIC0gKE5TU3RyaW5nICopcmVuZGVyVHJlZUFzRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nOihCT09MKWZvclByaW50aW5nOwogLSAoTlNT
dHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwotLSAo
aW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OihmbG9hdClwYWdl
V2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoaW50KW51bWJlck9m
UGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7
CiAtIChOU1N0cmluZyAqKXBhZ2VQcm9wZXJ0eTooY29uc3QgY2hhciopcHJvcGVydHlOYW1lOihp
bnQpcGFnZU51bWJlcjsKIC0gKGJvb2wpaXNQYWdlQm94VmlzaWJsZTooaW50KXBhZ2VOdW1iZXI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0JKHJl
dmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3OCwxMSArMjc4LDYgQEAgLSAoTlNTdHJpbmcgKilj
b3VudGVyVmFsdWVGb3JFbGVtZW50OihETwogICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVt
ZW50KGNvcmUoZWxlbWVudCkpOwogfQogCi0tIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERP
TUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVp
Z2h0SW5QaXhlbHMKLXsKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxl
bWVudChjb3JlKGVsZW1lbnQpLCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWln
aHRJblBpeGVscykpOwotfQotCiAtIChpbnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdpZHRo
SW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVscwogewogICAgIHJldHVybiBQcmludENv
bnRleHQ6Om51bWJlck9mUGFnZXMoX3ByaXZhdGUtPmNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VX
aWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMjM0NjIpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8
a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJG
b3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAg
ICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFz
IGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA3LTI0ICBQ
aWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFtRdF1bV0sx
XSBjb2xvciBpbnB1dCB0eXBlIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShy
ZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDE5ICszODYsNiBA
QCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sCiAgICAgZ2NDb250cm9s
bGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0VW50
aWxEb25lKTsKIH0KIAotaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoUVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFtZVBy
aXZhdGU6OmNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4g
LTE7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAg
IHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVt
ZW50KGVsZW1lbnQsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci19Ci0KIGludCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIGZyYW1lLCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKGZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDEy
MzQzMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBvdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpOwogICAgIHN0YXRpYyBp
bnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJGcmFtZSopOwogICAgIHN0YXRpYyBpbnQg
bnVtYmVyT2ZQYWdlcyhRV2ViRnJhbWUqIGZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KTsKLSAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBRU3RyaW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAgICAg
c3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZSogZnJhbWUpOwogICAgIHN0
YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChRV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIHN0YXRpYyB2b2lkIHNl
dFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9yKFFXZWJQYWdlKik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMjM0NjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0yNCAgS2F1c3R1Ymgg
QXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJUXSBMVEM6
OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUg
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxlciB0byBJbnRl
cm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxl
bWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOgorICAgICAgICAq
IFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEyLTA3LTIzICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBp
ZiBOT01JTk1BWCBpcyBkZWZpbmVkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxMjM0MzMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3NywyOCArODc3LDYgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6cmVuZGVyVHJlZUFzRXh0ZXJuYWxSZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
Ci0gICAgLyogW2luXSAqLyBCU1RSIGlkLAotICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsCi0gICAgLyogW2luXSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCi0gICAg
LyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRo
aXMpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAg
U3RyaW5nIGNvcmVJZCA9IFN0cmluZyhpZCwgU3lzU3RyaW5nTGVuKGlkKSk7Ci0KLSAgICBFbGVt
ZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChjb3Jl
SWQpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAqcmVz
dWx0ID0gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBGbG9hdFNp
emUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwotICAgIHJldHVybiBT
X09LOwotfQotCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpudW1iZXJPZlBh
Z2VzKAogICAgIC8qIFtpbl0gKi8gZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsCiAgICAgLyogW2lu
XSAqLyBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHJl
dmlzaW9uIDEyMzQzMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MywxMiArMTYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB1bnVzZWQxKEJTVFIqKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihCT09MIGZvclByaW50aW5nLCBCU1RSICpyZXN1bHQpOwogCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIGlkLAotICAgICAgICAvKiBbaW5dICovIGZsb2F0IHBh
Z2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAvKiBbaW5dICovIGZsb2F0IHBhZ2VIZWlnaHRJblBp
eGVscywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCk7Ci0KICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbnVtYmVyT2ZQYWdlcygKICAgICAgICAg
LyogW2luXSAqLyBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywKICAgICAgICAgLyogW2luXSAqLyBm
bG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDEyMzQzMykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDggKzk4LDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5r
bm93bgogCiAgICAgSFJFU1VMVCB2aXNpYmxlQ29udGVudFJlY3QoW291dCwgcmV0dmFsXSBSRUNU
Kik7CiAKLSAgICBIUkVTVUxUIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChbaW5dIEJTVFIgaWQs
IFtpbl0gZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIFtpbl0gZmxvYXQgcGFnZUhlaWdodEluUGl4
ZWxzLCBbb3V0LCByZXR2YWxdIGludCogcGFnZU51bWJlcik7Ci0KICAgICBIUkVTVUxUIG51bWJl
ck9mUGFnZXMoW2luXSBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgW2luXSBmbG9hdCBwYWdlSGVp
Z2h0SW5QaXhlbHMsIFtvdXQsIHJldHZhbF0gaW50KiBwYWdlTnVtYmVyKTsKIAogICAgIEhSRVNV
TFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKSW5kZXg6IFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTIzNDMzKQorKysgU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBfWk43V2Vi
Q29yZTExSGlzdG9yeUl0ZW0xNnNldERvY3VtZW50U3RhCiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfMTNDb250YWluZXJOb2RlRWlpYjsK
IF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
RVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSalM2XzsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0
b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5n
ZUVSbVM2XzsKK19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50
RVBOU183RWxlbWVudEVSS05TXzlGbG9hdFNpemVFOwogX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBw
ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFOwog
X1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVh
ZEVMajBFRUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RGNlZlY3RvcklO
U185RmxvYXRRdWFkRUxtMEVFRTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQ2MikKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJh
d2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFs
cyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0UHJpbnRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorCiAyMDEyLTA3LTI0ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeCBhIGNsYXNzL3N0cnVjdCBtaXNtYXRj
aCBlcnJvciBpbiBUZXN0RGVsZWdhdGUuaCAoc2hvd2luZyB1cCBvbiBjbGFuZykKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDEyMzQzMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIxLDIyICs4MjEsNiBAQCBzdGF0aWMgYm9vbCBwYXJzZVBh
Z2VOdW1iZXJTaXplTWFyaW5ncyhKCiAgICAgfQogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Ci17Ci0gICAgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwotICAgIGZsb2F0IHBhZ2VIZWln
aHRJblBpeGVscyA9IDA7Ci0gICAgaWYgKCFwYXJzZVBhZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIGFy
Z3VtZW50Q291bnQgLSAxLCBhcmd1bWVudHMgKyAxLCBleGNlcHRpb24sIHBhZ2VXaWR0aEluUGl4
ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Ci0KLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZWxlbWVudElk
KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0
aW9uKSk7Ci0gICAgaWYgKCpleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKLQotICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwotICAgIGludCBwYWdlTnVtYmVyID0gY29udHJvbGxlci0+cGFnZU51bWJl
ckZvckVsZW1lbnRCeUlkKGVsZW1lbnRJZC5nZXQoKSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VI
ZWlnaHRJblBpeGVscyk7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHBh
Z2VOdW1iZXIpOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBudW1iZXJPZlBhZ2VzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4
ZWxzID0gMDsKQEAgLTIzMzEsNyArMjMxNSw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJP
ZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVBy
ZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7
ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGFn
ZVByb3BlcnR5IiwgcGFnZVByb3BlcnR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF0
aFRvTG9jYWxSZXNvdXJjZSIsIHBhdGhUb0xvY2FsUmVzb3VyY2VDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiAxMjM0MzMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICBpbnQgbnVt
YmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4
ZWxzKTsKICAgICBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3Ry
aW5nUmVmIHZhbHVlKTsKLSAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxz
KTsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZU51bWJlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBt
YXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KSBjb25zdDsKICAgICBKU1N0cmluZ1JlZiBwYXRo
VG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0xh
eW91dFRlc3RDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0Jl
cnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE2LDEyICs1MTYsNiBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmLCBm
bG9hdCwgZmxvYXQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gLTE7Ci19
Ci0KIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCwgZmxvYXQp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEy
MzQzMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw2IEBAIExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJudW1iZXJPZlBlbmRp
bmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBiaW5k
TWV0aG9kKCJvYmpDSWRlbnRpdHlJc0VxdWFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpvYmpD
SWRlbnRpdHlJc0VxdWFsKTsKICAgICBiaW5kTWV0aG9kKCJvdmVycmlkZVByZWZlcmVuY2UiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk7Ci0gICAgYmluZE1ldGhv
ZCgicGFnZU51bWJlckZvckVsZW1lbnRCeUlkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQpOwogICAgIGJpbmRNZXRob2QoInBhZ2VQcm9wZXJ0eSIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KTsKICAgICBiaW5kTWV0aG9kKCJwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVNpemVB
bmRNYXJnaW5zSW5QaXhlbHMpOwogICAgIGJpbmRNZXRob2QoInBhdGhUb0xvY2FsUmVzb3VyY2Ui
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOwpAQCAtMTcyMiwy
NCArMTcyMSw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaW50aW5nKGMKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaW50IHBh
Z2VXaWR0aEluUGl4ZWxzID0gMDsKLSAgICBpbnQgcGFnZUhlaWdodEluUGl4ZWxzID0gMDsKLSAg
ICBpZiAoIXBhcnNlUGFnZVNpemVQYXJhbWV0ZXJzKGFyZ3VtZW50cywgMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZwYWdlV2lkdGhJblBpeGVscywgJnBhZ2VIZWlnaHRJblBp
eGVscykpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIWFyZ3VtZW50c1swXS5pc1N0cmluZygp
KQotICAgICAgICByZXR1cm47Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0gbV9zaGVsbC0+d2ViVmll
dygpLT5tYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAg
cmVzdWx0LT5zZXQoZnJhbWUtPnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjcHBWYXJpYW50VG9X
ZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihwYWdlV2lkdGhJblBpeGVscyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxmbG9hdD4ocGFnZUhlaWdodEluUGl4ZWxzKSkpOwotfQotCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KCIiKTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDkg
KzMyNyw2IEBAIHB1YmxpYzoKICAgICAvLyBDYXVzZXMgbGF5b3V0IHRvIGhhcHBlbiBhcyBpZiB0
YXJnZXR0ZWQgdG8gcHJpbnRlZCBwYWdlcy4KICAgICB2b2lkIHNldFByaW50aW5nKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIEdldHMgdGhlIG51bWJlciBv
ZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB3aWxsIGJlIHB1dC4KLSAgICB2b2lk
IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7Ci0KICAgICAvLyBHZXRzIHRoZSBwYWdlIHNpemUgYW5kIG1hcmdpbnMgZm9yIGEgcHJp
bnRlZCBwYWdlLgogICAgIHZvaWQgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAJKHJldmlzaW9uIDEy
MzQzMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMSArMTIzLDYgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IExheW91dFRlc3RDb250cgogICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4oQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7CiB9CiAKLWlu
dCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCi17Ci0gICAgcmV0dXJu
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQYWdlc0ZvckVsZW1lbnRJZChicm93
c2VyLT5tYWluRnJhbWUoKSwgaWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlV2lkdGgs
IHBhZ2VIZWlnaHQpOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFn
ZXMoZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQogewogICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6Om51bWJlck9mUGFnZXMoYnJvd3Nlci0+bWFpbkZyYW1lKCks
IHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDEyMzQzMykK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSwxNCArMTE5LDYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cgogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKLWludCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBm
bG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCi17Ci0gICAgZ2NoYXIqIGlkR0NoYXIg
PSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhpZCk7Ci0gICAgaW50IHBhZ2VOdW1iZXIgPSBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtYWluRnJhbWUs
IGlkR0NoYXIsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7Ci0gICAgZ19mcmVlKGlkR0NoYXIpOwot
ICAgIHJldHVybiBwYWdlTnVtYmVyOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51
bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQogewogICAgIHJl
dHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXNGb3JGcmFtZShtYWlu
RnJhbWUsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiAxMjM0
MzMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxOCArMjg0LDYgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cgogICAgIHJldHVybiBtYXJrZXJUZXh0OwogfQogCi1pbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1Jl
ZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykK
LXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGlkQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWQpKTsKLSAgICBOU1N0cmluZyAqaWROUyA9
IChOU1N0cmluZyAqKWlkQ0YuZ2V0KCk7Ci0KLSAgICBET01FbGVtZW50ICplbGVtZW50ID0gW1tt
YWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOmlkTlNdOwotICAgIGlmICghZWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFttYWluRnJhbWUgcGFnZU51
bWJlckZvckVsZW1lbnQ6ZWxlbWVudDpwYWdlV2lkdGhJblBpeGVsczpwYWdlSGVpZ2h0SW5QaXhl
bHNdOwotfQotCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBj
b25zdAogewogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eVZhbHVlKEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW21haW5GcmFtZSBwYWdl
UHJvcGVydHk6cHJvcGVydHlOYW1lOnBhZ2VOdW1iZXJdKSk7CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24g
MTIzNDMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNiwxNyArNzE2LDYgQEAgaW50IExheW91dFRlc3RD
b250cm9sbGVyOjp3b3JrZXJUaHJlYWRDbwogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6d29ya2VyVGhyZWFkQ291bnQoKTsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgLy8gSWYgbm8gc2l6ZSBzcGVjaWZpZWQsIHdlYnBhZ2Ug
dmlld3BvcnQgc2l6ZSBpcyB1c2VkCi0gICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7Ci0gICAg
ICAgIHdpZHRoID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRTaXplKCkud2lkdGgoKTsKLSAg
ICAgICAgaGVpZ2h0ID0gbV9kcnQtPndlYlBhZ2UoKS0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYWdlTnVtYmVy
Rm9yRWxlbWVudEJ5SWQobV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIGlkLCB3aWR0aCwg
aGVpZ2h0KTsKLX0KLQogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpudW1iZXJPZlBhZ2VzKG1fZHJ0LT53ZWJQYWdlKCktPm1haW5GcmFtZSgpLCB3aWR0
aCwgaGVpZ2h0KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDEyMzQzMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcg
KzIxMSw2IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZChib29sIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZv
clVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2NoZW1lKTsKICAgICBp
bnQgd29ya2VyVGhyZWFkQ291bnQoKTsKLSAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCA9IDAsIGZsb2F0IGhlaWdodCA9IDApOwog
ICAgIGludCBudW1iZXJPZlBhZ2VzKGZsb2F0IHdpZHRoID0gbWF4Vmlld1dpZHRoLCBmbG9hdCBo
ZWlnaHQgPSBtYXhWaWV3SGVpZ2h0KTsKICAgICBib29sIGNhbGxTaG91bGRDbG9zZU9uV2ViVmll
dygpOwogICAgIC8vIEZvciBub3csIHRoaXMgaXMgYSBuby1vcC4gVGhpcyBtYXkgY2hhbmdlIGRl
cGVuZGluZyBvbiBvdXRjb21lIG9mCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMDAsMjEgKzEzMDAsNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpyZW1vdmVBbGxWaXNpCiAgICAgc2hhcmVkSGlzdG9yeVByaXZhdGUtPnJlbW92ZUFsbFZp
c2l0ZWRMaW5rcygpOwogfQogCi1pbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJG
b3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZs
b2F0IHBhZ2VIZWlnaHRJblBpeGVscykKLXsKLSAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4g
ZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgd3N0cmluZyBpZFdzdHJpbmcgPSBqc1N0cmluZ1JlZlRvV1N0
cmluZyhpZCk7Ci0gICAgQlNUUiBpZEJTVFIgPSBTeXNBbGxvY1N0cmluZ0xlbigoT0xFQ0hBUiop
aWRXc3RyaW5nLmNfc3RyKCksIGlkV3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgaW50IHBhZ2VOdW1i
ZXIgPSAtMTsKLSAgICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+cGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKGlkQlNUUiwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscywgJnBh
Z2VOdW1iZXIpKSkKLSAgICAgICAgcGFnZU51bWJlciA9IC0xOwotICAgIFN5c0ZyZWVTdHJpbmco
aWRCU1RSKTsKLSAgICByZXR1cm4gcGFnZU51bWJlcjsKLX0KLQogaW50IExheW91dFRlc3RDb250
cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdl
SGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJp
dmF0ZShRdWVyeSwgZnJhbWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDEyMzQzMykKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NzIsMTIgKzQ3Miw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNj
cm9sbGJhclAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLWludCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmLCBmbG9hdCwgZmxv
YXQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAtMTsKLX0KLQogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0LCBmbG9hdCkKIHsKICAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTIzNDMzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCwxMiArMzc0
LDYgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKAogICAgIHJldHVy
biBXS0J1bmRsZU51bWJlck9mUGFnZXMoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgp
LCBtYWluRnJhbWUsIHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogfQog
Ci1pbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0
cmluZ1JlZiBpZCwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodElu
UGl4ZWxzKQotewotICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0g
ICAgcmV0dXJuIFdLQnVuZGxlUGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5idW5kbGUoKSwgbWFpbkZyYW1lLCB0b1dLKGlkKS5nZXQoKSwgcGFnZVdpZHRo
SW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7Ci19Ci0KIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50
IHBhZ2VJbmRleCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFy
Z2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KQogewogICAgIFdLQnVu
ZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCShyZXZpc2lvbiAxMjM0MzMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3
ICsxNDEsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBQcmludGluZwogICAgIGludCBudW1iZXJPZlBh
Z2VzKGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscyk7
Ci0gICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiwgZG91YmxlIHBh
Z2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRl
eCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQs
IGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KTsKICAgICBib29sIGlzUGFnZUJveFZp
c2libGUoaW50IHBhZ2VJbmRleCk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAxMjM0MzMpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNiBAQCBtb2R1bGUgV1RSIHsKIAogICAgICAgICAv
LyBQcmludGluZwogICAgICAgICBpbnQgbnVtYmVyT2ZQYWdlcyhpbiBkb3VibGUgcGFnZVdpZHRo
SW5QaXhlbHMsIGluIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpOwotICAgICAgICBpbnQgcGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKGluIERPTVN0cmluZyBpZCwgaW4gZG91YmxlIHBhZ2VXaWR0
aEluUGl4ZWxzLCBpbiBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAgICAgICAgRE9NU3Ry
aW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGluIGludCBwYWdlSW5kZXgsIGluIGludCB3
aWR0aCwgaW4gaW50IGhlaWdodCwgaW4gaW50IG1hcmdpblRvcCwgaW4gaW50IG1hcmdpblJpZ2h0
LCBpbiBpbnQgbWFyZ2luQm90dG9tLCBpbiBpbnQgbWFyZ2luTGVmdCk7CiAgICAgICAgIGJvb2xl
YW4gaXNQYWdlQm94VmlzaWJsZShpbiBpbnQgcGFnZUluZGV4KTsKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTIzNDYzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMDctMjQgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBt
b3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0RSVF0gTFRDOjogcGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJuYWxzIGFuZAorICAgICAgICByZW1v
dmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgYXMgaXQgZXhjbHVz
aXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcHJpbnRpbmcv
cGFnZU51bWVyRm9yRWxlbWVudEJ5SWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHByaW50aW5n
L3Jlc291cmNlcy9wYWdlZC1tZWRpYS10ZXN0LXV0aWxzLmpzOgorICAgICAgICAocGFnZU51bWJl
ckZvckVsZW1lbnRTaG91bGRCZSk6CisgICAgICAgICogcHJpbnRpbmcvcmV0dXJuLWZyb20tcHJp
bnRpbmctbW9kZS5odG1sOgorICAgICAgICAqIHByaW50aW5nL3NjcmlwdC10ZXN0cy9wYWdlTnVt
ZXJGb3JFbGVtZW50QnlJZC5qczoKKwogMjAxMi0wNy0yNCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZl
aXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0g
ZmFzdC9jc3MvdGV4dC10cmFuc2Zvcm0tc2VsZWN0Lmh0bWwgc2hvdWxkIGJlIHJlYmFzZWxpbmVk
IGZvciBXSzEgYW5kIFdLMiBvbiBRdCA1LjAKSW5kZXg6IExheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEyMzQzMykKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRC
eUlkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVRlc3QgZm9y
IHRlc3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkKK1Rlc3QgZm9yIGludGVybmFs
cy5wYWdlTnVtYmVyKCkKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlv
dXRUZXN0cy9wcmludGluZy9yZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmV0dXJuLWZyb20tcHJpbnRpbmctbW9kZS5odG1s
CShyZXZpc2lvbiAxMjM0MzMpCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9yZXR1cm4tZnJvbS1w
cmludGluZy1tb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBACiBmdW5jdGlv
biB0ZXN0KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCd0ZXN0MScpOworICAgICAgICBpbnRlcm5hbHMu
cGFnZU51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKSk7CiB9CiA8L3Njcmlw
dD4KIDxoZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1l
ZGlhLXRlc3QtdXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVz
b3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanMJKHJldmlzaW9uIDEyMzQzMykKKysrIExh
eW91dFRlc3RzL3ByaW50aW5nL3Jlc291cmNlcy9wYWdlZC1tZWRpYS10ZXN0LXV0aWxzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBAIGZ1bmN0aW9uIGFwcGVuZFJlc3VsdChyZXN1
bHQpCiAKIGZ1bmN0aW9uIHBhZ2VOdW1iZXJGb3JFbGVtZW50U2hvdWxkQmUoaWQsIGV4cGVjdGVk
UGFnZU51bWJlcikKIHsKLSAgICB2YXIgYWN0dWFsUGFnZU51bWJlciA9IHRlc3RSdW5uZXIucGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgYWN0dWFsUGFnZU51bWJlciA9IGlu
dGVybmFscy5wYWdlTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7CiAgICAgaWYg
KGFjdHVhbFBhZ2VOdW1iZXIgPT0gZXhwZWN0ZWRQYWdlTnVtYmVyKQogICAgICAgICBhcHBlbmRS
ZXN1bHQoJ1BBU1M6IHBhZ2UgbnVtYmVyIG9mICInICsgaWQgKyAnIiBpcyAnICsgYWN0dWFsUGFn
ZU51bWJlcik7CiAgICAgZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQt
dGVzdHMvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzCShyZXZp
c2lvbiAxMjM0MzMpCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQtdGVzdHMvcGFnZU51
bWVyRm9yRWxlbWVudEJ5SWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1kZXNj
cmlwdGlvbigiVGVzdCBmb3IgdGVzdFJ1bm5lci5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSIp
OworZGVzY3JpcHRpb24oIlRlc3QgZm9yIGludGVybmFscy5wYWdlTnVtYmVyKCkiKTsKIAogZnVu
Y3Rpb24gdGVzdCgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154311</attachid>
            <date>2012-07-25 03:20:06 -0700</date>
            <delta_ts>2012-07-26 03:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92091-20120725154942.patch</filename>
            <type>text/plain</type>
            <size>38446</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3
LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAg
ICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVk
IHRvIEludGVybmFscy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXhwb3J0aW5nIEludGVybmFsczo6cGFnZU51bWJlciBzeW1ib2xzIGZvciB0aGUgR3Rr
IGJ1aWxkLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwog
MjAxMi0wNy0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0dUS10gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNwYWNlIGluIHRoZSBwcmV2aW91cyBj
b21taXQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM1ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNy0yNCAg
S2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBb
RFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxl
ciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNp
ZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0IGNhc2VzLgorCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpjb3VudGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnBhZ2VOdW1iZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6
CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdl
TnVtYmVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDctMjQg
IEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZW1vdmUg
YW5vbnltb3VzIG5hbWVzcGFjZSBhbmQgbWFrZSBmdW5jdGlvbnMgc3RhdGljLgpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTIzNTgxKQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1
NSw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNp
bmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlclRyZWVBc1RleHQuaCIKQEAgLTExMDcsNiArMTEwOCwxNCBAQCBTdHJpbmcgSW50ZXJuYWxz
Ojpjb3VudGVyVmFsdWUoRWxlbWVudCoKICAgICByZXR1cm4gY291bnRlclZhbHVlRm9yRWxlbWVu
dChlbGVtZW50KTsKIH0KIAoraW50IEludGVybmFsczo6cGFnZU51bWJlcihFbGVtZW50KiBlbGVt
ZW50LCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCit7CisgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQp
KTsKK30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJbnRlcm5hbHM6Omljb25VUkxzKERv
Y3VtZW50KiBkb2N1bWVudCkgY29uc3QKIHsKICAgICBWZWN0b3I8SWNvblVSTD4gaWNvblVSTHMg
PSBkb2N1bWVudC0+aWNvblVSTHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkocmV2aXNpb24gMTIzNTgxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIGludCBs
YXN0U3BlbGxDaGVja1JlcXVlc3RTZXF1ZW5jZShEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBpbnQgbGFzdFNwZWxsQ2hlY2tQcm9jZXNzZWRTZXF1ZW5jZShEb2N1bWVudCosIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICAKKwogICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKSBjb25zdDsKICAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKIApAQCAtMTkxLDYgKzE5MSw4IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgU3RyaW5nIGNvdW50ZXJWYWx1ZShFbGVtZW50Kik7CisKKyAgICBpbnQgcGFnZU51bWJl
cihFbGVtZW50KiwgZmxvYXQgcGFnZVdpZHRoID0gODAwLCBmbG9hdCBwYWdlSGVpZ2h0ID0gNjAw
KTsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGljb25VUkxzKERvY3VtZW50KikgY29u
c3Q7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMjM1ODEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCBtb2R1
bGUgd2luZG93IHsKICAgICAgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gc2VxdWVuY2U8U3Ry
aW5nPiBjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKGluIERvY3VtZW50IGRvY3VtZW50KTsK
IAogICAgICAgICBET01TdHJpbmcgY291bnRlclZhbHVlKGluIEVsZW1lbnQgZWxlbWVudCk7Cisg
ICAgICAgIGxvbmcgcGFnZU51bWJlcihpbiBFbGVtZW50IGVsZW1lbnQsIGluIFtPcHRpb25hbF0g
ZmxvYXQgcGFnZVdpZHRoLCBpbiBbT3B0aW9uYWxdIGZsb2F0IHBhZ2VIZWlnaHQpOwogICAgICAg
ICBET01TdHJpbmdbXSBpY29uVVJMcyhpbiBEb2N1bWVudCBkb2N1bWVudCk7CiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM1ODEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yNCAgS2F1
c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJU
XSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRl
cm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
MDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSB0aGUgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxlciB0
byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmlj
IGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgorCiAyMDEyLTA3LTIzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwu
Y29tPgogCiAgICAgICAgIFVuaWZ5IG51bVRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQgYW5kIG5l
ZWRUb3VjaEV2ZW50cyBpbiB0aGUgY2hyb21lIGNsaWVudApJbmRleDogU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwCShyZXZpc2lvbiAxMjM1ODEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzMsMjEgKzE3Myw2IEBAIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Om51bWJlck9mUGEK
ICAgICByZXR1cm4gV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGZyYW1lLCBX
ZWJDb3JlOjpGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7CiB9CiAKLWludCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6Om51bWJlck9mUGFnZXNGb3JFbGVtZW50SWQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlbGVtZW50SWQsIGZsb2F0IHBhZ2VXaWR0
aCwgZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBFV0tQ
cml2YXRlOjpjb3JlRnJhbWUoZXdrRnJhbWUpOwotCi0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBXZWJDb3JlOjpFbGVtZW50ICplbGVtZW50ID0gZnJhbWUtPmRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0KLSAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIFdlYkNvcmU6OlByaW50Q29udGV4dDo6cGFn
ZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgV2ViQ29yZTo6RmxvYXRTaXplKHBhZ2VXaWR0aCwg
cGFnZUhlaWdodCkpOwotfQotCiBTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVscyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBw
YWdlTnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBtYXJn
aW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpCiB7CiAgICAgV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKGV3a0ZyYW1lKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTI0ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRd
IExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVy
bmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIw
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGspOgorCisyMDEyLTA3LTI0ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExU
Qzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIElu
dGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1w
bGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGspOgorCiAyMDEyLTA3LTIzICBQaWVy
cmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFVuaWZ5IG51bVRv
dWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQgYW5kIG5lZWRUb3VjaEV2ZW50cyBpbiB0aGUgY2hyb21l
IGNsaWVudApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCShyZXZpc2lvbiAxMjM1ODEp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMjkgKzE4OSw2IEBAIENTdHJpbmcgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmUKIH0KIAogLyoqCi0gKiBudW1iZXJGb3JFbGVt
ZW50QnlJZAotICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQotICogQGlkOiBhbiBlbGVtZW50
IElEIHN0cmluZwotICogQHBhZ2VXaWR0aDogd2lkdGggb2YgYSBwYWdlCi0gKiBAcGFnZUhlaWdo
dDogaGVpZ2h0IG9mIGEgcGFnZQotICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBvZiBw
YWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB3aWxsIGJlIHB1dAotICovCi1pbnQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBpZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdl
SGVpZ2h0KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUo
ZnJhbWUpLCAwKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBp
ZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogY29yZUVs
ZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmlu
ZyhpZCkpOwotICAgIGlmICghY29yZUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBy
ZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChjb3JlRWxlbWVudCwgRmxv
YXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwotfQotCi0vKioKICAqIG51bWJlck9mUGFn
ZXNGb3JGcmFtZQogICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQogICogQHBhZ2VXaWR0aDog
d2lkdGggb2YgYSBwYWdlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gMTIz
NTgxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBHU0xpc3QqIGdldEZyYW1lQ2hpbGRyZW4oV2ViS2l0V2ViRnJhbWUqKTsKICAgICBz
dGF0aWMgV1RGOjpDU3RyaW5nIGdldElubmVyVGV4dChXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0
YXRpYyBXVEY6OkNTdHJpbmcgZHVtcFJlbmRlclRyZWUoV2ViS2l0V2ViRnJhbWUqKTsKLSAgICBz
dGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChXZWJLaXRXZWJGcmFtZSosIGNvbnN0
IGNoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpOwogICAgIHN0YXRp
YyBpbnQgbnVtYmVyT2ZQYWdlc0ZvckZyYW1lKFdlYktpdFdlYkZyYW1lKiwgZmxvYXQgcGFnZVdp
ZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKICAgICBzdGF0aWMgV1RGOjpDU3RyaW5nIHBhZ2VQcm9w
ZXJ0eShXZWJLaXRXZWJGcmFtZSosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VO
dW1iZXIpOwogICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoV2ViS2l0V2ViRnJhbWUqLCBpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBt
YXJnaW5MZWZ0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29t
PgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxk
IGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlv
dXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQg
cGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3Rz
IFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAqIFdl
YktpdC5vcmRlcjoKKwogMjAxMi0wNy0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBQYXJ0IDIgb2Y6IEltcGxlbWVudCBzdGlja3kgcG9zaXRpb25p
bmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3
LDYgQEAgX19YUENSZW1vdmVQcm9wZXJ0eQogX1dLUENSZW1vdmVQcm9wZXJ0eQogX19aTjZXZWJL
aXQyN05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTE0cmVtb3ZlUHJvcGVydHlFalJLTjNKU0Mx
MElkZW50aWZpZXJFCiBfX1pONldlYktpdDI3TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5MTRy
ZW1vdmVQcm9wZXJ0eUVqagotLVtXZWJGcmFtZShXZWJLaXREZWJ1ZykgcGFnZU51bWJlckZvckVs
ZW1lbnQ6OjpdCiAtW1dlYkZyYW1lKFdlYktpdERlYnVnKSBudW1iZXJPZlBhZ2VzOjpdCiAtW1dl
YkZyYW1lKFdlYktpdERlYnVnKSBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsczo6Ojo6OjpdCiAt
W1dlYkZyYW1lKFdlYktpdERlYnVnKSBpc1BhZ2VCb3hWaXNpYmxlOl0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDEyMzU4MSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5
KQpAQCAtODYsNyArODYsNiBAQCBAaW50ZXJmYWNlIFdlYkNvcmVTdGF0aXN0aWNzIDogTlNPYmpl
Y3QKIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYktpdERlYnVnKQogLSAoTlNTdHJpbmcgKilyZW5k
ZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uRm9yUHJpbnRpbmc6KEJPT0wpZm9yUHJpbnRp
bmc7CiAtIChOU1N0cmluZyAqKWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVs
ZW1lbnQ7Ci0tIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6
KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CiAtIChp
bnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWln
aHRJblBpeGVsczsKIC0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFyKilwcm9w
ZXJ0eU5hbWU6KGludClwYWdlTnVtYmVyOwogLSAoYm9vbClpc1BhZ2VCb3hWaXNpYmxlOihpbnQp
cGFnZU51bWJlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5tbQkocmV2aXNpb24gMTIzNTgxKQorKysgU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjc4LDExICsyNzgsNiBAQCAtIChO
U1N0cmluZyAqKWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPCiAgICAgcmV0dXJuIGNvdW50ZXJW
YWx1ZUZvckVsZW1lbnQoY29yZShlbGVtZW50KSk7CiB9CiAKLS0gKGludClwYWdlTnVtYmVyRm9y
RWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZs
b2F0KXBhZ2VIZWlnaHRJblBpeGVscwotewotICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50KGNvcmUoZWxlbWVudCksIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVs
cywgcGFnZUhlaWdodEluUGl4ZWxzKSk7Ci19Ci0KIC0gKGludCludW1iZXJPZlBhZ2VzOihmbG9h
dClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzCiB7CiAgICAgcmV0
dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBGbG9h
dFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDctMjQgIEthdXN0dWJoIEF0
cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0RSVF0gTFRDOjog
cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCBmcm9tIExheW91dFRlc3RDb3Ryb2xsZXIgdG8gSW50ZXJu
YWxzIGFuZAorICAgICAgICByZW1vdmUgdGhlIG9sZCBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1l
bnRhdGlvbnMgYXMgaXQgZXhjbHVzaXZlbHkgdGVzdHMgV2ViQ29yZSBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIw
MTItMDctMjQgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW1F0XVtXSzFdIGNvbG9yIGlucHV0IHR5cGUgc3VwcG9ydApJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYs
MTkgKzM4Niw2IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdhcmJhZ2VDb2wKICAg
ICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdn
aW5nKHdhaXRVbnRpbERvbmUpOwogfQogCi1pbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBp
ZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0g
UVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAg
ICAgIHJldHVybiAtMTsKLQotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOwotICAgIGlmICghZWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51
bWJlckZvckVsZW1lbnQoZWxlbWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQog
aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogZnJh
bWUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IFFXZWJGcmFtZVByaXZhdGU6OmNvcmUoZnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAko
cmV2aXNpb24gMTIzNTgxKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDYgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CiAg
ICAgc3RhdGljIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lKik7CiAgICAg
c3RhdGljIGludCBudW1iZXJPZlBhZ2VzKFFXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpOwotICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFFX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0KTsKICAgICBzdGF0aWMgYm9vbCBoYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lKiBmcmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0
aElkKFFXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0V2luZG93c0JlaGF2aW9yQXNFZGl0aW5nQmVoYXZpb3IoUVdlYlBhZ2UqKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4MSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTI0
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAg
IFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRv
IEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTIwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9s
bGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3Bl
Y2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVu
Y3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKwogMjAxMi0wNy0yMyAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXgg
aWYgTk9NSU5NQVggaXMgZGVmaW5lZCBieSB0aGUgYnVpbGQgc3lzdGVtLgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTIzNTgxKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsMjAgKzg4Myw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhZ2UKICAgICAvKiBbaW5dICovIGZsb2F0IHBhZ2VI
ZWlnaHRJblBpeGVscywKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KQogewot
ICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJl
dHVybiBFX0ZBSUw7Ci0KLSAgICBTdHJpbmcgY29yZUlkID0gU3RyaW5nKGlkLCBTeXNTdHJpbmdM
ZW4oaWQpKTsKLQotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKGNvcmVJZCk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1
cm4gRV9GQUlMOwotICAgICpyZXN1bHQgPSBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVt
ZW50KGVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4
ZWxzKSk7Ci0gICAgcmV0dXJuIFNfT0s7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6bnVtYmVyT2ZQYWdlcygKSW5kZXg6IFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTIzNTgxKQorKysgU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBfWk43V2Vi
Q29yZTExSGlzdG9yeUl0ZW0xNnNldERvY3VtZW50U3RhCiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfMTNDb250YWluZXJOb2RlRWlpYjsK
IF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
RVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSalM2XzsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0
b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5n
ZUVSbVM2XzsKK19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50
RVBOU183RWxlbWVudEVSS05TXzlGbG9hdFNpemVFOwogX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBw
ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFOwog
X1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVh
ZEVMajBFRUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RGNlZlY3RvcklO
U185RmxvYXRRdWFkRUxtMEVFRTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzU4MSkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTI0ICBLYXVzdHViaCBBdHJh
d2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBh
Z2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNvdWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFs
cyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0UHJpbnRpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorCiAyMDEyLTA3LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVGhlIEVXUyBib3RzIGdldCBmbGFreSB3aGVuIHdlIGhpdCB0aGUgZmFp
bHVyZSBsaW1pdApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjEsMjIgKzgyMSw2IEBA
IHN0YXRpYyBib29sIHBhcnNlUGFnZU51bWJlclNpemVNYXJpbmdzKEoKICAgICB9CiB9CiAKLXN0
YXRpYyBKU1ZhbHVlUmVmIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBmbG9hdCBwYWdlV2lkdGhJblBpeGVscyA9IDA7
Ci0gICAgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzID0gMDsKLSAgICBpZiAoIXBhcnNlUGFnZVBh
cmFtZXRlcnMoY29udGV4dCwgYXJndW1lbnRDb3VudCAtIDEsIGFyZ3VtZW50cyArIDEsIGV4Y2Vw
dGlvbiwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICBpZiAoKmV4Y2VwdGlvbikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgTGF5b3V0VGVzdENv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+
KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgaW50IHBhZ2VOdW1iZXIgPSBj
b250cm9sbGVyLT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoZWxlbWVudElkLmdldCgpLCBwYWdl
V2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1h
a2VOdW1iZXIoY29udGV4dCwgcGFnZU51bWJlcik7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIG51
bWJlck9mUGFnZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
ZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwpAQCAtMjMzMSw3ICsyMzE1LDYgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJub3RpZnlEb25l
Iiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCi0gICAgICAgIHsgInBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCIsIHBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhZ2VTaXplQW5k
TWFyZ2luc0luUGl4ZWxzIiwgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJwYWdlUHJvcGVydHkiLCBwYWdlUHJvcGVydHlDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRvTG9jYWxSZXNvdXJj
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDEyMzU4MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDYgQEAg
cHVibGljOgogICAgIGludCBudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBm
bG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0cygpOwogICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKEpT
U3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwotICAgIGludCBwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9h
dCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYWdl
UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3Q7
CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxz
KGludCBwYWdlTnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGlu
dCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpIGNvbnN0Owog
ICAgIEpTU3RyaW5nUmVmIHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmlu
Z1JlZiB1cmwpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvTGF5b3V0VGVzdENvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcAkocmV2
aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9MYXlvdXRU
ZXN0Q29udHJvbGxlckJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsMTIgKzUx
Niw2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHIKICAgICByZXR1
cm4gMDsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoSlNTdHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAtMTsKLX0KLQogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJP
ZlBhZ2VzKGZsb2F0LCBmbG9hdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5
LDYgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRN
ZXRob2QoIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjogbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMpOwogICAgIGJpbmRNZXRob2QoIm9iakNJZGVudGl0eUlzRXF1YWwiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om9iakNJZGVudGl0eUlzRXF1YWwpOwogICAgIGJpbmRNZXRob2QoIm92
ZXJyaWRlUHJlZmVyZW5jZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJl
bmNlKTsKLSAgICBiaW5kTWV0aG9kKCJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk7CiAgICAgYmluZE1ldGhv
ZCgicGFnZVByb3BlcnR5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkpOwog
ICAgIGJpbmRNZXRob2QoInBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk7CiAgICAgYmluZE1ldGhvZCgi
cGF0aFRvTG9jYWxSZXNvdXJjZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxS
ZXNvdXJjZSk7CkBAIC0xNzIyLDI0ICsxNzIxLDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0UHJpbnRpbmcoYwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNl
dE51bGwoKTsKLSAgICBpbnQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwotICAgIGludCBwYWdlSGVp
Z2h0SW5QaXhlbHMgPSAwOwotICAgIGlmICghcGFyc2VQYWdlU2l6ZVBhcmFtZXRlcnMoYXJndW1l
bnRzLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhZ2VXaWR0aEluUGl4
ZWxzLCAmcGFnZUhlaWdodEluUGl4ZWxzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghYXJn
dW1lbnRzWzBdLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBXZWJGcmFtZSogZnJh
bWUgPSBtX3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICByZXN1bHQtPnNldChmcmFtZS0+cGFnZU51bWJlckZvckVsZW1l
bnRCeUlkKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBh
Z2VXaWR0aEluUGl4ZWxzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihwYWdlSGVpZ2h0SW5QaXhlbHMpKSk7Ci19Ci0K
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0LT5zZXQoIiIpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAxMjM1ODEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjcsOSArMzI3LDYgQEAgcHVibGljOgogICAgIC8vIENhdXNlcyBsYXlv
dXQgdG8gaGFwcGVuIGFzIGlmIHRhcmdldHRlZCB0byBwcmludGVkIHBhZ2VzLgogICAgIHZvaWQg
c2V0UHJpbnRpbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0gICAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVtZW50IHdp
bGwgYmUgcHV0LgotICAgIHZvaWQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIC8vIEdldHMgdGhlIHBhZ2Ugc2l6ZSBh
bmQgbWFyZ2lucyBmb3IgYSBwcmludGVkIHBhZ2UuCiAgICAgdm9pZCBwYWdlU2l6ZUFuZE1hcmdp
bnNJblBpeGVscyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVy
RWZsLmNwcAkocmV2aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDExICsxMjMs
NiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAgICAgcmV0dXJu
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIiIpKTsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhl
aWdodCkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpudW1iZXJPZlBh
Z2VzRm9yRWxlbWVudElkKGJyb3dzZXItPm1haW5GcmFtZSgpLCBpZC0+dXN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7Ci19Ci0KIGludCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQp
CiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bnVtYmVyT2ZQYWdlcyhi
cm93c2VyLT5tYWluRnJhbWUoKSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAkocmV2aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDE0ICsxMTksNiBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAgICAgcmV0dXJuIHN0cmlu
ZzsKIH0KIAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKLXsK
LSAgICBnY2hhciogaWRHQ2hhciA9IEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGlkKTsKLSAgICBp
bnQgcGFnZU51bWJlciA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKG1haW5GcmFtZSwgaWRHQ2hhciwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKLSAg
ICBnX2ZyZWUoaWRHQ2hhcik7Ci0gICAgcmV0dXJuIHBhZ2VOdW1iZXI7Ci19Ci0KIGludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBh
Z2VIZWlnaHQpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVy
T2ZQYWdlc0ZvckZyYW1lKG1haW5GcmFtZSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0JKHJldmlzaW9uIDEyMzU4MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDE4ICsyODQsNiBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyCiAgICAgcmV0dXJuIG1h
cmtlclRleHQ7CiB9CiAKLWludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQg
cGFnZUhlaWdodEluUGl4ZWxzKQotewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOwot
ICAgIE5TU3RyaW5nICppZE5TID0gKE5TU3RyaW5nICopaWRDRi5nZXQoKTsKLQotICAgIERPTUVs
ZW1lbnQgKmVsZW1lbnQgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6
aWROU107Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1
cm4gW21haW5GcmFtZSBwYWdlTnVtYmVyRm9yRWxlbWVudDplbGVtZW50OnBhZ2VXaWR0aEluUGl4
ZWxzOnBhZ2VIZWlnaHRJblBpeGVsc107Ci19Ci0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0CiB7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZilbbWFpbkZyYW1lIHBhZ2VQcm9wZXJ0eTpwcm9wZXJ0eU5hbWU6cGFnZU51bWJlcl0pKTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCShyZXZpc2lvbiAxMjM1ODEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE2LDE3ICs3MTYs
NiBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvCiAgICAgcmV0dXJu
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCi1pbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChjb25zdCBRU3Ry
aW5nJiBpZCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICAvLyBJZiBubyBzaXpl
IHNwZWNpZmllZCwgd2VicGFnZSB2aWV3cG9ydCBzaXplIGlzIHVzZWQKLSAgICBpZiAoIXdpZHRo
ICYmICFoZWlnaHQpIHsKLSAgICAgICAgd2lkdGggPSBtX2RydC0+d2ViUGFnZSgpLT52aWV3cG9y
dFNpemUoKS53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBtX2RydC0+d2ViUGFnZSgpLT52aWV3
cG9ydFNpemUoKS5oZWlnaHQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKSwgaWQsIHdpZHRoLCBoZWlnaHQpOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKICAgICByZXR1
cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mUGFnZXMobV9kcnQtPndlYlBhZ2Uo
KS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gMTIzNTgxKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDYgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgc2V0
VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgdm9pZCBzZXREb21haW5S
ZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3Ry
aW5nJiBzY2hlbWUpOwogICAgIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOwotICAgIGludCBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoID0gMCwg
ZmxvYXQgaGVpZ2h0ID0gMCk7CiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxvYXQgd2lkdGggPSBt
YXhWaWV3V2lkdGgsIGZsb2F0IGhlaWdodCA9IG1heFZpZXdIZWlnaHQpOwogICAgIGJvb2wgY2Fs
bFNob3VsZENsb3NlT25XZWJWaWV3KCk7CiAgICAgLy8gRm9yIG5vdywgdGhpcyBpcyBhIG5vLW9w
LiBUaGlzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG91dGNvbWUgb2YKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
cmV2aXNpb24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMCwyMSArMTMwMCw2IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFZpc2kKICAgICBzaGFyZWRIaXN0b3J5
UHJpdmF0ZS0+cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiB9CiAKLWludCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBw
YWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQotewotICAgIENPTVB0
cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1lKTsKLSAgICBpZiAo
IWZyYW1lUHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB3c3RyaW5nIGlkV3N0cmlu
ZyA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKGlkKTsKLSAgICBCU1RSIGlkQlNUUiA9IFN5c0FsbG9j
U3RyaW5nTGVuKChPTEVDSEFSKilpZFdzdHJpbmcuY19zdHIoKSwgaWRXc3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBpbnQgcGFnZU51bWJlciA9IC0xOwotICAgIGlmIChGQUlMRUQoZnJhbWVQcml2YXRl
LT5wYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoaWRCU1RSLCBwYWdlV2lkdGhJblBpeGVscywgcGFn
ZUhlaWdodEluUGl4ZWxzLCAmcGFnZU51bWJlcikpKQotICAgICAgICBwYWdlTnVtYmVyID0gLTE7
Ci0gICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOwotICAgIHJldHVybiBwYWdlTnVtYmVyOwotfQot
CiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAgICBDT01QdHI8SVdlYkZy
YW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2aXNp
b24gMTIzNTgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xs
ZXJXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MiwxMiArNDcyLDYgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0U2Nyb2xsYmFyUAogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0K
IAotaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYsIGZsb2F0LCBmbG9hdCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAg
cmV0dXJuIC0xOwotfQotCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMo
ZmxvYXQsIGZsb2F0KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMjM1ODEpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzc0LDEyICszNzQsNiBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJl
ck9mUGFnZXMoCiAgICAgcmV0dXJuIFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuYnVuZGxlKCksIG1haW5GcmFtZSwgcGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VI
ZWlnaHRJblBpeGVscyk7CiB9CiAKLWludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJl
ckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMs
IGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCi17Ci0gICAgV0tCdW5kbGVGcmFtZVJlZiBtYWlu
RnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2UoKS0+cGFnZSgpKTsKLSAgICByZXR1cm4gV0tCdW5kbGVQYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBtYWluRnJhbWUsIHRvV0so
aWQpLmdldCgpLCBwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKLX0KLQog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGlu
dCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdp
bkxlZnQpCiB7CiAgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VH
ZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDEyMzU4MSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw2IEBAIHB1YmxpYzoKIAogICAgIC8vIFByaW50aW5n
CiAgICAgaW50IG51bWJlck9mUGFnZXMoZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUg
cGFnZUhlaWdodEluUGl4ZWxzKTsKLSAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpT
U3RyaW5nUmVmLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5Q
aXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYWdlU2l6ZUFuZE1hcmdpbnNJ
blBpeGVscyhpbnQgcGFnZUluZGV4LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5U
b3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpOwog
ICAgIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKIApJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDEyMzU4MSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw2IEBAIG1vZHVs
ZSBXVFIgewogCiAgICAgICAgIC8vIFByaW50aW5nCiAgICAgICAgIGludCBudW1iZXJPZlBhZ2Vz
KGluIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgaW4gZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVs
cyk7Ci0gICAgICAgIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoaW4gRE9NU3RyaW5nIGlk
LCBpbiBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGluIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhl
bHMpOwogICAgICAgICBET01TdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW4gaW50
IHBhZ2VJbmRleCwgaW4gaW50IHdpZHRoLCBpbiBpbnQgaGVpZ2h0LCBpbiBpbnQgbWFyZ2luVG9w
LCBpbiBpbnQgbWFyZ2luUmlnaHQsIGluIGludCBtYXJnaW5Cb3R0b20sIGluIGludCBtYXJnaW5M
ZWZ0KTsKICAgICAgICAgYm9vbGVhbiBpc1BhZ2VCb3hWaXNpYmxlKGluIGludCBwYWdlSW5kZXgp
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM1ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0yNCAgS2F1c3R1YmggQXRy
YXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJUXSBMVEM6OiBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgcGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxlciB0byBJbnRlcm5h
bHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVu
dGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBwcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanM6
CisgICAgICAgIChwYWdlTnVtYmVyRm9yRWxlbWVudFNob3VsZEJlKToKKyAgICAgICAgKiBwcmlu
dGluZy9yZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0bWw6CisgICAgICAgICogcHJpbnRpbmcv
c2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLmpzOgorCiAyMDEyLTA3LTI0ICBZ
b3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Rlc3RzXSBD
b3B5IGZhc3QvZm9ybXMvbnVtYmVyL251bWJlci1zcGluYnV0dG9uLWNoYW5nZS1hbmQtaW5wdXQt
ZXZlbnRzLmh0bWwgdG8gZmFzdC9mb3Jtcy9qcy9yZXNvdXJjZXMKSW5kZXg6IExheW91dFRlc3Rz
L3ByaW50aW5nL3BhZ2VOdW1lckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wcmludGluZy9wYWdlTnVtZXJGb3JFbGVtZW50QnlJZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEyMzU4MSkKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2VOdW1l
ckZvckVsZW1lbnRCeUlkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLVRlc3QgZm9yIHRlc3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkKK1Rlc3Qg
Zm9yIGludGVybmFscy5wYWdlTnVtYmVyKCkKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CkluZGV4OiBMYXlvdXRUZXN0cy9wcmludGluZy9yZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmV0dXJuLWZyb20tcHJpbnRp
bmctbW9kZS5odG1sCShyZXZpc2lvbiAxMjM1ODEpCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9y
ZXR1cm4tZnJvbS1wcmludGluZy1tb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3
IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCd0ZXN0MScpOworICAgICAg
ICBpbnRlcm5hbHMucGFnZU51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKSk7
CiB9CiA8L3NjcmlwdD4KIDxoZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvcHJpbnRpbmcvcmVzb3Vy
Y2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcmVzb3VyY2VzL3BhZ2VkLW1lZGlhLXRlc3QtdXRpbHMuanMJKHJldmlzaW9uIDEy
MzU4MSkKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3Jlc291cmNlcy9wYWdlZC1tZWRpYS10ZXN0
LXV0aWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBAIGZ1bmN0aW9uIGFwcGVu
ZFJlc3VsdChyZXN1bHQpCiAKIGZ1bmN0aW9uIHBhZ2VOdW1iZXJGb3JFbGVtZW50U2hvdWxkQmUo
aWQsIGV4cGVjdGVkUGFnZU51bWJlcikKIHsKLSAgICB2YXIgYWN0dWFsUGFnZU51bWJlciA9IHRl
c3RSdW5uZXIucGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgYWN0dWFsUGFn
ZU51bWJlciA9IGludGVybmFscy5wYWdlTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlk
KSk7CiAgICAgaWYgKGFjdHVhbFBhZ2VOdW1iZXIgPT0gZXhwZWN0ZWRQYWdlTnVtYmVyKQogICAg
ICAgICBhcHBlbmRSZXN1bHQoJ1BBU1M6IHBhZ2UgbnVtYmVyIG9mICInICsgaWQgKyAnIiBpcyAn
ICsgYWN0dWFsUGFnZU51bWJlcik7CiAgICAgZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9wcmlu
dGluZy9zY3JpcHQtdGVzdHMvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcHJpbnRpbmcvc2NyaXB0LXRlc3RzL3BhZ2VOdW1lckZvckVsZW1lbnRC
eUlkLmpzCShyZXZpc2lvbiAxMjM1ODEpCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9zY3JpcHQt
dGVzdHMvcGFnZU51bWVyRm9yRWxlbWVudEJ5SWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgdGVzdFJ1bm5lci5wYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoKSIpOworZGVzY3JpcHRpb24oIlRlc3QgZm9yIGludGVybmFscy5wYWdlTnVtYmVy
KCkiKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154603</attachid>
            <date>2012-07-26 03:31:43 -0700</date>
            <delta_ts>2012-07-26 03:36:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92091-20120726193132.patch</filename>
            <type>text/plain</type>
            <size>3124</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzkzYzVlZTYwMjA0YzBh
OTJmMjFkMGVlMGQxMDgwY2ZhZWZmMzUyNC4uOGU1ZWQ2ODg4OWFjYzBmZmExMGE5MzY0ZDBiODIw
ZDQ3MmVjYTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0RSVF0gTFRD
OjogcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50ZXJuYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pc3Npbmcg
YSBzeW1ib2wgZmlsdGVyIGZvciBNYWMgd2luIHBvcnQuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTA3LTI1ICBT
ZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gSW1wbGVtZW50IHRoZSBpbnNwZWN0b3IgZm9yIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgppbmRleCA2OTViYTAzYjZhNTZiMzk3ZmFjMTI2ZWYzODZiNTI1NTNmMjI1NzU2
Li5lYzYyMjc0ZjM3OWQ3NmIwMDQ4ODYwZWVmYjkyZTU3NjhjMjFiZWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCkBAIC0xOTgsNiArMTk4LDcgQEAgRVhQT1JUUwogICAgICAgICA/b3ZlcnJpZGVV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RG
QEAkMEFAQFdURkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5A
Tm9kZUBXZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJF
UEFWUGFnZUAyQFhaCisgICAgICAgID9wYWdlTnVtYmVyRm9yRWxlbWVudEBQcmludENvbnRleHRA
V2ViQ29yZUBAU0FIUEFWRWxlbWVudEAyQEFCVkZsb2F0U2l6ZUAyQEBaCiAgICAgICAgID9wYWlu
dENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9wbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBR
QkVfTlhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRh
aW5lck5vZGVAMkBISF9OQFoKQEAgLTI3NCw0ICsyNzUsNCBAQCBFWFBPUlRTCiAgICAgICAgID9q
c1N0cmluZ1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAz
QEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBA
SlNDQEBVPyRQdHJIYXNoQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0
cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpT
Q0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaICAgICAgICAKICAgICAgICAgP3JlZ2lzdGVy
VVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lAU2NoZW1lUmVnaXN0cnlA
V2ViQ29yZUBAU0FYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3JlbW92ZVVSTFNjaGVtZVJl
Z2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeUBTY2hlbWVSZWdpc3RyeUBX
ZWJDb3JlQEBTQVhBQlZTdHJpbmdAV1RGQEBAWgotICAgICAgICA/aWNvblVSTHNARG9jdW1lbnRA
V2ViQ29yZUBAUUFFQUJWPyRWZWN0b3JAVUljb25VUkxAV2ViQ29yZUBAJDBBQEBXVEZAQFhaClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgICA/aWNvblVSTHNARG9jdW1lbnRAV2Vi
Q29yZUBAUUFFQUJWPyRWZWN0b3JAVUljb25VUkxAV2ViQ29yZUBAJDBBQEBXVEZAQFhaCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggNTA0MmE2OTQyY2QzZmYxOGNhZGY2ODNk
OTRjY2NhMTY4NDhhZjQ5MC4uNTBjYTRjZjE4OGRiODAyNjYxYzFhNmFkYzRjY2U1MWYwOGUyMGY5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBi
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTk1LDYgKzE5NSw3IEBA
IEVYUE9SVFMKICAgICAgICAgP292ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3Jl
QEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEBaCiAgICAgICAgID9udW1i
ZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuQE5vZGVAV2ViQ29yZUBAUUJFSVhaCiAgICAgICAg
ID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgorICAgICAgICA/cGFnZU51
bWJlckZvckVsZW1lbnRAUHJpbnRDb250ZXh0QFdlYkNvcmVAQFNBSFBBVkVsZW1lbnRAMkBBQlZG
bG9hdFNpemVAMkBAWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNv
cmVAQEFBRVhYWgogICAgICAgICA/cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVASFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZS
YW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZDb250YWluZXJOb2RlQDJASEhfTkBaCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155219</attachid>
            <date>2012-07-30 00:01:16 -0700</date>
            <delta_ts>2012-07-30 00:32:29 -0700</delta_ts>
            <desc>Cr Patch</desc>
            <filename>cr_patch</filename>
            <type>text/plain</type>
            <size>3808</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM5OTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA3LTI5ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEu
Y29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNv
dWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBM
YXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBv
bGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRl
c3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAg
IChXZWJGcmFtZUltcGwpOgorCiAyMDEyLTA3LTI5ICBMdSBHdWFucXVuICA8Z3VhbnF1bi5sdUBp
bnRlbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBwYXNzIGFjY2VsZXJhdGVQYWludGluZyBp
bmZvIHRvIHNldHRpbmdzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDEyMzk5OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzMCwxMiArNjMwLDYgQEAgcHVibGljOgog
ICAgIC8vIENhbGxzIG1hcmtlclRleHRGb3JMaXN0SXRlbSgpIGRlZmluZWQgaW4gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG1hcmtl
clRleHRGb3JMaXN0SXRlbShjb25zdCBXZWJFbGVtZW50JikgY29uc3QgPSAwOwogCi0gICAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVtZW50IHdp
bGwgYmUgcHV0LgotICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc3VwcG9ydCBsYXlvdXQg
dGVzdHMuCi0gICAgdmlydHVhbCBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFdl
YlN0cmluZyYgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpIGNvbnN0ID0gMDsKLQogICAgIC8vIFBy
aW50cyBhbGwgb2YgdGhlIHBhZ2VzIGludG8gdGhlIGNhbnZhcywgd2l0aCBwYWdlIGJvdW5kYXJp
ZXMgZHJhd24gYXMKICAgICAvLyBvbmUgcGl4ZWwgd2lkZSBibHVlIGxpbmVzLiBUaGlzIG1ldGhv
ZCBleGlzdHMgdG8gc3VwcG9ydCBsYXlvdXQgdGVzdHMuCiAgICAgdmlydHVhbCB2b2lkIHByaW50
UGFnZXNXaXRoQm91bmRhcmllcyhXZWJDYW52YXMqLCBjb25zdCBXZWJTaXplJikgPSAwOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lv
biAxMjM5OTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAxLDIxICsyMDAxLDYgQEAgV2ViU3RyaW5nIFdlYkZyYW1l
SW1wbDo6bWFya2VyVGV4dEZvckxpcwogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oY29uc3RfY2FzdDxFbGVtZW50Kj4od2ViRWxlbWVudC5jb25zdFVud3JhcDxFbGVt
ZW50PigpKSk7CiB9CiAKLWludCBXZWJGcmFtZUltcGw6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykgY29uc3QKLXsK
LSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgaWYg
KCFlbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBGbG9hdFNpemUgcGFnZVNpemUo
cGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7Ci0gICAgcmV0dXJuIFByaW50
Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgcGFnZVNpemUpOwotfQotCiB2
b2lkIFdlYkZyYW1lSW1wbDo6cHJpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIEFTU0VSVChtX3By
aW50Q29udGV4dC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaAkocmV2aXNpb24gMTIzOTk4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw5ICsyMjgsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgY29udGVudEFzTWFya3VwKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChSZW5kZXJBc1RleHRDb250cm9scyB0
b1Nob3cgPSBSZW5kZXJBc1RleHROb3JtYWwpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBXZWJFbGVtZW50JikgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFdlYlN0cmluZyYgaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VXaWR0aElu
UGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBw
YWdlSGVpZ2h0SW5QaXhlbHMpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViUmVjdCBzZWxlY3Rpb25C
b3VuZHNSZWN0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNT
cGVsbGluZ01hcmtlckZvcihpbnQgZnJvbSwgaW50IGxlbmd0aCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155225</attachid>
            <date>2012-07-30 00:32:29 -0700</date>
            <delta_ts>2012-07-30 03:33:59 -0700</delta_ts>
            <desc>Cr Patch</desc>
            <filename>cr_patch</filename>
            <type>text/plain</type>
            <size>3808</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM5OTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA3LTI5ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEu
Y29tPgorCisgICAgICAgIFtEUlRdIExUQzo6IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCgpIGNv
dWxkIGJlIG1vdmVkIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIHRoZSBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBM
YXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVybmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBv
bGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRl
c3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAg
IChXZWJGcmFtZUltcGwpOgorCiAyMDEyLTA3LTI5ICBMdSBHdWFucXVuICA8Z3VhbnF1bi5sdUBp
bnRlbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBwYXNzIGFjY2VsZXJhdGVQYWludGluZyBp
bmZvIHRvIHNldHRpbmdzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDEyMzk5OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzMCwxMiArNjMwLDYgQEAgcHVibGljOgog
ICAgIC8vIENhbGxzIG1hcmtlclRleHRGb3JMaXN0SXRlbSgpIGRlZmluZWQgaW4gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG1hcmtl
clRleHRGb3JMaXN0SXRlbShjb25zdCBXZWJFbGVtZW50JikgY29uc3QgPSAwOwogCi0gICAgLy8g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVtZW50IHdp
bGwgYmUgcHV0LgotICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc3VwcG9ydCBsYXlvdXQg
dGVzdHMuCi0gICAgdmlydHVhbCBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFdl
YlN0cmluZyYgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpIGNvbnN0ID0gMDsKLQogICAgIC8vIFBy
aW50cyBhbGwgb2YgdGhlIHBhZ2VzIGludG8gdGhlIGNhbnZhcywgd2l0aCBwYWdlIGJvdW5kYXJp
ZXMgZHJhd24gYXMKICAgICAvLyBvbmUgcGl4ZWwgd2lkZSBibHVlIGxpbmVzLiBUaGlzIG1ldGhv
ZCBleGlzdHMgdG8gc3VwcG9ydCBsYXlvdXQgdGVzdHMuCiAgICAgdmlydHVhbCB2b2lkIHByaW50
UGFnZXNXaXRoQm91bmRhcmllcyhXZWJDYW52YXMqLCBjb25zdCBXZWJTaXplJikgPSAwOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lv
biAxMjM5OTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAxLDIxICsyMDAxLDYgQEAgV2ViU3RyaW5nIFdlYkZyYW1l
SW1wbDo6bWFya2VyVGV4dEZvckxpcwogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oY29uc3RfY2FzdDxFbGVtZW50Kj4od2ViRWxlbWVudC5jb25zdFVud3JhcDxFbGVt
ZW50PigpKSk7CiB9CiAKLWludCBXZWJGcmFtZUltcGw6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChjb25zdCBXZWJTdHJpbmcmIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykgY29uc3QKLXsK
LSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgaWYg
KCFlbGVtZW50KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBGbG9hdFNpemUgcGFnZVNpemUo
cGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7Ci0gICAgcmV0dXJuIFByaW50
Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgcGFnZVNpemUpOwotfQotCiB2
b2lkIFdlYkZyYW1lSW1wbDo6cHJpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKFdlYkNhbnZhcyogY2Fu
dmFzLCBjb25zdCBXZWJTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIEFTU0VSVChtX3By
aW50Q29udGV4dC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaAkocmV2aXNpb24gMTIzOTk4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw5ICsyMjgsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgY29udGVudEFzTWFya3VwKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChSZW5kZXJBc1RleHRDb250cm9scyB0
b1Nob3cgPSBSZW5kZXJBc1RleHROb3JtYWwpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBXZWJFbGVtZW50JikgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFdlYlN0cmluZyYgaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBhZ2VXaWR0aElu
UGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBw
YWdlSGVpZ2h0SW5QaXhlbHMpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViUmVjdCBzZWxlY3Rpb25C
b3VuZHNSZWN0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNT
cGVsbGluZ01hcmtlckZvcihpbnQgZnJvbSwgaW50IGxlbmd0aCkgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>