<?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>28394</bug_id>
          
          <creation_ts>2009-08-17 10:23:56 -0700</creation_ts>
          <short_desc>[Chromium] Implement and upstream WebKit API for the Chromium port</short_desc>
          <delta_ts>2009-11-09 21:06:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>31276</dependson>
          <blocked>28395</blocked>
    
    <blocked>28396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140746</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-17 10:23:56 -0700</bug_when>
    <thetext>This is a master bug for finishing and upstreaming the WebKit API layer for the Chromium port. This will live in WebKit/chromium:

http://src.chromium.org/viewvc/chrome/trunk/src/webkit/api/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161639</commentid>
    <comment_count>1</comment_count>
      <attachid>42764</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 10:39:30 -0800</bug_when>
    <thetext>Created attachment 42764
public/WebA*.h + ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161640</commentid>
    <comment_count>2</comment_count>
      <attachid>42764</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 10:40:55 -0800</bug_when>
    <thetext>Comment on attachment 42764
public/WebA*.h + ChangeLog

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161644</commentid>
    <comment_count>3</comment_count>
      <attachid>42767</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 10:59:12 -0800</bug_when>
    <thetext>Created attachment 42767
WebNode and Friends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161646</commentid>
    <comment_count>4</comment_count>
      <attachid>42769</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 11:02:07 -0800</bug_when>
    <thetext>Created attachment 42769
WebBindings.h through WebColor.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161647</commentid>
    <comment_count>5</comment_count>
      <attachid>42767</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 11:02:21 -0800</bug_when>
    <thetext>Comment on attachment 42767
WebNode and Friends.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161649</commentid>
    <comment_count>6</comment_count>
      <attachid>42769</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 11:03:50 -0800</bug_when>
    <thetext>Comment on attachment 42769
WebBindings.h through WebColor.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161657</commentid>
    <comment_count>7</comment_count>
      <attachid>42767</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 11:18:50 -0800</bug_when>
    <thetext>Comment on attachment 42767
WebNode and Friends.

Clearing flags on attachment: 42767

Committed r50669: &lt;http://trac.webkit.org/changeset/50669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161658</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 11:18:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161662</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 11:22:26 -0800</bug_when>
    <thetext>bad bot. no biscuit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161663</commentid>
    <comment_count>10</comment_count>
      <attachid>42773</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 11:23:45 -0800</bug_when>
    <thetext>Created attachment 42773
More WebC*.h files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161666</commentid>
    <comment_count>11</comment_count>
      <attachid>42773</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 11:26:11 -0800</bug_when>
    <thetext>Comment on attachment 42773
More WebC*.h files

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161678</commentid>
    <comment_count>12</comment_count>
      <attachid>42775</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 11:42:51 -0800</bug_when>
    <thetext>Created attachment 42775
Last of the WebC*.h files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161695</commentid>
    <comment_count>13</comment_count>
      <attachid>42777</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 12:13:10 -0800</bug_when>
    <thetext>Created attachment 42777
WebData*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161698</commentid>
    <comment_count>14</comment_count>
      <attachid>42778</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:24:19 -0800</bug_when>
    <thetext>Created attachment 42778
Upstreaming WebVector ... WebWorkerClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161701</commentid>
    <comment_count>15</comment_count>
      <attachid>42780</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:30:02 -0800</bug_when>
    <thetext>Created attachment 42780
WebURL and friends</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161702</commentid>
    <comment_count>16</comment_count>
      <attachid>42775</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 12:32:58 -0800</bug_when>
    <thetext>Comment on attachment 42775
Last of the WebC*.h files

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161704</commentid>
    <comment_count>17</comment_count>
      <attachid>42781</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:33:40 -0800</bug_when>
    <thetext>Created attachment 42781
WebText and Friends</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161706</commentid>
    <comment_count>18</comment_count>
      <attachid>42777</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 12:34:12 -0800</bug_when>
    <thetext>Comment on attachment 42777
WebData*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161707</commentid>
    <comment_count>19</comment_count>
      <attachid>42783</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:36:26 -0800</bug_when>
    <thetext>Created attachment 42783
WebString and other basic objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161709</commentid>
    <comment_count>20</comment_count>
      <attachid>42784</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:40:30 -0800</bug_when>
    <thetext>Created attachment 42784
WebSockets and WebStorage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161711</commentid>
    <comment_count>21</comment_count>
      <attachid>42785</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 12:44:04 -0800</bug_when>
    <thetext>Created attachment 42785
WebScreenInfo to WebSharedWorkerRepo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161712</commentid>
    <comment_count>22</comment_count>
      <attachid>42778</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 12:44:57 -0800</bug_when>
    <thetext>Comment on attachment 42778
Upstreaming WebVector ... WebWorkerClient

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161716</commentid>
    <comment_count>23</comment_count>
      <attachid>42780</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 12:47:49 -0800</bug_when>
    <thetext>Comment on attachment 42780
WebURL and friends

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161726</commentid>
    <comment_count>24</comment_count>
      <attachid>42787</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 13:04:21 -0800</bug_when>
    <thetext>Created attachment 42787
WebDevTools*.h &amp; WebDrag*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161732</commentid>
    <comment_count>25</comment_count>
      <attachid>42778</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:06:53 -0800</bug_when>
    <thetext>Comment on attachment 42778
Upstreaming WebVector ... WebWorkerClient

Clearing flags on attachment: 42778

Committed r50681: &lt;http://trac.webkit.org/changeset/50681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161733</commentid>
    <comment_count>26</comment_count>
      <attachid>42781</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 13:07:56 -0800</bug_when>
    <thetext>Comment on attachment 42781
WebText and Friends

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161735</commentid>
    <comment_count>27</comment_count>
      <attachid>42781</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:08:30 -0800</bug_when>
    <thetext>Comment on attachment 42781
WebText and Friends

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161736</commentid>
    <comment_count>28</comment_count>
      <attachid>42784</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 13:09:12 -0800</bug_when>
    <thetext>Comment on attachment 42784
WebSockets and WebStorage.

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161738</commentid>
    <comment_count>29</comment_count>
      <attachid>42787</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:11:15 -0800</bug_when>
    <thetext>Comment on attachment 42787
WebDevTools*.h &amp; WebDrag*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161740</commentid>
    <comment_count>30</comment_count>
      <attachid>42787</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 13:12:48 -0800</bug_when>
    <thetext>Comment on attachment 42787
WebDevTools*.h &amp; WebDrag*.h

There are some named args here which don&apos;t need them:
+    WEBKIT_API static WebDevToolsFrontend* create(WebView* view,
+                                                  WebDevToolsFrontendClient* client,

I&apos;m not a huge fan of the WEBKIT_IMPLEMENTATION approach, but we should discuss that more after this all lands.

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161742</commentid>
    <comment_count>31</comment_count>
      <attachid>42780</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:14:26 -0800</bug_when>
    <thetext>Comment on attachment 42780
WebURL and friends

Clearing flags on attachment: 42780

Committed r50682: &lt;http://trac.webkit.org/changeset/50682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161743</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:14:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161746</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 13:17:00 -0800</bug_when>
    <thetext>The closing is caused by bug 28230.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161747</commentid>
    <comment_count>34</comment_count>
      <attachid>42794</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 13:17:26 -0800</bug_when>
    <thetext>Created attachment 42794
Remainder of WebE*.h and WebF*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161748</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-09 13:18:47 -0800</bug_when>
    <thetext>Dimitri might as well review the last patch before we re-open the bug.  Once it&apos;s reopened, the cq will start on it again and will close it when completed.

The cq only grabs the list of patches at the start of its run.  It&apos;s not smart enough to check to see if more patches were added by the time it is done landing the first one.  It&apos;s just not really designed with multi-patch bugs in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161749</commentid>
    <comment_count>36</comment_count>
      <attachid>42794</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:19:47 -0800</bug_when>
    <thetext>Comment on attachment 42794
Remainder of WebE*.h and WebF*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161750</commentid>
    <comment_count>37</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:20:21 -0800</bug_when>
    <thetext>we love cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161755</commentid>
    <comment_count>38</comment_count>
      <attachid>42785</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:25:19 -0800</bug_when>
    <thetext>Comment on attachment 42785
WebScreenInfo to WebSharedWorkerRepo

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161759</commentid>
    <comment_count>39</comment_count>
      <attachid>42783</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:30:23 -0800</bug_when>
    <thetext>Comment on attachment 42783
WebString and other basic objects.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161764</commentid>
    <comment_count>40</comment_count>
      <attachid>42797</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 13:39:50 -0800</bug_when>
    <thetext>Created attachment 42797
WebH*.h and WebI*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161765</commentid>
    <comment_count>41</comment_count>
      <attachid>42781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:40:09 -0800</bug_when>
    <thetext>Comment on attachment 42781
WebText and Friends

Clearing flags on attachment: 42781

Committed r50686: &lt;http://trac.webkit.org/changeset/50686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161768</commentid>
    <comment_count>42</comment_count>
      <attachid>42797</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 13:44:13 -0800</bug_when>
    <thetext>Comment on attachment 42797
WebH*.h and WebI*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161769</commentid>
    <comment_count>43</comment_count>
      <attachid>42783</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:47:41 -0800</bug_when>
    <thetext>Comment on attachment 42783
WebString and other basic objects.

Clearing flags on attachment: 42783

Committed r50687: &lt;http://trac.webkit.org/changeset/50687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161775</commentid>
    <comment_count>44</comment_count>
      <attachid>42784</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 13:55:08 -0800</bug_when>
    <thetext>Comment on attachment 42784
WebSockets and WebStorage.

Clearing flags on attachment: 42784

Committed r50688: &lt;http://trac.webkit.org/changeset/50688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161779</commentid>
    <comment_count>45</comment_count>
      <attachid>42799</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 14:02:22 -0800</bug_when>
    <thetext>Created attachment 42799
WebKit.h through WebMedia*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161780</commentid>
    <comment_count>46</comment_count>
      <attachid>42799</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 14:03:17 -0800</bug_when>
    <thetext>Comment on attachment 42799
WebKit.h through WebMedia*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161787</commentid>
    <comment_count>47</comment_count>
      <attachid>42785</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 14:19:46 -0800</bug_when>
    <thetext>Comment on attachment 42785
WebScreenInfo to WebSharedWorkerRepo

Clearing flags on attachment: 42785

Committed r50692: &lt;http://trac.webkit.org/changeset/50692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161788</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 14:19:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161789</commentid>
    <comment_count>49</comment_count>
      <attachid>42801</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 14:22:07 -0800</bug_when>
    <thetext>Created attachment 42801
WebMessage*.h through WebNavigation*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161791</commentid>
    <comment_count>50</comment_count>
      <attachid>42802</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 14:24:07 -0800</bug_when>
    <thetext>Created attachment 42802
Rest of WebN*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161794</commentid>
    <comment_count>51</comment_count>
      <attachid>42801</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 14:28:04 -0800</bug_when>
    <thetext>Comment on attachment 42801
WebMessage*.h through WebNavigation*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161795</commentid>
    <comment_count>52</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 14:28:24 -0800</bug_when>
    <thetext>cq rox0r.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161796</commentid>
    <comment_count>53</comment_count>
      <attachid>42802</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 14:29:14 -0800</bug_when>
    <thetext>Comment on attachment 42802
Rest of WebN*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161800</commentid>
    <comment_count>54</comment_count>
      <attachid>42803</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 14:37:08 -0800</bug_when>
    <thetext>Created attachment 42803
2009-11-09  Nate Chapin  &lt;japhet@chromium.org&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161802</commentid>
    <comment_count>55</comment_count>
      <attachid>42804</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 14:38:37 -0800</bug_when>
    <thetext>Created attachment 42804
Upstreaming Chromium API src files: WebAccessibility</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161808</commentid>
    <comment_count>56</comment_count>
      <attachid>42805</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 14:58:10 -0800</bug_when>
    <thetext>Created attachment 42805
WebPa*.h and WebPl*.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161809</commentid>
    <comment_count>57</comment_count>
      <attachid>42806</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-11-09 14:58:45 -0800</bug_when>
    <thetext>Created attachment 42806
WebPo*.h and WebRuntimeFeatures.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161860</commentid>
    <comment_count>58</comment_count>
      <attachid>42815</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-09 17:38:49 -0800</bug_when>
    <thetext>Created attachment 42815
Upstreaming Chromium API: Platform specific files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161935</commentid>
    <comment_count>59</comment_count>
      <attachid>42815</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 20:11:36 -0800</bug_when>
    <thetext>Comment on attachment 42815
Upstreaming Chromium API: Platform specific files

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161936</commentid>
    <comment_count>60</comment_count>
      <attachid>42805</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 20:14:19 -0800</bug_when>
    <thetext>Comment on attachment 42805
WebPa*.h and WebPl*.h

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161939</commentid>
    <comment_count>61</comment_count>
      <attachid>42815</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 20:25:27 -0800</bug_when>
    <thetext>Comment on attachment 42815
Upstreaming Chromium API: Platform specific files

Clearing flags on attachment: 42815

Committed r50712: &lt;http://trac.webkit.org/changeset/50712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161940</commentid>
    <comment_count>62</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 20:25:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161941</commentid>
    <comment_count>63</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-09 20:27:43 -0800</bug_when>
    <thetext>cq &lt;3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161948</commentid>
    <comment_count>64</comment_count>
      <attachid>42805</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 20:58:35 -0800</bug_when>
    <thetext>Comment on attachment 42805
WebPa*.h and WebPl*.h

Clearing flags on attachment: 42805

Committed r50716: &lt;http://trac.webkit.org/changeset/50716&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161949</commentid>
    <comment_count>65</comment_count>
      <attachid>42806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 21:06:02 -0800</bug_when>
    <thetext>Comment on attachment 42806
WebPo*.h and WebRuntimeFeatures.h

Clearing flags on attachment: 42806

Committed r50717: &lt;http://trac.webkit.org/changeset/50717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161950</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 21:06:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42764</attachid>
            <date>2009-11-09 10:39:30 -0800</date>
            <delta_ts>2009-11-09 11:03:19 -0800</delta_ts>
            <desc>public/WebA*.h + ChangeLog</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20013</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IGNocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDApCisrKyBjaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjUgQEAKKzIwMDktMTEtMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFy
dGluZyB1cHN0cmVhbWluZyB0aGUgQ2hyb21pdW0gV2ViS2l0IEFQSS4gIHB1YmxpYy8gY29udGFp
bnMgaGVhZGVyIGZpbGVzIG9ubHkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAgKiBDaGFuZ2VMb2c6IEZpcnN0ISEKKyAg
ICAgICAgKiBwdWJsaWM6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5
Q2FjaGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlDYWNoZTo6
V2ViQWNjZXNzaWJpbGl0eUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eUNhY2hlOjp+V2ViQWNjZXNzaWJpbGl0eUNhY2hlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6fldlYkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNOdWxsKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eVJvbGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oik6CisgICAg
ICAgICogcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXBwbGljYXRpb25DYWNoZUhvc3Q6On5XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCk6CisgICAgICAg
ICogcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDo6fldlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0Q2xpZW50KToKSW5kZXg6IGNocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5
Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNh
Y2hlLmgJKHJldmlzaW9uIDApCisrKyBjaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNh
Y2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjY2Vzc2liaWxp
dHlDYWNoZV9oCisjZGVmaW5lIFdlYkFjY2Vzc2liaWxpdHlDYWNoZV9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlZpZXc7CitjbGFz
cyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OworCitjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGUg
eworcHVibGljOgorICAgIFdlYkFjY2Vzc2liaWxpdHlDYWNoZSgpIHt9CisgICAgdmlydHVhbCB+
V2ViQWNjZXNzaWJpbGl0eUNhY2hlKCkge30KKworICAgIHN0YXRpYyBXZWJBY2Nlc3NpYmlsaXR5
Q2FjaGUqIGNyZWF0ZSgpOworICAgIHN0YXRpYyB2b2lkIGVuYWJsZUFjY2Vzc2liaWxpdHkoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdlYlZpZXcqIHZpZXcpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdCBnZXRPYmplY3RCeUlkKGludCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkSWQoaW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgYWRkT3JHZXRJ
ZChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmUoaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogY2hyb21pdW0vcHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjaHJvbWl1bS9wdWJs
aWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgY2hyb21pdW0vcHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RfaAorI2RlZmluZSBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0X2gKKworI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlSb2xlLmgiCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsgfQorbmFtZXNwYWNlIFdURiB7IHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlOworY2xh
c3MgV2ViU3RyaW5nOworc3RydWN0IFdlYlBvaW50Oworc3RydWN0IFdlYlJlY3Q7CisKKy8vIEEg
Y29udGFpbmVyIGZvciBwYXNzaW5nIGFyb3VuZCBhIHJlZmVyZW5jZSB0byBBY2Nlc3NpYmlsaXR5
T2JqZWN0LgorY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCB7CitwdWJsaWM6CisgICAgfldl
YkFjY2Vzc2liaWxpdHlPYmplY3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KKyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG8pIDogbV9wcml2YXRlKDApIHsgYXNzaWdu
KG8pOyB9CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3QmIG8pCisgICAgeworICAgICAgICBhc3NpZ24obyk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsK
KworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAg
V2ViU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIFdlYlN0cmlu
ZyBhY3Rpb25WZXJiKCkgY29uc3Q7CisgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNv
bnN0OworCisgICAgdW5zaWduZWQgY2hpbGRDb3VudCgpIGNvbnN0OworCisgICAgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCBjaGlsZEF0KHVuc2lnbmVkKSBjb25zdDsKKyAgICBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0IGZpcnN0Q2hpbGQoKSBjb25zdDsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
IGZvY3VzZWRDaGlsZCgpIGNvbnN0OworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgbGFzdENo
aWxkKCkgY29uc3Q7CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBuZXh0U2libGluZygpIGNv
bnN0OworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgcGFyZW50T2JqZWN0KCkgY29uc3Q7Cisg
ICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBwcmV2aW91c1NpYmxpbmcoKSBjb25zdDsKKworICAg
IGJvb2wgaXNBbmNob3IoKSBjb25zdDsKKyAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzSG92ZXJlZCgpIGNvbnN0OworICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29u
c3Q7CisgICAgYm9vbCBpc011bHRpU2VsZWN0KCkgY29uc3Q7CisgICAgYm9vbCBpc09mZlNjcmVl
bigpIGNvbnN0OworICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3Q7CisgICAgYm9vbCBp
c1ByZXNzZWQoKSBjb25zdDsKKyAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKKyAgICBib29s
IGlzVmlzaXRlZCgpIGNvbnN0OworCisgICAgV2ViUmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dDsKKyAgICBXZWJTdHJpbmcgaGVscFRleHQoKSBjb25zdDsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0IGhpdFRlc3QoY29uc3QgV2ViUG9pbnQmKSBjb25zdDsKKyAgICBXZWJTdHJpbmcga2V5
Ym9hcmRTaG9ydGN1dCgpIGNvbnN0OworICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24oKSBj
b25zdDsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICBX
ZWJTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgdGl0bGUoKSBjb25z
dDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7
CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOworICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PigpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NpZ24oV2ViQWNjZXNzaWJpbGl0eU9iamVjdFByaXZh
dGUqKTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0UHJpdmF0ZSogbV9wcml2YXRlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogY2hyb21pdW0vcHVibGlj
L1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY2hyb21pdW0v
cHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBj
aHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnRf
aAorI2RlZmluZSBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudF9oCisKKyNpbmNsdWRlICJX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSB0aGUgZW1iZWRk
ZXIgdG8gY2FsbCBpbnRvIHdlYmtpdC4KK2NsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgdG8gZmlyZSB0aGUgZXZlbnQgaW4gdGhlIHNj
cmlwdGFibGUgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVy
KFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICAvLyBTaG91bGQgbm90IGJlIGRlbGV0ZWQgYnkgdGhlIGVtYmVkZGVyLgorICAgIHZpcnR1YWwg
fldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50KCkgeyB9Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAgLy8gV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnRfaAor
CkluZGV4OiBjaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaAkocmV2aXNp
b24gMCkKKysrIGNocm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdF9o
CisjZGVmaW5lIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhv
c3RDbGllbnQ7CitjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2Vi
VVJMUmVzcG9uc2U7CitzdHJ1Y3QgV2ViVVJMRXJyb3I7CisKKy8vIFRoaXMgaW50ZXJmYWNlIGlz
IHVzZWQgYnkgd2Via2l0IHRvIGNhbGwgb3V0IHRvIHRoZSBlbWJlZGRlci4gV2Via2l0IHVzZXMK
Ky8vIHRoZSBXZWJLaXRDbGllbnQ6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0IG1ldGhvZCB0
byBjcmVhdGUgaW5zdGFuY2VzLAorLy8gYW5kIGNhbGxzIGRlbGV0ZSB3aGVuIHRoZSBpbnN0YW5j
ZSBpcyBubyBsb25nZXIgbmVlZGVkLgorY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Qgewor
cHVibGljOgorICAgIC8vIFRoZXNlIHZhbHVlcyBtdXN0IG1hdGNoIFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpTdGF0dXMgdmFsdWVzCisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBV
bmNhY2hlZCwKKyAgICAgICAgSWRsZSwKKyAgICAgICAgQ2hlY2tpbmcsCisgICAgICAgIERvd25s
b2FkaW5nLAorICAgICAgICBVcGRhdGVSZWFkeSwKKyAgICAgICAgT2Jzb2xldGUKKyAgICB9Owor
CisgICAgLy8gVGhlc2UgdmFsdWVzIG11c3QgbWF0Y2ggV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50SUQgdmFsdWVzCisgICAgZW51bSBFdmVudElEIHsKKyAgICAgICAgQ2hlY2tp
bmdFdmVudCwKKyAgICAgICAgRXJyb3JFdmVudCwKKyAgICAgICAgTm9VcGRhdGVFdmVudCwKKyAg
ICAgICAgRG93bmxvYWRpbmdFdmVudCwKKyAgICAgICAgUHJvZ3Jlc3NFdmVudCwKKyAgICAgICAg
VXBkYXRlUmVhZHlFdmVudCwKKyAgICAgICAgQ2FjaGVkRXZlbnQsCisgICAgICAgIE9ic29sZXRl
RXZlbnQKKyAgICB9OworCisgICAgdmlydHVhbCB+V2ViQXBwbGljYXRpb25DYWNoZUhvc3QoKSB7
IH0KKworICAgIC8vIENhbGxlZCBmb3IgZXZlcnkgcmVxdWVzdCBtYWRlIHdpdGhpbiB0aGUgY29u
dGV4dC4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TWFpblJlc291cmNlUmVxdWVzdChXZWJV
UkxSZXF1ZXN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRTdWJSZXNvdXJjZVJl
cXVlc3QoV2ViVVJMUmVxdWVzdCYpID0gMDsKKworICAgIC8vIE9uZSBvciB0aGUgb3RoZXIgc2Vs
ZWN0Q2FjaGUgbWV0aG9kcyBpcyBjYWxsZWQgYWZ0ZXIgaGF2aW5nIHBhcnNlZCB0aGUgPGh0bWw+
IHRhZy4KKyAgICAvLyBUaGUgbGF0dGVyIHJldHVybnMgZmFsc2UgaWYgdGhlIGN1cnJlbnQgZG9j
dW1lbnQgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBhICJmb3JlaWduIgorICAgIC8vIGVudHJ5LCBp
biB3aGljaCBjYXNlIHRoZSBmcmFtZSBuYXZpZ2F0aW9uIHdpbGwgYmUgcmVzdGFydGVkIGJ5IHdl
YmtpdC4KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IFdlYlVSTCYg
bWFuaWZlc3RVUkwpID0gMDsKKworICAgIC8vIENhbGxlZCBhcyB0aGUgbWFpbiByZXNvdXJjZSBp
cyByZXRyaWV2ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUZvck1haW5S
ZXNvdXJjZShjb25zdCBXZWJVUkxSZXNwb25zZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFGb3JNYWluUmVzb3VyY2UoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nTWFpblJlc291cmNlKGJvb2wgc3Vj
Y2VzcykgPSAwOworCisgICAgLy8gQ2FsbGVkIG9uIGJlaGFsZiBvZiB0aGUgc2NyaXB0YWJsZSBp
bnRlcmZhY2UuCisgICAgdmlydHVhbCBTdGF0dXMgc3RhdHVzKCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdGFydFVwZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3dhcENhY2hlKCkgPSAw
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgIC8vIFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0X2gKKwpJbmRleDogY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlS
b2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xl
LmgJKHJldmlzaW9uIDApCisrKyBjaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlS
b2xlX2gKKyNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eVJvbGVfaAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGVzZSB2YWx1ZXMgbXVzdCBtYXRj
aCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZXMKK2VudW0gV2ViQWNjZXNzaWJpbGl0
eVJvbGUgeworICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlVW5rbm93biA9IDEsCisgICAgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVCdXR0b24sCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVSYWRpb0J1dHRv
biwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNoZWNrQm94LAorICAgIFdlYkFjY2Vzc2liaWxp
dHlSb2xlU2xpZGVyLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiR3JvdXAsCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVUZXh0RmllbGQsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTdGF0
aWNUZXh0LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlVGV4dEFyZWEsCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVTY3JvbGxBcmVhLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlUG9wVXBCdXR0
b24sCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVNZW51QnV0dG9uLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlVGFibGUsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvbiwKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUdyb3VwLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlUmFk
aW9Hcm91cCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3QsCisgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVTY3JvbGxCYXIsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVWYWx1ZUluZGljYXRv
ciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUltYWdlLAorICAgIFdlYkFjY2Vzc2liaWxpdHlS
b2xlTWVudUJhciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZU1lbnUsCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVNZW51SXRlbSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNvbHVtbiwKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVJvdywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRvb2xi
YXIsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVCdXN5SW5kaWNhdG9yLAorICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlUHJvZ3Jlc3NJbmRpY2F0b3IsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVX
aW5kb3csCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVEcmF3ZXIsCisgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVTeXN0ZW1XaWRlLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlT3V0bGluZSwKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUluY3JlbWVudG9yLAorICAgIFdlYkFjY2Vzc2liaWxpdHlS
b2xlQnJvd3NlciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNvbWJvQm94LAorICAgIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlU3BsaXRHcm91cCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNwbGl0
dGVyLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQ29sb3JXZWxsLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlR3Jvd0FyZWEsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTaGVldCwKKyAgICBX
ZWJBY2Nlc3NpYmlsaXR5Um9sZUhlbHBUYWcsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVNYXR0
ZSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVJ1bGVyLAorICAgIFdlYkFjY2Vzc2liaWxpdHlS
b2xlUnVsZXJNYXJrZXIsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVMaW5rLAorICAgIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlRGlzY2xvc3VyZVRyaWFuZ2xlLAorICAgIFdlYkFjY2Vzc2liaWxpdHlS
b2xlR3JpZCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNlbGwsCisgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVDb2x1bW5IZWFkZXIsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVSb3dIZWFkZXIs
CisKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVdlYkNvcmVMaW5rLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlSW1hZ2VNYXBMaW5rLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlSW1hZ2VNYXAs
CisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0TWFya2VyLAorICAgIFdlYkFjY2Vzc2liaWxp
dHlSb2xlV2ViQXJlYSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUhlYWRpbmcsCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVMaXN0Qm94LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGlzdEJv
eE9wdGlvbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYmxlSGVhZGVyQ29udGFpbmVyLAor
ICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlRGVmaW5pdGlvbkxpc3RUZXJtLAorICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uLAorICAgIFdlYkFjY2Vzc2liaWxp
dHlSb2xlQW5ub3RhdGlvbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNsaWRlclRodW1iLAor
ICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlSWdub3JlZCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9s
ZVRhYiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYkxpc3QsCisgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVUYWJQYW5lbCwKKworICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGFuZG1hcmtBcHBs
aWNhdGlvbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrQmFubmVyLAorICAgIFdl
YkFjY2Vzc2liaWxpdHlSb2xlTGFuZG1hcmtDb21wbGVtZW50YXJ5LAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlTGFuZG1hcmtDb250ZW50SW5mbywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxh
bmRtYXJrTWFpbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrTmF2aWdhdGlvbiwK
KyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrU2VhcmNoLAorCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVBcHBsaWNhdGlvbkxvZywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUFwcGxp
Y2F0aW9uTWFycXVlZSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUFwcGxpY2F0aW9uU3RhdHVz
LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb25UaW1lciwKKworICAgIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlRG9jdW1lbnQsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVEb2N1bWVu
dEFydGljbGUsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVEb2N1bWVudE5vdGUsCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVEb2N1bWVudFJlZ2lvbiwKKworICAgIFdlYkFjY2Vzc2liaWxpdHlS
b2xlVXNlckludGVyZmFjZVRvb2x0aXAKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYK
</data>
<flag name="review"
          id="24333"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42767</attachid>
            <date>2009-11-09 10:59:12 -0800</date>
            <delta_ts>2009-11-09 12:13:50 -0800</delta_ts>
            <desc>WebNode and Friends.</desc>
            <filename>apiElements.diff</filename>
            <type>text/plain</type>
            <size>13592</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDZlYjRjZmYuLmZmY2E3OWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwc3RyZWFt
aW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJOiBXZWJOb2RlLmggYW5kIGZyaWVuZHMgYXJlIHRo
aW4gd3JhcHBlcnMgYXJvdW5kIFdlYkNvcmU6Ok5vZGVzCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVudDo6V2ViRWxlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVsZW1lbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkVsZW1lbnQ6OmFzc2lnbik6CisgICAgICAgICogcHVibGljL1dlYkZvcm1FbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtRWxlbWVudDo6fldlYkZvcm1F
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6OldlYkZvcm1FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUVsZW1lbnQ6Om9wZXJhdG9yPSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZvcm1FbGVtZW50Ojphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJJ
bnB1dEVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6
V2ViSW5wdXRFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEVsZW1lbnQ6OmFzc2lnbik6CisgICAg
ICAgICogcHVibGljL1dlYk5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5vZGU6
On5XZWJOb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6V2ViTm9kZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vZGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vZGU6
OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vZGU6OnRvRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vZGU6OnVud3JhcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vZGU6OmNv
bnN0VW53cmFwKToKKwogMjAwOS0xMS0wOSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZk
YzA4MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVu
dC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkVsZW1lbnRfaAorI2RlZmluZSBXZWJFbGVt
ZW50X2gKKworI2luY2x1ZGUgIldlYk5vZGUuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBFbGVtZW50OyB9CituYW1lc3BhY2UgV1RGIHsg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworICAgIC8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21l
IHByb3BlcnRpZXMgb2YgYSBET00gZWxlbWVudCBub2RlLgorICAgIGNsYXNzIFdlYkVsZW1lbnQg
OiBwdWJsaWMgV2ViTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBXZWJFbGVtZW50KCkgOiBX
ZWJOb2RlKCkgeyB9CisgICAgICAgIFdlYkVsZW1lbnQoY29uc3QgV2ViRWxlbWVudCYgZSkgOiBX
ZWJOb2RlKGUpIHsgfQorCisgICAgICAgIFdlYkVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXZWJF
bGVtZW50JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgcmV0dXJuICp0aGlzOyB9CisgICAgICAg
IFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViRWxlbWVudCYgZSkgeyBXZWJOb2RlOjph
c3NpZ24oZSk7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgICAgICBXZWJFbGVt
ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYpOworICAgICAgICBX
ZWJFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1l
bnQ+Jik7CisgICAgICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50
PigpIGNvbnN0OworI2VuZGlmCisKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzYTFlOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJGb3JtRWxlbWVudF9oCisjZGVmaW5lIFdlYkZvcm1FbGVtZW50X2gKKworI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7IH0K
K25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIC8vIEEgY29udGFpbmVyIGZvciBw
YXNzaW5nIGFyb3VuZCBhIHJlZmVyZW5jZSB0byBhIGZvcm0gZWxlbWVudC4gIFByb3ZpZGVzCisg
ICAgLy8gc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybS4KKyAgICBjbGFzcyBXZWJGb3Jt
RWxlbWVudCA6IHB1YmxpYyBXZWJFbGVtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIH5XZWJG
b3JtRWxlbWVudCgpIHsgcmVzZXQoKTsgfQorCisgICAgICAgIFdlYkZvcm1FbGVtZW50KCkgOiBX
ZWJFbGVtZW50KCkgeyB9CisgICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdlYkZvcm1FbGVt
ZW50JiBlKSA6IFdlYkVsZW1lbnQoZSkgeyB9CisKKyAgICAgICAgV2ViRWxlbWVudCYgb3BlcmF0
b3I9KGNvbnN0IFdlYkZvcm1FbGVtZW50JiBlKSB7IFdlYkVsZW1lbnQ6OmFzc2lnbihlKTsgcmV0
dXJuICp0aGlzOyB9CisgICAgICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViRm9y
bUVsZW1lbnQmIGUpIHsgV2ViRWxlbWVudDo6YXNzaWduKGUpOyB9CisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICAgICAgV2ViRm9ybUVsZW1lbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKKyAgICAgICAgV2ViRm9ybUVsZW1lbnQmIG9w
ZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50PiYp
OworICAgICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50PigpIGNvbnN0OworI2VuZGlmCisKKyAgICAgICAgYm9vbCBhdXRvQ29tcGxldGUoKSBjb25z
dDsKKyAgICAgICAgV2ViU3RyaW5nIGFjdGlvbigpOworICAgICAgICB2b2lkIHN1Ym1pdCgpOwor
ICAgICAgICB2b2lkIGdldE5hbWVkRWxlbWVudHMoY29uc3QgV2ViU3RyaW5nJiwgV2ViVmVjdG9y
PFdlYk5vZGU+Jik7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEVsZW1lbnQuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWQ4NmEzOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
SW5wdXRFbGVtZW50X2gKKyNkZWZpbmUgV2ViSW5wdXRFbGVtZW50X2gKKworI2luY2x1ZGUgIldl
YkVsZW1lbnQuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworICAgIC8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRp
ZXMgb2YgYSBET00gaW5wdXQgZWxlbWVudCBub2RlLgorICAgIGNsYXNzIFdlYklucHV0RWxlbWVu
dCA6IHB1YmxpYyBXZWJFbGVtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdlYklucHV0RWxl
bWVudCgpIDogV2ViRWxlbWVudCgpIHsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQoY29uc3Qg
V2ViSW5wdXRFbGVtZW50JiBuKSA6IFdlYkVsZW1lbnQobikgeyB9CisKKyAgICAgICAgV2ViSW5w
dXRFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViSW5wdXRFbGVtZW50JiBuKSB7IFdlYkVsZW1l
bnQ6OmFzc2lnbihuKTsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIFdFQktJVF9BUEkgdm9pZCBh
c3NpZ24oY29uc3QgV2ViSW5wdXRFbGVtZW50JiBuKSB7IFdlYkVsZW1lbnQ6OmFzc2lnbihuKTsg
fQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgICAgIFdlYklucHV0RWxlbWVudChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4mKTsKKyAgICAg
ICAgV2ViSW5wdXRFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ+Jik7CisgICAgICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PigpIGNvbnN0OworI2VuZGlmCisKKyAgICAgICAg
dm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCk7CisgICAgICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgV2ViU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIFdlYlN0cmluZyB2YWx1ZSgpOworICAgICAg
ICB2b2lkIHNldEF1dG9maWxsZWQoYm9vbCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hGb3JtQ29u
dHJvbENoYW5nZUV2ZW50KCk7CisgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2Uoc2l6ZV90
LCBzaXplX3QpOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGM0ODkxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9k
ZS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5vZGVfaAorI2RlZmluZSBXZWJOb2RlX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIE5vZGU7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnJhbWU7CisKKy8vIFBy
b3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gbm9kZS4K
K2NsYXNzIFdlYk5vZGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYk5vZGUoKSB7IHJlc2V0
KCk7IH0KKworICAgIFdlYk5vZGUoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KKyAgICBXZWJOb2RlKGNv
bnN0IFdlYk5vZGUmIG4pIDogbV9wcml2YXRlKDApIHsgYXNzaWduKG4pOyB9CisgICAgV2ViTm9k
ZSYgb3BlcmF0b3I9KGNvbnN0IFdlYk5vZGUmIG4pCisgICAgeworICAgICAgICBhc3NpZ24obik7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVz
ZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYk5vZGUmKTsKKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgV2ViTm9kZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Tm9kZT4mKTsKKyAgICBXZWJOb2RlJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6Ok5vZGU+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
Ok5vZGU+KCkgY29uc3Q7CisjZW5kaWYKKworICAgIFdFQktJVF9BUEkgV2ViTm9kZSBwYXJlbnRO
b2RlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsK
KyAgICBXZWJGcmFtZSogZnJhbWUoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdG9F
bGVtZW50KCkKKyAgICB7CisgICAgICAgIFQgcmVzOworICAgICAgICByZXMubV9wcml2YXRlID0g
bV9wcml2YXRlOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IHR5cGVkZWYgV2ViQ29yZTo6Tm9kZSBXZWJOb2RlUHJpdmF0ZTsKKyAgICB2b2lkIGFzc2lnbihX
ZWJOb2RlUHJpdmF0ZSopOworICAgIFdlYk5vZGVQcml2YXRlKiBtX3ByaXZhdGU7CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogdW53cmFwKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUKj4obV9wcml2YXRlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdCBUKiBjb25zdFVud3JhcCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KG1fcHJpdmF0ZSk7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42769</attachid>
            <date>2009-11-09 11:02:07 -0800</date>
            <delta_ts>2009-11-09 11:09:26 -0800</delta_ts>
            <desc>WebBindings.h through WebColor.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18170</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2NjcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTkgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQgQ2hyb21pdW0gQVBJIHVwc3RyZWFtaW5nLCBX
ZWJCaW5kaW5ncy5oIHRocm91Z2ggV2ViQ29sb3IuaC4KKworICAgICAgICAqIHB1YmxpYy9XZWJC
aW5kaW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViQ2FjaGUuaDogQWRkZWQuCisg
ICAgICAgICogcHVibGljL1dlYkNhbnZhcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2Vi
Q2xpcGJvYXJkLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6Oik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNsaXBib2FyZDo6fldlYkNsaXBib2FyZCk6CisgICAgICAgICog
cHVibGljL1dlYkNvbG9yLmg6IEFkZGVkLgorCisyMDA5LTExLTA5ICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgogCiAgICAgICAgIFN0YXJ0aW5nIHVwc3RyZWFtaW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJ
LiAgcHVibGljLyBjb250YWlucyBoZWFkZXIgZmlsZXMgb25seS4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDYW52YXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ2FudmFzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNhbnZh
c19oCisjZGVmaW5lIFdlYkNhbnZhc19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2lm
IFdFQktJVF9VU0lOR19TS0lBCituYW1lc3BhY2Ugc2tpYSB7IGNsYXNzIFBsYXRmb3JtQ2FudmFz
OyB9CisjZWxpZiBXRUJLSVRfVVNJTkdfQ0cKK3N0cnVjdCBDR0NvbnRleHQ7CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBXRUJLSVRfVVNJTkdfU0tJQQordHlwZWRlZiBza2lh
OjpQbGF0Zm9ybUNhbnZhcyBXZWJDYW52YXM7CisjZWxpZiBXRUJLSVRfVVNJTkdfQ0cKK3R5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCBXZWJDYW52YXM7CisjZWxzZQorI2Vycm9yICJOZWVkIHRvIGRl
ZmluZSBXZWJDYW52YXMiCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkJpbmRpbmdzX2gKKyNkZWZpbmUgV2ViQmluZGluZ3NfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSA8YmluZGluZ3MvbnBydW50aW1lLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEcmFnRGF0YTsKK2NsYXNzIFdlYlJh
bmdlOworCisvLyBBIGhhcGhhemFyZCBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyBmb3IgZGVhbGlu
ZyB3aXRoIHBsdWdpbnMuCitjbGFzcyBXZWJCaW5kaW5ncyB7CitwdWJsaWM6CisgICAgLy8gTlBO
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICAvLyBUaGVzZSBhcmUgYWxsIGRlZmluZWQgaW4gbnBydW50aW1lLmggYW5k
IGFyZSB3ZWxsIGRvY3VtZW50ZWQuCisKKyAgICAvLyBOUE5fQ29uc3RydWN0CisgICAgV0VCS0lU
X0FQSSBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoTlBQLCBOUE9iamVjdCosIGNvbnN0IE5QVmFyaWFu
dCogYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKKworICAgIC8v
IE5QTl9DcmVhdGVPYmplY3QKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBOUE9iamVjdCogY3JlYXRl
T2JqZWN0KE5QUCwgTlBDbGFzcyopOworCisgICAgLy8gTlBOX0VudW1lcmF0ZQorICAgIFdFQktJ
VF9BUEkgc3RhdGljIGJvb2wgZW51bWVyYXRlKE5QUCwgTlBPYmplY3QqLCBOUElkZW50aWZpZXIq
KiwgdWludDMyX3QqIGNvdW50KTsKKworICAgIC8vIE5QTl9FdmFsdWF0ZQorICAgIFdFQktJVF9B
UEkgc3RhdGljIGJvb2wgZXZhbHVhdGUoTlBQLCBOUE9iamVjdCosIE5QU3RyaW5nKiBzY3JpcHQs
IE5QVmFyaWFudCogcmVzdWx0KTsKKworICAgIC8vIE5QTl9FdmFsdWF0ZUhlbHBlcgorICAgIFdF
QktJVF9BUEkgc3RhdGljIGJvb2wgZXZhbHVhdGVIZWxwZXIoTlBQLCBib29sIHBvcHVwc0FsbG93
ZWQsIE5QT2JqZWN0KiwgTlBTdHJpbmcqIHNjcmlwdCwgTlBWYXJpYW50KiByZXN1bHQpOworCisg
ICAgLy8gTlBOX0dldEludElkZW50aWZpZXIKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBOUElkZW50
aWZpZXIgZ2V0SW50SWRlbnRpZmllcihpbnQzMl90IG51bWJlcik7CisKKyAgICAvLyBOUE5fR2V0
UHJvcGVydHkKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGdldFByb3BlcnR5KE5QUCwgTlBP
YmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBOUFZhcmlhbnQgKnJlc3VsdCk7CisK
KyAgICAvLyBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcgorICAgIFdFQktJVF9BUEkgc3RhdGljIE5Q
SWRlbnRpZmllciBnZXRTdHJpbmdJZGVudGlmaWVyKGNvbnN0IE5QVVRGOCogc3RyaW5nKTsKKwor
ICAgIC8vIE5QTl9HZXRTdHJpbmdJZGVudGlmaWVycworICAgIFdFQktJVF9BUEkgc3RhdGljIHZv
aWQgZ2V0U3RyaW5nSWRlbnRpZmllcnMoY29uc3QgTlBVVEY4KiogbmFtZXMsIGludDMyX3QgbmFt
ZUNvdW50LCBOUElkZW50aWZpZXIqKTsKKworICAgIC8vIE5QTl9IYXNNZXRob2QKKyAgICBXRUJL
SVRfQVBJIHN0YXRpYyBib29sIGhhc01ldGhvZChOUFAsIE5QT2JqZWN0KiwgTlBJZGVudGlmaWVy
IG1ldGhvZE5hbWUpOworCisgICAgLy8gTlBOX0hhc1Byb3BlcnR5CisgICAgV0VCS0lUX0FQSSBz
dGF0aWMgYm9vbCBoYXNQcm9wZXJ0eShOUFAsIE5QT2JqZWN0KiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSk7CisKKyAgICAvLyBOUE5fSWRlbnRpZmllcklzU3RyaW5nCisgICAgV0VCS0lUX0FQ
SSBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVyKTsKKworICAgIC8v
IE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhTdHJpbmdDb3B5ICh0aG91Z2ggc29tZXRpbWVzIHBy
ZWZpeGVkIHdpdGggYW4gdW5kZXJzY29yZSkKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVWYXJpYW50V2l0aFN0cmluZ0NvcHkoTlBWYXJpYW50KiwgY29uc3QgTlBTdHJpbmcq
KTsKKworICAgIC8vIE5QTl9JbnRGcm9tSWRlbnRpZmllcgorICAgIFdFQktJVF9BUEkgc3RhdGlj
IGludDMyX3QgaW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyKTsKKworICAgIC8vIE5QTl9J
bnZva2UKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBib29sIGludm9rZShOUFAsIE5QT2JqZWN0Kiwg
TlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3Qg
Y291bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKKworICAgIC8vIE5QTl9JbnZva2VEZWZhdWx0Cisg
ICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBpbnZva2VEZWZhdWx0KE5QUCwgTlBPYmplY3QqLCBj
b25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGNvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCk7
CisKKyAgICAvLyBOUE5fUmVsZWFzZU9iamVjdAorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQg
cmVsZWFzZU9iamVjdChOUE9iamVjdCopOworCisgICAgLy8gTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHJlbGVhc2VWYXJpYW50VmFsdWUoTlBWYXJp
YW50Kik7CisKKyAgICAvLyBOUE5fUmVtb3ZlUHJvcGVydHkKKyAgICBXRUJLSVRfQVBJIHN0YXRp
YyBib29sIHJlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqLCBOUElkZW50aWZpZXIpOworCisg
ICAgLy8gTlBOX1JldGFpbk9iamVjdAorICAgIFdFQktJVF9BUEkgc3RhdGljIE5QT2JqZWN0KiBy
ZXRhaW5PYmplY3QoTlBPYmplY3QqKTsKKworICAgIC8vIE5QTl9TZXRFeGNlcHRpb24KKyAgICBX
RUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldEV4Y2VwdGlvbihOUE9iamVjdCosIGNvbnN0IE5QVVRG
OCogbWVzc2FnZSk7CisKKyAgICAvLyBOUE5fU2V0UHJvcGVydHkKKyAgICBXRUJLSVRfQVBJIHN0
YXRpYyBib29sIHNldFByb3BlcnR5KE5QUCwgTlBPYmplY3QqLCBOUElkZW50aWZpZXIsIGNvbnN0
IE5QVmFyaWFudCopOworCisgICAgLy8gX05QTl9VbnJlZ2lzdGVyT2JqZWN0CisgICAgV0VCS0lU
X0FQSSBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2JqZWN0KE5QT2JqZWN0Kik7CisKKyAgICAvLyBO
UE5fVVRGOEZyb21JZGVudGlmaWVyCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgTlBVVEY4KiB1dGY4
RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyKTsKKworICAgIC8vIE1pc2NlbGxhbmVvdXMgdXRp
bGl0eSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAg
ICAvLyBDb21wbGVtZW50IHRvIE5QTl9HZXRfX19JZGVudGlmaWVyIGZ1bmN0aW9ucy4gIEV4dHJh
Y3RzIGRhdGEgZnJvbSB0aGUgTlBJZGVudGlmaWVyIGRhdGEKKyAgICAvLyBzdHJ1Y3R1cmUuICBJ
ZiBpc1N0cmluZyBpcyB0cnVlIHVwb24gcmV0dXJuLCBzdHJpbmcgd2lsbCBiZSBzZXQgYnV0IG51
bWJlcidzIHZhbHVlIGlzCisgICAgLy8gdW5kZWZpbmVkLiAgSWYgaVN0cmluZyBpcyBmYWxzZSwg
dGhlIG9wcG9zaXRlIGlzIHRydWUuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBleHRyYWN0
SWRlbnRpZmllckRhdGEoY29uc3QgTlBJZGVudGlmaWVyJiwgY29uc3QgTlBVVEY4KiYgc3RyaW5n
LCBpbnQzMl90JiBudW1iZXIsIGJvb2wmIGlzU3RyaW5nKTsKKworICAgIC8vIFJldHVybiB0cnVl
IChzdWNjZXNzKSBpZiB0aGUgZ2l2ZW4gbnBvYmogaXMgdGhlIGN1cnJlbnQgZHJhZyBldmVudCBp
biBicm93c2VyIGRpc3BhdGNoLAorICAgIC8vIGFuZCBpcyBhY2Nlc3NpYmxlIGJhc2VkIG9uIGNv
bnRleHQgZXhlY3V0aW9uIGZyYW1lcyBhbmQgdGhlaXIgc2VjdXJpdHkgb3JpZ2lucyBhbmQKKyAg
ICAvLyBXZWJLaXQgY2xpcGJvYXJkIGFjY2VzcyBwb2xpY3kuIElmIHNvLCByZXR1cm4gdGhlIGV2
ZW50IGlkIGFuZCB0aGUgY2xpcGJvYXJkIGRhdGEgKFdlYkRyYWdEYXRhKS4KKyAgICAvLyBUaGlz
IG9ubHkgd29ya3Mgd2l0aCBWOC4gIElmIGNvbXBpbGVkIHdpdGhvdXQgVjgsIGl0J2xsIGFsd2F5
cyByZXR1cm4gZmFsc2UuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBnZXREcmFnRGF0YShO
UE9iamVjdCogZXZlbnQsIGludCogZXZlbnRJZCwgV2ViRHJhZ0RhdGEqKTsKKworICAgIC8vIElu
dm9rZSB0aGUgZXZlbnQgYWNjZXNzIHBvbGljeSBjaGVja3MgbGlzdGVkIGFib3ZlIHdpdGggR2V0
RHJhZ0RhdGEoKS4gIE5vIG5lZWQgZm9yIGNsaXBib2FyZAorICAgIC8vIGRhdGEgb3IgZXZlbnRf
aWQgb3V0cHV0cywganVzdCBjb25maXJtIHRoZSBnaXZlbiBucG9iaiBpcyB0aGUgY3VycmVudCAm
IGFjY2Vzc2libGUgZHJhZyBldmVudC4KKyAgICAvLyBUaGlzIG9ubHkgd29ya3Mgd2l0aCBWOC4g
IElmIGNvbXBpbGVkIHdpdGhvdXQgVjgsIGl0J2xsIGFsd2F5cyByZXR1cm4gZmFsc2UuCisgICAg
V0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBpc0RyYWdFdmVudChOUE9iamVjdCogZXZlbnQpOworCisg
ICAgLy8gUmV0dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhIHJhbmdl
IG9iamVjdC4KKyAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQgcmFuZ2UgYXMgYSBXZWJSYW5nZSBv
YmplY3QuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBnZXRSYW5nZShOUE9iamVjdCogcmFu
Z2UsIFdlYlJhbmdlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJDb2xvcl9oCisjZGVmaW5lIFdlYkNvbG9yX2gKKworI2luY2x1ZGUgIldlYkNvbG9y
TmFtZS5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dHlwZWRlZiB1bnNpZ25lZCBXZWJDb2xvcjsgIC8vIFJHQkEgcXVhZC4gRXF1aXZhbGVudCB0byBT
a0NvbG9yLgorCisvLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBzZXQgb2YgbmFtZWQgY29sb3JzLgor
V0VCS0lUX0FQSSB2b2lkIHNldE5hbWVkQ29sb3JzKGNvbnN0IFdlYkNvbG9yTmFtZSosIGNvbnN0
IFdlYkNvbG9yKiwgc2l6ZV90IGxlbmd0aCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNsaXBib2FyZF9oCisjZGVmaW5lIFdlYkNsaXBi
b2FyZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkltYWdlOworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworCitjbGFz
cyBXZWJDbGlwYm9hcmQgeworcHVibGljOgorICAgIGVudW0gRm9ybWF0IHsKKyAgICAgICAgRm9y
bWF0SFRNTCwKKyAgICAgICAgRm9ybWF0Qm9va21hcmssCisgICAgICAgIEZvcm1hdFNtYXJ0UGFz
dGUKKyAgICB9OworCisgICAgZW51bSBCdWZmZXIgeworICAgICAgICBCdWZmZXJTdGFuZGFyZCwK
KyAgICAgICAgLy8gVXNlZCBvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgWCBXaW5kb3cgU3lzdGVtIHRo
YXQgdHJlYXQgc2VsZWN0aW9uCisgICAgICAgIC8vIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCisg
ICAgICAgIEJ1ZmZlclNlbGVjdGlvbgorICAgIH07CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb3Jt
YXRBdmFpbGFibGUoRm9ybWF0LCBCdWZmZXIpID0gMDsKKworICAgIHZpcnR1YWwgV2ViU3RyaW5n
IHJlYWRQbGFpblRleHQoQnVmZmVyKSA9IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZEhU
TUwoQnVmZmVyLCBXZWJVUkwqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRl
eHQoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUhUTUwoCisg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgaHRtbFRleHQsIGNvbnN0IFdlYlVSTCYsCisgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgcGxhaW5UZXh0LCBib29sIHdyaXRlU21hcnRQYXN0ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVSTCgKKyAgICAgICAgY29uc3QgV2ViVVJMJiwgY29uc3Qg
V2ViU3RyaW5nJiB0aXRsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUltYWdlKAorICAg
ICAgICBjb25zdCBXZWJJbWFnZSYsIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0
bGUpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJDbGlwYm9hcmQoKSB7fQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2Fj
aGUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2FjaGUuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ2FjaGVfaAorI2RlZmluZSBX
ZWJDYWNoZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKy8vIEFuIGludGVyZmFjZSB0byBxdWVyeSBhbmQgY29uZmlndXJlIFdlYktpdCdzIHJlc291
cmNlIGNhY2hlLgorY2xhc3MgV2ViQ2FjaGUgeworcHVibGljOgorICAgIHN0cnVjdCBVc2FnZVN0
YXRzIHsKKyAgICAgICAgLy8gQ2FwYWNpdGllcy4KKyAgICAgICAgc2l6ZV90IG1pbkRlYWRDYXBh
Y2l0eTsKKyAgICAgICAgc2l6ZV90IG1heERlYWRDYXBhY2l0eTsKKyAgICAgICAgc2l6ZV90IGNh
cGFjaXR5OworICAgICAgICAvLyBVdGlsaXphdGlvbi4KKyAgICAgICAgc2l6ZV90IGxpdmVTaXpl
OworICAgICAgICBzaXplX3QgZGVhZFNpemU7CisgICAgfTsKKworICAgIC8vIEEgc3RydWN0IG1p
cnJvcmluZyBXZWJDb3JlOjpDYWNoZTo6VHlwZVN0YXRpc3RpYy4KKyAgICBzdHJ1Y3QgUmVzb3Vy
Y2VUeXBlU3RhdCB7CisgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAgc2l6ZV90IHNpemU7
CisgICAgICAgIHNpemVfdCBsaXZlU2l6ZTsKKyAgICAgICAgc2l6ZV90IGRlY29kZWRTaXplOwor
ICAgIH07CisKKyAgICAvLyBBIHN0cnVjdCBtaXJyb3JpbmcgV2ViQ29yZTo6Q2FjaGU6OlN0YXRp
c3RpY3MuCisgICAgc3RydWN0IFJlc291cmNlVHlwZVN0YXRzIHsKKyAgICAgICAgUmVzb3VyY2VU
eXBlU3RhdCBpbWFnZXM7CisgICAgICAgIFJlc291cmNlVHlwZVN0YXQgY3NzU3R5bGVTaGVldHM7
CisgICAgICAgIFJlc291cmNlVHlwZVN0YXQgc2NyaXB0czsKKyAgICAgICAgUmVzb3VyY2VUeXBl
U3RhdCB4c2xTdHlsZVNoZWV0czsKKyAgICAgICAgUmVzb3VyY2VUeXBlU3RhdCBmb250czsKKyAg
ICB9OworCisgICAgLy8gU2V0cyB0aGUgY2FwYWNpdGllcyBvZiB0aGUgcmVzb3VyY2UgY2FjaGUs
IGV2aWN0aW5nIG9iamVjdHMgYXMgbmVjZXNzYXJ5LgorICAgIFdFQktJVF9BUEkgc3RhdGljIHZv
aWQgc2V0Q2FwYWNpdGllcyhzaXplX3QgbWluRGVhZENhcGFjaXR5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4RGVhZENhcGFjaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FwYWNpdHkpOworCisg
ICAgLy8gQ2xlYXJzIHRoZSBjYWNoZSAoYXMgbXVjaCBhcyBwb3NzaWJsZTsgc29tZSByZXNvdXJj
ZXMgbWF5IG5vdCBiZQorICAgIC8vIGNsZWFyZWQgaWYgdGhleSBhcmUgYWN0aXZlbHkgcmVmZXJl
bmNlZCkuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBjbGVhcigpOworCisgICAgLy8gR2V0
cyB0aGUgdXNhZ2Ugc3RhdGlzdGljcyBmcm9tIHRoZSByZXNvdXJjZSBjYWNoZS4KKyAgICBXRUJL
SVRfQVBJIHN0YXRpYyB2b2lkIGdldFVzYWdlU3RhdHMoVXNhZ2VTdGF0cyopOworCisgICAgLy8g
R2V0IHVzYWdlIHN0YXRzIGFib3V0IHRoZSByZXNvdXJjZSBjYWNoZS4KKyAgICBXRUJLSVRfQVBJ
IHN0YXRpYyB2b2lkIGdldFJlc291cmNlVHlwZVN0YXRzKFJlc291cmNlVHlwZVN0YXRzKik7CisK
K3ByaXZhdGU6CisgICAgV2ViQ2FjaGUoKTsgIC8vIE5vdCBpbnRlbmRlZCB0byBiZSBpbnN0YW5j
ZWQuCit9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="24339"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42773</attachid>
            <date>2009-11-09 11:23:45 -0800</date>
            <delta_ts>2009-11-09 11:34:55 -0800</delta_ts>
            <desc>More WebC*.h files</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16653</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2NjkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3JlIFdlYkMqLmggdXBzdHJlYW1pbmcuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ1N0
cmluZzo6fldlYkNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDU3RyaW5nOjpXZWJDU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ1N0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ1N0cmluZzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNTdHJp
bmc6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNTdHJpbmc6Om9wZXJhdG9yIHN0ZDo6
c3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ1N0cmluZzo6ZnJvbVVURjE2KToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViQ29sb3JOYW1lLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgor
ICAgICAgICAqIHB1YmxpYy9XZWJDb21tb24uaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dl
YkNvbW1vbldvcmtlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29tbW9u
V29ya2VyQ2xpZW50Ojp+V2ViQ29tbW9uV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMv
V2ViQ29tcG9zaXRpb25Db21tYW5kLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorCiAy
MDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRpb25Db21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdGlvbkNvbW1hbmQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRpb25Db21tYW5kLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbXBvc2l0aW9uQ29tbWFuZF9oCisjZGVmaW5lIFdlYkNv
bXBvc2l0aW9uQ29tbWFuZF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYkNvbXBv
c2l0aW9uQ29tbWFuZCB7CisgICAgV2ViQ29tcG9zaXRpb25Db21tYW5kRGlzY2FyZCwKKyAgICBX
ZWJDb21wb3NpdGlvbkNvbW1hbmRTZXQsCisgICAgV2ViQ29tcG9zaXRpb25Db21tYW5kQ29uZmly
bSwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ1N0cmluZy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDU3RyaW5nLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDU3RyaW5nX2gKKyNkZWZpbmUgV2ViQ1N0cmluZ19oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBDU3RyaW5nOyB9CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZz4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ1N0cmluZ1ByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7
CisKKy8vIEEgc2luZ2xlLWJ5dGUgc3RyaW5nIGNvbnRhaW5lciB3aXRoIHVuc3BlY2lmaWVkIGVu
Y29kaW5nLiAgSXQgaXMKKy8vIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJDU3RyaW5nIG9iamVj
dC4KKy8vCisvLyBXQVJOSU5HOiBJdCBpcyBub3Qgc2FmZSB0byBwYXNzIGEgV2ViQ1N0cmluZyBh
Y3Jvc3MgdGhyZWFkcyEhIQorLy8KK2NsYXNzIFdlYkNTdHJpbmcgeworcHVibGljOgorICAgIH5X
ZWJDU3RyaW5nKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJDU3RyaW5nKCkgOiBtX3ByaXZhdGUo
MCkgeyB9CisKKyAgICBXZWJDU3RyaW5nKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pIDog
bV9wcml2YXRlKDApCisgICAgeworICAgICAgICBhc3NpZ24oZGF0YSwgbGVuKTsKKyAgICB9CisK
KyAgICBXZWJDU3RyaW5nKGNvbnN0IFdlYkNTdHJpbmcmIHMpIDogbV9wcml2YXRlKDApIHsgYXNz
aWduKHMpOyB9CisKKyAgICBXZWJDU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViQ1N0cmluZyYg
cykKKyAgICB7CisgICAgICAgIGFzc2lnbihzKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9BUEkgdm9pZCBh
c3NpZ24oY29uc3QgV2ViQ1N0cmluZyYpOworICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7CisKKyAgICBXRUJLSVRfQVBJIHNpemVfdCBsZW5n
dGgoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFsZW5ndGgoKTsgfQorICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgdXRmMTYoKSBjb25zdDsKKworICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJp
bmcgZnJvbVVURjE2KGNvbnN0IFdlYlVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBX
RUJLSVRfQVBJIHN0YXRpYyBXZWJDU3RyaW5nIGZyb21VVEYxNihjb25zdCBXZWJVQ2hhciogZGF0
YSk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDU3RyaW5nKGNvbnN0IFdl
YkNvcmU6OkNTdHJpbmcmKTsKKyAgICBXZWJDU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29y
ZTo6Q1N0cmluZyYpOworICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNTdHJpbmcoKSBjb25zdDsKKyNl
bHNlCisgICAgV2ViQ1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBtX3ByaXZhdGUoMCkK
KyAgICB7CisgICAgICAgIGFzc2lnbihzLmRhdGEoKSwgcy5sZW5ndGgoKSk7CisgICAgfQorCisg
ICAgV2ViQ1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQorICAgIHsKKyAg
ICAgICAgYXNzaWduKHMuZGF0YSgpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIG9wZXJhdG9yIHN0ZDo6c3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHNpemVfdCBsZW4gPSBsZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIGxlbiA/IHN0ZDo6c3Ry
aW5nKGRhdGEoKSwgbGVuKSA6IHN0ZDo6c3RyaW5nKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PGNsYXNzIFVURjE2U3RyaW5nPgorICAgIHN0YXRpYyBXZWJDU3RyaW5nIGZyb21VVEYxNihjb25z
dCBVVEYxNlN0cmluZyYgcykKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9tVVRGMTYocy5kYXRh
KCksIHMubGVuZ3RoKCkpOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNz
aWduKFdlYkNTdHJpbmdQcml2YXRlKik7CisgICAgV2ViQ1N0cmluZ1ByaXZhdGUqIG1fcHJpdmF0
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29sb3JOYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJDb2xvck5hbWUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29sb3JOYW1lLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9u
LgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV2ViQ29sb3JOYW1lX2gKKyNkZWZpbmUg
V2ViQ29sb3JOYW1lX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gV2ViQ29sb3JOYW1l
IHsKKyAgICBXZWJDb2xvckFjdGl2ZUJvcmRlciwKKyAgICBXZWJDb2xvckFjdGl2ZUNhcHRpb24s
CisgICAgV2ViQ29sb3JBcHB3b3Jrc3BhY2UsCisgICAgV2ViQ29sb3JCYWNrZ3JvdW5kLAorICAg
IFdlYkNvbG9yQnV0dG9uRmFjZSwKKyAgICBXZWJDb2xvckJ1dHRvbkhpZ2hsaWdodCwKKyAgICBX
ZWJDb2xvckJ1dHRvblNoYWRvdywKKyAgICBXZWJDb2xvckJ1dHRvblRleHQsCisgICAgV2ViQ29s
b3JDYXB0aW9uVGV4dCwKKyAgICBXZWJDb2xvckdyYXlUZXh0LAorICAgIFdlYkNvbG9ySGlnaGxp
Z2h0LAorICAgIFdlYkNvbG9ySGlnaGxpZ2h0VGV4dCwKKyAgICBXZWJDb2xvckluYWN0aXZlQm9y
ZGVyLAorICAgIFdlYkNvbG9ySW5hY3RpdmVDYXB0aW9uLAorICAgIFdlYkNvbG9ySW5hY3RpdmVD
YXB0aW9uVGV4dCwKKyAgICBXZWJDb2xvckluZm9CYWNrZ3JvdW5kLAorICAgIFdlYkNvbG9ySW5m
b1RleHQsCisgICAgV2ViQ29sb3JNZW51LAorICAgIFdlYkNvbG9yTWVudVRleHQsCisgICAgV2Vi
Q29sb3JTY3JvbGxiYXIsCisgICAgV2ViQ29sb3JUZXh0LAorICAgIFdlYkNvbG9yVGhyZWVkRGFy
a1NoYWRvdywKKyAgICBXZWJDb2xvclRocmVlZFNoYWRvdywKKyAgICBXZWJDb2xvclRocmVlZEZh
Y2UsCisgICAgV2ViQ29sb3JUaHJlZWRIaWdobGlnaHQsCisgICAgV2ViQ29sb3JUaHJlZWRMaWdo
dFNoYWRvdywKKyAgICBXZWJDb2xvcldlYmtpdEZvY3VzUmluZ0NvbG9yLAorICAgIFdlYkNvbG9y
V2luZG93LAorICAgIFdlYkNvbG9yV2luZG93RnJhbWUsCisgICAgV2ViQ29sb3JXaW5kb3dUZXh0
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29tbW9uV29ya2VyQ2xpZW50X2gKKyNk
ZWZpbmUgV2ViQ29tbW9uV29ya2VyQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdl
YldvcmtlcjsKK2NsYXNzIFdlYldvcmtlckNsaWVudDsKKworLy8gUHJvdmlkZXMgYW4gaW50ZXJm
YWNlIGJhY2sgdG8gdGhlIGluLXBhZ2Ugc2NyaXB0IG9iamVjdCBmb3IgYSB3b3JrZXIuCisvLyBU
aGlzIGludGVyZmFjZSBjb250YWlucyBjb21tb24gQVBJcyB1c2VkIGJ5IGJvdGggc2hhcmVkIGFu
ZCBkZWRpY2F0ZWQKKy8vIHdvcmtlcnMuCisvLyBBbGwgZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0
byBiZSBjYWxsZWQgYmFjayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAorLy8gdGhlIFdvcmtl
ciBvYmplY3QsIHVubGVzcyBub3RlZC4KK2NsYXNzIFdlYkNvbW1vbldvcmtlckNsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCgKKyAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsCisgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCisgICAgICAgIGludCBkZXN0aW5hdGlv
bklkZW50aWZpZXIsCisgICAgICAgIGludCBzb3VyY2VJZGVudGlmaWVyLAorICAgICAgICBpbnQg
bWVzc2FnZVR5cGUsCisgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCisgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgaW50IGxpbmVOdW1iZXIsCisgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgc291cmNlVVJMKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29u
dGV4dENsb3NlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3ll
ZCgpID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIG5vdGlmaWNhdGlvbiBwcmVzZW50ZXIgZm9y
IHRoaXMgd29ya2VyIGNvbnRleHQuICBQb2ludGVyCisgICAgLy8gaXMgb3duZWQgYnkgdGhlIG9i
amVjdCBpbXBsZW1lbnRpbmcgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIHZpcnR1YWwgV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSA9IDA7CisKKyAg
ICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZCB0byBjcmVhdGUgYSBuZXN0ZWQg
V2ViV29ya2VyLgorICAgIC8vIFdlYlNoYXJlZFdvcmtlcnMgYXJlIG5vdCBpbnN0YW50aWF0ZWQg
dmlhIHRoaXMgQVBJIC0gaW5zdGVhZAorICAgIC8vIHRoZXkgYXJlIGNyZWF0ZWQgdmlhIHRoZSBX
ZWJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LgorICAgIHZpcnR1YWwgV2ViV29ya2VyKiBjcmVhdGVX
b3JrZXIoV2ViV29ya2VyQ2xpZW50KiBjbGllbnQpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5X
ZWJDb21tb25Xb3JrZXJDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbW1vbl9oCisjZGVmaW5lIFdlYkNvbW1vbl9oCisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24KKworI2lmICFk
ZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKKyAgICAjZGVmaW5lIFdFQktJVF9JTVBMRU1F
TlRBVElPTiAwCisjZW5kaWYKKworI2lmICFkZWZpbmVkKFdFQktJVF9VU0lOR19TS0lBKQorICAg
ICNpZiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgICAgICNkZWZpbmUgV0VCS0lUX1VTSU5HX1NL
SUEgMQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgV0VCS0lUX1VTSU5HX1NLSUEgMAorICAg
ICNlbmRpZgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChXRUJLSVRfVVNJTkdfQ0cpCisgICAgI2lm
IGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICAjZGVmaW5lIFdFQktJVF9VU0lOR19DRyAxCisg
ICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfVVNJTkdfQ0cgMAorICAgICNlbmRpZgor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZChXRUJLSVRfVVNJTkdfVjgpCisgICAgI2RlZmluZSBXRUJL
SVRfVVNJTkdfVjggMQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChXRUJLSVRfVVNJTkdfSlNDKQor
ICAgICNkZWZpbmUgV0VCS0lUX1VTSU5HX0pTQyAwCisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vIEV4cG9ydGVkIHN5bWJvbHMgbmVlZCB0byBiZSBhbm5vdGF0ZWQgd2l0aCBX
RUJLSVRfQVBJCisKKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKFdFQktJVF9ETEwpCisg
ICAgI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9OKQorICAgICAgICAjZGVmaW5lIFdF
QktJVF9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmlu
ZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRpZgorI2Vsc2UKKyAg
ICAjZGVmaW5lIFdFQktJVF9BUEkKKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gQmFzaWMgdHlwZXMKKworI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBGb3Igc2l6ZV90CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisgICAgLy8gVVRGLTE2IGNoYXJhY3RlciB0eXBlCisjaWYgZGVm
aW5lZChXSU4zMikKK3R5cGVkZWYgd2NoYXJfdCBXZWJVQ2hhcjsKKyNlbHNlCit0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IFdlYlVDaGFyOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYK
</data>
<flag name="review"
          id="24344"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42775</attachid>
            <date>2009-11-09 11:42:51 -0800</date>
            <delta_ts>2009-11-09 13:00:46 -0800</delta_ts>
            <desc>Last of the WebC*.h files</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16435</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMjUgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSB0aGUgbGFzdCBvZiB0aGUgQ2hyb21pdW0g
QVBJIFdlYkMqLmggZmlsZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29uc29sZU1lc3NhZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnNvbGVNZXNzYWdlOjopOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb25zb2xlTWVzc2FnZTo6V2ViQ29uc29sZU1lc3NhZ2UpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHRNZW51RGF0YTo6KToKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29va2llLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWU6OldlYkNvb2tpZSk6CisgICAgICAgICog
cHVibGljL1dlYkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaDogQWRkZWQuCisgICAg
ICAgICogcHVibGljL1dlYkN1cnNvckluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkN1cnNvckluZm86Oik6CisgICAgICAgIChXZWJLaXQ6OldlYkN1cnNvckluZm86OldlYkN1cnNv
ckluZm8pOgorCisyMDA5LTExLTA5ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgogCiAgICAgICAgIE1vcmUg
V2ViQyouaCB1cHN0cmVhbWluZy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29u
dGV4dE1lbnVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJD
b250ZXh0TWVudURhdGEuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29udGV4dE1lbnVEYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDb250ZXh0TWVudURhdGFfaAorI2RlZmluZSBXZWJDb250ZXh0TWVudURhdGFfaAorCisj
aW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFRoaXMgc3RydWN0IGlzIHBhc3Nl
ZCB0byBXZWJWaWV3Q2xpZW50OjpTaG93Q29udGV4dE1lbnUuCitzdHJ1Y3QgV2ViQ29udGV4dE1l
bnVEYXRhIHsKKyAgICBlbnVtIE1lZGlhVHlwZSB7CisgICAgICAgIC8vIE5vIHNwZWNpYWwgbm9k
ZSBpcyBpbiBjb250ZXh0LgorICAgICAgICBNZWRpYVR5cGVOb25lLAorICAgICAgICAvLyBBbiBp
bWFnZSBub2RlIGlzIHNlbGVjdGVkLgorICAgICAgICBNZWRpYVR5cGVJbWFnZSwKKyAgICAgICAg
Ly8gQSB2aWRlbyBub2RlIGlzIHNlbGVjdGVkLgorICAgICAgICBNZWRpYVR5cGVWaWRlbywKKyAg
ICAgICAgLy8gQW4gYXVkaW8gbm9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgTWVkaWFUeXBlQXVk
aW8sCisgICAgfTsKKyAgICAvLyBUaGUgdHlwZSBvZiBtZWRpYSB0aGUgY29udGV4dCBtZW51IGlz
IGJlaW5nIGludm9rZWQgb24uCisgICAgTWVkaWFUeXBlIG1lZGlhVHlwZTsKKworICAgIC8vIFRo
ZSB4IGFuZCB5IHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBwb2ludGVyIChyZWxhdGl2ZSB0byB0aGUg
d2VidmlldykuCisgICAgV2ViUG9pbnQgbW91c2VQb3NpdGlvbjsKKworICAgIC8vIFRoZSBhYnNv
bHV0ZSBVUkwgb2YgdGhlIGxpbmsgdGhhdCBpcyBpbiBjb250ZXh0LgorICAgIFdlYlVSTCBsaW5r
VVJMOworCisgICAgLy8gVGhlIGFic29sdXRlIFVSTCBvZiB0aGUgaW1hZ2UvdmlkZW8vYXVkaW8g
dGhhdCBpcyBpbiBjb250ZXh0LgorICAgIFdlYlVSTCBzcmNVUkw7CisKKyAgICAvLyBUaGUgYWJz
b2x1dGUgVVJMIG9mIHRoZSBwYWdlIGluIGNvbnRleHQuCisgICAgV2ViVVJMIHBhZ2VVUkw7CisK
KyAgICAvLyBUaGUgYWJzb2x1dGUgVVJMIG9mIHRoZSBzdWJmcmFtZSBpbiBjb250ZXh0LgorICAg
IFdlYlVSTCBmcmFtZVVSTDsKKworICAgIC8vIFRoZSBlbmNvZGluZyBmb3IgdGhlIGZyYW1lIGlu
IGNvbnRleHQuCisgICAgV2ViU3RyaW5nIGZyYW1lRW5jb2Rpbmc7CisKKyAgICBlbnVtIE1lZGlh
RmxhZ3MgeworICAgICAgICBNZWRpYU5vbmUgPSAweDAsCisgICAgICAgIE1lZGlhSW5FcnJvciA9
IDB4MSwKKyAgICAgICAgTWVkaWFQYXVzZWQgPSAweDIsCisgICAgICAgIE1lZGlhTXV0ZWQgPSAw
eDQsCisgICAgICAgIE1lZGlhTG9vcCA9IDB4OCwKKyAgICAgICAgTWVkaWFDYW5TYXZlID0gMHgx
MCwKKyAgICAgICAgTWVkaWFIYXNBdWRpbyA9IDB4MjAsCisgICAgfTsKKworICAgIC8vIEV4dHJh
IGF0dHJpYnV0ZXMgZGVzY3JpYmluZyBtZWRpYSBlbGVtZW50cy4KKyAgICBpbnQgbWVkaWFGbGFn
czsKKworICAgIC8vIFRoZSByYXcgdGV4dCBvZiB0aGUgc2VsZWN0aW9uIGluIGNvbnRleHQuCisg
ICAgV2ViU3RyaW5nIHNlbGVjdGVkVGV4dDsKKworICAgIC8vIFdoZXRoZXIgc3BlbGwgY2hlY2tp
bmcgaXMgZW5hYmxlZC4KKyAgICBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQ7CisKKyAgICAv
LyBUaGUgZWRpdGFibGUgKHBvc3NpYmlseSkgbWlzc3BlbGxlZCB3b3JkLgorICAgIFdlYlN0cmlu
ZyBtaXNzcGVsbGVkV29yZDsKKworICAgIC8vIFdoZXRoZXIgY29udGV4dCBpcyBlZGl0YWJsZS4K
KyAgICBib29sIGlzRWRpdGFibGU7CisKKyAgICBlbnVtIEVkaXRGbGFncyB7CisgICAgICAgIENh
bkRvTm9uZSA9IDB4MCwKKyAgICAgICAgQ2FuVW5kbyA9IDB4MSwKKyAgICAgICAgQ2FuUmVkbyA9
IDB4MiwKKyAgICAgICAgQ2FuQ3V0ID0gMHg0LAorICAgICAgICBDYW5Db3B5ID0gMHg4LAorICAg
ICAgICBDYW5QYXN0ZSA9IDB4MTAsCisgICAgICAgIENhbkRlbGV0ZSA9IDB4MjAsCisgICAgICAg
IENhblNlbGVjdEFsbCA9IDB4NDAsCisgICAgfTsKKworICAgIC8vIFdoaWNoIGVkaXQgb3BlcmF0
aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjb250ZXh0LgorICAgIGludCBlZGl0RmxhZ3M7CisK
KyAgICAvLyBTZWN1cml0eSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbnRleHQuCisgICAgV2ViQ1N0
cmluZyBzZWN1cml0eUluZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnNvbGVNZXNzYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb25zb2xlTWVzc2FnZS5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb25zb2xlTWVzc2FnZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb25zb2xlTWVzc2FnZV9oCisj
ZGVmaW5lIFdlYkNvbnNvbGVNZXNzYWdlX2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkNvbnNvbGVNZXNzYWdlIHsKKyAgICBlbnVt
IExldmVsIHsKKyAgICAgICAgTGV2ZWxUaXAsCisgICAgICAgIExldmVsTG9nLAorICAgICAgICBM
ZXZlbFdhcm5pbmcsCisgICAgICAgIExldmVsRXJyb3IKKyAgICB9OworCisgICAgTGV2ZWwgbGV2
ZWw7CisgICAgV2ViU3RyaW5nIHRleHQ7CisKKyAgICBXZWJDb25zb2xlTWVzc2FnZSgpCisgICAg
ICAgIDogbGV2ZWwoTGV2ZWxMb2cpIHsgfQorICAgIFdlYkNvbnNvbGVNZXNzYWdlKExldmVsIGxl
dmVsLCBjb25zdCBXZWJTdHJpbmcmIHRleHQpCisgICAgICAgIDogbGV2ZWwoTGV2ZWxMb2cpCisg
ICAgICAgICwgdGV4dCh0ZXh0KSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWUuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkNvb2tpZV9oCisjZGVmaW5lIFdlYkNvb2tpZV9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gQSBjb29raWUuCisvLworc3RydWN0IFdl
YkNvb2tpZSB7CisgICAgV2ViQ29va2llKCkKKyAgICAgICAgOiBleHBpcmVzKDApCisgICAgICAg
ICwgaHR0cE9ubHkoZmFsc2UpCisgICAgICAgICwgc2VjdXJlKGZhbHNlKQorICAgICAgICAsIHNl
c3Npb24oZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFdlYkNvb2tpZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdlYlN0cmluZyYgZG9tYWlu
LAorICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVzLCBi
b29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uKQorICAgICAgICA6IG5hbWUo
bmFtZSkKKyAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBkb21haW4oZG9tYWluKQor
ICAgICAgICAsIHBhdGgocGF0aCkKKyAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCisgICAgICAg
ICwgaHR0cE9ubHkoaHR0cE9ubHkpCisgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAg
LCBzZXNzaW9uKHNlc3Npb24pCisgICAgeworICAgIH0KKworICAgIFdlYlN0cmluZyBuYW1lOwor
ICAgIFdlYlN0cmluZyB2YWx1ZTsKKyAgICBXZWJTdHJpbmcgZG9tYWluOworICAgIFdlYlN0cmlu
ZyBwYXRoOworICAgIGRvdWJsZSBleHBpcmVzOworICAgIGJvb2wgaHR0cE9ubHk7CisgICAgYm9v
bCBzZWN1cmU7CisgICAgYm9vbCBzZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZV9oCisjZGVmaW5lIFdlYkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBBbiBpbnRlcmZhY2UgdG8gY29uZmlndXJlIFdlYktpdCdzIGNyb3NzLW9yaWdpbiBwcmVm
bGlnaHQgcmVzdWx0IGNhY2hlLgorY2xhc3MgV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZSB7CitwdWJsaWM6CisgICAgLy8gQ2xlYXJzIHRoZSBjYWNoZS4KKyAgICBXRUJLSVRfQVBJ
IHN0YXRpYyB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZSgpOyAgLy8gTm90IGludGVuZGVkIHRvIGJlIGluc3RhbmNlZC4KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ3Vyc29ySW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ3Vyc29ySW5mby5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDdXJzb3JJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJDdXJzb3JJbmZvX2gKKyNkZWZpbmUgV2ViQ3Vyc29ySW5mb19oCisKKyNpbmNsdWRlICJX
ZWJJbWFnZS5oIgorI2luY2x1ZGUgIldlYlBvaW50LmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQ3Vyc29yOyB9CisjZW5kaWYKKworI2lm
ZGVmIFdJTjMyCit0eXBlZGVmIHN0cnVjdCBISUNPTl9fKiBISUNPTjsKK3R5cGVkZWYgSElDT04g
SENVUlNPUjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkN1cnNv
ckluZm8geworICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVQb2ludGVyLAorICAgICAgICBU
eXBlQ3Jvc3MsCisgICAgICAgIFR5cGVIYW5kLAorICAgICAgICBUeXBlSUJlYW0sCisgICAgICAg
IFR5cGVXYWl0LAorICAgICAgICBUeXBlSGVscCwKKyAgICAgICAgVHlwZUVhc3RSZXNpemUsCisg
ICAgICAgIFR5cGVOb3J0aFJlc2l6ZSwKKyAgICAgICAgVHlwZU5vcnRoRWFzdFJlc2l6ZSwKKyAg
ICAgICAgVHlwZU5vcnRoV2VzdFJlc2l6ZSwKKyAgICAgICAgVHlwZVNvdXRoUmVzaXplLAorICAg
ICAgICBUeXBlU291dGhFYXN0UmVzaXplLAorICAgICAgICBUeXBlU291dGhXZXN0UmVzaXplLAor
ICAgICAgICBUeXBlV2VzdFJlc2l6ZSwKKyAgICAgICAgVHlwZU5vcnRoU291dGhSZXNpemUsCisg
ICAgICAgIFR5cGVFYXN0V2VzdFJlc2l6ZSwKKyAgICAgICAgVHlwZU5vcnRoRWFzdFNvdXRoV2Vz
dFJlc2l6ZSwKKyAgICAgICAgVHlwZU5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZSwKKyAgICAgICAg
VHlwZUNvbHVtblJlc2l6ZSwKKyAgICAgICAgVHlwZVJvd1Jlc2l6ZSwKKyAgICAgICAgVHlwZU1p
ZGRsZVBhbm5pbmcsCisgICAgICAgIFR5cGVFYXN0UGFubmluZywKKyAgICAgICAgVHlwZU5vcnRo
UGFubmluZywKKyAgICAgICAgVHlwZU5vcnRoRWFzdFBhbm5pbmcsCisgICAgICAgIFR5cGVOb3J0
aFdlc3RQYW5uaW5nLAorICAgICAgICBUeXBlU291dGhQYW5uaW5nLAorICAgICAgICBUeXBlU291
dGhFYXN0UGFubmluZywKKyAgICAgICAgVHlwZVNvdXRoV2VzdFBhbm5pbmcsCisgICAgICAgIFR5
cGVXZXN0UGFubmluZywKKyAgICAgICAgVHlwZU1vdmUsCisgICAgICAgIFR5cGVWZXJ0aWNhbFRl
eHQsCisgICAgICAgIFR5cGVDZWxsLAorICAgICAgICBUeXBlQ29udGV4dE1lbnUsCisgICAgICAg
IFR5cGVBbGlhcywKKyAgICAgICAgVHlwZVByb2dyZXNzLAorICAgICAgICBUeXBlTm9Ecm9wLAor
ICAgICAgICBUeXBlQ29weSwKKyAgICAgICAgVHlwZU5vbmUsCisgICAgICAgIFR5cGVOb3RBbGxv
d2VkLAorICAgICAgICBUeXBlWm9vbUluLAorICAgICAgICBUeXBlWm9vbU91dCwKKyAgICAgICAg
VHlwZUN1c3RvbQorICAgIH07CisKKyAgICBUeXBlIHR5cGU7CisgICAgV2ViUG9pbnQgaG90U3Bv
dDsKKyAgICBXZWJJbWFnZSBjdXN0b21JbWFnZTsKKworI2lmZGVmIFdJTjMyCisgICAgLy8gT24g
V2luZG93cywgVHlwZUN1c3RvbSBtYXkgYWx0ZXJuYXRpdmVseSByZWZlcmVuY2UgYW4gZXh0ZXJu
YWxseQorICAgIC8vIGRlZmluZWQgSENVUlNPUi4gIElmIHR5cGUgaXMgVHlwZUN1c3RvbSBhbmQg
ZXh0ZXJuYWxIYW5kbGUgaXMgbm9uLQorICAgIC8vIG51bGwsIHRoZW4gY3VzdG9tRGF0YSBzaG91
bGQgYmUgaWdub3JlZC4gIFRoZSBXZWJDdXJzb3JJbmZvIGlzIG5vdAorICAgIC8vIHJlc3BvbnNp
YmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXRpbWUgb2YgdGhpcyBjdXJzb3IgaGFuZGxlLgorICAg
IEhDVVJTT1IgZXh0ZXJuYWxIYW5kbGU7CisjZW5kaWYKKworICAgIGV4cGxpY2l0IFdlYkN1cnNv
ckluZm8oVHlwZSB0eXBlID0gVHlwZVBvaW50ZXIpCisgICAgICAgIDogdHlwZSh0eXBlKQorICAg
IHsKKyNpZmRlZiBXSU4zMgorICAgICAgICBleHRlcm5hbEhhbmRsZSA9IDA7CisjZW5kaWYKKyAg
ICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBleHBsaWNpdCBXZWJDdXJzb3JJ
bmZvKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCg==
</data>
<flag name="review"
          id="24348"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42777</attachid>
            <date>2009-11-09 12:13:10 -0800</date>
            <delta_ts>2009-11-09 13:00:58 -0800</delta_ts>
            <desc>WebData*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14909</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2NzUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMzAgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBXZWJEYXRhKi5oIENocm9taXVtIEFQSSBm
aWxlcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJEYXRhOjp+V2ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGE6OldlYkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEYXRhOjppc0VtcHR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YTo6aXNOdWxs
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YVNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YVNvdXJjZTo6RXh0cmFEYXRhOjp+RXh0cmFEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJEYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6OldlYkRh
dGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6On5XZWJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZTo6aXNOdWxsKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YWJhc2VPYnNl
cnZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VPYnNlcnZlcjo6fldl
YkRhdGFiYXNlT2JzZXJ2ZXIpOgorCisyMDA5LTExLTA5ICBOYXRlIENoYXBpbiAgPGphcGhldEBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgogCiAg
ICAgICAgIE1vcmUgV2ViQyouaCB1cHN0cmVhbWluZy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRhdGFiYXNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRhdGFiYXNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRhdGFi
YXNlX2gKKyNkZWZpbmUgV2ViRGF0YWJhc2VfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEYXRhYmFzZTsgfQorbmFtZXNwYWNlIFdURiB7
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGFiYXNlT2JzZXJ2ZXI7CitjbGFzcyBXZWJE
YXRhYmFzZVByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYkRhdGFiYXNlIHsK
K3B1YmxpYzoKKyAgICBXZWJEYXRhYmFzZSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkRh
dGFiYXNlKGNvbnN0IFdlYkRhdGFiYXNlJiBkKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihkKTsg
fQorICAgIH5XZWJEYXRhYmFzZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViRGF0YWJhc2UmIG9w
ZXJhdG9yPShjb25zdCBXZWJEYXRhYmFzZSYgZCkKKyAgICB7CisgICAgICAgIGFzc2lnbihkKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCByZXNl
dCgpOworICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViRGF0YWJhc2UmKTsKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3ByaXZhdGU7IH0KKworICAgIFdFQktJ
VF9BUEkgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBk
aXNwbGF5TmFtZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OworCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRPYnNlcnZl
cihXZWJEYXRhYmFzZU9ic2VydmVyKik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRGF0YWJh
c2VPYnNlcnZlciogb2JzZXJ2ZXIoKTsKKworICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgdXBk
YXRlRGF0YWJhc2VTaXplKAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VOYW1lLAorICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgZGF0YWJhc2VTaXplLCB1bnNpZ25lZCBsb25nIGxvbmcgc3BhY2VBdmFpbGFibGUpOwor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRGF0YWJhc2UoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkRhdGFiYXNlPiYpOworICAgIFdlYkRhdGFiYXNlJiBvcGVyYXRv
cj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRhdGFiYXNlPiYpOworICAgIG9wZXJh
dG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEYXRhYmFzZT4oKSBjb25zdDsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIHZvaWQgYXNzaWduKFdlYkRhdGFiYXNlUHJpdmF0ZSopOworCisgICAg
V2ViRGF0YWJhc2VQcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGEuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViRGF0YV9oCisjZGVmaW5lIFdlYkRhdGFfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgU2hhcmVkQnVmZmVyOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViRGF0YVByaXZhdGU7CisKKy8vIEEgY29udGFpbmVyIGZvciByYXcg
Ynl0ZXMuICBJdCBpcyBpbmV4cGVuc2l2ZSB0byBjb3B5IGEgV2ViRGF0YSBvYmplY3QuCisvLwor
Ly8gV0FSTklORzogSXQgaXMgbm90IHNhZmUgdG8gcGFzcyBhIFdlYkRhdGEgYWNyb3NzIHRocmVh
ZHMhISEKKy8vCitjbGFzcyBXZWJEYXRhIHsKK3B1YmxpYzoKKyAgICB+V2ViRGF0YSgpIHsgcmVz
ZXQoKTsgfQorCisgICAgV2ViRGF0YSgpIDogbV9wcml2YXRlKDApIHsgfQorCisgICAgV2ViRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgOiBtX3ByaXZhdGUoMCkKKyAgICB7Cisg
ICAgICAgIGFzc2lnbihkYXRhLCBzaXplKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8aW50IE4+
CisgICAgV2ViRGF0YShjb25zdCBjaGFyICgmZGF0YSlbTl0pIDogbV9wcml2YXRlKDApCisgICAg
eworICAgICAgICBhc3NpZ24oZGF0YSwgTiAtIDEpOworICAgIH0KKworICAgIFdlYkRhdGEoY29u
c3QgV2ViRGF0YSYgZCkgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24oZCk7IH0KKworICAgIFdlYkRh
dGEmIG9wZXJhdG9yPShjb25zdCBXZWJEYXRhJiBkKQorICAgIHsKKyAgICAgICAgYXNzaWduKGQp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHJl
c2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJEYXRhJik7CisgICAg
V0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSk7CisK
KyAgICBXRUJLSVRfQVBJIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBjb25z
dCBjaGFyKiBkYXRhKCkgY29uc3Q7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRl
OyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJEYXRhKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgV2ViRGF0YSYgb3BlcmF0
b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAg
b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSBjb25zdDsK
KyNlbHNlCisgICAgdGVtcGxhdGUgPGNsYXNzIEM+CisgICAgV2ViRGF0YShjb25zdCBDJiBjKSA6
IG1fcHJpdmF0ZSgwKQorICAgIHsKKyAgICAgICAgYXNzaWduKGMuZGF0YSgpLCBjLnNpemUoKSk7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIEM+CisgICAgV2ViRGF0YSYgb3BlcmF0b3I9
KGNvbnN0IEMmIGMpCisgICAgeworICAgICAgICBhc3NpZ24oYy5kYXRhKCksIGMuc2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZv
aWQgYXNzaWduKFdlYkRhdGFQcml2YXRlKik7CisgICAgV2ViRGF0YVByaXZhdGUqIG1fcHJpdmF0
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhYmFzZU9ic2VydmVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRhdGFiYXNlT2JzZXJ2ZXJfaAorI2RlZmluZSBX
ZWJEYXRhYmFzZU9ic2VydmVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJEYXRh
YmFzZTsKKworY2xhc3MgV2ViRGF0YWJhc2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIGRhdGFiYXNlT3BlbmVkKGNvbnN0IFdlYkRhdGFiYXNlJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhYmFzZU1vZGlmaWVkKGNvbnN0IFdlYkRhdGFiYXNlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkYXRhYmFzZUNsb3NlZChjb25zdCBXZWJEYXRhYmFzZSYpID0gMDsKK3Byb3Rl
Y3RlZDoKKyAgICB+V2ViRGF0YWJhc2VPYnNlcnZlcigpIHt9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFT
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3Vy
Y2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YVNvdXJj
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGF0YVNvdXJjZV9o
CisjZGVmaW5lIFdlYkRhdGFTb3VyY2VfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVSTFJlcXVlc3Q7CitjbGFzcyBX
ZWJVUkxSZXNwb25zZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisK
K2NsYXNzIFdlYkRhdGFTb3VyY2UgeworcHVibGljOgorICAgIGNsYXNzIEV4dHJhRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KKyAgICB9OworCisg
ICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luYWwgcmVxdWVzdCB0aGF0IHJlc3VsdGVkIGluIHRoaXMg
ZGF0YXNvdXJjZS4KKyAgICB2aXJ0dWFsIGNvbnN0IFdlYlVSTFJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIHJlcXVlc3QgY29ycmVzcG9u
ZGluZyB0byB0aGlzIGRhdGFzb3VyY2UuICBJdCBtYXkKKyAgICAvLyBpbmNsdWRlIGFkZGl0aW9u
YWwgcmVxdWVzdCBoZWFkZXJzIGFkZGVkIGJ5IFdlYktpdCB0aGF0IHdlcmUgbm90CisgICAgLy8g
cHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgcmVxdWVzdC4gIFRoaXMgcmVxdWVzdCBtYXkgYWxzbyBj
b3JyZXNwb25kCisgICAgLy8gdG8gYSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgYSByZWRpcmVjdCB0
aGF0IHdhcyBmb2xsb3dlZC4KKyAgICB2aXJ0dWFsIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVl
c3QoKSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSByZXNwb25zZSBhc3NvY2lhdGVk
IHdpdGggdGhpcyBkYXRhc291cmNlLgorICAgIHZpcnR1YWwgY29uc3QgV2ViVVJMUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgPSAwOworCisgICAgLy8gV2hlbiB0aGlzIGRhdGFzb3VyY2Ugd2Fz
IGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgV2ViRnJhbWU6OmxvYWREYXRhLAorICAgIC8vIHRoZXJl
IG1heSBiZSBhbiBhc3NvY2lhdGVkIHVucmVhY2hhYmxlVVJMLgorICAgIHZpcnR1YWwgYm9vbCBo
YXNVbnJlYWNoYWJsZVVSTCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlVSTCB1bnJlYWNo
YWJsZVVSTCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgYWxsIHJlZGlyZWN0cyB0aGF0
IG9jY3VycmVkIChib3RoIGNsaWVudCBhbmQgc2VydmVyKSBiZWZvcmUKKyAgICAvLyBhdCBsYXN0
IGNvbW1pdHRpbmcgdGhlIGN1cnJlbnQgcGFnZS4gIFRoaXMgd2lsbCBjb250YWluIG9uZSBlbnRy
eQorICAgIC8vIGZvciBlYWNoIGludGVybWVkaWF0ZSBVUkwsIGFuZCBvbmUgZW50cnkgZm9yIHRo
ZSBsYXN0IFVSTCAoc28gaWYKKyAgICAvLyB0aGVyZSBhcmUgbm8gcmVkaXJlY3RzLCBpdCB3aWxs
IGNvbnRhaW4gZXhhY3RseSB0aGUgY3VycmVudCBVUkwsIGFuZAorICAgIC8vIGlmIHRoZXJlIGlz
IG9uZSByZWRpcmVjdCwgaXQgd2lsbCBjb250YWluIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
CisgICAgLy8gVVJMKS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RDaGFpbihXZWJWZWN0b3I8
V2ViVVJMPiYpIGNvbnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIHRpdGxlIGZvciB0aGUg
Y3VycmVudCBwYWdlLgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhZ2VUaXRsZSgpIGNvbnN0ID0g
MDsKKworICAgIC8vIFRoZSB0eXBlIG9mIG5hdmlnYXRpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIGNy
ZWF0aW9uIG9mIHRoaXMgZGF0YXNvdXJjZS4KKyAgICB2aXJ0dWFsIFdlYk5hdmlnYXRpb25UeXBl
IG5hdmlnYXRpb25UeXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gVGhlIHRpbWUgaW4gc2Vjb25k
cyAoc2luY2UgdGhlIGVwb2NoKSBvZiB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQKKyAgICAvLyB0
aGUgY3JlYXRpb24gb2YgdGhpcyBkYXRhc291cmNlLiAgUmV0dXJucyAwIGlmIHVua25vd24uCisg
ICAgdmlydHVhbCBkb3VibGUgdHJpZ2dlcmluZ0V2ZW50VGltZSgpIGNvbnN0ID0gMDsKKworICAg
IC8vIEV4dHJhIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGF0YXNvdXJjZS4gIElmIG5vbi1u
dWxsLCB0aGUgZXh0cmEKKyAgICAvLyBkYXRhIHBvaW50ZXIgd2lsbCBiZSBkZWxldGVkIHdoZW4g
dGhlIGRhdGFzb3VyY2UgaXMgZGVzdHJveWVkLgorICAgIC8vIFNldHRpbmcgdGhlIGV4dHJhIGRh
dGEgcG9pbnRlciB3aWxsIGNhdXNlIGFueSBleGlzdGluZyBub24tbnVsbAorICAgIC8vIGV4dHJh
IGRhdGEgcG9pbnRlciB0byBiZSBkZWxldGVkLgorICAgIHZpcnR1YWwgRXh0cmFEYXRhKiBleHRy
YURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURh
dGEqKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB+V2ViRGF0YVNvdXJjZSgpIHsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="24352"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42778</attachid>
            <date>2009-11-09 12:24:19 -0800</date>
            <delta_ts>2009-11-09 13:06:53 -0800</delta_ts>
            <desc>Upstreaming WebVector ... WebWorkerClient</desc>
            <filename>apiVW.diff</filename>
            <type>text/plain</type>
            <size>45493</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGZmY2E3OWUuLmZhMTM0OTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDEwMyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAg
IFVwc3RyZWFtaW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJOiBXZWJWZWN0b3IgdG8gV2ViV29y
a2VyQ2xpZW50CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmVjdG9yLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWZWN0b3I6On5XZWJWZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
ZWN0b3I6OldlYlZlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZlY3Rvcjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmVjdG9yOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJWZWN0b3I6OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWZWN0b3I6OmlzRW1wdHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWZWN0b3I6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWZWN0b3I6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWZWN0b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWZWN0b3I6OmluaXRpYWxpemVGcm9tKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmVj
dG9yOjpkZXN0cm95KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6fldlYlZpZXcpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlkQWRkTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnByaW50UGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdDbGllbnQ6OmRpZFN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0NsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6c2hvdWxkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6
OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpzaG91
bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnNob3Vs
ZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6c2hvdWxkQXBw
bHlTdHlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmlzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6aXNTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVu
dDo6c2V0SW5wdXRNZXRob2RFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVu
dDo6ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlk
Q2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlkQ2hh
bmdlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkaWRFeGVjdXRl
Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmRpZEVuZEVkaXRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpoYW5kbGVDdXJyZW50S2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnNwZWxsQ2hlY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjphdXRvQ29ycmVjdFdvcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdDbGllbnQ6OmlzU2hvd2luZ1NwZWxsaW5nVUkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cnVuRmlsZUNob29zZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3Q2xpZW50OjpydW5Nb2RhbEFsZXJ0RGlhbG9nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6cnVuTW9kYWxDb25maXJtRGlhbG9nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6cnVuTW9kYWxQcm9tcHREaWFsb2cpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpydW5Nb2RhbEJlZm9yZVVubG9hZERpYWxvZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnNldFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50OjpzZXRNb3VzZU92ZXJVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Q2xpZW50OjpzZXRLZXlib2FyZEZvY3VzVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6c2V0VG9vbFRpcFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojpz
aG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpzdGFydERy
YWdnaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6YWNjZXB0c0xvYWREcm9w
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmZvY3VzTmV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmZvY3VzUHJldmlvdXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpuYXZpZ2F0ZUJhY2tGb3J3YXJkU29vbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdDbGllbnQ6Omhpc3RvcnlCYWNrTGlzdENvdW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0NsaWVudDo6aGlzdG9yeUZvcndhcmRMaXN0Q291bnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3Q2xpZW50OjpkaWRBZGRIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdDbGllbnQ6OmZvY3VzQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdDbGllbnQ6OmRpZFVwZGF0ZUluc3BlY3RvclNldHRpbmdzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0NsaWVudDo6cXVlcnlBdXRvZmlsbFN1Z2dlc3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cmVtb3ZlQXV0b2ZpbGxTdWdnZXN0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6On5XZWJWaWV3Q2xpZW50KToKKyAgICAgICAg
KiBwdWJsaWMvV2ViV2lkZ2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6
On5XZWJXaWRnZXQpOgorICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXRDbGllbnQuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6ZGlkSW52YWxpZGF0ZVJlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6OmRpZFNjcm9sbFJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6OmRpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViV2lkZ2V0Q2xpZW50OjpkaWRCbHVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xp
ZW50OjpkaWRDaGFuZ2VDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6
OmNsb3NlV2lkZ2V0U29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6c2hv
dyk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6cnVuTW9kYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6OndpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJXaWRnZXRDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aWRnZXRDbGllbnQ6OndpbmRvd1Jlc2l6ZXJSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lk
Z2V0Q2xpZW50Ojpyb290V2luZG93UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENs
aWVudDo6c2NyZWVuSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6fldl
YldpZGdldENsaWVudCk6CisgICAgICAgICogcHVibGljL1dlYldvcmtlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViV29ya2VyOjp+V2ViV29ya2VyKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViV29ya2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnQ6On5XZWJXb3JrZXJDbGllbnQpOgorCisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlh
YXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAgICAgICAgIFVwc3RyZWFtaW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJOiBXZWJOb2RlLmgg
YW5kIGZyaWVuZHMgYXJlIHRoaW4gd3JhcHBlcnMgYXJvdW5kIFdlYkNvcmU6Ok5vZGVzCiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kMWY5OWI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
ZWN0b3IuaApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmVjdG9yX2gKKyNkZWZpbmUgV2Vi
VmVjdG9yX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBzaW1wbGUgdmVjdG9yIGNsYXNzLgorLy8K
Ky8vIFNhbXBsZSB1c2FnZToKKy8vCisvLyAgIHZvaWQgRm9vKFdlYlZlY3RvcjxpbnQ+JiByZXN1
bHQpCisvLyAgIHsKKy8vICAgICAgIFdlYlZlY3RvcjxpbnQ+IGRhdGEoMTApOworLy8gICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLnNpemUoKTsgKytpKQorLy8gICAgICAgICAgIGRh
dGFbaV0gPSAuLi4KKy8vICAgICAgIHJlc3VsdC5zd2FwKGRhdGEpOworLy8gICB9CisvLworLy8g
SXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhc3NpZ24gZnJvbSBvdGhlciB0eXBlcyBvZiByYW5kb20g
YWNjZXNzCisvLyBjb250YWluZXJzOgorLy8KKy8vICAgdm9pZCBGb28oY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBpbnB1dCkKKy8vICAgeworLy8gICAgICAgV2ViVmVjdG9yPFdlYkNT
dHJpbmc+IGNzdHJpbmdzID0gaW5wdXQ7CisvLyAgICAgICAuLi4KKy8vICAgfQorLy8KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV2ViVmVjdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IFQgVmFsdWVUeXBlOworCisgICAgfldlYlZlY3RvcigpCisgICAgeworICAgICAgICBkZXN0cm95
KCk7CisgICAgfQorCisgICAgZXhwbGljaXQgV2ViVmVjdG9yKHNpemVfdCBzaXplID0gMCkKKyAg
ICB7CisgICAgICAgIGluaXRpYWxpemUoc2l6ZSk7CisgICAgfQorCisgICAgV2ViVmVjdG9yKGNv
bnN0IFdlYlZlY3RvcjxUPiYgb3RoZXIpCisgICAgeworICAgICAgICBpbml0aWFsaXplRnJvbShv
dGhlci5tX3B0ciwgb3RoZXIubV9zaXplKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQz4KKyAgICBXZWJWZWN0b3IoY29uc3QgQyYgb3RoZXIpCisgICAgeworICAgICAgICBpbml0
aWFsaXplRnJvbShvdGhlci5zaXplKCkgPyAmb3RoZXJbMF0gOiAwLCBvdGhlci5zaXplKCkpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDPgorICAgIFdlYlZlY3RvcjxUPiYgb3Bl
cmF0b3I9KGNvbnN0IEMmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBXZWJWZWN0b3I8VD4qPigmb3RoZXIpKQorICAgICAgICAgICAgYXNz
aWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDPgorICAgIHZvaWQgYXNzaWduKGNvbnN0IEMmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgYXNzaWduKG90aGVyLnNpemUoKSA/ICZvdGhlclswXSA6IDAsIG90aGVyLnNpemUoKSk7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgICAgdm9pZCBhc3NpZ24oY29u
c3QgVSogdmFsdWVzLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAg
ICAgICAgaW5pdGlhbGl6ZUZyb20odmFsdWVzLCBzaXplKTsKKyAgICB9CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX3NpemU7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0
dXJuIG1fcHRyW2ldOyB9CisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gbV9wdHJbaV07IH0KKworICAgIFQqIGRhdGEoKSB7IHJldHVybiBtX3B0cjsgfQor
ICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorCisgICAgdm9pZCBz
d2FwKFdlYlZlY3RvcjxUPiYgb3RoZXIpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9wdHIs
IG90aGVyLm1fcHRyKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fc2l6ZSwgb3RoZXIubV9zaXplKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplKHNpemVfdCBzaXplKQorICAg
IHsKKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICAgICAgaWYgKCFtX3NpemUpCisgICAgICAg
ICAgICBtX3B0ciA9IDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9wdHIgPSBzdGF0
aWNfY2FzdDxUKj4oOjpvcGVyYXRvciBuZXcoc2l6ZW9mKFQpICogbV9zaXplKSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgICAg
IG5ldyAoJm1fcHRyW2ldKSBUKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KKyAgICB2b2lkIGluaXRpYWxpemVGcm9tKGNvbnN0IFUqIHZhbHVlcywgc2l6
ZV90IHNpemUpCisgICAgeworICAgICAgICBtX3NpemUgPSBzaXplOworICAgICAgICBpZiAoIW1f
c2l6ZSkKKyAgICAgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtX3B0ciA9IHN0YXRpY19jYXN0PFQqPig6Om9wZXJhdG9yIG5ldyhzaXplb2YoVCkgKiBtX3Np
emUpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisg
ICAgICAgICAgICAgICAgbmV3ICgmbV9wdHJbaV0pIFQodmFsdWVzW2ldKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9wdHJbaV0uflQoKTsKKyAgICAg
ICAgOjpvcGVyYXRvciBkZWxldGUobV9wdHIpOworICAgIH0KKworICAgIFQqIG1fcHRyOworICAg
IHNpemVfdCBtX3NpemU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yYWQxMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZpZXdfaAorI2RlZmluZSBXZWJWaWV3
X2gKKworI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7
CitjbGFzcyBXZWJEZXZUb29sc0FnZW50OworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJG
cmFtZTsKK2NsYXNzIFdlYkZyYW1lQ2xpZW50OworY2xhc3MgV2ViTm9kZTsKK2NsYXNzIFdlYlNl
dHRpbmdzOworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBX
ZWJNZWRpYVBsYXllckFjdGlvbjsKK3N0cnVjdCBXZWJQb2ludDsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisKK2NsYXNzIFdlYlZpZXcgOiBwdWJsaWMgV2ViV2lkZ2V0
IHsKK3B1YmxpYzoKKyAgICAvLyBJbml0aWFsaXphdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIENyZWF0ZXMgYSBXZWJW
aWV3IHRoYXQgaXMgTk9UIHlldCBpbml0aWFsaXplZC4gIFlvdSB3aWxsIG5lZWQgdG8KKyAgICAv
LyBjYWxsIGluaXRpYWxpemVNYWluRnJhbWUgdG8gZmluaXNoIHRoZSBpbml0aWFsaXphdGlvbi4g
IEl0IGlzIHZhbGlkCisgICAgLy8gdG8gcGFzcyBhIG51bGwgV2ViVmlld0NsaWVudCBwb2ludGVy
LgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYlZpZXcqIGNyZWF0ZShXZWJWaWV3Q2xpZW50Kik7
CisKKyAgICAvLyBBZnRlciBjcmVhdGluZyBhIFdlYlZpZXcsIHlvdSBzaG91bGQgaW1tZWRpYXRl
bHkgY2FsbCB0aGlzIG1ldGhvZC4KKyAgICAvLyBZb3UgY2FuIG9wdGlvbmFsbHkgbW9kaWZ5IHRo
ZSBzZXR0aW5ncyBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC4KKyAgICAvLyBUaGUgV2ViRnJh
bWVDbGllbnQgd2lsbCByZWNlaXZlIGV2ZW50cyBmb3IgdGhlIG1haW4gZnJhbWUgYW5kIGFueQor
ICAgIC8vIGNoaWxkIGZyYW1lcy4gIEl0IGlzIHZhbGlkIHRvIHBhc3MgYSBudWxsIFdlYkZyYW1l
Q2xpZW50IHBvaW50ZXIuCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVNYWluRnJhbWUoV2Vi
RnJhbWVDbGllbnQqKSA9IDA7CisKKworICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhl
IHJldHVybmVkIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgV2ViVmll
dy4KKyAgICB2aXJ0dWFsIFdlYlNldHRpbmdzKiBzZXR0aW5ncygpID0gMDsKKworICAgIC8vIENv
cnJlc3BvbmRzIHRvIHRoZSBlbmNvZGluZyBvZiB0aGUgbWFpbiBmcmFtZS4gIFNldHRpbmcgdGhl
IHBhZ2UKKyAgICAvLyBlbmNvZGluZyBtYXkgY2F1c2UgdGhlIG1haW4gZnJhbWUgdG8gcmVsb2Fk
LgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhZ2VFbmNvZGluZygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFnZUVuY29kaW5nKGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKworICAg
IC8vIE1ha2VzIHRoZSBXZWJWaWV3IHRyYW5zcGFyZW50LiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91
IHdhbnQgdG8gaGF2ZQorICAgIC8vIHNvbWUgY3VzdG9tIGJhY2tncm91bmQgcmVuZGVyZWQgYmVo
aW5kIGl0LgorICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRJc1RyYW5zcGFyZW50KGJvb2wpID0gMDsKKworICAgIC8vIENvbnRy
b2xzIHdoZXRoZXIgcHJlc3NpbmcgVGFiIGtleSBhZHZhbmNlcyBmb2N1cyB0byBsaW5rcy4KKyAg
ICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFRhYnNUb0xpbmtzKGJvb2wpID0gMDsKKworICAgIC8vIE1ldGhvZCB0aGF0IGNvbnRyb2xz
IHdoZXRoZXIgcHJlc3NpbmcgVGFiIGtleSBjeWNsZXMgdGhyb3VnaCBwYWdlCisgICAgLy8gZWxl
bWVudHMgb3IgaW5zZXJ0cyBhICdcdCcgY2hhciBpbiB0aGUgZm9jdXNlZCB0ZXh0IGFyZWEuCisg
ICAgdmlydHVhbCBib29sIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wpID0g
MDsKKworICAgIC8vIENvbnRyb2xzIHRoZSBXZWJWaWV3J3MgYWN0aXZlIHN0YXRlLCB3aGljaCBt
YXkgYWZmZWN0IHRoZSByZW5kZXJpbmcKKyAgICAvLyBvZiBlbGVtZW50cyBvbiB0aGUgcGFnZSAo
aS5lLiwgdGludGluZyBvZiBpbnB1dCBlbGVtZW50cykuCisgICAgdmlydHVhbCBib29sIGlzQWN0
aXZlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FjdGl2ZShib29sKSA9IDA7
CisKKworICAgIC8vIENsb3NpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUnVucyBiZWZvcmV1bmxvYWQgaGFu
ZGxlcnMgZm9yIHRoZSBjdXJyZW50IHBhZ2UsIHJldHVybmluZyBmYWxzZSBpZgorICAgIC8vIGFu
eSBoYW5kbGVyIHN1cHByZXNzZWQgdW5sb2FkaW5nLgorICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRj
aEJlZm9yZVVubG9hZEV2ZW50KCkgPSAwOworCisgICAgLy8gUnVucyB1bmxvYWQgaGFuZGxlcnMg
Zm9yIHRoZSBjdXJyZW50IHBhZ2UuCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5sb2FkRXZl
bnQoKSA9IDA7CisKKworICAgIC8vIEZyYW1lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCBXZWJGcmFt
ZSogbWFpbkZyYW1lKCkgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgZnJhbWUgaWRlbnRpZmll
ZCBieSB0aGUgZ2l2ZW4gbmFtZS4gIFRoaXMgbWV0aG9kCisgICAgLy8gc3VwcG9ydHMgcHNldWRv
LW5hbWVzIGxpa2UgX3NlbGYsIF90b3AsIGFuZCBfYmxhbmsuICBJdCB0cmF2ZXJzZXMKKyAgICAv
LyB0aGUgZW50aXJlIGZyYW1lIHRyZWUgY29udGFpbmluZyB0aGlzIHRyZWUgbG9va2luZyBmb3Ig
YSBmcmFtZSB0aGF0CisgICAgLy8gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZS4gIElmIHRoZSBvcHRp
b25hbCByZWxhdGl2ZVRvRnJhbWUgcGFyYW1ldGVyCisgICAgLy8gaXMgc3BlY2lmaWVkLCB0aGVu
IHRoZSBzZWFyY2ggYmVnaW5zIHdpdGggdGhlIGdpdmVuIGZyYW1lIGFuZCBpdHMKKyAgICAvLyBj
aGlsZHJlbi4KKyAgICB2aXJ0dWFsIFdlYkZyYW1lKiBmaW5kRnJhbWVCeU5hbWUoCisgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViRnJhbWUqIHJlbGF0aXZlVG9GcmFtZSA9IDApID0g
MDsKKworCisgICAgLy8gRm9jdXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIFdlYkZyYW1lKiBmb2N1
c2VkRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWRGcmFtZShXZWJGcmFt
ZSopID0gMDsKKworICAgIC8vIEZvY3VzIHRoZSBmaXJzdCAobGFzdCBpZiByZXZlcnNlIGlzIHRy
dWUpIGZvY3VzYWJsZSBub2RlLgorICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9v
bCByZXZlcnNlKSA9IDA7CisKKyAgICAvLyBDbGVhcnMgdGhlIGZvY3VzZWQgbm9kZSAoYW5kIHNl
bGVjdGlvbiBpZiBhIHRleHQgZmllbGQgaXMgZm9jdXNlZCkKKyAgICAvLyB0byBlbnN1cmUgdGhh
dCBhIHRleHQgZmllbGQgb24gdGhlIHBhZ2UgaXMgbm90IGVhdGluZyBrZXlzdHJva2VzIHdlCisg
ICAgLy8gc2VuZCBpdC4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb2N1c2VkTm9kZSgpID0gMDsK
KworCisgICAgLy8gWm9vbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBDaGFuZ2UgdGhlIHRleHQgem9vbSBs
ZXZlbC4gIEl0IHdpbGwgbWFrZSB0aGUgem9vbSBsZXZlbCAyMCUgbGFyZ2VyCisgICAgLy8gb3Ig
c21hbGxlci4gIElmIHRleHRPbmx5IGlzIHNldCwgdGhlIHRleHQgc2l6ZSB3aWxsIGJlIGNoYW5n
ZWQuCisgICAgLy8gV2hlbiB1bnNldCwgdGhlIGVudGlyZSBwYWdlJ3Mgem9vbSBmYWN0b3Igd2ls
bCBiZSBjaGFuZ2VkLgorICAgIC8vCisgICAgLy8gWW91IGNhbiBvbmx5IGhhdmUgZWl0aGVyIHRl
eHQgem9vbSBvciBmdWxsIHBhZ2Ugem9vbSBhdCBvbmUgdGltZS4KKyAgICAvLyBDaGFuZ2luZyB0
aGUgbW9kZSB3aWxsIGNoYW5nZSB0aGluZ3MgaW4gd2VpcmQgd2F5cy4gIEdlbmVyYWxseSB0aGUK
KyAgICAvLyBhcHAgc2hvdWxkIG9ubHkgc3VwcG9ydCB0ZXh0IHpvb20gb3IgZnVsbCBwYWdlIHpv
b20sIGFuZCBub3QgYm90aC4KKyAgICAvLworICAgIC8vIHpvb21EZWZhdWx0IHdpbGwgcmVzZXQg
Ym90aCBmdWxsIHBhZ2UgYW5kIHRleHQgem9vbS4KKyAgICB2aXJ0dWFsIHZvaWQgem9vbUluKGJv
b2wgdGV4dE9ubHkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgem9vbU91dChib29sIHRleHRPbmx5
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHpvb21EZWZhdWx0KCkgPSAwOworCisKKyAgICAvLyBN
ZWRpYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworICAgIC8vIFBlcmZvcm1zIHRoZSBzcGVjaWZpZWQgYWN0aW9uIG9uIHRo
ZSBub2RlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybU1l
ZGlhUGxheWVyQWN0aW9uKAorICAgICAgICBjb25zdCBXZWJNZWRpYVBsYXllckFjdGlvbiYsIGNv
bnN0IFdlYlBvaW50JiBsb2NhdGlvbikgPSAwOworCisKKyAgICAvLyBEYXRhIGV4Y2hhbmdlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
ICAgIC8vIENvcHkgdG8gdGhlIGNsaXBib2FyZCB0aGUgaW1hZ2UgbG9jYXRlZCBhdCBhIHBhcnRp
Y3VsYXIgcG9pbnQgaW4gdGhlCisgICAgLy8gV2ViVmlldyAoaWYgdGhlcmUgaXMgc3VjaCBhbiBp
bWFnZSkKKyAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlQXQoY29uc3QgV2ViUG9pbnQmKSA9IDA7
CisKKyAgICAvLyBOb3RpZmllcyB0aGUgV2ViVmlldyB0aGF0IGEgZHJhZyBoYXMgdGVybWluYXRl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoCisgICAgICAgIGNvbnN0IFdl
YlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAorICAgICAg
ICBXZWJEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikgPSAwOworCisgICAgLy8gTm90aWZpZXMgdGhl
IFdlYlZpZXcgdGhhdCBhIGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9uIGlzIGluIHByb2dyZXNzLCB3
aXRoCisgICAgLy8gZHJvcGFibGUgaXRlbXMgb3ZlciB0aGUgdmlldy4KKyAgICB2aXJ0dWFsIHZv
aWQgZHJhZ1NvdXJjZU1vdmVkVG8oCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2lu
dCwgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50KSA9IDA7CisKKyAgICAvLyBOb3RmaWVzIHRo
ZSBXZWJWaWV3IHRoYXQgdGhlIHN5c3RlbSBkcmFnIGFuZCBkcm9wIG9wZXJhdGlvbiBoYXMgZW5k
ZWQuCisgICAgdmlydHVhbCB2b2lkIGRyYWdTb3VyY2VTeXN0ZW1EcmFnRW5kZWQoKSA9IDA7CisK
KyAgICAvLyBDYWxsYmFjayBtZXRob2RzIHdoZW4gYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbiBp
cyB0cnlpbmcgdG8gZHJvcAorICAgIC8vIHNvbWV0aGluZyBvbiB0aGUgV2ViVmlldy4KKyAgICB2
aXJ0dWFsIFdlYkRyYWdPcGVyYXRpb24gZHJhZ1RhcmdldERyYWdFbnRlcigKKyAgICAgICAgY29u
c3QgV2ViRHJhZ0RhdGEmLCBpbnQgaWRlbnRpdHksCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBj
bGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LAorICAgICAgICBXZWJEcmFn
T3BlcmF0aW9uc01hc2sgb3BlcmF0aW9uc0FsbG93ZWQpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkRy
YWdPcGVyYXRpb24gZHJhZ1RhcmdldERyYWdPdmVyKAorICAgICAgICBjb25zdCBXZWJQb2ludCYg
Y2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKKyAgICAgICAgV2ViRHJh
Z09wZXJhdGlvbnNNYXNrIG9wZXJhdGlvbnNBbGxvd2VkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYWdUYXJnZXREcmFnTGVhdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYWdUYXJnZXRE
cm9wKAorICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50
JiBzY3JlZW5Qb2ludCkgPSAwOworCisgICAgdmlydHVhbCBpbnQgZHJhZ0lkZW50aXR5KCkgPSAw
OworCisgICAgLy8gSGVscGVyIG1ldGhvZCBmb3IgZHJhZyBhbmQgZHJvcCB0YXJnZXQgb3BlcmF0
aW9uczogb3ZlcnJpZGUgdGhlCisgICAgLy8gZGVmYXVsdCBkcm9wIGVmZmVjdCB3aXRoIGVpdGhl
ciBhICJjb3B5IiAoYWNjZXB0IHRydWUpIG9yICJub25lIgorICAgIC8vIChhY2NlcHQgZmFsc2Up
IGVmZmVjdC4gIFJldHVybiB0cnVlIG9uIHN1Y2Nlc3MuCisgICAgdmlydHVhbCBib29sIHNldERy
b3BFZmZlY3QoYm9vbCBhY2NlcHQpID0gMDsKKworCisgICAgLy8gRGV2ZWxvcGVyIHRvb2xzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAg
ICAvLyBJbnNwZWN0IGEgcGFydGljdWxhciBwb2ludCBpbiB0aGUgV2ViVmlldy4gICh4ID0gLTEg
fHwgeSA9IC0xKSBpcyBhCisgICAgLy8gc3BlY2lhbCBjYXNlLCBtZWFuaW5nIGluc3BlY3QgdGhl
IGN1cnJlbnQgcGFnZSBhbmQgbm90IGEgc3BlY2lmaWMKKyAgICAvLyBwb2ludC4KKyAgICB2aXJ0
dWFsIHZvaWQgaW5zcGVjdEVsZW1lbnRBdChjb25zdCBXZWJQb2ludCYpID0gMDsKKworICAgIC8v
IFNldHRpbmdzIHVzZWQgYnkgdGhlIGluc3BlY3Rvci4KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBp
bnNwZWN0b3JTZXR0aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVj
dG9yU2V0dGluZ3MoY29uc3QgV2ViU3RyaW5nJikgPSAwOworCisgICAgLy8gVGhlIGVtYmVkZGVy
IG1heSBvcHRpb25hbGx5IGVuZ2FnZSBhIFdlYkRldlRvb2xzQWdlbnQuICBUaGlzIG1heSBvbmx5
CisgICAgLy8gYmUgc2V0IG9uY2UgcGVyIFdlYlZpZXcuCisgICAgdmlydHVhbCBXZWJEZXZUb29s
c0FnZW50KiBkZXZUb29sc0FnZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZUb29s
c0FnZW50KFdlYkRldlRvb2xzQWdlbnQqKSA9IDA7CisKKworICAgIC8vIEFjY2Vzc2liaWxpdHkg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgLy8gUmV0dXJucyB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgdmlldy4K
KyAgICB2aXJ0dWFsIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eU9iamVjdCgp
ID0gMDsKKworCisgICAgLy8gQXV0b2ZpbGwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBOb3RpZmllcyB0aGUgV2Vi
VmlldyB0aGF0IGF1dG9maWxsIHN1Z2dlc3Rpb25zIGFyZSBhdmFpbGFibGUgZm9yIGEgbm9kZS4K
KyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAorICAgICAgICBjb25z
dCBXZWJOb2RlJiwKKyAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIHN1Z2dlc3Rp
b25zLAorICAgICAgICBpbnQgZGVmYXVsdFN1Z2dlc3Rpb25JbmRleCkgPSAwOworCisgICAgLy8g
SGlkZXMgdGhlIGF1dG9maWxsIHBvcHVwIGlmIGFueSBhcmUgc2hvd2luZy4KKyAgICB2aXJ0dWFs
IHZvaWQgaGlkZUF1dG9maWxsUG9wdXAoKSA9IDA7CisKKworICAgIC8vIFZpc2l0ZWQgbGluayBz
dGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgLy8gVGVsbHMgYWxsIFdlYlZpZXcgaW5zdGFuY2VzIHRvIHVwZGF0ZSB0aGUgdmlzaXRl
ZCBsaW5rIHN0YXRlIGZvciB0aGUKKyAgICAvLyBzcGVjaWZpZWQgaGFzaC4KKyAgICBXRUJLSVRf
QVBJIHN0YXRpYyB2b2lkIHVwZGF0ZVZpc2l0ZWRMaW5rU3RhdGUodW5zaWduZWQgbG9uZyBsb25n
IGhhc2gpOworCisgICAgLy8gVGVsbHMgYWxsIFdlYlZpZXcgaW5zdGFuY2VzIHRvIHVwZGF0ZSB0
aGUgdmlzaXRlZCBzdGF0ZSBmb3IgYWxsCisgICAgLy8gdGhlaXIgbGlua3MuCisgICAgV0VCS0lU
X0FQSSBzdGF0aWMgdm9pZCByZXNldFZpc2l0ZWRMaW5rU3RhdGUoKTsKKworCitwcm90ZWN0ZWQ6
CisgICAgfldlYlZpZXcoKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yZTJmOTUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTAsMCArMSwyNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZp
ZXdDbGllbnRfaAorI2RlZmluZSBXZWJWaWV3Q2xpZW50X2gKKworI2luY2x1ZGUgIldlYkRyYWdP
cGVyYXRpb24uaCIKKyNpbmNsdWRlICJXZWJFZGl0aW5nQWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVGV4dEFmZmluaXR5LmgiCisjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYldpZGdldENsaWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNzIFdlYkRyYWdEYXRhOworY2xhc3MgV2ViRmls
ZUNob29zZXJDb21wbGV0aW9uOworY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJOb2RlOworY2xh
c3MgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOworY2xhc3MgV2ViUmFuZ2U7CitjbGFzcyBXZWJV
Ukw7CitjbGFzcyBXZWJWaWV3OworY2xhc3MgV2ViV2lkZ2V0Oworc3RydWN0IFdlYkNvbnNvbGVN
ZXNzYWdlOworc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsKK3N0cnVjdCBXZWJQb2ludDsKK3N0
cnVjdCBXZWJQb3B1cE1lbnVJbmZvOworCisvLyBTaW5jZSBhIFdlYlZpZXcgaXMgYSBXZWJXaWRn
ZXQsIGEgV2ViVmlld0NsaWVudCBpcyBhIFdlYldpZGdldENsaWVudC4KKy8vIFZpcnR1YWwgaW5o
ZXJpdGFuY2UgYWxsb3dzIGFuIGltcGxlbWVudGF0aW9uIG9mIFdlYldpZGdldENsaWVudCB0byBi
ZQorLy8gZWFzaWx5IHJldXNlZCBhcyBwYXJ0IG9mIGFuIGltcGxlbWVudGF0aW9uIG9mIFdlYlZp
ZXdDbGllbnQuCitjbGFzcyBXZWJWaWV3Q2xpZW50IDogdmlydHVhbCBwdWJsaWMgV2ViV2lkZ2V0
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBGYWN0b3J5IG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIENyZWF0ZSBh
IG5ldyByZWxhdGVkIFdlYlZpZXcuCisgICAgdmlydHVhbCBXZWJWaWV3KiBjcmVhdGVWaWV3KFdl
YkZyYW1lKiBjcmVhdG9yKSB7IHJldHVybiAwOyB9CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgV2Vi
UG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50IGlzCisgICAgLy8gcmVz
cG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCisg
ICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShib29sIGFjdGl2YXRhYmxlKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShjb25z
dCBXZWJQb3B1cE1lbnVJbmZvJikgeyByZXR1cm4gMDsgfQorCisKKyAgICAvLyBNaXNjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIC8vIEEgbmV3IG1lc3NhZ2Ugd2FzIGFkZGVkIHRvIHRoZSBjb25zb2xlLgorICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRNZXNzYWdlVG9Db25zb2xlKAorICAgICAgICBjb25zdCBXZWJD
b25zb2xlTWVzc2FnZSYsIGNvbnN0IFdlYlN0cmluZyYgc291cmNlTmFtZSwgdW5zaWduZWQgc291
cmNlTGluZSkgeyB9CisKKyAgICAvLyBDYWxsZWQgd2hlbiBzY3JpcHQgaW4gdGhlIHBhZ2UgY2Fs
bHMgd2luZG93LnByaW50KCkuICBJZiBmcmFtZSBpcworICAgIC8vIG5vbi1udWxsLCB0aGVuIGl0
IHNlbGVjdHMgYSBwYXJ0aWN1bGFyIGZyYW1lLCBpbmNsdWRpbmcgaXRzCisgICAgLy8gY2hpbGRy
ZW4sIHRvIHByaW50LiAgT3RoZXJ3aXNlLCB0aGUgbWFpbiBmcmFtZSBhbmQgaXRzIGNoaWxkcmVu
CisgICAgLy8gc2hvdWxkIGJlIHByaW50ZWQuCisgICAgdmlydHVhbCB2b2lkIHByaW50UGFnZShX
ZWJGcmFtZSopIHsgfQorCisgICAgLy8gQ2FsbGVkIHRvIHJldHJpZXZlIHRoZSBwcm92aWRlciBv
ZiBkZXNrdG9wIG5vdGlmaWNhdGlvbnMuCisgICAgdmlydHVhbCBXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIHsgcmV0dXJuIDA7IH0KKworCisgICAgLy8g
TmF2aWdhdGlvbmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyAgICAvLyBUaGVzZSBub3RpZmljYXRpb25zIGJyYWNrZXQgYW55IGxv
YWRpbmcgdGhhdCBvY2N1cnMgaW4gdGhlIFdlYlZpZXcuCisgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0TG9hZGluZygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9hZGluZygpIHsgfQor
CisKKyAgICAvLyBFZGl0aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFRoZXNlIG1ldGhvZHMgYWxsb3cgdGhl
IGNsaWVudCB0byBpbnRlcmNlcHQgYW5kIG92ZXJydWxlIGVkaXRpbmcKKyAgICAvLyBvcGVyYXRp
b25zLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoY29uc3QgV2ViUmFuZ2Um
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoY29u
c3QgV2ViUmFuZ2UmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZElu
c2VydE5vZGUoCisgICAgICAgIGNvbnN0IFdlYk5vZGUmLCBjb25zdCBXZWJSYW5nZSYsIFdlYkVk
aXRpbmdBY3Rpb24pIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5z
ZXJ0VGV4dCgKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViUmFuZ2UmLCBXZWJF
ZGl0aW5nQWN0aW9uKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoCisgICAgICAgIGNvbnN0IFdlYlJhbmdlJiBmcm9tLCBjb25zdCBX
ZWJSYW5nZSYgdG8sIFdlYlRleHRBZmZpbml0eSwKKyAgICAgICAgYm9vbCBzdGlsbFNlbGVjdGlu
ZykgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShj
b25zdCBXZWJSYW5nZSYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QXBwbHlTdHlsZShjb25zdCBXZWJTdHJpbmcmIHN0eWxlLCBjb25zdCBXZWJSYW5nZSYpIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRCZWdpbkVkaXRpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
KGJvb2wgaXNTZWxlY3Rpb25FbXB0eSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNv
bnRlbnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVDb21tYW5kKGNvbnN0IFdl
YlN0cmluZyYgY29tbWFuZE5hbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgeyB9CisKKyAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gV2Vi
VmlldydzIGhhbmRsZUlucHV0RXZlbnQoKQorICAgIC8vIHdoZW4gdGhlIGRlZmF1bHQgYWN0aW9u
IGZvciB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBub3QKKyAgICAvLyBzdXBwcmVzc2Vk
IGJ5IHRoZSBwYWdlLCB0byBnaXZlIHRoZSBlbWJlZGRlciBhIGNoYW5jZSB0byBoYW5kbGUKKyAg
ICAvLyB0aGUga2V5Ym9hcmQgZXZlbnQgc3BlY2lhbGx5LgorICAgIC8vCisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBrZXlib2FyZCBldmVudCB3YXMgaGFuZGxlZCBieSB0aGUgZW1iZWRkZXIs
CisgICAgLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbiBzaG91bGQgYmUgc3Vw
cHJlc3NlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKSB7
IHJldHVybiBmYWxzZTsgfQorCisKKyAgICAvLyBTcGVsbGNoZWNrZXIgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFRoZSBj
bGllbnQgc2hvdWxkIHBlcmZvcm0gc3BlbGwtY2hlY2tpbmcgb24gdGhlIGdpdmVuIHRleHQuICBJ
ZiB0aGUKKyAgICAvLyB0ZXh0IGNvbnRhaW5zIGEgbWlzc3BlbGxlZCB3b3JkLCB0aGVuIHVwb24g
cmV0dXJuIG1pc3NwZWxsZWRPZmZzZXQKKyAgICAvLyB3aWxsIHBvaW50IHRvIHRoZSBzdGFydCBv
ZiB0aGUgbWlzc3BlbGxlZCB3b3JkLCBhbmQgbWlzc3BlbGxlZExlbmd0aAorICAgIC8vIHdpbGwg
aW5kaWNhdGVzIGl0cyBsZW5ndGguICBPdGhlcndpc2UsIGlmIHRoZXJlIHdhcyBub3QgYSBzcGVs
bGluZworICAgIC8vIGVycm9yLCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRMZW5ndGggaXMg
MC4KKyAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjaygKKyAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExlbmd0aCkgeyB9
CisKKyAgICAvLyBDb21wdXRlcyBhbiBhdXRvLWNvcnJlY3RlZCByZXBsYWNlbWVudCBmb3IgYSBt
aXNzcGVsbGVkIHdvcmQuICBJZiBubworICAgIC8vIHJlcGxhY2VtZW50IGlzIGZvdW5kLCB0aGVu
IGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBhdXRv
Q29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkgeyByZXR1cm4gV2Vi
U3RyaW5nKCk7IH0KKworICAgIC8vIFNob3cgb3IgaGlkZSB0aGUgc3BlbGxpbmcgVUkuCisgICAg
dmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdykgeyB9CisKKyAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIHNwZWxsaW5nIFVJIGlzIHNob3dpbmcuCisgICAgdmlydHVhbCBib29s
IGlzU2hvd2luZ1NwZWxsaW5nVUkoKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gVXBkYXRl
IHRoZSBzcGVsbGluZyBVSSB3aXRoIHRoZSBnaXZlbiB3b3JkLgorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdlYlN0cmluZyYgd29yZCkg
eyB9CisKKworICAgIC8vIERpYWxvZ3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhpcyBtZXRob2QgcmV0dXJu
cyBpbW1lZGlhdGVseSBhZnRlciBzaG93aW5nIHRoZSBkaWFsb2cuIFdoZW4gdGhlCisgICAgLy8g
ZGlhbG9nIGlzIGNsb3NlZCwgaXQgc2hvdWxkIGNhbGwgdGhlIFdlYkZpbGVDaG9vc2VyQ29tcGxl
dGlvbiB0bworICAgIC8vIHBhc3MgdGhlIHJlc3VsdHMgb2YgdGhlIGRpYWxvZy4gUmV0dXJucyBm
YWxzZSBpZgorICAgIC8vIFdlYkZpbGVDaG9vc2VDb21wbGV0aW9uIHdpbGwgbmV2ZXIgYmUgY2Fs
bGVkLgorICAgIHZpcnR1YWwgYm9vbCBydW5GaWxlQ2hvb3NlcigKKyAgICAgICAgYm9vbCBtdWx0
aVNlbGVjdCwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBpbml0aWFsVmFsdWUsIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICAvLyBEaXNwbGF5cyBhIG1vZGFsIGFsZXJ0IGRpYWxvZyBjb250YWluaW5nIHRo
ZSBnaXZlbiBtZXNzYWdlLiAgUmV0dXJucworICAgIC8vIG9uY2UgdGhlIHVzZXIgZGlzbWlzc2Vz
IHRoZSBkaWFsb2cuCisgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coCisgICAg
ICAgIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSB7IH0KKworICAgIC8vIERp
c3BsYXlzIGEgbW9kYWwgY29uZmlybWF0aW9uIGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdl
IGFzCisgICAgLy8gZGVzY3JpcHRpb24gYW5kIE9LL0NhbmNlbCBjaG9pY2VzLiAgUmV0dXJucyB0
cnVlIGlmIHRoZSB1c2VyIHNlbGVjdHMKKyAgICAvLyAnT0snIG9yIGZhbHNlIG90aGVyd2lzZS4K
KyAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxDb25maXJtRGlhbG9nKAorICAgICAgICBXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8v
IERpc3BsYXlzIGEgbW9kYWwgaW5wdXQgZGlhbG9nIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UgYXMg
ZGVzY3JpcHRpb24KKyAgICAvLyBhbmQgT0svQ2FuY2VsIGNob2ljZXMuICBUaGUgaW5wdXQgZmll
bGQgaXMgcHJlLWZpbGxlZCB3aXRoCisgICAgLy8gZGVmYXVsdFZhbHVlLiAgUmV0dXJucyB0cnVl
IGlmIHRoZSB1c2VyIHNlbGVjdHMgJ09LJyBvciBmYWxzZQorICAgIC8vIG90aGVyd2lzZS4gIFVw
b24gcmV0dXJuaW5nIHRydWUsIGFjdHVhbFZhbHVlIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZgorICAg
IC8vIHRoZSBpbnB1dCBmaWVsZC4KKyAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxQcm9tcHREaWFs
b2coCisgICAgICAgIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBX
ZWJTdHJpbmcmIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgV2ViU3RyaW5nKiBhY3R1YWxWYWx1ZSkg
eyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIERpc3BsYXlzIGEgbW9kYWwgY29uZmlybWF0aW9u
IGRpYWxvZyBjb250YWluaW5nIHRoZSBnaXZlbiBtZXNzYWdlIGFzCisgICAgLy8gZGVzY3JpcHRp
b24gYW5kIE9LL0NhbmNlbCBjaG9pY2VzLCB3aGVyZSAnT0snIG1lYW5zIHRoYXQgaXQgaXMgb2th
eQorICAgIC8vIHRvIHByb2NlZWQgd2l0aCBjbG9zaW5nIHRoZSB2aWV3LiAgUmV0dXJucyB0cnVl
IGlmIHRoZSB1c2VyIHNlbGVjdHMKKyAgICAvLyAnT0snIG9yIGZhbHNlIG90aGVyd2lzZS4KKyAg
ICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxCZWZvcmVVbmxvYWREaWFsb2coCisgICAgICAgIFdlYkZy
YW1lKiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiB0cnVlOyB9CisKKworICAg
IC8vIFVJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQ2FsbGVkIHdoZW4gc2NyaXB0IG1vZGlmaWVzIHdp
bmRvdy5zdGF0dXMKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBXZWJTdHJp
bmcmKSB7IH0KKworICAgIC8vIENhbGxlZCB3aGVuIGhvdmVyaW5nIG92ZXIgYW4gYW5jaG9yIHdp
dGggdGhlIGdpdmVuIFVSTC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW91c2VPdmVyVVJMKGNvbnN0
IFdlYlVSTCYpIHsgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4ga2V5Ym9hcmQgZm9jdXMgc3dpdGNo
ZXMgdG8gYW4gYW5jaG9yIHdpdGggdGhlIGdpdmVuIFVSTC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
S2V5Ym9hcmRGb2N1c1VSTChjb25zdCBXZWJVUkwmKSB7IH0KKworICAgIC8vIENhbGxlZCB3aGVu
IGEgdG9vbHRpcCBzaG91bGQgYmUgc2hvd24gYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9u
LgorICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sVGlwVGV4dChjb25zdCBXZWJTdHJpbmcmLCBXZWJU
ZXh0RGlyZWN0aW9uIGhpbnQpIHsgfQorCisgICAgLy8gU2hvd3MgYSBjb250ZXh0IG1lbnUgd2l0
aCBjb21tYW5kcyByZWxldmFudCB0byBhIHNwZWNpZmljIGVsZW1lbnQgb24KKyAgICAvLyB0aGUg
Z2l2ZW4gZnJhbWUuIEFkZGl0aW9uYWwgY29udGV4dCBkYXRhIGlzIHN1cHBsaWVkLgorICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViRnJhbWUqLCBjb25zdCBXZWJDb250ZXh0TWVu
dURhdGEmKSB7IH0KKworICAgIC8vIENhbGxlZCB3aGVuIGEgZHJhZy1uLWRyb3Agb3BlcmF0aW9u
IHNob3VsZCBiZWdpbi4KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnZ2luZygKKyAgICAgICAg
Y29uc3QgV2ViUG9pbnQmIGZyb20sIGNvbnN0IFdlYkRyYWdEYXRhJiwgV2ViRHJhZ09wZXJhdGlv
bnNNYXNrKSB7IH0KKworICAgIC8vIENhbGxlZCB0byBkZXRlcm1pbmUgaWYgZHJhZy1uLWRyb3Ag
b3BlcmF0aW9ucyBtYXkgaW5pdGlhdGUgYSBwYWdlCisgICAgLy8gbmF2aWdhdGlvbi4KKyAgICB2
aXJ0dWFsIGJvb2wgYWNjZXB0c0xvYWREcm9wcygpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8v
IFRha2UgZm9jdXMgYXdheSBmcm9tIHRoZSBXZWJWaWV3IGJ5IGZvY3VzaW5nIGFuIGFkamFjZW50
IFVJIGVsZW1lbnQKKyAgICAvLyBpbiB0aGUgY29udGFpbmluZyB3aW5kb3cuCisgICAgdmlydHVh
bCB2b2lkIGZvY3VzTmV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb2N1c1ByZXZpb3VzKCkg
eyB9CisKKworICAgIC8vIFNlc3Npb24gaGlzdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGVsbHMgdGhlIGVtYmVkZGVy
IHRvIG5hdmlnYXRlIGJhY2sgb3IgZm9yd2FyZCBpbiBzZXNzaW9uIGhpc3RvcnkgYnkKKyAgICAv
LyB0aGUgZ2l2ZW4gb2Zmc2V0IChyZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiBz
ZXNzaW9uCisgICAgLy8gaGlzdG9yeSkuCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRlQmFja0Zv
cndhcmRTb29uKGludCBvZmZzZXQpIHsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGhpc3RvcnkgaXRlbXMgYmVmb3JlL2FmdGVyIHRoZSBjdXJyZW50CisgICAgLy8gaGlzdG9yeSBp
dGVtLgorICAgIHZpcnR1YWwgaW50IGhpc3RvcnlCYWNrTGlzdENvdW50KCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgaW50IGhpc3RvcnlGb3J3YXJkTGlzdENvdW50KCkgeyByZXR1cm4gMDsg
fQorCisgICAgLy8gQ2FsbGVkIHRvIG5vdGlmeSB0aGUgZW1iZWRkZXIgd2hlbiBhIG5ldyBoaXN0
b3J5IGl0ZW0gaXMgYWRkZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhpc3RvcnlJdGVtKCkg
eyB9CisKKworICAgIC8vIEFjY2Vzc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gTm90aWZpZXMgZW1iZWRkZXIg
dGhhdCB0aGUgZm9jdXMgaGFzIGNoYW5nZWQgdG8gdGhlIGdpdmVuCisgICAgLy8gYWNjZXNzaWJp
bGl0eSBvYmplY3QuCisgICAgdmlydHVhbCB2b2lkIGZvY3VzQWNjZXNzaWJpbGl0eU9iamVjdChj
b25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JikgeyB9CisKKworICAgIC8vIERldmVsb3BlciB0
b29scyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisgICAgLy8gQ2FsbGVkIHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIGluc3BlY3Rv
cidzIHNldHRpbmdzIHdlcmUKKyAgICAvLyBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgc2F2ZWQuICBT
ZWUgV2ViVmlldzo6aW5zcGVjdG9yU2V0dGluZ3MuCisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0
ZUluc3BlY3RvclNldHRpbmdzKCkgeyB9CisKKworICAgIC8vIEF1dG9maWxsIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAg
Ly8gUXVlcmllcyB0aGUgYnJvd3NlciBmb3Igc3VnZ2VzdGlvbnMgdG8gYmUgc2hvd24gZm9yIHRo
ZSBmb3JtIHRleHQKKyAgICAvLyBmaWVsZCBuYW1lZCB8bmFtZXwuICB8dmFsdWV8IGlzIHRoZSB0
ZXh0IGVudGVyZWQgYnkgdGhlIHVzZXIgc28KKyAgICAvLyBmYXIgYW5kIHRoZSBXZWJOb2RlIGNv
cnJlc3BvbmRzIHRvIHRoZSBpbnB1dCBmaWVsZC4KKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlBdXRv
ZmlsbFN1Z2dlc3Rpb25zKGNvbnN0IFdlYk5vZGUmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkgeyB9CisK
KyAgICAvLyBJbnN0cnVjdHMgdGhlIGJyb3dzZXIgdG8gcmVtb3ZlIHRoZSBhdXRvZmlsbCBlbnRy
eSBzcGVjaWZpZWQgZnJvbQorICAgIC8vIGl0cyBEQi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
QXV0b2ZpbGxTdWdnZXN0aW9ucyhjb25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkgeyB9
CisKK3Byb3RlY3RlZDoKKyAgICB+V2ViVmlld0NsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmZWVmYwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKQEAgLTAsMCArMSw5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViV2lkZ2V0X2gKKyNkZWZpbmUgV2ViV2lkZ2V0X2gKKworI2luY2x1ZGUgIldlYkNhbnZh
cy5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0aW9uQ29t
bWFuZC5oIgorI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYklucHV0RXZlbnQ7CitjbGFzcyBXZWJTdHJpbmc7CitzdHJ1Y3QgV2Vi
UmVjdDsKK3N0cnVjdCBXZWJTaXplOworCitjbGFzcyBXZWJXaWRnZXQgeworcHVibGljOgorICAg
IC8vIFRoaXMgbWV0aG9kIGNsb3NlcyBhbmQgZGVsZXRlcyB0aGUgV2ViV2lkZ2V0LgorICAgIHZp
cnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgc2l6
ZSBvZiB0aGUgV2ViV2lkZ2V0LgorICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCkgPSAwOworCisg
ICAgLy8gQ2FsbGVkIHRvIHJlc2l6ZSB0aGUgV2ViV2lkZ2V0LgorICAgIHZpcnR1YWwgdm9pZCBy
ZXNpemUoY29uc3QgV2ViU2l6ZSYpID0gMDsKKworICAgIC8vIENhbGxlZCB0byBsYXlvdXQgdGhl
IFdlYldpZGdldC4gIFRoaXMgTVVTVCBiZSBjYWxsZWQgYmVmb3JlIFBhaW50LAorICAgIC8vIGFu
ZCBpdCBtYXkgcmVzdWx0IGluIGNhbGxzIHRvIFdlYldpZGdldENsaWVudDo6ZGlkSW52YWxpZGF0
ZVJlY3QuCisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0gMDsKKworICAgIC8vIENhbGxlZCB0
byBwYWludCB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBvZiB0aGUgV2ViV2lkZ2V0IG9udG8gdGhlIGdp
dmVuCisgICAgLy8gY2FudmFzLiAgWW91IE1VU1QgY2FsbCBMYXlvdXQgYmVmb3JlIGNhbGxpbmcg
dGhpcyBtZXRob2QuICBJdCBpcworICAgIC8vIG9rYXkgdG8gY2FsbCBwYWludCBtdWx0aXBsZSB0
aW1lcyBvbmNlIGxheW91dCBoYXMgYmVlbiBjYWxsZWQsCisgICAgLy8gYXNzdW1pbmcgbm8gb3Ro
ZXIgY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgV2ViV2lkZ2V0IChlLmcuLCBvbmNlCisgICAgLy8g
ZXZlbnRzIGFyZSBwcm9jZXNzZWQsIGl0IHNob3VsZCBiZSBhc3N1bWVkIHRoYXQgYW5vdGhlciBj
YWxsIHRvCisgICAgLy8gbGF5b3V0IGlzIHdhcnJhbnRlZCBiZWZvcmUgcGFpbnRpbmcgYWdhaW4p
LgorICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JikgPSAw
OworCisgICAgLy8gQ2FsbGVkIHRvIGluZm9ybSB0aGUgV2ViV2lkZ2V0IG9mIGFuIGlucHV0IGV2
ZW50LiAgUmV0dXJucyB0cnVlIGlmCisgICAgLy8gdGhlIGV2ZW50IGhhcyBiZWVuIHByb2Nlc3Nl
ZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNv
bnN0IFdlYklucHV0RXZlbnQmKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgdG8gaW5mb3JtIHRoZSBX
ZWJXaWRnZXQgdGhhdCBtb3VzZSBjYXB0dXJlIHdhcyBsb3N0LgorICAgIHZpcnR1YWwgdm9pZCBt
b3VzZUNhcHR1cmVMb3N0KCkgPSAwOworCisgICAgLy8gQ2FsbGVkIHRvIGluZm9ybSB0aGUgV2Vi
V2lkZ2V0IHRoYXQgaXQgaGFzIGdhaW5lZCBvciBsb3N0IGtleWJvYXJkIGZvY3VzLgorICAgIHZp
cnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgdG8gaW5mb3Jt
IHRoZSBXZWJXaWRnZXQgb2YgYSBjb21wb3NpdGlvbiBldmVudC4KKyAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlQ29tcG9zaXRpb25FdmVudChXZWJDb21wb3NpdGlvbkNvbW1hbmQgY29tbWFuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3Vyc29yUG9zaXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldFN0YXJ0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRFbmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiB0ZXh0KSA9IDA7CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoaXMgV2ViV2lk
Z2V0IHJlcXVpcmVkIGJ5IElNRSBBUElzLiAgVXBvbgorICAgIC8vIHN1Y2Nlc3MgZW5hYmxlZCBh
bmQgY2FyZXRCb3VuZHMgYXJlIHNldC4KKyAgICB2aXJ0dWFsIGJvb2wgcXVlcnlDb21wb3NpdGlv
blN0YXR1cyhib29sKiBlbmFibGVkLCBXZWJSZWN0KiBjYXJldEJvdW5kcykgPSAwOworCisgICAg
Ly8gQ2hhbmdlcyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHNlbGVjdGVkIGlucHV0IG5vZGUu
CisgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERpcmVjdGlvbikgPSAw
OworCitwcm90ZWN0ZWQ6CisgICAgfldlYldpZGdldCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXaWRnZXRDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZkOWViYQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViV2lkZ2V0Q2xpZW50X2gKKyNkZWZpbmUgV2ViV2lkZ2V0Q2xp
ZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Q
b2xpY3kuaCIKKyNpbmNsdWRlICJXZWJSZWN0LmgiCisjaW5jbHVkZSAiV2ViU2NyZWVuSW5mby5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV2lkZ2V0Oworc3RydWN0IFdlYkN1
cnNvckluZm87CisKK2NsYXNzIFdlYldpZGdldENsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ2Fs
bGVkIHdoZW4gYSByZWdpb24gb2YgdGhlIFdlYldpZGdldCBuZWVkcyB0byBiZSByZS1wYWludGVk
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JikgeyB9
CisKKyAgICAvLyBDYWxsZWQgd2hlbiBhIHJlZ2lvbiBvZiB0aGUgV2ViV2lkZ2V0LCBnaXZlbiBi
eSBjbGlwUmVjdCwgc2hvdWxkIGJlCisgICAgLy8gc2Nyb2xsZWQgYnkgdGhlIHNwZWNpZmllZCBk
eCBhbmQgZHkgYW1vdW50cy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsUmVjdChpbnQgZHgs
IGludCBkeSwgY29uc3QgV2ViUmVjdCYgY2xpcFJlY3QpIHsgfQorCisgICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIHdpZGdldCBhY3F1aXJlcyBvciBsb3NlcyBmb2N1cywgcmVzcGVjdGl2ZWx5LgorICAg
IHZpcnR1YWwgdm9pZCBkaWRGb2N1cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRCbHVyKCkg
eyB9CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgY3Vyc29yIGZvciB0aGUgd2lkZ2V0IGNoYW5n
ZXMuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZv
JikgeyB9CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgd2lkZ2V0IHNob3VsZCBiZSBjbG9zZWQu
ICBXZWJXaWRnZXQ6OmNsb3NlKCkgc2hvdWxkCisgICAgLy8gYmUgY2FsbGVkIGFzeW5jaHJvbm91
c2x5IGFzIGEgcmVzdWx0IG9mIHRoaXMgbm90aWZpY2F0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVdpZGdldFNvb24oKSB7IH0KKworICAgIC8vIENhbGxlZCB0byBzaG93IHRoZSB3aWRnZXQg
YWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBwb2xpY3kuCisgICAgdmlydHVhbCB2b2lkIHNob3coV2Vi
TmF2aWdhdGlvblBvbGljeSkgeyB9CisKKyAgICAvLyBDYWxsZWQgdG8gYmxvY2sgZXhlY3V0aW9u
IG9mIHRoZSBjdXJyZW50IHRocmVhZCB1bnRpbCB0aGUgd2lkZ2V0IGlzCisgICAgLy8gY2xvc2Vk
LgorICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpIHsgfQorCisgICAgLy8gQ2FsbGVkIHRvIGdl
dC9zZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB3aWRnZXQgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLgor
ICAgIHZpcnR1YWwgV2ViUmVjdCB3aW5kb3dSZWN0KCkgeyByZXR1cm4gV2ViUmVjdCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViUmVjdCYpIHsgfQorCisgICAg
Ly8gQ2FsbGVkIHRvIGdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHJlc2l6ZXIgcmVjdCBpbiB3aW5k
b3cgY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCBXZWJSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkg
eyByZXR1cm4gV2ViUmVjdCgpOyB9CisKKyAgICAvLyBDYWxsZWQgdG8gZ2V0IHRoZSBwb3NpdGlv
biBvZiB0aGUgcm9vdCB3aW5kb3cgY29udGFpbmluZyB0aGUgd2lkZ2V0CisgICAgLy8gaW4gc2Ny
ZWVuIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgV2ViUmVjdCByb290V2luZG93UmVjdCgpIHsg
cmV0dXJuIFdlYlJlY3QoKTsgfQorCisgICAgLy8gQ2FsbGVkIHRvIHF1ZXJ5IGluZm9ybWF0aW9u
IGFib3V0IHRoZSBzY3JlZW4gd2hlcmUgdGhpcyB3aWRnZXQgaXMKKyAgICAvLyBkaXNwbGF5ZWQu
CisgICAgdmlydHVhbCBXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKSB7IHJldHVybiBXZWJTY3Jl
ZW5JbmZvKCk7IH0KKworcHJvdGVjdGVkOgorICAgIH5XZWJXaWRnZXRDbGllbnQoKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldv
cmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOTdiY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlci5oCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYldvcmtlcl9oCisjZGVmaW5lIFdlYldvcmtlcl9oCisKKyNpbmNs
dWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYldvcmtlckNsaWVudDsKKwor
Ly8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQg
Zm9yIGEgd29ya2VyLgorY2xhc3MgV2ViV29ya2VyIHsKK3B1YmxpYzoKKyAgICAvLyBJbnN0YW50
aWF0ZXMgYSBidWlsdC1pbiBXZWJXb3JrZXIuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViV29y
a2VyKiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJXb3JrZXIo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYg
c2NyaXB0VVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiB1c2VyQWdlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGVybWlu
YXRlV29ya2VyQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYsCisgICAgICAgIGNvbnN0IFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJP
YmplY3REZXN0cm95ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaWVudERlc3Ryb3llZCgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV29ya2VyQ2xpZW50LmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmViMmU2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldvcmtlckNsaWVudC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYldvcmtlckNsaWVu
dF9oCisjZGVmaW5lIFdlYldvcmtlckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb25Xb3Jr
ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKK2NsYXNzIFdl
YlN0cmluZzsKK2NsYXNzIFdlYldvcmtlcjsKKworLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJh
Y2sgdG8gdGhlIGluLXBhZ2Ugc2NyaXB0IG9iamVjdCBmb3IgYSB3b3JrZXIuCisvLyBBbGwgZnVu
Y3Rpb25zIGFyZSBleHBlY3RlZCB0byBiZSBjYWxsZWQgYmFjayBvbiB0aGUgdGhyZWFkIHRoYXQg
Y3JlYXRlZAorLy8gdGhlIFdvcmtlciBvYmplY3QsIHVubGVzcyBub3RlZC4KK2NsYXNzIFdlYldv
cmtlckNsaWVudCA6IHB1YmxpYyBXZWJDb21tb25Xb3JrZXJDbGllbnQgeworcHVibGljOgorICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KAorICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmLAorICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9v
bCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICB+V2ViV29ya2VyQ2xpZW50KCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42780</attachid>
            <date>2009-11-09 12:30:02 -0800</date>
            <delta_ts>2009-11-09 13:14:25 -0800</delta_ts>
            <desc>WebURL and friends</desc>
            <filename>apiURL.diff</filename>
            <type>text/plain</type>
            <size>25195</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGZhMTM0OTAuLjhiN2YyMmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDQxIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
VXBzdHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlVSTCBhbmQgZnJpZW5kcy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQK
KworICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTDo6fldlYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6V2ViVVJMKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkw6
OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6c3BlYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTDo6cGFyc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMOjppc1ZhbGlkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMOjppc0VtcHR5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMOjppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkw6Om9wZXJhdG9yIEdVUkwpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJVUkxFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMRXJyb3I6OldlYlVSTEVycm9yKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMTG9hZGVy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkZXI6On5XZWJVUkxMb2FkZXIp
OgorICAgICAgICAqIHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlVSTExvYWRlckNsaWVudDo6fldlYlVSTExvYWRlckNsaWVudCk6CisgICAg
ICAgICogcHVibGljL1dlYlVSTFJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFJlcXVlc3Q6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3Q6On5XZWJVUkxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVxdWVzdDo6V2ViVVJMUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgICog
cHVibGljL1dlYlVSTFJlc3BvbnNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9u
c2U6OldlYlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6Om9w
ZXJhdG9yPSk6CisKKzIwMDktMTEtMDkgIFlhYXIgU2Nobml0bWFuICA8eWFhckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgVXBz
dHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlZlY3RvciB0byBXZWJXb3JrZXJD
bGllbnQKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjgzOTQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjc4YTE2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVSTC5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVUkxfaAorI2RlZmluZSBXZWJV
UkxfaAorCisjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMv
dXJsX3BhcnNlLmg+CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgS1VSTDsgfQorI2Vsc2UKKyNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVVJMIHsKK3B1Ymxp
YzoKKyAgICB+V2ViVVJMKCkKKyAgICB7CisgICAgfQorCisgICAgV2ViVVJMKCkgOiBtX2lzVmFs
aWQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFdlYlVSTChjb25zdCBXZWJDU3RyaW5nJiBz
cGVjLCBjb25zdCB1cmxfcGFyc2U6OlBhcnNlZCYgcGFyc2VkLCBib29sIGlzVmFsaWQpCisgICAg
ICAgIDogbV9zcGVjKHNwZWMpCisgICAgICAgICwgbV9wYXJzZWQocGFyc2VkKQorICAgICAgICAs
IG1faXNWYWxpZChpc1ZhbGlkKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJVUkwoY29uc3QgV2Vi
VVJMJiBzKQorICAgICAgICA6IG1fc3BlYyhzLm1fc3BlYykKKyAgICAgICAgLCBtX3BhcnNlZChz
Lm1fcGFyc2VkKQorICAgICAgICAsIG1faXNWYWxpZChzLm1faXNWYWxpZCkKKyAgICB7CisgICAg
fQorCisgICAgV2ViVVJMJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMJiBzKQorICAgIHsKKyAgICAg
ICAgbV9zcGVjID0gcy5tX3NwZWM7CisgICAgICAgIG1fcGFyc2VkID0gcy5tX3BhcnNlZDsKKyAg
ICAgICAgbV9pc1ZhbGlkID0gcy5tX2lzVmFsaWQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJDU3RyaW5nJiBzcGVjLCBjb25zdCB1cmxf
cGFyc2U6OlBhcnNlZCYgcGFyc2VkLCBib29sIGlzVmFsaWQpCisgICAgeworICAgICAgICBtX3Nw
ZWMgPSBzcGVjOworICAgICAgICBtX3BhcnNlZCA9IHBhcnNlZDsKKyAgICAgICAgbV9pc1ZhbGlk
ID0gaXNWYWxpZDsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDU3RyaW5nJiBzcGVjKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NwZWM7CisgICAgfQorCisgICAgY29uc3QgdXJsX3Bh
cnNlOjpQYXJzZWQmIHBhcnNlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wYXJz
ZWQ7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2lzVmFsaWQ7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3NwZWMuaXNFbXB0eSgpOworICAgIH0KKworICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NwZWMuaXNFbXB0eSgpOworICAg
IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlVSTChjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgV2ViVVJMJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIG9wZXJhdG9yIFdlYkNvcmU6OktVUkwoKSBjb25zdDsKKyNlbHNlCisgICAgV2ViVVJMKGNv
bnN0IEdVUkwmIGcpCisgICAgICAgIDogbV9zcGVjKGcucG9zc2libHlfaW52YWxpZF9zcGVjKCkp
CisgICAgICAgICwgbV9wYXJzZWQoZy5wYXJzZWRfZm9yX3Bvc3NpYmx5X2ludmFsaWRfc3BlYygp
KQorICAgICAgICAsIG1faXNWYWxpZChnLmlzX3ZhbGlkKCkpCisgICAgeworICAgIH0KKworICAg
IFdlYlVSTCYgb3BlcmF0b3I9KGNvbnN0IEdVUkwmIGcpCisgICAgeworICAgICAgICBtX3NwZWMg
PSBnLnBvc3NpYmx5X2ludmFsaWRfc3BlYygpOworICAgICAgICBtX3BhcnNlZCA9IGcucGFyc2Vk
X2Zvcl9wb3NzaWJseV9pbnZhbGlkX3NwZWMoKTsKKyAgICAgICAgbV9pc1ZhbGlkID0gZy5pc192
YWxpZCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgR1VS
TCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNOdWxsKCkgPyBHVVJMKCkgOiBHVVJM
KG1fc3BlYy5kYXRhKCksIG1fc3BlYy5sZW5ndGgoKSwgbV9wYXJzZWQsIG1faXNWYWxpZCk7Cisg
ICAgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViQ1N0cmluZyBtX3NwZWM7ICAvLyBVVEYt
OCBlbmNvZGVkCisgICAgdXJsX3BhcnNlOjpQYXJzZWQgbV9wYXJzZWQ7CisgICAgYm9vbCBtX2lz
VmFsaWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlVSTEVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGU4OGUzZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
RXJyb3IuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJVUkxFcnJvcl9oCisjZGVmaW5lIFdl
YlVSTEVycm9yX2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5o
IgorCisjaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCituYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIFJlc291cmNlRXJyb3I7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYlVSTEVycm9yIHsKKyAgICAvLyBBIG5hbWVzcGFjZSBmb3IgInJlYXNvbiIg
dG8gc3VwcG9ydCB2YXJpb3VzIGxheWVycyBnZW5lcmF0aW5nCisgICAgLy8gcmVzb3VyY2UgZXJy
b3JzLiAgV2ViS2l0IGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mIHRoaXMKKyAgICAv
LyBzdHJpbmcgYXMgaXQgd2lsbCBqdXN0IGJlIHBhc3NlZCB2aWEgY2FsbGJhY2tzIHRvIHRoZSBj
b25zdW1lci4KKyAgICBXZWJTdHJpbmcgZG9tYWluOworCisgICAgLy8gQSBudW1lcmljIGVycm9y
IGNvZGUgZGV0YWlsaW5nIHRoZSByZWFzb24gZm9yIHRoaXMgZXJyb3IuICBBIHZhbHVlCisgICAg
Ly8gb2YgMCBtZWFucyBubyBlcnJvci4gIFdlYktpdCBkb2VzIG5vdCBpbnRlcnByZXQgdGhlIG1l
YW5pbmcgb2Ygb3RoZXIKKyAgICAvLyB2YWx1ZXMgYW5kIG5vcm1hbGx5IGp1c3QgZm9yd2FyZHMg
dGhpcyBlcnJvciBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQorICAgIC8vIGVtYmVkZGVyIChzZWUg
Zm9yIGV4YW1wbGUgV2ViRnJhbWVDbGllbnQpLgorICAgIGludCByZWFzb247CisKKyAgICAvLyBU
aGUgdXJsIHRoYXQgZmFpbGVkIHRvIGxvYWQuCisgICAgV2ViVVJMIHVucmVhY2hhYmxlVVJMOwor
CisgICAgV2ViVVJMRXJyb3IoKSA6IHJlYXNvbigwKSB7IH0KKworI2lmIGRlZmluZWQoV0VCS0lU
X0lNUExFTUVOVEFUSU9OKQorICAgIFdlYlVSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKKyAgICBXZWJVUkxFcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkgY29uc3Q7
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyLmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVSTExvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU0ZDEwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTExvYWRlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVSTExvYWRlcl9oCisjZGVm
aW5lIFdlYlVSTExvYWRlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJVUkxMb2FkZXJDbGllbnQ7Citj
bGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CitzdHJ1Y3QgV2ViVVJM
RXJyb3I7CisKK2NsYXNzIFdlYlVSTExvYWRlciB7CitwdWJsaWM6CisgICAgLy8gVGhlIFdlYlVS
TExvYWRlciBtYXkgYmUgZGVsZXRlZCBpbiBhIGNhbGwgdG8gaXRzIGNsaWVudC4KKyAgICB2aXJ0
dWFsIH5XZWJVUkxMb2FkZXIoKSB7fQorCisgICAgLy8gTG9hZCB0aGUgcmVxdWVzdCBzeW5jaHJv
bm91c2x5LCByZXR1cm5pbmcgcmVzdWx0cyBkaXJlY3RseSB0byB0aGUKKyAgICAvLyBjYWxsZXIg
dXBvbiBjb21wbGV0aW9uLiAgVGhlcmUgaXMgbm8gbWVjaGFuaXNtIHRvIGludGVycnVwdCBhCisg
ICAgLy8gc3luY2hyb25vdXMgbG9hZCEhCisgICAgdmlydHVhbCB2b2lkIGxvYWRTeW5jaHJvbm91
c2x5KGNvbnN0IFdlYlVSTFJlcXVlc3QmLAorICAgICAgICBXZWJVUkxSZXNwb25zZSYsIFdlYlVS
TEVycm9yJiwgV2ViRGF0YSYgZGF0YSkgPSAwOworCisgICAgLy8gTG9hZCB0aGUgcmVxdWVzdCBh
c3luY2hyb25vdXNseSwgc2VuZGluZyBub3RpZmljYXRpb25zIHRvIHRoZSBnaXZlbgorICAgIC8v
IGNsaWVudC4gIFRoZSBjbGllbnQgd2lsbCByZWNlaXZlIG5vIGZ1cnRoZXIgbm90aWZpY2F0aW9u
cyBpZiB0aGUKKyAgICAvLyBsb2FkZXIgaXMgZGlzcG9zZWQgYmVmb3JlIGl0IGNvbXBsZXRlcyBp
dHMgd29yay4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KGNvbnN0IFdlYlVS
TFJlcXVlc3QmLAorICAgICAgICBXZWJVUkxMb2FkZXJDbGllbnQqKSA9IDA7CisKKyAgICAvLyBD
YW5jZWxzIGFuIGFzeW5jaHJvbm91cyBsb2FkLiAgVGhpcyB3aWxsIGFwcGVhciBhcyBhIGxvYWQg
ZXJyb3IgdG8KKyAgICAvLyB0aGUgY2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9
IDA7CisKKyAgICAvLyBTdXNwZW5kcy9yZXN1bWVzIGFuIGFzeW5jaHJvbm91cyBsb2FkLgorICAg
IHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMTG9hZGVyQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExv
YWRlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYjJjNTQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNs
aWVudC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVSTExvYWRlckNsaWVudF9oCisjZGVm
aW5lIFdlYlVSTExvYWRlckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJVUkxMb2FkZXI7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7
CitzdHJ1Y3QgV2ViVVJMRXJyb3I7CisKK2NsYXNzIFdlYlVSTExvYWRlckNsaWVudCB7CitwdWJs
aWM6CisgICAgLy8gQ2FsbGVkIHdoZW4gZm9sbG93aW5nIGEgcmVkaXJlY3QuICB8bmV3UmVxdWVz
dHwgY29udGFpbnMgdGhlIHJlcXVlc3QKKyAgICAvLyBnZW5lcmF0ZWQgYnkgdGhlIHJlZGlyZWN0
LiAgVGhlIGNsaWVudCBtYXkgbW9kaWZ5IHxuZXdSZXF1ZXN0fC4KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KAorICAgICAgICBXZWJVUkxMb2FkZXIqLCBXZWJVUkxSZXF1ZXN0JiBu
ZXdSZXF1ZXN0LCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwor
CisgICAgLy8gQ2FsbGVkIHRvIHJlcG9ydCB1cGxvYWQgcHJvZ3Jlc3MuICBUaGUgYnl0ZXMgcmVw
b3J0ZWQgY29ycmVzcG9uZCB0bworICAgIC8vIHRoZSBIVFRQIG1lc3NhZ2UgYm9keS4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoCisgICAgICAgIFdlYlVSTExvYWRlciosIHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpID0gMDsKKworICAgIC8vIENhbGxlZCB3aGVuIHJlc3BvbnNlIGhlYWRlcnMgYXJlIHJlY2Vp
dmVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9hZGVyKiwg
Y29uc3QgV2ViVVJMUmVzcG9uc2UmKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5r
IG9mIHJlc3BvbnNlIGRhdGEgaXMgcmVjZWl2ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYlVSTExvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSA9
IDA7CisKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYlVSTExvYWRlciopID0gMDsK
KworICAgIC8vIENhbGxlZCB3aGVuIHRoZSBsb2FkIGNvbXBsZXRlcyB3aXRoIGFuIGVycm9yLgor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYlVSTExvYWRlciosIGNvbnN0IFdlYlVSTEVycm9y
JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYlVSTExvYWRlckNsaWVudCgpIHsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTFJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTVjMTdj
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0
LmgKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAorI2RlZmluZSBXZWJV
UkxSZXF1ZXN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkhUVFBC
b2R5LmgiCisKKyNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgc3RydWN0IFJlc291cmNlUmVxdWVzdDsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJDU3RyaW5nOworY2xhc3MgV2ViSFRUUEJvZHk7CitjbGFzcyBX
ZWJIVFRQSGVhZGVyVmlzaXRvcjsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKK2Ns
YXNzIFdlYlVSTFJlcXVlc3RQcml2YXRlOworCitjbGFzcyBXZWJVUkxSZXF1ZXN0IHsKK3B1Ymxp
YzoKKyAgICBlbnVtIENhY2hlUG9saWN5IHsKKyAgICAgICAgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSwgIC8vIG5vcm1hbCBsb2FkCisgICAgICAgIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyBy
ZWxvYWQKKyAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBv
ciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxvdyBzdGFsZSBkYXRhCisgICAgICAgIFJldHVybkNhY2hl
RGF0YURvbnRMb2FkLCAvLyByZXN1bHRzIG9mIGEgcG9zdCAtIGFsbG93IHN0YWxlIGRhdGEgYW5k
IG9ubHkgdXNlIGNhY2hlCisgICAgfTsKKworICAgIGVudW0gVGFyZ2V0VHlwZSB7CisgICAgICAg
IFRhcmdldElzTWFpbkZyYW1lLAorICAgICAgICBUYXJnZXRJc1N1YkZyYW1lLAorICAgICAgICBU
YXJnZXRJc1N1YlJlc291cmNlLAorICAgICAgICBUYXJnZXRJc09iamVjdCwKKyAgICAgICAgVGFy
Z2V0SXNNZWRpYQorICAgIH07CisKKyAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViVVJMUmVxdWVzdCgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYlVSTFJlcXVl
c3QoY29uc3QgV2ViVVJMUmVxdWVzdCYgcikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24ocik7IH0K
KyAgICBXZWJVUkxSZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMUmVxdWVzdCYgcikKKyAg
ICB7CisgICAgICAgIGFzc2lnbihyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIGV4cGxpY2l0IFdlYlVSTFJlcXVlc3QoY29uc3QgV2ViVVJMJiB1cmwpIDogbV9wcml2YXRl
KDApCisgICAgeworICAgICAgICBpbml0aWFsaXplKCk7CisgICAgICAgIHNldFVSTCh1cmwpOwor
ICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCBpbml0aWFsaXplKCk7CisgICAgV0VCS0lUX0FQ
SSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxS
ZXF1ZXN0Jik7CisKKyAgICBXRUJLSVRfQVBJIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisKKyAgICBX
RUJLSVRfQVBJIFdlYlVSTCB1cmwoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0VVJM
KGNvbnN0IFdlYlVSTCYpOworCisgICAgLy8gVXNlZCB0byBpbXBsZW1lbnQgdGhpcmQtcGFydHkg
Y29va2llIGJsb2NraW5nLgorICAgIFdFQktJVF9BUEkgV2ViVVJMIGZpcnN0UGFydHlGb3JDb29r
aWVzKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVz
KGNvbnN0IFdlYlVSTCYpOworCisgICAgV0VCS0lUX0FQSSBib29sIGFsbG93Q29va2llcygpIGNv
bnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRBbGxvd0Nvb2tpZXMoYm9vbCBhbGxvd0Nvb2tp
ZXMpOworCisgICAgLy8gQ29udHJvbHMgd2hldGhlciB1c2VyIG5hbWUsIHBhc3N3b3JkLCBhbmQg
Y29va2llcyBtYXkgYmUgc2VudCB3aXRoIHRoZQorICAgIC8vIHJlcXVlc3QuIChJZiBmYWxzZSwg
dGhpcyBvdmVycmlkZXMgYWxsb3dDb29raWVzLikKKyAgICBXRUJLSVRfQVBJIGJvb2wgYWxsb3dT
dG9yZWRDcmVkZW50aWFscygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CisKKyAgICBXRUJL
SVRfQVBJIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2
b2lkIHNldENhY2hlUG9saWN5KENhY2hlUG9saWN5KTsKKworICAgIFdFQktJVF9BUEkgV2ViU3Ry
aW5nIGh0dHBNZXRob2QoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0SFRUUE1ldGhv
ZChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGh0dHBIZWFk
ZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9p
ZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIHZhbHVlKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CisgICAgV0VCS0lUX0FQ
SSB2b2lkIGNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7CisgICAg
V0VCS0lUX0FQSSB2b2lkIHZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJIVFRQSGVhZGVyVmlzaXRv
ciopIGNvbnN0OworCisgICAgV0VCS0lUX0FQSSBXZWJIVFRQQm9keSBodHRwQm9keSgpIGNvbnN0
OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRIVFRQQm9keShjb25zdCBXZWJIVFRQQm9keSYpOwor
CisgICAgLy8gQ29udHJvbHMgd2hldGhlciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzIGFyZSBnZW5l
cmF0ZWQgd2hlbiBhIHJlcXVlc3QKKyAgICAvLyBoYXMgYSBib2R5LgorICAgIFdFQktJVF9BUEkg
Ym9vbCByZXBvcnRVcGxvYWRQcm9ncmVzcygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBz
ZXRSZXBvcnRVcGxvYWRQcm9ncmVzcyhib29sKTsKKworICAgIFdFQktJVF9BUEkgVGFyZ2V0VHlw
ZSB0YXJnZXRUeXBlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFRhcmdldFR5cGUo
VGFyZ2V0VHlwZSk7CisKKyAgICAvLyBBIGNvbnN1bWVyIGNvbnRyb2xsZWQgdmFsdWUgaW50ZW5k
ZWQgdG8gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUKKyAgICAvLyByZXF1ZXN0b3IuCisgICAgV0VC
S0lUX0FQSSBpbnQgcmVxdWVzdG9ySUQoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0
UmVxdWVzdG9ySUQoaW50KTsKKworICAgIC8vIEEgY29uc3VtZXIgY29udHJvbGxlZCB2YWx1ZSBp
bnRlbmRlZCB0byBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZQorICAgIC8vIHByb2Nlc3Mgb2YgdGhl
IHJlcXVlc3Rvci4KKyAgICBXRUJLSVRfQVBJIGludCByZXF1ZXN0b3JQcm9jZXNzSUQoKSBjb25z
dDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVxdWVzdG9yUHJvY2Vzc0lEKGludCk7CisKKyAg
ICAvLyBBbGxvd3MgdGhlIHJlcXVlc3QgdG8gYmUgbWF0Y2hlZCB1cCB3aXRoIGl0cyBhcHAgY2Fj
aGUgaG9zdC4KKyAgICBXRUJLSVRfQVBJIGludCBhcHBDYWNoZUhvc3RJRCgpIGNvbnN0OworICAg
IFdFQktJVF9BUEkgdm9pZCBzZXRBcHBDYWNoZUhvc3RJRChpbnQgaWQpOworCisjaWYgZGVmaW5l
ZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiB0
b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHRvUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CisjZW5kaWYKKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgYXNzaWduKFdlYlVSTFJlcXVlc3RQcml2YXRlKik7CisKK3ByaXZhdGU6CisgICAg
V2ViVVJMUmVxdWVzdFByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
UmVzcG9uc2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGFjODNjCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCkBAIC0wLDAgKzEsMTMw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9oCisjZGVmaW5lIFdlYlVSTFJlc3BvbnNlX2gKKwor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJ
T04pCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7IH0KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ1N0cmluZzsKK2NsYXNzIFdlYkhU
VFBIZWFkZXJWaXNpdG9yOworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworY2xhc3Mg
V2ViVVJMUmVzcG9uc2VQcml2YXRlOworCitjbGFzcyBXZWJVUkxSZXNwb25zZSB7CitwdWJsaWM6
CisgICAgfldlYlVSTFJlc3BvbnNlKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJVUkxSZXNwb25z
ZSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYlVSTFJlc3BvbnNlKGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihyKTsgfQorICAgIFdlYlVSTFJlc3Bv
bnNlJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMUmVzcG9uc2UmIHIpCisgICAgeworICAgICAgICBh
c3NpZ24ocik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBleHBsaWNpdCBX
ZWJVUkxSZXNwb25zZShjb25zdCBXZWJVUkwmIHVybCkgOiBtX3ByaXZhdGUoMCkKKyAgICB7Cisg
ICAgICAgIGluaXRpYWxpemUoKTsKKyAgICAgICAgc2V0VVJMKHVybCk7CisgICAgfQorCisgICAg
V0VCS0lUX0FQSSB2b2lkIGluaXRpYWxpemUoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQo
KTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVSTFJlc3BvbnNlJik7CisK
KyAgICBXRUJLSVRfQVBJIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfQVBJIFdl
YlVSTCB1cmwoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0VVJMKGNvbnN0IFdlYlVS
TCYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgc2V0TUlNRVR5cGUoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJL
SVRfQVBJIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKKyAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyk7CisKKyAgICBX
RUJLSVRfQVBJIFdlYlN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3Q7CisgICAgV0VCS0lU
X0FQSSB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBX
RUJLSVRfQVBJIFdlYlN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZSgpIGNvbnN0OworICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKKworICAg
IFdFQktJVF9BUEkgaW50IGh0dHBTdGF0dXNDb2RlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2
b2lkIHNldEhUVFBTdGF0dXNDb2RlKGludCk7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBo
dHRwU3RhdHVzVGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRIVFRQU3RhdHVz
VGV4dChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGh0dHBI
ZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIFdFQktJVF9BUEkg
dm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJT
dHJpbmcmIHZhbHVlKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CisgICAgV0VCS0lU
X0FQSSB2b2lkIGNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Cisg
ICAgV0VCS0lUX0FQSSB2b2lkIHZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJIVFRQSGVhZGVyVmlz
aXRvciopIGNvbnN0OworCisgICAgV0VCS0lUX0FQSSBkb3VibGUgbGFzdE1vZGlmaWVkRGF0ZSgp
IGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRMYXN0TW9kaWZpZWREYXRlKGRvdWJsZSk7
CisKKyAgICBXRUJLSVRfQVBJIGJvb2wgaXNDb250ZW50RmlsdGVyZWQoKSBjb25zdDsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgc2V0SXNDb250ZW50RmlsdGVyZWQoYm9vbCk7CisKKyAgICBXRUJLSVRf
QVBJIGxvbmcgbG9uZyBhcHBDYWNoZUlEKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNl
dEFwcENhY2hlSUQobG9uZyBsb25nKTsKKworICAgIFdFQktJVF9BUEkgV2ViVVJMIGFwcENhY2hl
TWFuaWZlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0QXBwQ2FjaGVNYW5p
ZmVzdFVSTChjb25zdCBXZWJVUkwmKTsKKworICAgIC8vIEEgY29uc3VtZXIgY29udHJvbGxlZCB2
YWx1ZSBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHJlY29yZCBvcGFxdWUKKyAgICAvLyBzZWN1cml0
eSBpbmZvIHJlbGF0ZWQgdG8gdGhpcyByZXF1ZXN0LgorICAgIFdFQktJVF9BUEkgV2ViQ1N0cmlu
ZyBzZWN1cml0eUluZm8oKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0U2VjdXJpdHlJ
bmZvKGNvbnN0IFdlYkNTdHJpbmcmKTsKKworI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFU
SU9OKQorICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHRvTXV0YWJsZVJlc291cmNlUmVz
cG9uc2UoKTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB0b1Jlc291cmNl
UmVzcG9uc2UoKSBjb25zdDsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBhc3NpZ24o
V2ViVVJMUmVzcG9uc2VQcml2YXRlKik7CisKK3ByaXZhdGU6CisgICAgV2ViVVJMUmVzcG9uc2VQ
cml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42781</attachid>
            <date>2009-11-09 12:33:40 -0800</date>
            <delta_ts>2009-11-09 13:40:09 -0800</delta_ts>
            <desc>WebText and Friends</desc>
            <filename>apiText.diff</filename>
            <type>text/plain</type>
            <size>5054</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhiN2YyMmIuLjY3YmQzZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDE5IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
VXBzdHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlRleHQqCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dEFmZmluaXR5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgor
ICAgICAgICAqIHB1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjopOgorCisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFVwc3Ry
ZWFtaW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJOiBXZWJVUkwgYW5kIGZyaWVuZHMuCiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRBZmZpbml0eS5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xMjI0ZjYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0
QWZmaW5pdHlfaAorI2RlZmluZSBXZWJUZXh0QWZmaW5pdHlfaAorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkgdGhlIHByZWZlcnJlZCBkaXJlY3Rpb24g
b2Ygc2VsZWN0aW9uLgorZW51bSBXZWJUZXh0QWZmaW5pdHkgeworICAgIFdlYlRleHRBZmZpbml0
eVVwc3RyZWFtLCAgIC8vIFRoZSBzZWxlY3Rpb24gaXMgbW92aW5nIHRvd2FyZCB0aGUgdG9wIG9m
IHRoZSBkb2N1bWVudC4KKyAgICBXZWJUZXh0QWZmaW5pdHlEb3duc3RyZWFtLCAvLyBUaGUgc2Vs
ZWN0aW9uIGlzIG1vdmluZyB0b3dhcmQgdGhlIGJvdHRvbSBvZiB0aGUgZG9jdW1lbnQuCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dERpcmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNk
NTEyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRE
aXJlY3Rpb24uaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0RGlyZWN0aW9uX2gKKyNk
ZWZpbmUgV2ViVGV4dERpcmVjdGlvbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBSZXBy
ZXNlbnRzIHRleHQgZGlyZWN0aW9ucyAob3Igd3JpdGluZyBkaXJlY3Rpb25zKSBvZiBhIERPTSBu
b2RlLgorZW51bSBXZWJUZXh0RGlyZWN0aW9uIHsKKyAgICBXZWJUZXh0RGlyZWN0aW9uRGVmYXVs
dCwgIC8vIE5hdHVyYWwgd3JpdGluZyBkaXJlY3Rpb24gKCJpbmhlcml0IikKKyAgICBXZWJUZXh0
RGlyZWN0aW9uTGVmdFRvUmlnaHQsCisgICAgV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42783</attachid>
            <date>2009-11-09 12:36:26 -0800</date>
            <delta_ts>2009-11-09 13:47:41 -0800</delta_ts>
            <desc>WebString and other basic objects.</desc>
            <filename>apiString.diff</filename>
            <type>text/plain</type>
            <size>16525</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDY3YmQzZTcuLmYyZjY3M2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDQ1IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
VXBzdHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlN0cmluZyBhbmQgb3RoZXIg
YmFzaWMgb2JqZWN0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJSYW5nZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmFuZ2U6On5XZWJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJhbmdlOjpXZWJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJhbmdlOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJSYW5nZTo6aXNOdWxsKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViUmVjdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVjdDo6aXNFbXB0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlY3Q6OldlYlJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZWN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZWN0OjpvcGVyYXRvciBXZWJD
b3JlOjpJbnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVjdDo6b3BlcmF0b3IgZ2Z4OjpS
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9w
ZXJhdG9yIT0pOgorICAgICAgICAqIHB1YmxpYy9XZWJTaXplLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJTaXplOjppc0VtcHR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2l6ZTo6V2Vi
U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNpemU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNpemU6Om9wZXJhdG9yIFdlYkNvcmU6OkludFNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaXplOjpvcGVyYXRvciBnZng6OlNpemUpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcHVibGlj
L1dlYlN0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjp+V2ViU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjpXZWJTdHJpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmlu
Zzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0cmluZzo6aXNOdWxsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RyaW5nOjpvcGVyYXRvciBzdHJpbmcxNik6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0cmluZzo6b3BlcmF0b3IgTnVsbGFibGVTdHJpbmcxNik6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0cmluZzo6ZnJvbVVURjgpOgorCisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAg
PHlhYXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCiAgICAgICAgIFVwc3RyZWFtaW5nIHRoZSBDaHJvbWl1bSBXZWJLaXQgQVBJOiBXZWJUZXh0
KgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODM5
NApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSYW5nZS5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJSYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjg5ZmM4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlJhbmdlLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmFuZ2VfaAorI2RlZmluZSBX
ZWJSYW5nZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSYW5nZTsgfQorbmFtZXNwYWNlIFdU
RiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5vZGU7CitjbGFzcyBXZWJSYW5nZVByaXZh
dGU7CitjbGFzcyBXZWJTdHJpbmc7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBz
b21lIHByb3BlcnRpZXMgb2YgYSBET00gcmFuZ2UuCitjbGFzcyBXZWJSYW5nZSB7CitwdWJsaWM6
CisgICAgfldlYlJhbmdlKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJSYW5nZSgpIDogbV9wcml2
YXRlKDApIHsgfQorICAgIFdlYlJhbmdlKGNvbnN0IFdlYlJhbmdlJiByKSA6IG1fcHJpdmF0ZSgw
KSB7IGFzc2lnbihyKTsgfQorICAgIFdlYlJhbmdlJiBvcGVyYXRvcj0oY29uc3QgV2ViUmFuZ2Um
IHIpCisgICAgeworICAgICAgICBhc3NpZ24ocik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQg
YXNzaWduKGNvbnN0IFdlYlJhbmdlJik7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX3ByaXZhdGU7IH0KKworICAgIFdFQktJVF9BUEkgaW50IHN0YXJ0T2Zmc2V0KCkgY29u
c3Q7CisgICAgV0VCS0lUX0FQSSBpbnQgZW5kT2Zmc2V0KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQ
SSBXZWJOb2RlIHN0YXJ0Q29udGFpbmVyKGludCYgZXhjZXB0aW9uQ29kZSkgY29uc3Q7CisgICAg
V0VCS0lUX0FQSSBXZWJOb2RlIGVuZENvbnRhaW5lcihpbnQmIGV4Y2VwdGlvbkNvZGUpIGNvbnN0
OworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdG9IVE1MVGV4dCgpIGNvbnN0OworICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIHRvUGxhaW5UZXh0KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICBXZWJSYW5nZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+Jik7CisgICAgV2ViUmFuZ2UmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NpZ24oV2Vi
UmFuZ2VQcml2YXRlKik7CisgICAgV2ViUmFuZ2VQcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlJlY3QuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVjdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNWE3ZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaApAQCAtMCwwICsxLDEyNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViUmVjdF9oCisjZGVmaW5lIFdlYlJlY3RfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJJbnRSZWN0LmgiCisj
ZWxzZQorI2luY2x1ZGUgPGJhc2UvZ2Z4L3JlY3QuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RydWN0IFdlYlJlY3QgeworICAgIGludCB4OworICAgIGludCB5OworICAgIGlu
dCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gd2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMDsgfQorCisgICAgV2ViUmVjdCgpCisgICAg
ICAgIDogeCgwKQorICAgICAgICAsIHkoMCkKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAs
IGhlaWdodCgwKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJSZWN0KGludCB4LCBpbnQgeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgICAgICA6IHgoeCkKKyAgICAgICAgLCB5KHkpCisgICAg
ICAgICwgd2lkdGgod2lkdGgpCisgICAgICAgICwgaGVpZ2h0KGhlaWdodCkKKyAgICB7CisgICAg
fQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByKQorICAgICAgICA6IHgoci54KCkpCisgICAgICAgICwgeShyLnkoKSkKKyAg
ICAgICAgLCB3aWR0aChyLndpZHRoKCkpCisgICAgICAgICwgaGVpZ2h0KHIuaGVpZ2h0KCkpCisg
ICAgeworICAgIH0KKworICAgIFdlYlJlY3QmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiByKQorICAgIHsKKyAgICAgICAgeCA9IHIueCgpOworICAgICAgICB5ID0gci55KCk7Cisg
ICAgICAgIHdpZHRoID0gci53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSByLmhlaWdodCgpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgV2ViQ29yZTo6SW50
UmVjdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisjZWxzZQorICAgIFdlYlJlY3QoY29uc3QgZ2Z4OjpS
ZWN0JiByKQorICAgICAgICA6IHgoci54KCkpCisgICAgICAgICwgeShyLnkoKSkKKyAgICAgICAg
LCB3aWR0aChyLndpZHRoKCkpCisgICAgICAgICwgaGVpZ2h0KHIuaGVpZ2h0KCkpCisgICAgewor
ICAgIH0KKworICAgIFdlYlJlY3QmIG9wZXJhdG9yPShjb25zdCBnZng6OlJlY3QmIHIpCisgICAg
eworICAgICAgICB4ID0gci54KCk7CisgICAgICAgIHkgPSByLnkoKTsKKyAgICAgICAgd2lkdGgg
PSByLndpZHRoKCk7CisgICAgICAgIGhlaWdodCA9IHIuaGVpZ2h0KCk7CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CisKKyAgICBvcGVyYXRvciBnZng6OlJlY3QoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdmeDo6UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cisj
ZW5kaWYKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViUmVjdCYgYSwgY29u
c3QgV2ViUmVjdCYgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55ICYm
IGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKK30KKworaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJSZWN0JiBhLCBjb25zdCBXZWJSZWN0JiBiKQorewor
ICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2l6ZS5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTaXplLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmI4ODYzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2l6ZS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTaXplX2gKKyNkZWZpbmUgV2Vi
U2l6ZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNlbHNlCisjaW5jbHVkZSA8YmFzZS9nZngvcmVj
dC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViU2l6ZSB7Cisg
ICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwOyB9CisKKyAgICBXZWJTaXplKCkK
KyAgICAgICAgOiB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAgIHsKKyAgICB9CisK
KyAgICBXZWJTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKKyAgICAgICAgOiB3aWR0aCh3aWR0
aCkKKyAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHMpCisg
ICAgICAgIDogd2lkdGgocy53aWR0aCgpKQorICAgICAgICAsIGhlaWdodChzLmhlaWdodCgpKQor
ICAgIHsKKyAgICB9CisKKyAgICBXZWJTaXplJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcykKKyAgICB7CisgICAgICAgIHdpZHRoID0gcy53aWR0aCgpOworICAgICAgICBoZWln
aHQgPSBzLmhlaWdodCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3Bl
cmF0b3IgV2ViQ29yZTo6SW50U2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICB9CisjZWxzZQorICAgIFdlYlNpemUo
Y29uc3QgZ2Z4OjpTaXplJiBzKQorICAgICAgICA6IHdpZHRoKHMud2lkdGgoKSkKKyAgICAgICAg
LCBoZWlnaHQocy5oZWlnaHQoKSkKKyAgICB7CisgICAgfQorCisgICAgV2ViU2l6ZSYgb3BlcmF0
b3I9KGNvbnN0IGdmeDo6U2l6ZSYgcykKKyAgICB7CisgICAgICAgIHdpZHRoID0gcy53aWR0aCgp
OworICAgICAgICBoZWlnaHQgPSBzLmhlaWdodCgpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgb3BlcmF0b3IgZ2Z4OjpTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBnZng6OlNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorI2VuZGlmCit9OworCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlNpemUmIGEsIGNvbnN0IFdlYlNpemUmIGIpCit7
CisgICAgcmV0dXJuIGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJTaXplJiBhLCBjb25zdCBXZWJT
aXplJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Ry
aW5nLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YjY2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJT
dHJpbmdfaAorI2RlZmluZSBXZWJTdHJpbmdfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFN0
cmluZzsKK2NsYXNzIEF0b21pY1N0cmluZzsKK30KKyNlbHNlCisjaW5jbHVkZSA8YmFzZS9udWxs
YWJsZV9zdHJpbmcxNi5oPgorI2luY2x1ZGUgPGJhc2Uvc3RyaW5nMTYuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ1N0cmluZzsKK2NsYXNzIFdlYlN0cmluZ1By
aXZhdGU7CisKKy8vIEEgVVRGLTE2IHN0cmluZyBjb250YWluZXIuICBJdCBpcyBpbmV4cGVuc2l2
ZSB0byBjb3B5IGEgV2ViU3RyaW5nCisvLyBvYmplY3QuCisvLworLy8gV0FSTklORzogSXQgaXMg
bm90IHNhZmUgdG8gcGFzcyBhIFdlYlN0cmluZyBhY3Jvc3MgdGhyZWFkcyEhIQorLy8KK2NsYXNz
IFdlYlN0cmluZyB7CitwdWJsaWM6CisgICAgfldlYlN0cmluZygpIHsgcmVzZXQoKTsgfQorCisg
ICAgV2ViU3RyaW5nKCkgOiBtX3ByaXZhdGUoMCkgeyB9CisKKyAgICBXZWJTdHJpbmcoY29uc3Qg
V2ViVUNoYXIqIGRhdGEsIHNpemVfdCBsZW4pIDogbV9wcml2YXRlKDApCisgICAgeworICAgICAg
ICBhc3NpZ24oZGF0YSwgbGVuKTsKKyAgICB9CisKKyAgICBXZWJTdHJpbmcoY29uc3QgV2ViU3Ry
aW5nJiBzKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihzKTsgfQorCisgICAgV2ViU3RyaW5nJiBv
cGVyYXRvcj0oY29uc3QgV2ViU3RyaW5nJiBzKQorICAgIHsKKyAgICAgICAgYXNzaWduKHMpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0
KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVDaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsK
KworICAgIFdFQktJVF9BUEkgc2l6ZV90IGxlbmd0aCgpIGNvbnN0OworICAgIFdFQktJVF9BUEkg
Y29uc3QgV2ViVUNoYXIqIGRhdGEoKSBjb25zdDsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFsZW5ndGgoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
IW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0FQSSBXZWJDU3RyaW5nIHV0ZjgoKSBjb25zdDsK
KworICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYlN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJTdHJpbmcgZnJv
bVVURjgoY29uc3QgY2hhciogZGF0YSk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgV2ViU3RyaW5nJiBvcGVy
YXRvcj0oY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6U3Ry
aW5nKCkgY29uc3Q7CisKKyAgICBXZWJTdHJpbmcoY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5n
Jik7CisgICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5n
Jik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6QXRvbWljU3RyaW5nKCkgY29uc3Q7CisjZWxzZQor
ICAgIFdlYlN0cmluZyhjb25zdCBzdHJpbmcxNiYgcykgOiBtX3ByaXZhdGUoMCkKKyAgICB7Cisg
ICAgICAgIGFzc2lnbihzLmRhdGEoKSwgcy5sZW5ndGgoKSk7CisgICAgfQorCisgICAgV2ViU3Ry
aW5nJiBvcGVyYXRvcj0oY29uc3Qgc3RyaW5nMTYmIHMpCisgICAgeworICAgICAgICBhc3NpZ24o
cy5kYXRhKCksIHMubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgb3BlcmF0b3Igc3RyaW5nMTYoKSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9
IGxlbmd0aCgpOworICAgICAgICByZXR1cm4gbGVuID8gc3RyaW5nMTYoZGF0YSgpLCBsZW4pIDog
c3RyaW5nMTYoKTsKKyAgICB9CisKKyAgICBXZWJTdHJpbmcoY29uc3QgTnVsbGFibGVTdHJpbmcx
NiYgcykgOiBtX3ByaXZhdGUoMCkKKyAgICB7CisgICAgICAgIGlmIChzLmlzX251bGwoKSkKKyAg
ICAgICAgICAgIGFzc2lnbigwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzaWduKHMu
c3RyaW5nKCkuZGF0YSgpLCBzLnN0cmluZygpLmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBXZWJT
dHJpbmcmIG9wZXJhdG9yPShjb25zdCBOdWxsYWJsZVN0cmluZzE2JiBzKQorICAgIHsKKyAgICAg
ICAgaWYgKHMuaXNfbnVsbCgpKQorICAgICAgICAgICAgYXNzaWduKDApOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBhc3NpZ24ocy5zdHJpbmcoKS5kYXRhKCksIHMuc3RyaW5nKCkubGVuZ3Ro
KCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgb3BlcmF0b3IgTnVsbGFi
bGVTdHJpbmcxNigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBOdWxsYWJsZVN0cmluZzE2KHN0cmluZzE2KCksIHRydWUpOworICAgICAg
ICBzaXplX3QgbGVuID0gbGVuZ3RoKCk7CisgICAgICAgIHJldHVybiBOdWxsYWJsZVN0cmluZzE2
KGxlbiA/IHN0cmluZzE2KGRhdGEoKSwgbGVuKSA6IHN0cmluZzE2KCksIGZhbHNlKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVVRGOFN0cmluZz4KKyAgICBzdGF0aWMgV2ViU3RyaW5n
IGZyb21VVEY4KGNvbnN0IFVURjhTdHJpbmcmIHMpCisgICAgeworICAgICAgICByZXR1cm4gZnJv
bVVURjgocy5kYXRhKCksIHMubGVuZ3RoKCkpOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIHZvaWQgYXNzaWduKFdlYlN0cmluZ1ByaXZhdGUqKTsKKyAgICBXZWJTdHJpbmdQcml2YXRl
KiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42784</attachid>
            <date>2009-11-09 12:40:30 -0800</date>
            <delta_ts>2009-11-09 13:55:08 -0800</delta_ts>
            <desc>WebSockets and WebStorage.</desc>
            <filename>apiSocketsAndStorage.diff</filename>
            <type>text/plain</type>
            <size>18376</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGYyZjY3M2YuLjhkN2ViNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDI1IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
VXBzdHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlNvY2tldHMgYW5kIFdlYlN0
b3JhZ2UuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaDogQWRkZWQu
CisgICAgICAgICogcHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlOjp+V2ViU29ja2V0U3RyZWFtSGFuZGxl
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIHB1YmxpYy9XZWJTdG9yYWdlQXJlYS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViU3RvcmFnZUFyZWE6On5XZWJTdG9yYWdlQXJlYSk6CisgICAgICAgICogcHVibGlj
L1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6On5XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZTo6fldlYlN0b3JhZ2VOYW1lc3BhY2UpOgorCisyMDA5
LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFVwc3RyZWFtaW5nIHRoZSBDaHJv
bWl1bSBXZWJLaXQgQVBJOiBXZWJTdHJpbmcgYW5kIG90aGVyIGJhc2ljIG9iamVjdHMuCiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUyODY5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJTb2NrZXRTdHJlYW1FcnJvcl9oCisjZGVmaW5lIFdlYlNvY2tldFN0cmVhbUVy
cm9yX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU29ja2V0U3RyZWFtRXJyb3IgeworcHVibGljOgorICAgIC8vIEZJWE1FOiBEZWZp
bmUgU29ja2V0U3RyZWFtIEVycm9yIGNvZGVzIGFuZCBhY2Nlc3NvciBtZXRob2RzLgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZWRlZGEwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0
U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUgV2ViU29ja2V0U3RyZWFtSGFuZGxlX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YTsK
K2NsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFdlYlVSTDsKKworY2xh
c3MgV2ViU29ja2V0U3RyZWFtSGFuZGxlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTb2Nr
ZXRTdHJlYW1IYW5kbGUoKSB7IH0KKworICAgIC8vIENvbm5lY3QgbmV3IHNvY2tldCBzdHJlYW0g
YXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgV2ViVVJMJiwg
V2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KikgPSAwOworCisgICAgLy8gU2VuZCB3ZWIgc29j
a2V0IGZyYW1lIGRhdGEgb24gdGhlIHNvY2tldCBzdHJlYW0uCisgICAgdmlydHVhbCBib29sIHNl
bmQoY29uc3QgV2ViRGF0YSYpID0gMDsKKworICAgIC8vIENsb3NlIHRoZSBzb2NrZXQgc3RyZWFt
LgorICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdkY2Y5YTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkRhdGE7CitjbGFzcyBXZWJTb2NrZXRTdHJlYW1FcnJvcjsKK2NsYXNzIFdlYlNvY2tl
dFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2ViU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50IHsKK3B1YmxpYzoKKworICAgIC8vIENhbGxlZCB3aGVuIFdlYlNvY2tldFN0cmVh
bUhhbmRsZSBpcyBnb2luZyB0byBvcGVuIHRoZSBVUkwuCisgICAgdmlydHVhbCB2b2lkIHdpbGxP
cGVuU3RyZWFtKFdlYlNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFdlYlVSTCYpID0gMDsKKwor
ICAgIC8vIENhbGxlZCB3aGVuIFNvY2tldCBTdHJlYW0gaXMgb3BlbmVkLgorICAgIHZpcnR1YWwg
dm9pZCBkaWRPcGVuU3RyZWFtKFdlYlNvY2tldFN0cmVhbUhhbmRsZSosIGludCAvKiBtYXhQZW5k
aW5nU2VuZEFsbG93ZWQgKi8pID0gMDsKKworICAgIC8vIENhbGxlZCB3aGVuIHxhbW91bnRTZW50
fCBieXRlcyBhcmUgc2VudC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoV2ViU29ja2V0
U3RyZWFtSGFuZGxlKiwgaW50IC8qIGFtb3VudFNlbnQgKi8pID0gMDsKKworICAgIC8vIENhbGxl
ZCB3aGVuIGRhdGEgYXJlIHJlY2VpdmVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBXZWJEYXRhJikgPSAwOworCisgICAgLy8g
Q2FsbGVkIHdoZW4gU29ja2V0IFN0cmVhbSBpcyBjbG9zZWQuCisgICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlKFdlYlNvY2tldFN0cmVhbUhhbmRsZSopID0gMDsKKworICAgIC8vIENhbGxlZCB3aGVu
IFNvY2tldCBTdHJlYW0gaGFzIGFuIGVycm9yLgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdl
YlNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFdlYlNvY2tldFN0cmVhbUVycm9yJikgPSAwOwor
CisgICAgLy8gRklYTUU6IGF1dGggY2hhbGxlbmdlIGZvciBwcm94eQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdG9yYWdlQXJlYS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJl
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZGM3YTUKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViU3RvcmFnZUFyZWFfaAorI2RlZmluZSBXZWJTdG9yYWdlQXJl
YV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKKworLy8gSW4gV2ViQ29yZSwgdGhlcmUncyBv
bmUgZGlzdGluY3QgU3RvcmFnZUFyZWEgcGVyIG9yaWdpbiBwZXIgU3RvcmFnZU5hbWVzcGFjZS4g
VGhpcworLy8gY2xhc3Mgd3JhcHMgYSBTdG9yYWdlQXJlYS4gIEFsbCB0aGUgbWV0aG9kcyBoYXZl
IG9idmlvdXMgY29ubmVjdGlvbnMgdG8gdGhlIHNwZWM6CisvLyBodHRwOi8vZGV2LnczLm9yZy9o
dG1sNS93ZWJzdG9yYWdlLworY2xhc3MgV2ViU3RvcmFnZUFyZWEgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldlYlN0b3JhZ2VBcmVhKCkgeyB9CisKKyAgICAvLyBUaGUgbnVtYmVyIG9mIGtleS92
YWx1ZSBwYWlycyBpbiB0aGUgc3RvcmFnZSBhcmVhLgorICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgPSAwOworCisgICAgLy8gR2V0IGEgdmFsdWUgZm9yIGEgc3BlY2lmaWMga2V5LiBWYWxp
ZCBrZXkgaW5kaWNlcyBhcmUgMCB0aHJvdWdoIGxlbmd0aCgpIC0gMS4KKyAgICAvLyBJbmRleGVz
IG1heSBjaGFuZ2Ugb24gYW55IHNldC9yZW1vdmVJdGVtIGNhbGwuIFdpbGwgcmV0dXJuIG51bGwg
aWYgdGhlIGluZGV4CisgICAgLy8gcHJvdmlkZWQgaXMgb3V0IG9mIHJhbmdlLgorICAgIHZpcnR1
YWwgV2ViU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgPSAwOworCisgICAgLy8gR2V0IHRoZSB2
YWx1ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgc3BlY2lmaWMga2V5LiBUaGlzIHJldHVybnMgbnVs
bCBpZiB0aGVyZSBpcworICAgIC8vIG5vIGVudHJ5IGZvciB0aGF0IGtleS4KKyAgICB2aXJ0dWFs
IFdlYlN0cmluZyBnZXRJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5KSA9IDA7CisKKyAgICAvLyBT
ZXQgdGhlIHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBzcGVjaWZpYyBrZXkuIFF1b3RhRXhj
ZXB0aW9uIGlzIHNldCBpZiB3ZSd2ZQorICAgIC8vIHRoZSBTdG9yYWdlQXJlYSB3b3VsZCBoYXZl
IGV4Y2VlZGVkIGl0cyBxdW90YS4gVGhlIHZhbHVlIGlzIE5PVCBzZXQgd2hlbiB0aGVyZSdzCisg
ICAgLy8gYW4gZXhjZXB0aW9uLiAgdXJsIGlzIHRoZSB1cmwgdGhhdCBzaG91bGQgYmUgdXNlZCBp
ZiBhIHN0b3JhZ2UgZXZlbnQgZmlyZXMuCisgICAgdmlydHVhbCB2b2lkIHNldEl0ZW0oY29uc3Qg
V2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdlYlVSTCYgdXJs
LCBib29sJiBxdW90YUV4Y2VwdGlvbikgPSAwOworCisgICAgLy8gUmVtb3ZlIHRoZSB2YWx1ZSBh
c3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIGtleS4gIHVybCBpcyB0aGUgdXJsIHRoYXQgc2hv
dWxkIGJlIHVzZWQKKyAgICAvLyBpZiBhIHN0b3JhZ2UgZXZlbnQgZmlyZXMuCisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlVSTCYgdXJs
KSA9IDA7CisKKyAgICAvLyBDbGVhciBhbGwga2V5L3ZhbHVlIHBhaXJzLiAgdXJsIGlzIHRoZSB1
cmwgdGhhdCBzaG91bGQgYmUgdXNlZCBpZiBhIHN0b3JhZ2UgZXZlbnQgZmlyZXMuCisgICAgdmly
dHVhbCB2b2lkIGNsZWFyKGNvbnN0IFdlYlVSTCYgdXJsKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlN0b3JhZ2VBcmVhX2gKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3NTBlOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXJfaAorI2RlZmluZSBXZWJTdG9y
YWdlRXZlbnREaXNwYXRjaGVyX2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVVJMOworCisvLyBUaGlzIGlzIHVzZWQgdG8gZGlzcGF0
Y2ggc3RvcmFnZSBldmVudHMgdG8gYWxsIHBhZ2VzLgorLy8gRklYTUU6IE1ha2UgdGhpcyAob3Ig
c29tZXRoaW5nKSB3b3JrIGZvciBTZXNzaW9uU3RvcmFnZSEKK2NsYXNzIFdlYlN0b3JhZ2VFdmVu
dERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJTdG9yYWdlRXZlbnREaXNwYXRj
aGVyKiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIo
KSB7IH0KKworICAgIC8vIERpc3BhdGNoIHRoZSBhY3R1YWwgZXZlbnQuICBEb2Vzbid0IHlldCB3
b3JrIGZvciBTZXNzaW9uU3RvcmFnZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTdG9yYWdl
RXZlbnQoY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmluZyYgb2xkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmV3
VmFsdWUsIGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJVUkwmIHVybCwgYm9vbCBpc0xvY2FsU3RvcmFnZSkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTdG9yYWdlRXZl
bnREaXNwYXRjaGVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Rv
cmFnZU5hbWVzcGFjZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNw
YWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5MmE3NwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5o
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlN0b3JhZ2VOYW1lc3BhY2VfaAorI2RlZmluZSBX
ZWJTdG9yYWdlTmFtZXNwYWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RvcmFnZUFyZWE7CitjbGFzcyBXZWJTdHJpbmc7CisK
Ky8vIFdlYlN0b3JhZ2VOYW1lc3BhY2UgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgU3RvcmFn
ZUFyZWFzLiBUeXBpY2FsbHksIHlvdSdsbCBoYXZlCisvLyBtdWx0aXBsZSBTdG9yYWdlTmFtZXNw
YWNlcyB0byByZXByZXNlbnQgdGhlIFNlc3Npb25TdG9yYWdlIGZvciBlYWNoIHRhYiBhbmQgYSBz
aW5nbGUKKy8vIFN0b3JhZ2VOYW1lc3BhY2UgdG8gcmVwcmVzZW50IExvY2FsU3RvcmFnZSBmb3Ig
dGhlIGVudGlyZSBicm93c2VyLgorY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZSB7CitwdWJsaWM6
CisgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2UuIExvY2FsU3RvcmFnZU5h
bWVzcGFjZXMgcmVxdWlyZSBhIHBhdGggdG8gc3BlY2lmeQorICAgIC8vIHdoZXJlIHRoZSBTUUxp
dGUgZGF0YWJhc2VzIHRoYXQgbWFrZSBMb2NhbFN0b3JhZ2UgZGF0YSBwZXJzaXN0ZW50IGFyZSBs
b2NhdGVkLgorICAgIC8vIElmIHBhdGggaXMgZW1wdHksIGRhdGEgd2lsbCBub3QgcGVyc2lzdC4g
WW91IHNob3VsZCBjYWxsIGRlbGV0ZSBvbiB0aGUgcmV0dXJuZWQKKyAgICAvLyBvYmplY3Qgd2hl
biB5b3UncmUgZmluaXNoZWQuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViU3RvcmFnZU5hbWVz
cGFjZSogY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKGNvbnN0IFdlYlN0cmluZyYgYmFja2lu
Z0RpcmVjdG9yeVBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBX
ZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgpOworCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG5vUXVvdGEgPSBVSU5UX01BWDsKKworICAgIHZpcnR1
YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KKworICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJT
dG9yYWdlQXJlYSBvYmplY3QuIFR3byBzdWJzZXF1ZW50IGNhbGxzIHdpdGggdGhlIHNhbWUgb3Jp
Z2luCisgICAgLy8gd2lsbCByZXR1cm4gdHdvIGRpZmZlcmVudCBXZWJTdG9yYWdlQXJlYSBvYmpl
Y3RzIHRoYXQgc2hhcmUgdGhlIHNhbWUgYmFja2luZyBzdG9yZS4KKyAgICAvLyBZb3Ugc2hvdWxk
IGNhbGwgZGVsZXRlIG9uIHRoZSByZXR1cm5lZCBvYmplY3Qgd2hlbiB5b3UncmUgZmluaXNoZWQu
CisgICAgdmlydHVhbCBXZWJTdG9yYWdlQXJlYSogY3JlYXRlU3RvcmFnZUFyZWEoY29uc3QgV2Vi
U3RyaW5nJiBvcmlnaW4pID0gMDsKKworICAgIC8vIENvcHkgYSBTdG9yYWdlTmFtZXNwYWNlLiBU
aGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIGNhc2Ugb2YgU2Vzc2lvblN0b3JhZ2UuCisgICAg
dmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjb3B5KCkgPSAwOworCisgICAgLy8gU2h1dGRv
d24gdGhlIFN0b3JhZ2VOYW1lc3BhY2UuIFdyaXRlIGFsbCBTdG9yYWdlQXJlYSdzIHRvIGRpc2sg
YW5kIGRpc2FsbG93IG5ldworICAgIC8vIHdyaXRlIGFjdGl2aXR5LgorICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViU3RvcmFnZU5hbWVzcGFjZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42785</attachid>
            <date>2009-11-09 12:44:04 -0800</date>
            <delta_ts>2009-11-09 14:19:45 -0800</delta_ts>
            <desc>WebScreenInfo to WebSharedWorkerRepo</desc>
            <filename>apiS.diff</filename>
            <type>text/plain</type>
            <size>30781</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhkN2ViNGQuLmM4ODI3NDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDM1IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
VXBzdHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEk6IFdlYlNjcmVlbkluZm8gdG8gV2Vi
U2hhcmVkV29ya2VyUmVwby4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJTY3JlZW5JbmZvLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JlZW5JbmZvOjpXZWJTY3JlZW5JbmZvKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViU2NyaXB0U291cmNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jp
cHRTb3VyY2U6OldlYlNjcmlwdFNvdXJjZSk6CisgICAgICAgICogcHVibGljL1dlYlNlYXJjaGFi
bGVGb3JtRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoYWJsZUZvcm1E
YXRhOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VhcmNoYWJsZUZvcm1EYXRhOjp1
cmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWFyY2hhYmxlRm9ybURhdGE6OmVuY29kaW5nKToK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VjdXJpdHlPcmlnaW46OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYlNlY3VyaXR5
UG9saWN5Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6On5XZWJTZXR0aW5ncyk6CisgICAgICAgICog
cHVibGljL1dlYlNoYXJlZFdvcmtlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyOjp+V2ViU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oOiBBZGRlZC4KKworMjAwOS0xMS0wOSAgWWFhciBTY2huaXRtYW4g
IDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKwogICAgICAgICBVcHN0cmVhbWluZyB0aGUgQ2hyb21pdW0gV2ViS2l0IEFQSTogV2ViU29j
a2V0cyBhbmQgV2ViU3RvcmFnZS4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjgzOTQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2NyZWVuSW5mby5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkMjY4YQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9faAorI2RlZmluZSBXZWJTY3JlZW5JbmZvX2gKKwor
I2luY2x1ZGUgIldlYlJlY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJT
Y3JlZW5JbmZvIHsKKyAgICAvLyBUaGUgc2NyZWVuIGRlcHRoIGluIGJpdHMgcGVyIHBpeGVsCisg
ICAgaW50IGRlcHRoOworCisgICAgLy8gVGhlIGJpdHMgcGVyIGNvbG91ciBjb21wb25lbnQuIFRo
aXMgYXNzdW1lcyB0aGF0IHRoZSBjb2xvdXJzIGFyZSBiYWxhbmNlZAorICAgIC8vIGVxdWFsbHku
CisgICAgaW50IGRlcHRoUGVyQ29tcG9uZW50OworCisgICAgLy8gVGhpcyBjYW4gYmUgdHJ1ZSBm
b3IgYmxhY2sgYW5kIHdoaXRlIHByaW50ZXJzCisgICAgYm9vbCBpc01vbm9jaHJvbWU7CisKKyAg
ICAvLyBUaGlzIGlzIHNldCBmcm9tIHRoZSByY01vbml0b3IgbWVtYmVyIG9mIE1PTklUT1JJTkZP
RVgsIHRvIHdoaXQ6CisgICAgLy8gICAiQSBSRUNUIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyB0
aGUgZGlzcGxheSBtb25pdG9yIHJlY3RhbmdsZSwKKyAgICAvLyAgIGV4cHJlc3NlZCBpbiB2aXJ0
dWFsLXNjcmVlbiBjb29yZGluYXRlcy4gTm90ZSB0aGF0IGlmIHRoZSBtb25pdG9yCisgICAgLy8g
ICBpcyBub3QgdGhlIHByaW1hcnkgZGlzcGxheSBtb25pdG9yLCBzb21lIG9mIHRoZSByZWN0YW5n
bGUncworICAgIC8vICAgY29vcmRpbmF0ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcy4iCisgICAg
V2ViUmVjdCByZWN0OworCisgICAgLy8gVGhpcyBpcyBzZXQgZnJvbSB0aGUgcmNXb3JrIG1lbWJl
ciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgorICAgIC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUg
dGhhdCBzcGVjaWZpZXMgdGhlIHdvcmsgYXJlYSByZWN0YW5nbGUgb2YgdGhlCisgICAgLy8gICBk
aXNwbGF5IG1vbml0b3IgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMsIGV4cHJlc3Nl
ZCBpbgorICAgIC8vICAgdmlydHVhbC1zY3JlZW4gY29vcmRpbmF0ZXMuIFdpbmRvd3MgdXNlcyB0
aGlzIHJlY3RhbmdsZSB0bworICAgIC8vICAgbWF4aW1pemUgYW4gYXBwbGljYXRpb24gb24gdGhl
IG1vbml0b3IuIFRoZSByZXN0IG9mIHRoZSBhcmVhIGluCisgICAgLy8gICByY01vbml0b3IgY29u
dGFpbnMgc3lzdGVtIHdpbmRvd3Mgc3VjaCBhcyB0aGUgdGFzayBiYXIgYW5kIHNpZGUKKyAgICAv
LyAgIGJhcnMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvciBpcyBub3QgdGhlIHByaW1hcnkgZGlz
cGxheSBtb25pdG9yLAorICAgIC8vICAgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0
ZXMgbWF5IGJlIG5lZ2F0aXZlIHZhbHVlcyIuCisgICAgV2ViUmVjdCBhdmFpbGFibGVSZWN0Owor
CisgICAgV2ViU2NyZWVuSW5mbygpCisgICAgICAgIDogZGVwdGgoMCkKKyAgICAgICAgLCBkZXB0
aFBlckNvbXBvbmVudCgwKQorICAgICAgICAsIGlzTW9ub2Nocm9tZShmYWxzZSkgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2NyaXB0Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU0YmIwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNjcmlwdENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JpcHRDb250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViU2NyaXB0Q29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKworbmFtZXNwYWNlIHY4IHsKK2NsYXNzIEV4dGVuc2lvbjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViU2NyaXB0Q29udHJv
bGxlciB7CitwdWJsaWM6CisgICAgLy8gUmVnaXN0ZXJzIGEgdjggZXh0ZW5zaW9uIHRvIGJlIGF2
YWlsYWJsZSBvbiB3ZWJwYWdlcy4gVGhlIHRocmVlIGZvcm1zCisgICAgLy8gb2ZmZXIgdmFyaW91
cyByZXN0cmljdGlvbnMgb24gd2hhdCB0eXBlcyBvZiBjb250ZXh0cyB0aGUgZXh0ZW5zaW9uIGlz
CisgICAgLy8gbG9hZGVkIGludG8uIElmIGEgc2NoZW1lIGlzIHByb3ZpZGVkLCBvbmx5IHBhZ2Vz
IHdob3NlIFVSTCBoYXMgdGhlIGdpdmVuCisgICAgLy8gc2NoZW1lIHdpbGwgbWF0Y2guIElmIGV4
dGVuc2lvbkdyb3VwIGlzIHByb3ZpZGVkLCB0aGUgZXh0ZW5zaW9uIHdpbGwgb25seQorICAgIC8v
IGJlIGxvYWRlZCBpbnRvIHNjcmlwdHMgcnVuIHZpYSBXZWJGcmFtZTo6RXhlY3V0ZUluTmV3V29y
bGQgd2l0aCB0aGUKKyAgICAvLyBtYXRjaGluZyBncm91cC4KKyAgICAvLyBXaWxsIG9ubHkgYWZm
ZWN0IHY4IGNvbnRleHRzIGluaXRpYWxpemVkIGFmdGVyIHRoaXMgY2FsbC4gVGFrZXMgb3duZXJz
aGlwCisgICAgLy8gb2YgdGhlIHY4OjpFeHRlbnNpb24gb2JqZWN0IHBhc3NlZC4KKyAgICBXRUJL
SVRfQVBJIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qKTsKKyAg
ICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24q
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBzY2hlbWVSZXN0cmljdGlvbik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiwgaW50IGV4dGVuc2lvbkdyb3VwKTsKKwor
ICAgIC8vIEVuYWJsZXMgc3BlY2lhbCBzZXR0aW5ncyB3aGljaCBhcmUgb25seSBhcHBsaWNhYmxl
IGlmIFY4IGlzIGV4ZWN1dGVkCisgICAgLy8gaW4gdGhlIHNpbmdsZSB0aHJlYWQgd2hpY2ggbXVz
dCBiZSB0aGUgbWFpbiB0aHJlYWQuCisgICAgLy8gRklYTUU6IG1ha2UgYSB0cnkgdG8gZHluYW1p
Y2FsbHkgZGV0ZWN0IHdoZW4gdGhpcyBjb25kaXRpb24gaXMgYnJva2VuCisgICAgLy8gYW5kIGF1
dG9tYXRpY2FsbHkgc3dpdGNoIG9mZiBzaW5nbGUgdGhyZWFkIG1vZGUuCisgICAgV0VCS0lUX0FQ
SSBzdGF0aWMgdm9pZCBlbmFibGVWOFNpbmdsZVRocmVhZE1vZGUoKTsKKworICAgIC8vIFByb2Nl
c3MgYW55IHBlbmRpbmcgSmF2YVNjcmlwdCBjb25zb2xlIG1lc3NhZ2VzLgorICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgZmx1c2hDb25zb2xlTWVzc2FnZXMoKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJTY3JpcHRDb250cm9sbGVyKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdFNvdXJjZS5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRTb3VyY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDQ4MTViCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRTb3VyY2UuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTY3JpcHRTb3VyY2VfaAorI2RlZmluZSBXZWJTY3JpcHRTb3VyY2VfaAorCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdHJ1Y3QgV2ViU2NyaXB0U291cmNlIHsKKyAgICBXZWJTdHJpbmcgY29kZTsKKyAgICBX
ZWJVUkwgdXJsOworICAgIGludCBzdGFydExpbmU7CisKKyAgICBXZWJTY3JpcHRTb3VyY2UoY29u
c3QgV2ViU3RyaW5nJiBjb2RlKQorICAgICAgICA6IGNvZGUoY29kZSksIHN0YXJ0TGluZSgxKSB7
IH0KKyAgICBXZWJTY3JpcHRTb3VyY2UoY29uc3QgV2ViU3RyaW5nJiBjb2RlLCBjb25zdCBXZWJV
UkwmIHVybCkKKyAgICAgICAgOiBjb2RlKGNvZGUpLCB1cmwodXJsKSwgc3RhcnRMaW5lKDEpIHsg
fQorICAgIFdlYlNjcmlwdFNvdXJjZShjb25zdCBXZWJTdHJpbmcmIGNvZGUsIGNvbnN0IFdlYlVS
TCYgdXJsLCBpbnQgc3RhcnRMaW5lKQorICAgICAgICA6IGNvZGUoY29kZSksIHVybCh1cmwpLCBz
dGFydExpbmUoc3RhcnRMaW5lKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VhcmNoYWJsZUZv
cm1EYXRhLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NTMzODcKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5oCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNlYXJjaGFibGVGb3JtRGF0YV9oCisjZGVmaW5lIFdl
YlNlYXJjaGFibGVGb3JtRGF0YV9oCisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRl
ICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGb3JtRWxlbWVudDsK
KworLy8gU2VhcmNoYWJsZUZvcm1EYXRhIGVuY2Fwc3VsYXRlcyBhIFVSTCBhbmQgZW5jb2Rpbmcg
b2YgYW4gSU5QVVQgZmllbGQgdGhhdAorLy8gY29ycmVzcG9uZHMgdG8gYSBzZWFyY2hhYmxlIGZv
cm0gcmVxdWVzdC4KK2NsYXNzIFdlYlNlYXJjaGFibGVGb3JtRGF0YSB7CitwdWJsaWM6CisgICAg
Ly8gSWYgdGhlIHByb3ZpZGVkIGZvcm0gaXMgc3VpdGFibGUgZm9yIGF1dG9tYXRlZCBzZWFyY2hp
bmcsIGlzVmFsaWQoKQorICAgIC8vIHdpbGwgcmV0dXJuIGZhbHNlLgorICAgIFdlYlNlYXJjaGFi
bGVGb3JtRGF0YShjb25zdCBXZWJGb3JtRWxlbWVudCYpOworCisgICAgYm9vbCBpc1ZhbGlkKCkg
eyByZXR1cm4gbV91cmwuaXNWYWxpZCgpOyB9CisKKyAgICAvLyBVUkwgZm9yIHRoZSBzZWFyY2hh
YmxlIGZvcm0gcmVxdWVzdC4KKyAgICBjb25zdCBXZWJVUkwmIHVybCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV91cmw7CisgICAgfQorCisgICAgLy8gRW5jb2RpbmcgdXNlZCB0byBl
bmNvZGUgdGhlIGZvcm0gcGFyYW1ldGVyczsgbmV2ZXIgZW1wdHkuCisgICAgY29uc3QgV2ViU3Ry
aW5nJiBlbmNvZGluZygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lbmNvZGluZzsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViVVJMIG1fdXJsOworICAgIFdlYlN0cmluZyBtX2Vu
Y29kaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmQwNGZiYzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2Vj
dXJpdHlPcmlnaW5faAorI2RlZmluZSBXZWJTZWN1cml0eU9yaWdpbl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBTZWN1cml0eU9yaWdpbjsgfQorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZTsKK2NsYXNzIFdlYlN0cmluZzsK
KworY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW4geworcHVibGljOgorICAgIH5XZWJTZWN1cml0eU9y
aWdpbigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViU2VjdXJpdHlPcmlnaW4oKSA6IG1fcHJpdmF0
ZSgwKSB7IH0KKyAgICBXZWJTZWN1cml0eU9yaWdpbihjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYg
cykgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24ocyk7IH0KKyAgICBXZWJTZWN1cml0eU9yaWdpbiYg
b3BlcmF0b3I9KGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBzKQorICAgIHsKKyAgICAgICAgYXNz
aWduKHMpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0FQSSB2
b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRl
OyB9CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBwcm90b2NvbCgpIGNvbnN0OworICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHVuc2lnbmVk
IHNob3J0IHBvcnQoKSBjb25zdDsKKworICAgIC8vIFRoZSBlbXB0eSBXZWJTZWN1cml0eU9yaWdp
biBpcyB0aGUgbGVhc3QgcHJpdmlsZWdlZCBXZWJTZWN1cml0eU9yaWdpbi4KKyAgICBXRUJLSVRf
QVBJIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyBhIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgV2ViU2VjdXJpdHlPcmlnaW4uICBUaGUgZW1wdHkKKyAgICAvLyBX
ZWJTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCBieSAibnVsbCIuICBUaGUgcmVwcmVzZW50
YXRpb24gb2YgYQorICAgIC8vIG5vbi1lbXB0eSBXZWJTZWN1cml0eU9yaWdpbiByZXNlbWJsZXMg
YSBzdGFuZGFyZCBVUkwuCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBXZWJT
ZWN1cml0eU9yaWdpbiB0aGF0IGNhbgorICAgIC8vIGJlIHVzZWQgYXMgYSBmaWxlLiAgU2hvdWxk
IGJlIHVzZWQgaW4gc3RvcmFnZSBBUElzIG9ubHkuCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBX
ZWJTZWN1cml0eU9yaWdpbihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+Jik7CisgICAgV2ViU2VjdXJpdHlPcmlnaW4mIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPigpIGNvbnN0OworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgdm9pZCBhc3NpZ24oV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKik7CisgICAg
V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNlY3VyaXR5UG9saWN5LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5UG9s
aWN5LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDdkZmU4NwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VjdXJpdHlQb2xpY3kuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTZWN1cml0eVBvbGljeV9oCisjZGVmaW5lIFdlYlNl
Y3VyaXR5UG9saWN5X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOworCitjbGFzcyBXZWJTZWN1
cml0eVBvbGljeSB7CitwdWJsaWM6CisgICAgLy8gUmVnaXN0ZXJzIGEgVVJMIHNjaGVtZSB0byBi
ZSB0cmVhdGVkIGFzIGEgbG9jYWwgc2NoZW1lIChpLmUuLCB3aXRoIHRoZQorICAgIC8vIHNhbWUg
c2VjdXJpdHkgcnVsZXMgYXMgdGhvc2UgYXBwbGllZCB0byAiZmlsZSIgVVJMcykuICBUaGlzIG1l
YW5zIHRoYXQKKyAgICAvLyBub3JtYWwgcGFnZXMgY2Fubm90IGxpbmsgdG8gb3IgYWNjZXNzIFVS
THMgb2YgdGhpcyBzY2hlbWUuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUFzTG9jYWwoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICAvLyBSZWdpc3RlcnMgYSBV
Ukwgc2NoZW1lIHRvIGJlIHRyZWF0ZWQgYXMgYSBub0FjY2VzcyBzY2hlbWUuICBUaGlzIG1lYW5z
CisgICAgLy8gdGhhdCBwYWdlcyBsb2FkZWQgd2l0aCB0aGlzIFVSTCBzY2hlbWUgY2Fubm90IGFj
Y2VzcyBwYWdlcyBsb2FkZWQgd2l0aAorICAgIC8vIGFueSBvdGhlciBVUkwgc2NoZW1lLgorICAg
IFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0
IFdlYlN0cmluZyYpOworCisgICAgLy8gU3VwcG9ydCBmb3Igd2hpdGVsaXN0aW5nIGFjY2VzcyB0
byBvcmlnaW5zIGJleW9uZCB0aGUgc2FtZS1vcmlnaW4gcG9saWN5LgorICAgIFdFQktJVF9BUEkg
c3RhdGljIHZvaWQgd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbigKKyAgICAgICAgY29uc3QgV2Vi
VVJMJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFdlYlN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwK
KyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisKK3ByaXZhdGU6CisgICAgV2ViU2VjdXJpdHlQb2xpY3ko
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM0
MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNldHRpbmdzX2gKKyNkZWZpbmUgV2ViU2V0
dGluZ3NfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYlNldHRpbmdzIGlzIG93
bmVkIGJ5IHRoZSBXZWJWaWV3IGFuZCBhbGxvd3MgY29kZSB0byBtb2RpZnkgdGhlIHNldHRpbmdz
IGZvcgorLy8gdGhlIFdlYlZpZXcncyBwYWdlIHdpdGhvdXQgYW55IGtub3dsZWRnZSBvZiBXZWJD
b3JlIGl0c2VsZi4gIEZvciB0aGUgbW9zdCBwYXJ0LAorLy8gdGhlc2UgZnVuY3Rpb25zIGhhdmUg
YSAxOjEgbWFwcGluZyB3aXRoIHRoZSBtZXRob2RzIGluIFdlYkNvcmUvcGFnZS9zZXR0aW5ncy5o
LgorY2xhc3MgV2ViU2V0dGluZ3MgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgV2ViU3RyaW5nJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBXZWJTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRGb250U2l6ZShpbnQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdEZpeGVkRm9udFNpemUoaW50KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldE1pbmltdW1Gb250U2l6ZShpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWluaW11bUxvZ2ljYWxGb250U2l6ZShpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoY29uc3QgV2ViU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRKYXZhU2NyaXB0RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFdlYlNlY3VyaXR5RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRQbHVnaW5zRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERP
TVBhc3RlQWxsb3dlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaHJpbmtzU3RhbmRh
bG9uZUltYWdlc1RvRml0KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlc0VuY29k
aW5nRGV0ZWN0b3IoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0QXJlYXNBcmVS
ZXNpemFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRKYXZhRW5hYmxlZChib29s
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25z
dCBXZWJVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXNQYWdlQ2FjaGUoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0YWJsZUxpbmtCZWhhdmlvck5ldmVyTGl2ZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udFJlbmRlcmluZ01vZGVOb3JtYWwoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFycyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlc0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JO
ZXZlckluY2x1ZGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlcmlt
ZW50YWxXZWJHTEVuYWJsZWQoYm9vbCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYlNldHRp
bmdzKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlci5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YWM3NjM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTaGFyZWRXb3JrZXIuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTaGFyZWRX
b3JrZXJfaAorI2RlZmluZSBXZWJTaGFyZWRXb3JrZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWw7CitjbGFzcyBXZWJDb21tb25Xb3JrZXJDbGllbnQ7CitjbGFzcyBX
ZWJVUkw7CisKKy8vIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byBhIFNoYXJlZFdvcmtlciB0aHJl
YWQuCisvLyBTaW5jZSBTaGFyZWRXb3JrZXJzIGNvbW11bmljYXRlIGVudGlyZWx5IHRocm91Z2gg
TWVzc2FnZVBvcnRzIHRoaXMgaW50ZXJmYWNlIG9ubHkgY29udGFpbnMgQVBJcyBmb3Igc3RhcnRp
bmcgdXAgYSBTaGFyZWRXb3JrZXIuCitjbGFzcyBXZWJTaGFyZWRXb3JrZXIgeworcHVibGljOgor
ICAgIC8vIEludm9rZWQgZnJvbSB0aGUgd29ya2VyIHRocmVhZCB0byBpbnN0YW50aWF0ZSBhIFdl
YlNoYXJlZFdvcmtlciB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBXZWJLaXQgd29ya2VyIGNvbXBv
bmVudHMuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViU2hhcmVkV29ya2VyKiBjcmVhdGUoV2Vi
Q29tbW9uV29ya2VyQ2xpZW50Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJTaGFyZWRXb3JrZXIoKSB7
fTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHRocmVhZCBoYXNuJ3QgYmVlbiBzdGFy
dGVkIHlldCAoc2NyaXB0IGxvYWRpbmcgaGFzIG5vdCB0YWtlbiBwbGFjZSkuCisgICAgLy8gRklY
TUUoYXR3aWxzb24pOiBSZW1vdmUgdGhpcyB3aGVuIHdlIG1vdmUgdGhlIGluaXRpYWwgc2NyaXB0
IGxvYWRpbmcgaW50byB0aGUgd29ya2VyIHByb2Nlc3MuCisgICAgdmlydHVhbCBib29sIGlzU3Rh
cnRlZCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3Qg
V2ViVVJMJiBzY3JpcHRVUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHVzZXJBZ2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSkgPSAwOworICAgIGNsYXNzIENv
bm5lY3RMaXN0ZW5lciB7CisgICAgcHVibGljOgorICAgICAgICAvLyBJbnZva2VkIG9uY2UgdGhl
IGNvbm5lY3QgZXZlbnQgaGFzIGJlZW4gc2VudCBzbyB0aGUgY2FsbGVyIGNhbiBmcmVlIHRoaXMg
b2JqZWN0LgorICAgICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGVkKCkgPSAwOworICAgIH07CisK
KyAgICAvLyBTZW5kcyBhIGNvbm5lY3QgZXZlbnQgdG8gdGhlIFNoYXJlZFdvcmtlciBjb250ZXh0
LiBUaGUgbGlzdGVuZXIgaXMgaW52b2tlZCB3aGVuIHRoaXMgYXN5bmMgb3BlcmF0aW9uIGNvbXBs
ZXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChXZWJNZXNzYWdlUG9ydENoYW5uZWwqLCBD
b25uZWN0TGlzdGVuZXIqKSA9IDA7CisKKyAgICAvLyBJbnZva2VkIHRvIHNodXRkb3duIHRoZSB3
b3JrZXIgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBhc3NvY2lhdGVkIGRvY3VtZW50cy4KKyAgICB2
aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyQ29udGV4dCgpID0gMDsKKworICAgIC8vIE5vdGlm
aWNhdGlvbiB3aGVuIHRoZSBXZWJDb21tb25Xb3JrZXJDbGllbnQgaXMgZGVzdHJveWVkLgorICAg
IHZpcnR1YWwgdm9pZCBjbGllbnREZXN0cm95ZWQoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlmZTY4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5X2gKKyNkZWZpbmUgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeV9oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlN0cmluZzsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlcjsKK2NsYXNzIFdlYlVSTDsKKworY2xhc3Mg
V2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeSB7CitwdWJsaWM6CisgICAgLy8gVW5pcXVlIGlkZW50
aWZpZXIgZm9yIHRoZSBwYXJlbnQgZG9jdW1lbnQgb2YgYSB3b3JrZXIgKHVuaXF1ZSB3aXRoaW4g
YSBnaXZlbiBwcm9jZXNzKS4KKyAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBEb2N1bWVu
dElEOworCisgICAgLy8gVHJhY2tzIGEgbmV3bHktY3JlYXRlZCBTaGFyZWRXb3JrZXIgdmlhIHRo
ZSByZXBvc2l0b3J5LgorICAgIHZpcnR1YWwgdm9pZCBhZGRTaGFyZWRXb3JrZXIoV2ViU2hhcmVk
V29ya2VyKiwgRG9jdW1lbnRJRCkgPSAwOworCisgICAgLy8gSW52b2tlZCB3aGVuIGEgZG9jdW1l
bnQgaGFzIGJlZW4gZGV0YWNoZWQuIERvY3VtZW50SUQgY2FuIGJlIHJlLXVzZWQgYWZ0ZXIgZG9j
dW1lbnREZXRhY2hlZCgpIGlzIGludm9rZWQuCisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGV0
YWNoZWQoRG9jdW1lbnRJRCkgPSAwOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNz
ZWQgZG9jdW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIGFueSBTaGFyZWRXb3JrZXJzLgorICAgIHZp
cnR1YWwgYm9vbCBoYXNTaGFyZWRXb3JrZXJzKERvY3VtZW50SUQpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeV9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42787</attachid>
            <date>2009-11-09 13:04:21 -0800</date>
            <delta_ts>2009-11-09 13:30:55 -0800</delta_ts>
            <desc>WebDevTools*.h &amp; WebDrag*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19985</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2ODApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMzAgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBXZWJEZXZUb29scyouaCBhbmQgV2ViRHJh
ZyouaCBDaHJvbWl1bSBBUEkgaGVhZGVycy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29s
c0FnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50Ojp+V2Vi
RGV2VG9vbHNBZ2VudCk6CisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzQWdlbnRDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRDbGllbnQ6On5XZWJE
ZXZUb29sc0FnZW50Q2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVu
ZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZDo6fldlYkRl
dlRvb2xzRnJvbnRlbmQpOgorICAgICAgICAqIHB1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50
OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudDo6fldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAq
IHB1YmxpYy9XZWJEcmFnRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0Rh
dGE6On5XZWJEcmFnRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpXZWJEcmFn
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6aXNOdWxsKToKKyAgICAgICAgKiBwdWJsaWMvV2ViRHJh
Z09wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6KToKKworMjAwOS0xMS0wOSAg
TmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IERpbWl0cmkgR2xhemtvdi4KIAogICAgICAgICBVcHN0cmVhbSBXZWJEYXRhKi5oIENocm9taXVt
IEFQSSBmaWxlcy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ09wZXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ09wZXJhdGlv
bi5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnT3BlcmF0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpZm5kZWYgV2ViRHJhZ09wZXJhdGlvbl9oCisjZGVmaW5lIFdlYkRyYWdPcGVyYXRp
b25faAorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyAi
VmVyYiIgb2YgYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbiBhcyBuZWdvdGlhdGVkIGJldHdlZW4g
dGhlIHNvdXJjZSBhbmQKKy8vIGRlc3RpbmF0aW9uLgorLy8gKFRoZXNlIGNvbnN0YW50cyBtYXRj
aCB0aGVpciBlcXVpdmFsZW50cyBpbiBXZWJDb3JlJ3MgRHJhZ0FjdGlvbnMuaCBhbmQKKy8vIHNo
b3VsZCBub3QgYmUgcmVudW1iZXJlZC4pCitlbnVtIFdlYkRyYWdPcGVyYXRpb24geworICAgIFdl
YkRyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKKyAgICBXZWJEcmFnT3BlcmF0aW9uQ29weSAgICA9
IDEsCisgICAgV2ViRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAorICAgIFdlYkRyYWdPcGVyYXRp
b25HZW5lcmljID0gNCwKKyAgICBXZWJEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCisgICAgV2Vi
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKKyAgICBXZWJEcmFnT3BlcmF0aW9uRGVsZXRlICA9
IDMyLAorICAgIFdlYkRyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKK307CisKKy8vIEFs
dGVybmF0ZSB0eXBlZGVmIHRvIG1ha2UgaXQgY2xlYXIgd2hlbiB0aGlzIGlzIGJlaW5nIHVzZWQg
YXMgYSBtYXNrCisvLyB3aXRoIHBvdGVudGlhbGx5IG11bHRpcGxlIHZhbHVlIGJpdHMgc2V0Lgor
dHlwZWRlZiBXZWJEcmFnT3BlcmF0aW9uIFdlYkRyYWdPcGVyYXRpb25zTWFzazsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0Zyb250ZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZUb29sc0Zyb250ZW5kLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViRGV2VG9vbHNGcm9udGVuZF9oCisjZGVmaW5lIFdlYkRldlRvb2xzRnJvbnRl
bmRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OworY2xhc3MgV2ViU3RyaW5nOworY2xhc3Mg
V2ViVmlldzsKKworLy8gV2ViRGV2VG9vbHNGcm9udGVuZCByZXByZXNlbnRzIERldlRvb2xzIGNs
aWVudCBzaXR0aW5nIGluIHRoZSBHbHVlLiBJdCBwcm92aWRlcworLy8gZGlyZWN0IGFuZCBkZWxl
Z2F0ZSBBcGlzIHRvIHRoZSBob3N0LgorY2xhc3MgV2ViRGV2VG9vbHNGcm9udGVuZCB7CitwdWJs
aWM6CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRGV2VG9vbHNGcm9udGVuZCogY3JlYXRlKFdl
YlZpZXcqIHZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBhcHBs
aWNhdGlvbkxvY2FsZSk7CisKKyAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc0Zyb250ZW5kKCkge30K
KworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tQWdlbnQoY29uc3QgV2ViU3Ry
aW5nJiBjbGFzc05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIG1ldGhvZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhcmFtMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGFyYW0yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBw
YXJhbTMpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50Q2xp
ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldlRvb2xzQWdl
bnRDbGllbnRfaAorI2RlZmluZSBXZWJEZXZUb29sc0FnZW50Q2xpZW50X2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0cmluZzsKKwor
Y2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJTdHJpbmcmIGNsYXNzTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWV0aG9k
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBwYXJhbTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJTdHJpbmcmIHBhcmFtMykgPSAwOworCisgICAgLy8gSW52YWxpZGF0ZXMg
d2lkZ2V0IHdoaWNoIGxlYWRzIHRvIHRoZSByZXBhaW50LgorICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZVJlcGFpbnQoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBl
bnRpdHkgaG9zdGluZyB0aGlzIGFnZW50LgorICAgIHZpcnR1YWwgaW50IGhvc3RJZGVudGlmaWVy
KCkgPSAwOworCisgICAgLy8gTm90aWZpZXMgaG9zdCB1cG9uIHJ1bnRpbWUgZmVhdHVyZSBiZWlu
ZyBlbmFibGVkL2Rpc2FibGVkLgorICAgIHZpcnR1YWwgdm9pZCBydW50aW1lRmVhdHVyZVN0YXRl
Q2hhbmdlZChjb25zdCBXZWJTdHJpbmcmIGZlYXR1cmUsIGJvb2wgZW5hYmxlZCkgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgfldlYkRldlRvb2xzQWdlbnRDbGllbnQoKSB7fQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudF9oCisj
ZGVmaW5lIFdlYkRldlRvb2xzRnJvbnRlbmRDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30KKworICAgIHZpcnR1
YWwgdm9pZCBzZW5kTWVzc2FnZVRvQWdlbnQoY29uc3QgV2ViU3RyaW5nJiBjbGFzc05hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG1ldGhv
ZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIHBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBwYXJhbTMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZERlYnVnZ2Vy
Q29tbWFuZFRvQWdlbnQoY29uc3QgV2ViU3RyaW5nJiBjb21tYW5kKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgYWN0aXZhdGVXaW5kb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlV2lu
ZG93KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkb2NrV2luZG93KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bmRvY2tXaW5kb3coKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5X
ZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEcmFnRGF0YV9oCisjZGVmaW5lIFdlYkRy
YWdEYXRhX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQor
bmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBX
ZWJEcmFnRGF0YVByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCisvLyBIb2xkcyBkYXRhIHRoYXQg
bWF5IGJlIGV4Y2hhbmdlZCB0aHJvdWdoIGEgZHJhZy1uLWRyb3Agb3BlcmF0aW9uLiAgSXQgaXMK
Ky8vIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJEcmFnRGF0YSBvYmplY3QuCitjbGFzcyBXZWJE
cmFnRGF0YSB7CitwdWJsaWM6CisgICAgfldlYkRyYWdEYXRhKCkgeyByZXNldCgpOyB9CisKKyAg
ICBXZWJEcmFnRGF0YSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkRyYWdEYXRhKGNvbnN0
IFdlYkRyYWdEYXRhJiBkKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihkKTsgfQorICAgIFdlYkRy
YWdEYXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViRHJhZ0RhdGEmIGQpCisgICAgeworICAgICAgICBh
c3NpZ24oZCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOworICAgIFdF
QktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViRHJhZ0RhdGEmKTsKKworICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0FQSSBXZWJV
UkwgdXJsKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwm
KTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHVybFRpdGxlKCkgY29uc3Q7CisgICAgV0VC
S0lUX0FQSSB2b2lkIHNldFVSTFRpdGxlKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgV0VCS0lU
X0FQSSBXZWJTdHJpbmcgZmlsZUV4dGVuc2lvbigpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9p
ZCBzZXRGaWxlRXh0ZW5zaW9uKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgV0VCS0lUX0FQSSBi
b29sIGhhc0ZpbGVOYW1lcygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBmaWxlTmFtZXMo
V2ViVmVjdG9yPFdlYlN0cmluZz4mKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0Rmls
ZU5hbWVzKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+Jik7CisgICAgV0VCS0lUX0FQSSB2b2lk
IGFwcGVuZFRvRmlsZU5hbWVzKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgcGxhaW5UZXh0KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFBsYWlu
VGV4dChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGh0bWxU
ZXh0KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldEhUTUxUZXh0KGNvbnN0IFdlYlN0
cmluZyYpOworCisgICAgV0VCS0lUX0FQSSBXZWJVUkwgaHRtbEJhc2VVUkwoKSBjb25zdDsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0SFRNTEJhc2VVUkwoY29uc3QgV2ViVVJMJik7CisKKyAgICBX
RUJLSVRfQVBJIFdlYlN0cmluZyBmaWxlQ29udGVudEZpbGVOYW1lKCkgY29uc3Q7CisgICAgV0VC
S0lUX0FQSSB2b2lkIHNldEZpbGVDb250ZW50RmlsZU5hbWUoY29uc3QgV2ViU3RyaW5nJik7CisK
KyAgICBXRUJLSVRfQVBJIFdlYkRhdGEgZmlsZUNvbnRlbnQoKSBjb25zdDsKKyAgICBXRUJLSVRf
QVBJIHZvaWQgc2V0RmlsZUNvbnRlbnQoY29uc3QgV2ViRGF0YSYpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgV2ViRHJhZ0RhdGEoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkNocm9taXVtRGF0YU9iamVjdD4mKTsKKyAgICBXZWJEcmFnRGF0YSYgb3BlcmF0b3I9KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7CisgICAg
b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdD4oKSBj
b25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWduKFdlYkRyYWdEYXRhUHJp
dmF0ZSopOworICAgIHZvaWQgZW5zdXJlTXV0YWJsZSgpOworICAgIFdlYkRyYWdEYXRhUHJpdmF0
ZSogbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0FnZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzQWdlbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2VG9vbHNBZ2VudF9oCisjZGVmaW5lIFdl
YkRldlRvb2xzQWdlbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKK2NsYXNzIFdlYlN0cmluZzsK
K2NsYXNzIFdlYlZpZXc7CitzdHJ1Y3QgV2ViUG9pbnQ7CisKK2NsYXNzIFdlYkRldlRvb2xzQWdl
bnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkRldlRvb2xzQWdlbnQqIGNy
ZWF0ZShXZWJWaWV3KiwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCopOworCisgICAgdmlydHVhbCB+
V2ViRGV2VG9vbHNBZ2VudCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2
aWdhdGUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250
ZW5kKGNvbnN0IFdlYlN0cmluZyYgY2xhc3NOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXRob2ROYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBw
YXJhbTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIHBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGFyYW0zKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdEVsZW1lbnRBdChjb25zdCBXZWJQb2ludCYpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRSdW50aW1lRmVhdHVyZUVuYWJsZWQoY29uc3QgV2ViU3RyaW5nJiBmZWF0dXJlLCBi
b29sIGVuYWJsZWQpID0gMDsKKworICAgIC8vIEFzeW5jaHJvbm91c2x5IGV4ZWN1dGVzIGRlYnVn
Z2VyIGNvbW1hbmQgaW4gdGhlIHJlbmRlciB0aHJlYWQuCisgICAgLy8gfGNhbGxlcklkZW50aWZp
ZXJ8IHdpbGwgYmUgdXNlZCBmb3Igc2VuZGluZyByZXNwb25zZS4KKyAgICBXRUJLSVRfQVBJIHN0
YXRpYyB2b2lkIGV4ZWN1dGVEZWJ1Z2dlckNvbW1hbmQoCisgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgY29tbWFuZCwgaW50IGNhbGxlcklkZW50aWZpZXIpOworCisgICAgdHlwZWRlZiB2b2lkICgq
TWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIpKCk7CisKKyAgICAvLyBJbnN0YWxscyBkaXNwYXRj
aCBoYW5kbGUgdGhhdCBpcyBnb2luZyB0byBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5CisgICAgLy8g
d2hpbGUgb24gYSBicmVha3BvaW50LgorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0TWVz
c2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIoTWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="24369"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42794</attachid>
            <date>2009-11-09 13:17:26 -0800</date>
            <delta_ts>2009-11-09 13:31:08 -0800</delta_ts>
            <desc>Remainder of WebE*.h and WebF*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>45643</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2ODEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSByZW1haW5kZXIgb2YgV2ViRSouaCBhbmQg
V2ViRiouaCBDaHJvbWl1bSBBUEkgaGVhZGVycy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJFZGl0
aW5nQWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbjo6fldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbik6CisgICAg
ICAgICogcHVibGljL1dlYkZpbmRPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJGaW5kT3B0aW9uczo6V2ViRmluZE9wdGlvbnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJGb250
Q2FjaGUuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6fldlYkZyYW1lKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpj
cmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6Y3JlYXRlV29y
a2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmNyZWF0ZVNoYXJlZFdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXllcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojp3aWxsQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6bG9hZFVSTEV4dGVybmFsbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVDbGllbnQ6OmNhbm5vdEhhbmRsZVJlcXVlc3RFcnJvcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lQ2xpZW50Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENvbXBsZXRlQ2xpZW50UmVkaXJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ3JlYXRlRGF0YVNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNs
aWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50OjpkaWRSZWNlaXZlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVDbGllbnQ6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpkaWRDcmVhdGVEb2N1bWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpkaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUNsaWVudDo6ZGlkRmFpbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNs
aWVudDo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpk
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNs
aWVudDo6ZGlkVXBkYXRlQ3VycmVudEhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lQ2xpZW50OjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUNsaWVudDo6ZGlkRmFpbFJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lQ2xpZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6YWxsb3dTY3JpcHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUNsaWVudDo6ZGlkRXhoYXVzdE1lbW9yeUF2YWlsYWJsZUZvclNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZERlc3Ryb3lTY3JpcHRDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENyZWF0ZUlzb2xhdGVkU2Ny
aXB0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VD
b250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdl
U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OnJlcG9ydEZp
bmRJblBhZ2VNYXRjaENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OnJl
cG9ydEZpbmRJblBhZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dDo6fldlYkZyYW1lQ2xpZW50KToKKwogMjAwOS0xMS0wOSAgWWFhciBTY2huaXRtYW4gIDx5YWFy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbmRPcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaW5kT3B0aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaW5kT3B0aW9uc19oCisjZGVmaW5lIFdlYkZpbmRP
cHRpb25zX2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gT3B0aW9ucyB1c2VkIHdoZW4gcGVyZm9ybWluZyBhIGZpbmQtaW4tcGFnZSBxdWVyeS4K
K3N0cnVjdCBXZWJGaW5kT3B0aW9ucyB7CisgICAgLy8gV2hldGhlciB0byBzZWFyY2ggZm9yd2Fy
ZCBvciBiYWNrd2FyZCB3aXRoaW4gdGhlIHBhZ2UuCisgICAgYm9vbCBmb3J3YXJkOworCisgICAg
Ly8gV2hldGhlciBzZWFyY2ggc2hvdWxkIGJlIGNhc2Utc2Vuc2l0aXZlLgorICAgIGJvb2wgbWF0
Y2hDYXNlOworCisgICAgLy8gV2hldGhlciB0aGlzIG9wZXJhdGlvbiBpcyB0aGUgZmlyc3QgcmVx
dWVzdCBvciBhIGZvbGxvdy11cC4KKyAgICBib29sIGZpbmROZXh0OworCisgICAgV2ViRmluZE9w
dGlvbnMoKQorICAgICAgICA6IGZvcndhcmQodHJ1ZSkKKyAgICAgICAgLCBtYXRjaENhc2UoZmFs
c2UpCisgICAgICAgICwgZmluZE5leHQoZmFsc2UpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZyYW1lX2gKKyNkZWZpbmUgV2ViRnJhbWVfaAor
CisjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3N0cnVjdCBO
UE9iamVjdDsKKworI2lmIFdFQktJVF9VU0lOR19WOAorbmFtZXNwYWNlIHY4IHsKK2NsYXNzIENv
bnRleHQ7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgTG9jYWw7Cit9CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJEYXRhU291cmNlOwor
Y2xhc3MgV2ViRm9ybUVsZW1lbnQ7CitjbGFzcyBXZWJIaXN0b3J5SXRlbTsKK2NsYXNzIFdlYklu
cHV0RWxlbWVudDsKK2NsYXNzIFdlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXI7CitjbGFz
cyBXZWJSYW5nZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViU3RyaW5nOwor
Y2xhc3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlZpZXc7CitzdHJ1
Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CitzdHJ1Y3QgV2ViRmluZE9wdGlvbnM7CitzdHJ1Y3QgV2Vi
UmVjdDsKK3N0cnVjdCBXZWJTY3JpcHRTb3VyY2U7CitzdHJ1Y3QgV2ViU2l6ZTsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CisKK2NsYXNzIFdlYkZyYW1lIHsKK3B1Ymxp
YzoKKyAgICAvLyBUaGUgdHdvIGZ1bmN0aW9ucyBiZWxvdyByZXRyaWV2ZSB0aGUgV2ViRnJhbWUg
aW5zdGFuY2VzIHJlbGF0aW5nIHRoZQorICAgIC8vIGN1cnJlbnRseSBleGVjdXRpbmcgSmF2YVNj
cmlwdC4gIFNpbmNlIEphdmFTY3JpcHQgY2FuIG1ha2UgZnVuY3Rpb24KKyAgICAvLyBjYWxscyBh
Y3Jvc3MgZnJhbWVzLCB0aG91Z2gsIHdlIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLgorICAgIC8v
CisgICAgLy8gRm9yIGV4YW1wbGUsIGltYWdpbmUgdGhhdCBhIEpTIGZ1bmN0aW9uIGluIGZyYW1l
IEEgY2FsbHMgYSBmdW5jdGlvbgorICAgIC8vIGluIGZyYW1lIEIsIHdoaWNoIGNhbGxzIG5hdGl2
ZSBjb2RlLCB3aGljaCB3YW50cyB0byBrbm93IHdoYXQgdGhlCisgICAgLy8gJ2FjdGl2ZScgZnJh
bWUgaXMuCisgICAgLy8KKyAgICAvLyBUaGUgJ2VudGVyZWQgY29udGV4dCcgaXMgdGhlIGNvbnRl
eHQgd2hlcmUgZXhlY3V0aW9uIGZpcnN0IGVudGVyZWQKKyAgICAvLyB0aGUgc2NyaXB0IGVuZ2lu
ZTsgdGhlIGNvbnRleHQgdGhhdCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBKUworICAgIC8vIGZ1
bmN0aW9uIHN0YWNrLiAgZnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpIHdvdWxkIHJldHVybiBmcmFt
ZSBBIGluCisgICAgLy8gb3VyIGV4YW1wbGUuCisgICAgLy8KKyAgICAvLyBUaGUgJ2N1cnJlbnQg
Y29udGV4dCcgaXMgdGhlIGNvbnRleHQgdGhlIEpTIGVuZ2luZSBpcyBjdXJyZW50bHkKKyAgICAv
LyBpbnNpZGUgb2Y7IHRoZSBjb250ZXh0IHRoYXQgaXMgYXQgdGhlIHRvcCBvZiB0aGUgSlMgZnVu
Y3Rpb24gc3RhY2suCisgICAgLy8gZnJhbWVGb3JDdXJyZW50Q29udGV4dCgpIHdvdWxkIHJldHVy
biBmcmFtZSBCIGluIG91ciBleGFtcGxlLgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkZyYW1l
KiBmcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRnJh
bWUqIGZyYW1lRm9yQ3VycmVudENvbnRleHQoKTsKKworCisgICAgLy8gQmFzaWMgcHJvcGVydGll
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
ICAgIC8vIFRoZSBuYW1lIG9mIHRoaXMgZnJhbWUuCisgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFt
ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIFRoZSB1cmwgb2YgdGhlIGRvY3VtZW50IGxvYWRlZCBp
biB0aGlzIGZyYW1lLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICAgLy8gZGF0YVNvdXJjZSgp
LT5yZXF1ZXN0KCkudXJsKCkuCisgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwor
CisgICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhl
IGRvY3VtZW50IGxvYWRlZCBpbgorICAgIC8vIHRoaXMgZnJhbWUuCisgICAgdmlydHVhbCBXZWJV
UkwgZmF2SWNvblVSTCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5T
ZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKKyAgICAvLyB0
aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCisgICAgdmlydHVhbCBXZWJVUkwgb3Bl
blNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QgPSAwOworCisKKyAgICAvLyBHZW9tZXRyeSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisgICAgLy8gTk9URTogVGhlc2Ugcm91dGluZXMgZG8gbm90IGZvcmNlIHBhZ2UgbGF5b3V0
IHNvIHRoZWlyIHJlc3VsdHMgbWF5CisgICAgLy8gbm90IGJlIGFjY3VyYXRlIGlmIHRoZSBwYWdl
IGxheW91dCBpcyBvdXQtb2YtZGF0ZS4KKworICAgIC8vIFRoZSBzY3JvbGwgb2Zmc2V0IGZyb20g
dGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZnJhbWUgaW4gcGl4ZWxzLgorICAgIHZpcnR1YWwg
V2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBUaGUgc2l6ZSBvZiB0
aGUgY29udGVudHMgYXJlYS4KKyAgICB2aXJ0dWFsIFdlYlNpemUgY29udGVudHNTaXplKCkgY29u
c3QgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSBwcmVmZXJyZWQgd2lkdGggb2Yg
dGhlIGNvbnRlbnQgY29udGFpbmVkIGluIHRoZQorICAgIC8vIGN1cnJlbnQgZG9jdW1lbnQuCisg
ICAgdmlydHVhbCBpbnQgY29udGVudHNQcmVmZXJyZWRXaWR0aCgpIGNvbnN0ID0gMDsKKworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVudHMgKG1pbnVzIHNjcm9sbGJhcnMpIGhhcyBu
b24temVybyBhcmVhLgorICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0
ID0gMDsKKworCisgICAgLy8gSGllcmFyY2h5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFJldHVybnMgdGhlIGNvbnRh
aW5pbmcgdmlldy4KKyAgICB2aXJ0dWFsIFdlYlZpZXcqIHZpZXcoKSBjb25zdCA9IDA7CisKKyAg
ICAvLyBSZXR1cm5zIHRoZSBmcmFtZSB0aGF0IG9wZW5lZCB0aGlzIGZyYW1lIG9yIDAgaWYgdGhl
cmUgaXMgbm9uZS4KKyAgICB2aXJ0dWFsIFdlYkZyYW1lKiBvcGVuZXIoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBwYXJlbnQgZnJhbWUgb3IgMCBpZiB0aGlzIGlzIGEgdG9wLW1v
c3QgZnJhbWUuCisgICAgdmlydHVhbCBXZWJGcmFtZSogcGFyZW50KCkgY29uc3QgPSAwOworCisg
ICAgLy8gUmV0dXJucyB0aGUgdG9wLW1vc3QgZnJhbWUgaW4gdGhlIGhpZXJhcmNoeSBjb250YWlu
aW5nIHRoaXMgZnJhbWUuCisgICAgdmlydHVhbCBXZWJGcmFtZSogdG9wKCkgY29uc3QgPSAwOwor
CisgICAgLy8gUmV0dXJucyB0aGUgZmlyc3QvbGFzdCBjaGlsZCBmcmFtZS4KKyAgICB2aXJ0dWFs
IFdlYkZyYW1lKiBmaXJzdENoaWxkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2ViRnJhbWUq
IGxhc3RDaGlsZCgpIGNvbnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIG5leHQvcHJldmlv
dXMgc2libGluZyBmcmFtZS4KKyAgICB2aXJ0dWFsIFdlYkZyYW1lKiBuZXh0U2libGluZygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkZyYW1lKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCA9
IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBuZXh0L3ByZXZpb3VzIGZyYW1lIGluICJmcmFtZSB0
cmF2ZXJzYWwgb3JkZXIiCisgICAgLy8gb3B0aW9uYWxseSB3cmFwcGluZyBhcm91bmQuCisgICAg
dmlydHVhbCBXZWJGcmFtZSogdHJhdmVyc2VOZXh0KGJvb2wgd3JhcCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgV2ViRnJhbWUqIHRyYXZlcnNlUHJldmlvdXMoYm9vbCB3cmFwKSBjb25zdCA9IDA7
CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjaGlsZCBmcmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZl
biBuYW1lLgorICAgIHZpcnR1YWwgV2ViRnJhbWUqIGZpbmRDaGlsZEJ5TmFtZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUpIGNvbnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIGNoaWxkIGZyYW1l
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHhwYXRoIGV4cHJlc3Npb24uCisgICAgdmlydHVhbCBX
ZWJGcmFtZSogZmluZENoaWxkQnlFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgeHBhdGgpIGNv
bnN0ID0gMDsKKworCisgICAgLy8gQ29udGVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgdm9pZCBmb3Jt
cyhXZWJWZWN0b3I8V2ViRm9ybUVsZW1lbnQ+JikgY29uc3QgPSAwOworCisKKyAgICAvLyBTY3Jp
cHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisgICAgLy8gUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJy
ZW50IGRvY3VtZW50LgorICAgIHZpcnR1YWwgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmln
aW4oKSBjb25zdCA9IDA7CisKKyAgICAvLyBUaGlzIGdyYW50cyB0aGUgY3VycmVudGx5IGxvYWRl
ZCBkb2N1bWVudCBhY2Nlc3MgdG8gYWxsIHNlY3VyaXR5CisgICAgLy8gb3JpZ2lucyAoaW5jbHVk
aW5nIGZpbGUgVVJMcykuICBVc2Ugd2l0aCBjYXJlLiAgVGhlIGFjY2VzcyBpcworICAgIC8vIHJl
dm9rZWQgd2hlbiBhIG5ldyBkb2N1bWVudCBpcyBsb2FkZWQgaW50byB0aGlzIGZyYW1lLgorICAg
IHZpcnR1YWwgdm9pZCBncmFudFVuaXZlcnNhbEFjY2VzcygpID0gMDsKKworICAgIC8vIFJldHVy
bnMgYSBOUE9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZnJhbWUncyBET01XaW5kb3cuCisg
ICAgdmlydHVhbCBOUE9iamVjdCogd2luZG93T2JqZWN0KCkgY29uc3QgPSAwOworCisgICAgLy8g
QmluZHMgYSBOUE9iamVjdCBhcyBhIHByb3BlcnR5IG9mIHRoaXMgZnJhbWUncyBET01XaW5kb3cu
CisgICAgdmlydHVhbCB2b2lkIGJpbmRUb1dpbmRvd09iamVjdChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIE5QT2JqZWN0KikgPSAwOworCisgICAgLy8gRXhlY3V0ZXMgc2NyaXB0IGluIHRoZSBjb250
ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UuCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHQo
Y29uc3QgV2ViU2NyaXB0U291cmNlJikgPSAwOworCisgICAgLy8gRXhlY3V0ZXMgc2NyaXB0IGlu
IGEgbmV3IGNvbnRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBmcmFtZS4gVGhlCisgICAgLy8gc2Ny
aXB0IGdldHMgaXRzIG93biBnbG9iYWwgc2NvcGUgYW5kIGl0cyBvd24gcHJvdG90eXBlcyBmb3IK
KyAgICAvLyBpbnRyaW5zaWMgSlMgb2JqZWN0cyAoU3RyaW5nLCBBcnJheSwgYW5kIHNvLW9uKS4g
SXQgc2hhcmVzIHRoZQorICAgIC8vIHdyYXBwZXJzIGZvciBhbGwgRE9NIG5vZGVzIGFuZCBET00g
Y29uc3RydWN0b3JzLiAgZXh0ZW5zaW9uR3JvdXAgaXMKKyAgICAvLyBhbiBlbWJlZGRlci1wcm92
aWRlZCBzcGVjaWZpZXIgdGhhdCBjb250cm9scyB3aGljaCB2OCBleHRlbnNpb25zIGFyZQorICAg
IC8vIGxvYWRlZCBpbnRvIHRoZSBuZXcgY29udGV4dCAtIHNlZSBXZWJLaXQ6OnJlZ2lzdGVyRXh0
ZW5zaW9uIGZvciB0aGUKKyAgICAvLyBjb3JyZXNwb25kaW5nIHNwZWNpZmllci4KKyAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdEluTmV3Q29udGV4dChjb25zdCBXZWJTY3JpcHRTb3VyY2Uq
IHNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbnVtU291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZXh0ZW5zaW9uR3JvdXApID0gMDsKKworICAgIC8vIEV4ZWN1dGVzIEphdmFTY3Jp
cHQgaW4gYSBuZXcgd29ybGQgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgZnJhbWUuCisgICAgLy8g
VGhlIHNjcmlwdCBnZXRzIGl0cyBvd24gZ2xvYmFsIHNjb3BlIGFuZCBpdHMgb3duIHByb3RvdHlw
ZXMgZm9yCisgICAgLy8gaW50cmluc2ljIEphdmFTY3JpcHQgb2JqZWN0cyAoU3RyaW5nLCBBcnJh
eSwgYW5kIHNvLW9uKS4gSXQgYWxzbworICAgIC8vIGdldHMgaXRzIG93biB3cmFwcGVycyBmb3Ig
YWxsIERPTSBub2RlcyBhbmQgRE9NIGNvbnN0cnVjdG9ycy4KKyAgICAvLyBleHRlbnNpb25Hcm91
cCBpcyBhbiBlbWJlZGRlci1wcm92aWRlZCBzcGVjaWZpZXIgdGhhdCBjb250cm9scyB3aGljaAor
ICAgIC8vIHY4IGV4dGVuc2lvbnMgYXJlIGxvYWRlZCBpbnRvIHRoZSBuZXcgY29udGV4dCAtIHNl
ZQorICAgIC8vIFdlYktpdDo6cmVnaXN0ZXJFeHRlbnNpb24gZm9yIHRoZSBjb3JyZXNwb25kaW5n
IHNwZWNpZmllci4KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdEluSXNvbGF0ZWRXb3Js
ZCgKKyAgICAgICAgaW50IHdvcmxkSWQsIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSogc291cmNlcywg
dW5zaWduZWQgbnVtU291cmNlcywKKyAgICAgICAgaW50IGV4dGVuc2lvbkdyb3VwKSA9IDA7CisK
KyAgICAvLyBMb2dzIHRvIHRoZSBjb25zb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLgor
ICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFdlYkNvbnNvbGVNZXNz
YWdlJikgPSAwOworCisgICAgLy8gQ2FsbHMgd2luZG93LmdjKCkgaWYgaXQgaXMgZGVmaW5lZC4K
KyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEdhcmJhZ2UoKSA9IDA7CisKKyNpZiBXRUJLSVRfVVNJ
TkdfVjgKKyAgICAvLyBSZXR1cm5zIHRoZSBWOCBjb250ZXh0IGZvciB0aGlzIGZyYW1lLCBvciBh
biBlbXB0eSBoYW5kbGUgaWYgdGhlcmUKKyAgICAvLyBpcyBub25lLgorICAgIHZpcnR1YWwgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QgPSAwOwor
I2VuZGlmCisKKworICAgIC8vIFN0eWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gSW5zZXJ0IHRoZSBnaXZl
biB0ZXh0IGFzIGEgU1RZTEUgZWxlbWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgIC8v
IGRvY3VtZW50LiB8ZWxlbWVudElkfCBjYW4gYmUgZW1wdHksIGJ1dCBpZiBzcGVjaWZpZWQgdGhl
biBpdCBpcyB1c2VkCisgICAgLy8gYXMgdGhlIGlkIGZvciB0aGUgbmV3bHkgaW5zZXJ0ZWQgZWxl
bWVudCAocmVwbGFjaW5nIGFuIGV4aXN0aW5nIG9uZQorICAgIC8vIHdpdGggdGhlIHNhbWUgaWQs
IGlmIGFueSkuCisgICAgdmlydHVhbCBib29sIGluc2VydFN0eWxlVGV4dChjb25zdCBXZWJTdHJp
bmcmIHN0eWxlVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgZWxlbWVudElkKSA9IDA7CisKKworICAgIC8vIE5hdmlnYXRpb24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAg
Ly8gUmVsb2FkIHRoZSBjdXJyZW50IGRvY3VtZW50LgorICAgIHZpcnR1YWwgdm9pZCByZWxvYWQo
KSA9IDA7CisKKyAgICAvLyBMb2FkIHRoZSBnaXZlbiBVUkwuCisgICAgdmlydHVhbCB2b2lkIGxv
YWRSZXF1ZXN0KGNvbnN0IFdlYlVSTFJlcXVlc3QmKSA9IDA7CisKKyAgICAvLyBMb2FkIHRoZSBn
aXZlbiBoaXN0b3J5IHN0YXRlLCBjb3JyZXNwb25kaW5nIHRvIGEgYmFjay9mb3J3YXJkCisgICAg
Ly8gbmF2aWdhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEhpc3RvcnlJdGVtKGNvbnN0IFdl
Ykhpc3RvcnlJdGVtJikgPSAwOworCisgICAgLy8gTG9hZHMgdGhlIGdpdmVuIGRhdGEgd2l0aCBz
cGVjaWZpYyBtaW1lIHR5cGUgYW5kIG9wdGlvbmFsIHRleHQKKyAgICAvLyBlbmNvZGluZy4gIEZv
ciBIVE1MIGRhdGEsIGJhc2VVUkwgaW5kaWNhdGVzIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YKKyAg
ICAvLyB0aGUgZG9jdW1lbnQgYW5kIGlzIHVzZWQgdG8gcmVzb2x2ZSBsaW5rcy4gIElmIHNwZWNp
ZmllZCwKKyAgICAvLyB1bnJlYWNoYWJsZVVSTCBpcyByZXBvcnRlZCB2aWEgV2ViRGF0YVNvdXJj
ZTo6dW5yZWFjaGFibGVVUkwuICBJZgorICAgIC8vIHJlcGxhY2UgaXMgZmFsc2UsIHRoZW4gdGhp
cyBkYXRhIHdpbGwgYmUgbG9hZGVkIGFzIGEgbm9ybWFsCisgICAgLy8gbmF2aWdhdGlvbi4gIE90
aGVyd2lzZSwgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHdpbGwgYmUgcmVwbGFjZWQuCisgICAg
dmlydHVhbCB2b2lkIGxvYWREYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dEVuY29kaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJVUkwmIGJhc2VVUkwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlVSTCYgdW5yZWFjaGFibGVVUkwgPSBXZWJVUkwoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZXBsYWNlID0gZmFsc2UpID0gMDsKKworICAgIC8vIFRoaXMg
bWV0aG9kIGlzIHNob3J0LWhhbmQgZm9yIGNhbGxpbmcgTG9hZERhdGEsIHdoZXJlIG1pbWVfdHlw
ZSBpcworICAgIC8vICJ0ZXh0L2h0bWwiIGFuZCB0ZXh0X2VuY29kaW5nIGlzICJVVEYtOCIuCisg
ICAgdmlydHVhbCB2b2lkIGxvYWRIVE1MU3RyaW5nKGNvbnN0IFdlYkRhdGEmIGh0bWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgYmFzZVVSTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVVJMJiB1bnJlYWNoYWJsZVVSTCA9
IFdlYlVSTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcGxhY2Ug
PSBmYWxzZSkgPSAwOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGZyYW1l
IGlzIGJ1c3kgbG9hZGluZyBjb250ZW50LgorICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBj
b25zdCA9IDA7CisKKyAgICAvLyBTdG9wcyBhbnkgcGVuZGluZyBsb2FkcyBvbiB0aGUgZnJhbWUg
YW5kIGl0cyBjaGlsZHJlbi4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExvYWRpbmcoKSA9IDA7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBkYXRhIHNvdXJjZSB0aGF0IGlzIGN1cnJlbnRseSBsb2FkaW5n
LiAgTWF5IGJlIG51bGwuCisgICAgdmlydHVhbCBXZWJEYXRhU291cmNlKiBwcm92aXNpb25hbERh
dGFTb3VyY2UoKSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBkYXRhIHNvdXJjZSB0
aGF0IGlzIGN1cnJlbnRseSBsb2FkZWQuCisgICAgdmlydHVhbCBXZWJEYXRhU291cmNlKiBkYXRh
U291cmNlKCkgY29uc3QgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgcHJldmlvdXMgaGlzdG9y
eSBpdGVtLiAgQ2hlY2sgV2ViSGlzdG9yeUl0ZW06OmlzTnVsbCgpCisgICAgLy8gYmVmb3JlIHVz
aW5nLgorICAgIHZpcnR1YWwgV2ViSGlzdG9yeUl0ZW0gcHJldmlvdXNIaXN0b3J5SXRlbSgpIGNv
bnN0ID0gMDsKKworICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtLiAgQ2hl
Y2sgV2ViSGlzdG9yeUl0ZW06OmlzTnVsbCgpCisgICAgLy8gYmVmb3JlIHVzaW5nLgorICAgIHZp
cnR1YWwgV2ViSGlzdG9yeUl0ZW0gY3VycmVudEhpc3RvcnlJdGVtKCkgY29uc3QgPSAwOworCisg
ICAgLy8gVmlldy1zb3VyY2UgcmVuZGVyaW5nIG1vZGUuICBTZXQgdGhpcyBiZWZvcmUgbG9hZGlu
ZyBhbiBVUkwgdG8gY2F1c2UKKyAgICAvLyBpdCB0byBiZSByZW5kZXJlZCBpbiB2aWV3LXNvdXJj
ZSBtb2RlLgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVWaWV3U291cmNlTW9kZShib29sKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzVmlld1NvdXJjZU1vZGVFbmFibGVkKCkgY29uc3QgPSAwOwor
CisgICAgLy8gU2V0cyB0aGUgcmVmZXJyZXIgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IHRvIGJlIHRo
ZSBzcGVjaWZpZWQgVVJMIG9yCisgICAgLy8gaWYgdGhhdCBpcyBudWxsLCB0aGVuIGl0IHNldHMg
dGhlIHJlZmVycmVyIHRvIHRoZSByZWZlcnJlciB0aGF0IHRoZQorICAgIC8vIGZyYW1lIHdvdWxk
IHVzZSBmb3Igc3VicmVzb3VyY2VzLiAgTk9URTogVGhpcyBtZXRob2QgYWxzbyBmaWx0ZXJzCisg
ICAgLy8gb3V0IGludmFsaWQgcmVmZXJyZXJzIChlLmcuLCBpdCBpcyBpbnZhbGlkIHRvIHNlbmQg
YSBIVFRQUyBVUkwgYXMKKyAgICAvLyB0aGUgcmVmZXJyZXIgZm9yIGEgSFRUUCByZXF1ZXN0KS4K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVmZXJyZXJGb3JSZXF1ZXN0KFdlYlVSTFJlcXVlc3QmLCBj
b25zdCBXZWJVUkwmKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgdG8gYXNzb2NpYXRlIHRoZSBXZWJV
UkxSZXF1ZXN0IHdpdGggdGhpcyBmcmFtZS4gIFRoZSByZXF1ZXN0CisgICAgLy8gd2lsbCBiZSBt
b2RpZmllZCB0byBpbmhlcml0IHBhcmFtZXRlcnMgdGhhdCBhbGxvdyBpdCB0byBiZSBsb2FkZWQu
CisgICAgLy8gVGhpcyBtZXRob2QgZW5kcyB1cCB0cmlnZ2VyaW5nIFdlYkZyYW1lQ2xpZW50Ojp3
aWxsU2VuZFJlcXVlc3QuCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KFdlYlVSTFJlcXVlc3QmKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgZnJvbSB3aXRoaW4gV2ViRnJh
bWVDbGllbnQ6OmRpZFJlY2VpdmVEb2N1bWVudERhdGEgdG8gY29tbWl0CisgICAgLy8gZGF0YSBm
b3IgdGhlIGZyYW1lIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgZnJhbWUncwor
ICAgIC8vIGRvY3VtZW50LgorICAgIHZpcnR1YWwgdm9pZCBjb21taXREb2N1bWVudERhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIHJlZ2lzdGVyZWQgdW5sb2FkIGxpc3RlbmVycy4KKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIHVubG9hZExpc3RlbmVyQ291bnQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgYSB1c2VyIGdlc3R1cmUgaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4KKyAgICB2
aXJ0dWFsIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyBmcmFtZSBpcyBpbiB0aGUgcHJvY2VzcyBvZiBvcGVuaW5n
IGEgbmV3IGZyYW1lCisgICAgLy8gd2l0aCBhIHN1cHByZXNzZWQgb3BlbmVyLgorICAgIHZpcnR1
YWwgYm9vbCB3aWxsU3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lKCkgY29uc3QgPSAwOworCisKKyAg
ICAvLyBFZGl0aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gd2l0aCB0
aGUgZ2l2ZW4gdGV4dC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVNlbGVjdGlvbihjb25zdCBX
ZWJTdHJpbmcmIHRleHQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRUZXh0KGNvbnN0
IFdlYlN0cmluZyYgdGV4dCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldE1hcmtlZFRleHQo
Y29uc3QgV2ViU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVubWFya1RleHQoKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGhhc01hcmtlZFRleHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlJhbmdlIG1h
cmtlZFJhbmdlKCkgY29uc3QgPSAwOworCisgICAgLy8gU3VwcG9ydHMgY29tbWFuZHMgbGlrZSBV
bmRvLCBSZWRvLCBDdXQsIENvcHksIFBhc3RlLCBTZWxlY3RBbGwsCisgICAgLy8gVW5zZWxlY3Qs
IGV0Yy4gU2VlIEVkaXRvckNvbW1hbmQuY3BwIGZvciB0aGUgZnVsbCBsaXN0IG9mIHN1cHBvcnRl
ZAorICAgIC8vIGNvbW1hbmRzLgorICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlQ29tbWFuZChjb25z
dCBXZWJTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGV4ZWN1dGVDb21tYW5kKGNvbnN0
IFdlYlN0cmluZyYsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNDb21tYW5kRW5hYmxlZChjb25zdCBXZWJTdHJpbmcmKSBjb25zdCA9IDA7CisKKyAgICAv
LyBTcGVsbC1jaGVja2luZyBzdXBwb3J0LgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVDb250aW51
b3VzU3BlbGxDaGVja2luZyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQ29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QgPSAwOworCisKKyAgICAvLyBTZWxlY3Rpb24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNTZWxlY3Rpb24oKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIFdlYlJhbmdlIHNlbGVjdGlvblJhbmdlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBXZWJTdHJpbmcgc2VsZWN0aW9uQXNUZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIHNlbGVjdGlvbkFzTWFya3VwKCkgY29uc3QgPSAwOworCisKKyAgICAvLyBQcmludGlu
ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworICAgIC8vIFJlZm9ybWF0cyB0aGUgV2ViRnJhbWUgZm9yIHByaW50aW5nLiAgcGFn
ZVNpemUgaXMgdGhlIHBhZ2Ugc2l6ZSBpbgorICAgIC8vIHBpeGVscy4gIFJldHVybnMgdGhlIG51
bWJlciBvZiBwYWdlcyB0aGF0IGNhbiBiZSBwcmludGVkIGF0IHRoZQorICAgIC8vIGdpdmVuIHBh
Z2Ugc2l6ZS4KKyAgICB2aXJ0dWFsIGludCBwcmludEJlZ2luKGNvbnN0IFdlYlNpemUmIHBhZ2VT
aXplKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBwYWdlIHNocmlua2luZyBmYWN0b3IgY2Fs
Y3VsYXRlZCBieSB3ZWJraXQgKHVzdWFsbHkKKyAgICAvLyBiZXR3ZWVuIDEvMS4yNSBhbmQgMS8y
KS4gUmV0dXJucyAwIGlmIHRoZSBwYWdlIG51bWJlciBpcyBpbnZhbGlkIG9yCisgICAgLy8gbm90
IGluIHByaW50aW5nIG1vZGUuCisgICAgdmlydHVhbCBmbG9hdCBnZXRQcmludFBhZ2VTaHJpbmso
aW50IHBhZ2UpID0gMDsKKworICAgIC8vIFByaW50cyBvbmUgcGFnZSwgYW5kIHJldHVybnMgdGhl
IGNhbGN1bGF0ZWQgcGFnZSBzaHJpbmtpbmcgZmFjdG9yCisgICAgLy8gKHVzdWFsbHkgYmV0d2Vl
biAxLzEuMjUgYW5kIDEvMikuICBSZXR1cm5zIDAgaWYgdGhlIHBhZ2UgbnVtYmVyIGlzCisgICAg
Ly8gaW52YWxpZCBvciBub3QgaW4gcHJpbnRpbmcgbW9kZS4KKyAgICB2aXJ0dWFsIGZsb2F0IHBy
aW50UGFnZShpbnQgcGFnZVRvUHJpbnQsIFdlYkNhbnZhcyopID0gMDsKKworICAgIC8vIFJlZm9y
bWF0cyB0aGUgV2ViRnJhbWUgZm9yIHNjcmVlbiBkaXNwbGF5LgorICAgIHZpcnR1YWwgdm9pZCBw
cmludEVuZCgpID0gMDsKKworCisgICAgLy8gRmluZC1pbi1wYWdlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBTZWFyY2hl
cyBhIGZyYW1lIGZvciBhIGdpdmVuIHN0cmluZy4KKyAgICAvLworICAgIC8vIElmIGEgbWF0Y2gg
aXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gd2lsbCBzZWxlY3QgaXQgKHNjcm9sbGluZyBkb3duIHRv
CisgICAgLy8gbWFrZSBpdCB2aXNpYmxlIGlmIG5lZWRlZCkgYW5kIGZpbGwgaW4gc2VsZWN0aW9u
UmVjdCB3aXRoIHRoZQorICAgIC8vIGxvY2F0aW9uIG9mIHdoZXJlIHRoZSBtYXRjaCB3YXMgZm91
bmQgKGluIHdpbmRvdyBjb29yZGluYXRlcykuCisgICAgLy8KKyAgICAvLyBJZiBubyBtYXRjaCBp
cyBmb3VuZCwgdGhpcyBmdW5jdGlvbiBjbGVhcnMgYWxsIHRpY2ttYXJrcyBhbmQKKyAgICAvLyBo
aWdobGlnaHRpbmcuCisgICAgLy8KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNlYXJjaCBz
dHJpbmcgd2FzIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCisgICAgdmlydHVhbCBib29sIGZpbmQo
aW50IGlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBz
ZWFyY2hUZXh0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkZpbmRPcHRpb25zJiBv
cHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd3JhcFdpdGhpbkZyYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgIFdlYlJlY3QqIHNlbGVjdGlvblJlY3QpID0gMDsKKworICAgIC8v
IE5vdGlmaWVzIHRoZSBmcmFtZSB0aGF0IHdlIGFyZSBubyBsb25nZXIgaW50ZXJlc3RlZCBpbiBz
ZWFyY2hpbmcuCisgICAgLy8gVGhpcyB3aWxsIGFib3J0IGFueSBhc3luY2hyb25vdXMgc2NvcGlu
ZyBlZmZvcnQgYWxyZWFkeSB1bmRlciB3YXkKKyAgICAvLyAoc2VlIHRoZSBmdW5jdGlvbiBzY29w
ZVN0cmluZ01hdGNoZXMgZm9yIGRldGFpbHMpIGFuZCBlcmFzZSBhbGwKKyAgICAvLyB0aWNrLW1h
cmtzIGFuZCBoaWdobGlnaHRpbmcgZnJvbSB0aGUgcHJldmlvdXMgc2VhcmNoLiAgSWYKKyAgICAv
LyBjbGVhclNlbGVjdGlvbiBpcyB0cnVlLCBpdCB3aWxsIGFsc28gbWFrZSBzdXJlIHRoZSBlbmQg
c3RhdGUgZm9yIHRoZQorICAgIC8vIGZpbmQgb3BlcmF0aW9uIGRvZXMgbm90IGxlYXZlIGEgc2Vs
ZWN0aW9uLiAgVGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUKKyAgICAvLyB1c2VyIGNsZWFycyB0aGUg
c2VhcmNoIHN0cmluZyBidXQgZG9lcyBub3QgY2xvc2UgdGhlIGZpbmQgYm94LgorICAgIHZpcnR1
YWwgdm9pZCBzdG9wRmluZGluZyhib29sIGNsZWFyU2VsZWN0aW9uKSA9IDA7CisKKyAgICAvLyBD
b3VudHMgaG93IG1hbnkgdGltZXMgYSBwYXJ0aWN1bGFyIHN0cmluZyBvY2N1cnMgd2l0aGluIHRo
ZSBmcmFtZS4KKyAgICAvLyBJdCBhbHNvIHJldHJpZXZlcyB0aGUgbG9jYXRpb24gb2YgdGhlIHN0
cmluZyBhbmQgdXBkYXRlcyBhIHZlY3RvciBpbgorICAgIC8vIHRoZSBmcmFtZSBzbyB0aGF0IHRp
Y2stbWFya3MgYW5kIGhpZ2hsaWdodGluZyBjYW4gYmUgZHJhd24uICBUaGlzCisgICAgLy8gZnVu
Y3Rpb24gZG9lcyBpdHMgd29yayBhc3luY2hyb25vdXNseSwgYnkgcnVubmluZyBmb3IgYSBjZXJ0
YWluCisgICAgLy8gdGltZS1zbGljZSBhbmQgdGhlbiBzY2hlZHVsaW5nIGl0c2VsZiAoY28tb3Bl
cmF0aXZlIG11bHRpdGFza2luZykgdG8KKyAgICAvLyBiZSBpbnZva2VkIGxhdGVyIChyZXBlYXRp
bmcgdGhlIHByb2Nlc3MgdW50aWwgYWxsIG1hdGNoZXMgaGF2ZSBiZWVuCisgICAgLy8gZm91bmQp
LiAgVGhpcyBhbGxvd3MgbXVsdGlwbGUgZnJhbWVzIHRvIGJlIHNlYXJjaGVkIGF0IHRoZSBzYW1l
IHRpbWUKKyAgICAvLyBhbmQgcHJvdmlkZXMgYSB3YXkgdG8gY2FuY2VsIGF0IGFueSB0aW1lIChz
ZWUKKyAgICAvLyBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCkuICBUaGUgcGFyYW1ldGVyIHNl
YXJjaFRleHQgc3BlY2lmaWVzCisgICAgLy8gd2hhdCB0byBsb29rIGZvciBhbmQgfHJlc2V0fCBz
aWduYWxzIHdoZXRoZXIgdGhpcyBpcyBhIGJyYW5kIG5ldworICAgIC8vIHJlcXVlc3Qgb3IgYSBj
b250aW51YXRpb24gb2YgdGhlIGxhc3Qgc2NvcGluZyBlZmZvcnQuCisgICAgdmlydHVhbCB2b2lk
IHNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc2VhcmNoVGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkZpbmRPcHRpb25zJiBvcHRpb25zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXNldCkgPSAwOworCisg
ICAgLy8gQ2FuY2VscyBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdHMgZm9yIHNjb3Bpbmcgc3RyaW5n
IG1hdGNoZXMgb24gYSBmcmFtZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVuZGluZ1Njb3Bp
bmdFZmZvcnQoKSA9IDA7CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiB0aGUg
bWFpbiBmcmFtZSBkdXJpbmcgdGhlIHNjb3BpbmcgZWZmb3J0CisgICAgLy8gdG8ga2VlcCBhIHJ1
bm5pbmcgdGFsbHkgb2YgdGhlIGFjY3VtdWxhdGVkIHRvdGFsIG1hdGNoLWNvdW50IGZvciBhbGwK
KyAgICAvLyBmcmFtZXMuICBBZnRlciB1cGRhdGluZyB0aGUgY291bnQgaXQgd2lsbCBub3RpZnkg
dGhlIFdlYlZpZXdDbGllbnQKKyAgICAvLyBhYm91dCB0aGUgbmV3IGNvdW50LgorICAgIHZpcnR1
YWwgdm9pZCBpbmNyZWFzZU1hdGNoQ291bnQoaW50IGNvdW50LCBpbnQgaWRlbnRpZmllcikgPSAw
OworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gdGhlIG1haW4gZnJhbWUgdG8g
cmVzZXQgdGhlIHRvdGFsIG51bWJlcgorICAgIC8vIG9mIG1hdGNoZXMgZm91bmQgZHVyaW5nIHRo
ZSBzY29waW5nIGVmZm9ydC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRNYXRjaENvdW50KCkgPSAw
OworCisgICAgLy8gUGFzc3dvcmQgYXV0b2NvbXBsZXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBSZWdpc3RlcnMgYSBsaXN0ZW5lciBm
b3IgdGhlIHNwZWNpZmllZCB1c2VyIG5hbWUgaW5wdXQgZWxlbWVudC4gVGhlCisgICAgLy8gbGlz
dGVuZXIgd2lsbCByZWNlaXZlIG5vdGlmaWNhdGlvbnMgZm9yIGJsdXIgYW5kIHdoZW4gYXV0b2Nv
bXBsZXRlCisgICAgLy8gc2hvdWxkIGJlIHRyaWdnZXJlZC4KKyAgICAvLyBUaGUgV2ViRnJhbWUg
YmVjb21lcyB0aGUgb3duZXIgb2YgdGhlIHBhc3NlZCBsaXN0ZW5lci4KKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJQYXNzd29yZExpc3RlbmVyKAorICAgICAgICBXZWJJbnB1dEVsZW1lbnQsCisg
ICAgICAgIFdlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIqKSA9IDA7CisKKyAgICAvLyBV
dGlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworICAgIC8vIEdpdmVuIGEgcmVsYXRpdmUgVVJMLCByZXR1cm5zIGFuIGFi
c29sdXRlIFVSTCBieSByZXNvbHZpbmcgdGhlIFVSTAorICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBi
YXNlIFVSTCBvZiB0aGUgZnJhbWUncyBkb2N1bWVudC4gIFRoaXMgdXNlcyB0aGUKKyAgICAvLyBz
YW1lIGFsZ29yaXRobSB0aGF0IFdlYktpdCB1c2VzIHRvIHJlc29sdmUgaHlwZXJsaW5rcyBmb3Vu
ZCBpbiBhCisgICAgLy8gSFRNTCBkb2N1bWVudC4KKyAgICB2aXJ0dWFsIFdlYlVSTCBjb21wbGV0
ZVVSTChjb25zdCBXZWJTdHJpbmcmKSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBj
b250ZW50cyBvZiB0aGlzIGZyYW1lIGFzIGEgc3RyaW5nLiAgSWYgdGhlIHRleHQgaXMKKyAgICAv
LyBsb25nZXIgdGhhbiBtYXhDaGFycywgaXQgd2lsbCBiZSBjbGlwcGVkIHRvIHRoYXQgbGVuZ3Ro
LiAgV0FSTklORzoKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzbG93IGRlcGVuZGluZyBv
biB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKKyAgICAvLyByZXRyaWV2ZWQgYW5kIHBhZ2UgY29t
cGxleGl0eS4gIEZvciBhIHR5cGljYWxseSBzaXplZCBwYWdlLCBleHBlY3QKKyAgICAvLyBpdCB0
byB0YWtlIG9uIHRoZSBvcmRlciBvZiBtaWxsaXNlY29uZHMuCisgICAgLy8KKyAgICAvLyBJZiB0
aGVyZSBpcyByb29tLCBzdWJmcmFtZSB0ZXh0IHdpbGwgYmUgcmVjdXJzaXZlbHkgYXBwZW5kZWQu
IEVhY2gKKyAgICAvLyBmcmFtZSB3aWxsIGJlIHNlcGFyYXRlZCBieSBhbiBlbXB0eSBsaW5lLgor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIGNvbnRlbnRBc1RleHQoc2l6ZV90IG1heENoYXJzKSBjb25z
dCA9IDA7CisKKyAgICAvLyBSZXR1cm5zIEhUTUwgdGV4dCBmb3IgdGhlIGNvbnRlbnRzIG9mIHRo
aXMgZnJhbWUuICBUaGlzIGlzIGdlbmVyYXRlZAorICAgIC8vIGZyb20gdGhlIERPTS4KKyAgICB2
aXJ0dWFsIFdlYlN0cmluZyBjb250ZW50QXNNYXJrdXAoKSBjb25zdCA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB+V2ViRnJhbWUoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlQ2hvb3Nl
ckNvbXBsZXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbl9oCisjZGVmaW5lIFdlYkZpbGVDaG9vc2VyQ29t
cGxldGlvbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCisvLyBHZXRzIGNhbGxlZCBiYWNr
IHdoZW4gV2ViVmlld0NsaWVudCBmaW5pc2hlZCBjaG9vc2luZyBhIGZpbGUuCitjbGFzcyBXZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb24geworcHVibGljOgorICAgIC8vIENhbGxlZCB3aXRoIHplcm8g
b3IgbW9yZSBmaWxlIG5hbWVzLiBaZXJvLWxlbmd0aGVkIHZlY3RvciBtZWFucyB0aGF0CisgICAg
Ly8gdGhlIHVzZXIgY2FuY2VsbGVkIG9yIHRoYXQgZmlsZSBjaG9vc2luZyBmYWlsZWQuIFRoZSBj
YWxsYmFjayBpbnN0YW5jZQorICAgIC8vIGlzIGRlc3Ryb3llZCB3aGVuIHRoaXMgbWV0aG9kIGlz
IGNhbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlRmlsZShjb25zdCBXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgZmlsZU5hbWVzKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+V2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uKCkge30KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFZGl0aW5nQWN0aW9u
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkVkaXRpbmdBY3Rpb25f
aAorI2RlZmluZSBXZWJFZGl0aW5nQWN0aW9uX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gV2ViRWRpdGluZ0FjdGlvbiB7CisgICAgV2ViRWRpdGluZ0FjdGlvblR5cGVkLAorICAgIFdl
YkVkaXRpbmdBY3Rpb25QYXN0ZWQsCisgICAgV2ViRWRpdGluZ0FjdGlvbkRyb3BwZWQsCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViRnJhbWVDbGllbnRfaAorI2RlZmluZSBXZWJGcmFtZUNsaWVudF9oCisKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCisjaW5jbHVk
ZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKKyNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YVNvdXJjZTsKK2NsYXNzIFdlYkZvcm1FbGVt
ZW50OworY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJNZWRpYVBsYXllcjsKK2NsYXNzIFdlYk1l
ZGlhUGxheWVyQ2xpZW50OworY2xhc3MgV2ViTm9kZTsKK2NsYXNzIFdlYlBsdWdpbjsKK2NsYXNz
IFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViU2hhcmVkV29ya2VyOworY2xhc3MgV2ViU3Ry
aW5nOworY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2NsYXNzIFdlYlVSTFJl
c3BvbnNlOworY2xhc3MgV2ViV29ya2VyOworY2xhc3MgV2ViV29ya2VyQ2xpZW50Oworc3RydWN0
IFdlYlBsdWdpblBhcmFtczsKK3N0cnVjdCBXZWJSZWN0Oworc3RydWN0IFdlYlNpemU7CitzdHJ1
Y3QgV2ViVVJMRXJyb3I7CisKK2NsYXNzIFdlYkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAv
LyBGYWN0b3J5IG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdl
YlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYkZyYW1lKiwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJikg
eyByZXR1cm4gMDsgfQorCisgICAgLy8gTWF5IHJldHVybiBudWxsLgorICAgIHZpcnR1YWwgV2Vi
V29ya2VyKiBjcmVhdGVXb3JrZXIoV2ViRnJhbWUqLCBXZWJXb3JrZXJDbGllbnQqKSB7IHJldHVy
biAwOyB9CisKKyAgICAvLyBNYXkgcmV0dXJuIG51bGwuCisgICAgdmlydHVhbCBXZWJTaGFyZWRX
b3JrZXIqIGNyZWF0ZVNoYXJlZFdvcmtlcihXZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGNvbnN0
IFdlYlN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
TWF5IHJldHVybiBudWxsLgorICAgIHZpcnR1YWwgV2ViTWVkaWFQbGF5ZXIqIGNyZWF0ZU1lZGlh
UGxheWVyKFdlYkZyYW1lKiwgV2ViTWVkaWFQbGF5ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CisK
KworICAgIC8vIEdlbmVyYWwgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhpcyBmcmFtZSBpcyBhYm91dCB0byBi
ZSBjbG9zZWQuCisgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZShXZWJGcmFtZSopIHsgfQorCisK
KyAgICAvLyBMb2FkIGNvbW1hbmRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFRoZSBjbGllbnQgc2hvdWxkIGhhbmRsZSB0
aGUgbmF2aWdhdGlvbiBleHRlcm5hbGx5LgorICAgIHZpcnR1YWwgdm9pZCBsb2FkVVJMRXh0ZXJu
YWxseSgKKyAgICAgICAgV2ViRnJhbWUqLCBjb25zdCBXZWJVUkxSZXF1ZXN0JiwgV2ViTmF2aWdh
dGlvblBvbGljeSkgeyB9CisKKworICAgIC8vIE5hdmlnYXRpb25hbCBxdWVyaWVzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhlIGNs
aWVudCBtYXkgY2hvb3NlIHRvIGFsdGVyIHRoZSBuYXZpZ2F0aW9uIHBvbGljeS4gIE90aGVyd2lz
ZSwKKyAgICAvLyBkZWZhdWx0UG9saWN5IHNob3VsZCBqdXN0IGJlIHJldHVybmVkLgorICAgIHZp
cnR1YWwgV2ViTmF2aWdhdGlvblBvbGljeSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uKAorICAg
ICAgICBXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmLCBXZWJOYXZpZ2F0aW9uVHlwZSwK
KyAgICAgICAgY29uc3QgV2ViTm9kZSYgb3JpZ2luYXRpbmdOb2RlLAorICAgICAgICBXZWJOYXZp
Z2F0aW9uUG9saWN5IGRlZmF1bHRQb2xpY3ksIGJvb2wgaXNSZWRpcmVjdCkgeyByZXR1cm4gZGVm
YXVsdFBvbGljeTsgfQorCisgICAgLy8gUXVlcnkgaWYgdGhlIHNwZWNpZmllZCByZXF1ZXN0IGNh
biBiZSBoYW5kbGVkLgorICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KAorICAgICAg
ICBXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIHRydWU7
IH0KKworICAgIC8vIFJldHVybnMgYW4gZXJyb3IgY29ycmVzcG9uZGluZyB0byBjYW5IYW5kbGVk
UmVxdWVzdCgpIHJldHVybmluZyBmYWxzZS4KKyAgICB2aXJ0dWFsIFdlYlVSTEVycm9yIGNhbm5v
dEhhbmRsZVJlcXVlc3RFcnJvcigKKyAgICAgICAgV2ViRnJhbWUqLCBjb25zdCBXZWJVUkxSZXF1
ZXN0JiByZXF1ZXN0KSB7IHJldHVybiBXZWJVUkxFcnJvcigpOyB9CisKKyAgICAvLyBSZXR1cm5z
IGFuIGVycm9yIGNvcnJlc3BvbmRpbmcgdG8gYSB1c2VyIGNhbmNlbGxhdGlvbiBldmVudC4KKyAg
ICB2aXJ0dWFsIFdlYlVSTEVycm9yIGNhbmNlbGxlZEVycm9yKAorICAgICAgICBXZWJGcmFtZSos
IGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpIHsgcmV0dXJuIFdlYlVSTEVycm9yKCk7IH0K
KworICAgIC8vIE5vdGlmeSB0aGF0IGEgVVJMIGNhbm5vdCBiZSBoYW5kbGVkLgorICAgIHZpcnR1
YWwgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcigKKyAgICAgICAgV2ViRnJh
bWUqLCBjb25zdCBXZWJVUkxFcnJvciYpIHsgfQorCisKKyAgICAvLyBOYXZpZ2F0aW9uYWwgbm90
aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
ICAgIC8vIEEgZm9ybSBzdWJtaXNzaW9uIGlzIGFib3V0IHRvIG9jY3VyLgorICAgIHZpcnR1YWwg
dm9pZCB3aWxsU3VibWl0Rm9ybShXZWJGcmFtZSosIGNvbnN0IFdlYkZvcm1FbGVtZW50JikgeyB9
CisKKyAgICAvLyBBIGNsaWVudC1zaWRlIHJlZGlyZWN0IHdpbGwgb2NjdXIuICBUaGlzIG1heSBj
b3JyZXNwb25kIHRvIGEgPE1FVEEKKyAgICAvLyByZWZyZXNoPiBvciBzb21lIHNjcmlwdCBhY3Rp
dml0eS4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCgKKyAgICAg
ICAgV2ViRnJhbWUqLCBjb25zdCBXZWJVUkwmIGZyb20sIGNvbnN0IFdlYlVSTCYgdG8sCisgICAg
ICAgIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVUaW1lKSB7IH0KKworICAgIC8vIEEgY2xp
ZW50LXNpZGUgcmVkaXJlY3Qgd2FzIGNhbmNlbGxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoV2ViRnJhbWUqKSB7IH0KKworICAgIC8vIEEgY2xpZW50LXNpZGUg
cmVkaXJlY3QgY29tcGxldGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZUNsaWVudFJl
ZGlyZWN0KFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiBmcm9tVVJMKSB7IH0KKworICAgIC8vIEEg
ZGF0YXNvdXJjZSBoYXMgYmVlbiBjcmVhdGVkIGZvciBhIG5ldyBuYXZpZ2F0aW9uLiAgVGhlIGdp
dmVuCisgICAgLy8gZGF0YXNvdXJjZSB3aWxsIGJlY29tZSB0aGUgcHJvdmlzaW9uYWwgZGF0YXNv
dXJjZSBmb3IgdGhlIGZyYW1lLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEYXRhU291cmNl
KFdlYkZyYW1lKiwgV2ViRGF0YVNvdXJjZSopIHsgfQorCisgICAgLy8gQSBuZXcgcHJvdmlzaW9u
YWwgbG9hZCBoYXMgYmVlbiBzdGFydGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZChXZWJGcmFtZSopIHsgfQorCisgICAgLy8gVGhlIHByb3Zpc2lvbmFsIGxvYWQg
d2FzIHJlZGlyZWN0ZWQgdmlhIGEgSFRUUCAzeHggcmVzcG9uc2UuCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSopIHsg
fQorCisgICAgLy8gVGhlIHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7
IH0KKworICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgdG8gY29tbWl0IGRhdGEgZm9yIHRoZSBn
aXZlbiBmcmFtZS4gIFRoZSBjbGllbnQKKyAgICAvLyBtYXkgb3B0aW9uYWxseSBwcmV2ZW50IGRl
ZmF1bHQgcHJvY2Vzc2luZyBieSBzZXR0aW5nIHByZXZlbnREZWZhdWx0CisgICAgLy8gdG8gdHJ1
ZSBiZWZvcmUgcmV0dXJuaW5nLiAgSWYgZGVmYXVsdCBwcm9jZXNzaW5nIGlzIHByZXZlbnRlZCwg
dGhlbgorICAgIC8vIGl0IGlzIHVwIHRvIHRoZSBjbGllbnQgdG8gbWFudWFsbHkgY2FsbCBjb21t
aXREb2N1bWVudERhdGEgb24gdGhlCisgICAgLy8gV2ViRnJhbWUuICBJdCBpcyBvbmx5IHZhbGlk
IHRvIGNhbGwgY29tbWl0RG9jdW1lbnREYXRhIHdpdGhpbiBhIGNhbGwKKyAgICAvLyB0byBkaWRS
ZWNlaXZlRG9jdW1lbnREYXRhLiAgSWYgY29tbWl0RG9jdW1lbnREYXRhIGlzIG5vdCBjYWxsZWQs
CisgICAgLy8gdGhlbiBhbiBlbXB0eSBkb2N1bWVudCB3aWxsIGJlIGxvYWRlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURvY3VtZW50RGF0YSgKKyAgICAgICAgV2ViRnJhbWUqLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sJiBwcmV2ZW50RGVmYXVsdCkgeyB9CisK
KyAgICAvLyBUaGUgcHJvdmlzaW9uYWwgZGF0YXNvdXJjZSBpcyBub3cgY29tbWl0dGVkLiAgVGhl
IGZpcnN0IHBhcnQgb2YgdGhlCisgICAgLy8gcmVzcG9uc2UgYm9keSBoYXMgYmVlbiByZWNlaXZl
ZCwgYW5kIHRoZSBlbmNvZGluZyBvZiB0aGUgcmVzcG9uc2UKKyAgICAvLyBib2R5IGlzIGtub3du
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqLCBi
b29sIGlzTmV3TmF2aWdhdGlvbikgeyB9CisKKyAgICAvLyBUaGUgd2luZG93IG9iamVjdCBmb3Ig
dGhlIGZyYW1lIGhhcyBiZWVuIGNsZWFyZWQgb2YgYW55IGV4dHJhCisgICAgLy8gcHJvcGVydGll
cyB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGJ5IHNjcmlwdCBmcm9tIHRoZSBwcmV2aW91c2x5Cisg
ICAgLy8gbG9hZGVkIGRvY3VtZW50LgorICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhcldpbmRvd09i
amVjdChXZWJGcmFtZSopIHsgfQorCisgICAgLy8gVGhlIGRvY3VtZW50IGVsZW1lbnQgaGFzIGJl
ZW4gY3JlYXRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRG9jdW1lbnRFbGVtZW50KFdl
YkZyYW1lKikgeyB9CisKKyAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBhdmFpbGFibGUuCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYg
dGl0bGUpIHsgfQorCisgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGlu
Zy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9
CisKKyAgICAvLyBUaGUgJ2xvYWQnIGV2ZW50IHdhcyBkaXNwYXRjaGVkLgorICAgIHZpcnR1YWwg
dm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHMoV2ViRnJhbWUqKSB7IH0KKworICAgIC8vIFRoZSBm
cmFtZSdzIGRvY3VtZW50IG9yIG9uZSBvZiBpdHMgc3VicmVzb3VyY2VzIGZhaWxlZCB0byBsb2Fk
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSosIGNvbnN0IFdlYlVSTEVy
cm9yJikgeyB9CisKKyAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBhbmQgYWxsIG9mIGl0cyBz
dWJyZXNvdXJjZXMgc3VjY2VlZGVkIHRvIGxvYWQuCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWQoV2ViRnJhbWUqKSB7IH0KKworICAgIC8vIFRoZSBuYXZpZ2F0aW9uIHJlc3VsdGVkIGlu
IHNjcm9sbGluZyB0aGUgcGFnZSB0byBhIG5hbWVkIGFuY2hvciBpbnN0ZWFkCisgICAgLy8gb2Yg
ZG93bmxvYWRpbmcgYSBuZXcgZG9jdW1lbnQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZShXZWJGcmFtZSosIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKSB7IH0KKwor
ICAgIC8vIENhbGxlZCB1cG9uIHVwZGF0ZSB0byBzY3JvbGwgcG9zaXRpb24sIGRvY3VtZW50IHN0
YXRlLCBhbmQgb3RoZXIKKyAgICAvLyBub24tbmF2aWdhdGlvbmFsIGV2ZW50cyByZWxhdGVkIHRv
IHRoZSBkYXRhIGhlbGQgYnkgV2ViSGlzdG9yeUl0ZW0uCisgICAgLy8gV0FSTklORzogVGhpcyBt
ZXRob2QgbWF5IGJlIGNhbGxlZCB2ZXJ5IGZyZXF1ZW50bHkuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFVwZGF0ZUN1cnJlbnRIaXN0b3J5SXRlbShXZWJGcmFtZSopIHsgfQorCisKKyAgICAvLyBMb3ct
bGV2ZWwgcmVzb3VyY2Ugbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworICAgIC8vIEFuIGlkZW50aWZpZXIgd2FzIGFzc2lnbmVkIHRvIHRoZSBzcGVj
aWZpZWQgcmVxdWVzdC4gIFRoZSBjbGllbnQKKyAgICAvLyBzaG91bGQgcmVtZW1iZXIgdGhpcyBh
c3NvY2lhdGlvbiBpZiBpbnRlcmVzdGVkIGluIHN1YnNlcXVlbnQgZXZlbnRzLgorICAgIHZpcnR1
YWwgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9SZXF1ZXN0KAorICAgICAgICBXZWJGcmFtZSosIHVu
c2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFdlYlVSTFJlcXVlc3QmKSB7IH0KKworICAgIC8vIEEg
cmVxdWVzdCBpcyBhYm91dCB0byBiZSBzZW50IG91dCwgYW5kIHRoZSBjbGllbnQgbWF5IG1vZGlm
eSBpdC4gIFJlcXVlc3QKKyAgICAvLyBpcyB3cml0YWJsZSwgYW5kIGNoYW5nZXMgdG8gdGhlIFVS
TCwgZm9yIGV4YW1wbGUsIHdpbGwgY2hhbmdlIHRoZSByZXF1ZXN0CisgICAgLy8gbWFkZS4gIElm
IHRoaXMgcmVxdWVzdCBpcyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QsIHRoZW4gcmVkaXJlY3RS
ZXNwb25zZQorICAgIC8vIHdpbGwgYmUgbm9uLW51bGwgYW5kIGNvbnRhaW4gdGhlIHJlc3BvbnNl
IHRoYXQgdHJpZ2dlcmVkIHRoZSByZWRpcmVjdC4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KAorICAgICAgICBXZWJGcmFtZSosIHVuc2lnbmVkIGlkZW50aWZpZXIsIFdlYlVSTFJl
cXVlc3QmLAorICAgICAgICBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkg
eyB9CisKKyAgICAvLyBSZXNwb25zZSBoZWFkZXJzIGhhdmUgYmVlbiByZWNlaXZlZCBmb3IgdGhl
IHJlc291cmNlIHJlcXVlc3QgZ2l2ZW4KKyAgICAvLyBieSBpZGVudGlmaWVyLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoCisgICAgICAgIFdlYkZyYW1lKiwgdW5zaWduZWQg
aWRlbnRpZmllciwgY29uc3QgV2ViVVJMUmVzcG9uc2UmKSB7IH0KKworICAgIC8vIFRoZSByZXNv
dXJjZSByZXF1ZXN0IGdpdmVuIGJ5IGlkZW50aWZpZXIgc3VjY2VlZGVkLgorICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoCisgICAgICAgIFdlYkZyYW1lKiwgdW5zaWduZWQg
aWRlbnRpZmllcikgeyB9CisKKyAgICAvLyBUaGUgcmVzb3VyY2UgcmVxdWVzdCBnaXZlbiBieSBp
ZGVudGlmaWVyIGZhaWxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZCgK
KyAgICAgICAgV2ViRnJhbWUqLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBXZWJVUkxFcnJv
ciYpIHsgfQorCisgICAgLy8gVGhlIHNwZWNpZmllZCByZXF1ZXN0IHdhcyBzYXRpZmllZCBmcm9t
IFdlYkNvcmUncyBtZW1vcnkgY2FjaGUuCisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZSgKKyAgICAgICAgV2ViRnJhbWUqLCBjb25zdCBXZWJVUkxSZXF1ZXN0
JiwgY29uc3QgV2ViVVJMUmVzcG9uc2UmKSB7IH0KKworICAgIC8vIFRoaXMgZnJhbWUgaGFzIGRp
c3BsYXllZCBpbmFjdGl2ZSBjb250ZW50IChzdWNoIGFzIGFuIGltYWdlKSBmcm9tIGFuCisgICAg
Ly8gaW5zZWN1cmUgc291cmNlLiAgSW5hY3RpdmUgY29udGVudCBjYW5ub3Qgc3ByZWFkIHRvIG90
aGVyIGZyYW1lcy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChX
ZWJGcmFtZSopIHsgfQorCisgICAgLy8gVGhlIGluZGljYXRlZCBzZWN1cml0eSBvcmlnaW4gaGFz
IHJ1biBhY3RpdmUgY29udGVudCAoc3VjaCBhcyBhCisgICAgLy8gc2NyaXB0KSBmcm9tIGFuIGlu
c2VjdXJlIHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4KKyAgICAv
LyBzcHJlYWQgdG8gb3RoZXIgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKSB7IH0KKworCisgICAgLy8gU2NyaXB0IG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBDb250cm9scyB3
aGV0aGVyIHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gZXhlY3V0ZSBmb3IgdGhpcyBmcmFtZS4KKyAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHQoV2ViRnJhbWUqLCBib29sIGVuYWJsZWRQZXJTZXR0
aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CisKKyAgICAvLyBTY3JpcHQgaW4g
dGhlIHBhZ2UgdHJpZWQgdG8gYWxsb2NhdGUgdG9vIG11Y2ggbWVtb3J5LgorICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGhhdXN0TWVtb3J5QXZhaWxhYmxlRm9yU2NyaXB0KFdlYkZyYW1lKikgeyB9CisK
KyAgICAvLyBOb3RpZmllcyB0aGF0IGEgbmV3IHNjcmlwdCBjb250ZXh0IGhhcyBiZWVuIGNyZWF0
ZWQgZm9yIHRoaXMgZnJhbWUuCisgICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIGRpZENsZWFyV2lu
ZG93T2JqZWN0IGJ1dCBvbmx5IGNhbGxlZCBvbmNlIHBlcgorICAgIC8vIGZyYW1lIGNvbnRleHQu
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHQoV2ViRnJhbWUqKSB7IH0K
KworICAgIC8vIE5vdGlmaWVzIHRoYXQgdGhpcyBmcmFtZSdzIHNjcmlwdCBjb250ZXh0IGhhcyBi
ZWVuIGRlc3Ryb3llZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlwdENvbnRleHQo
V2ViRnJhbWUqKSB7IH0KKworICAgIC8vIE5vdGlmaWVzIHRoYXQgYSBnYXJiYWdlLWNvbGxlY3Rl
ZCBjb250ZXh0IHdhcyBjcmVhdGVkIC0gY29udGVudAorICAgIC8vIHNjcmlwdHMuCisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChXZWJGcmFtZSopIHsgfQor
CisKKyAgICAvLyBHZW9tZXRyeSBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFRoZSBzaXplIG9mIHRoZSBjb250ZW50
IGFyZWEgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdl
YkZyYW1lKiwgY29uc3QgV2ViU2l6ZSYpIHsgfQorCisgICAgLy8gVGhlIG1haW4gZnJhbWUgc2Ny
b2xsZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldChXZWJGcmFtZSop
IHsgfQorCisKKyAgICAvLyBGaW5kLWluLXBhZ2Ugbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE5vdGlmaWVzIGhvdyBtYW55
IG1hdGNoZXMgaGF2ZSBiZWVuIGZvdW5kIHNvIGZhciwgZm9yIGEgZ2l2ZW4KKyAgICAvLyBpZGVu
dGlmaWVyLiAgfGZpbmFsVXBkYXRlfCBzcGVjaWZpZXMgd2hldGhlciB0aGlzIGlzIHRoZSBsYXN0
IHVwZGF0ZQorICAgIC8vIChhbGwgZnJhbWVzIGhhdmUgY29tcGxldGVkIHNjb3BpbmcpLgorICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRGaW5kSW5QYWdlTWF0Y2hDb3VudCgKKyAgICAgICAgaW50IGlk
ZW50aWZpZXIsIGludCBjb3VudCwgYm9vbCBmaW5hbFVwZGF0ZSkgeyB9CisKKyAgICAvLyBOb3Rp
ZmllcyB3aGF0IHRpY2stbWFyayByZWN0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gICBUaGUgZ2l2
ZW4KKyAgICAvLyBpZGVudGlmaWVyIGxldHMgdGhlIGNsaWVudCBrbm93IHdoaWNoIHJlcXVlc3Qg
dGhpcyBtZXNzYWdlIGJlbG9uZ3MKKyAgICAvLyB0bywgc28gdGhhdCBpdCBjYW4gY2hvb3NlIHRv
IGlnbm9yZSB0aGUgbWVzc2FnZSBpZiBpdCBoYXMgbW92ZWQgb24KKyAgICAvLyB0byBvdGhlciB0
aGluZ3MuICBUaGUgc2VsZWN0aW9uIHJlY3QgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBjb29yZGluYXRl
cworICAgIC8vIHJlbGF0aXZlIHRvIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHdlYiBwYWdl
IGFyZWEgYW5kIHJlcHJlc2VudAorICAgIC8vIHdoZXJlIG9uIHRoZSBzY3JlZW4gdGhlIHNlbGVj
dGlvbiByZWN0IGlzIGN1cnJlbnRseSBsb2NhdGVkLgorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRG
aW5kSW5QYWdlU2VsZWN0aW9uKAorICAgICAgICBpbnQgaWRlbnRpZmllciwgaW50IGFjdGl2ZU1h
dGNoT3JkaW5hbCwgY29uc3QgV2ViUmVjdCYgc2VsZWN0aW9uKSB7IH0KKworcHJvdGVjdGVkOgor
ICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnRDYWNoZS5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9udENhY2hlX2gKKyNkZWZpbmUgV2ViRm9u
dENhY2hlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gQW4gaW50ZXJmYWNlIHRvIHF1ZXJ5IGFuZCBjb25maWd1cmUgV2ViS2l0J3MgZm9udCBj
YWNoZS4KK2NsYXNzIFdlYkZvbnRDYWNoZSB7CitwdWJsaWM6CisgICAgLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBmb250IGRhdGEgY2FjaGUuCisgICAgV0VCS0lUX0FQSSBz
dGF0aWMgc2l6ZV90IGZvbnREYXRhQ291bnQoKTsKKworICAgIC8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiBpbmFjdGl2ZSBpdGVtcyBpbiB0aGUgZm9udCBkYXRhIGNhY2hlLgorICAgIFdFQktJVF9B
UEkgc3RhdGljIHNpemVfdCBpbmFjdGl2ZUZvbnREYXRhQ291bnQoKTsKKworICAgIC8vIENsZWFy
cyB0aGUgY2FjaGUuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBjbGVhcigpOworCitwcml2
YXRlOgorICAgIFdlYkZvbnRDYWNoZSgpOyAgLy8gTm90IGludGVuZGVkIHRvIGJlIGluc3RhbmNl
ZC4KK307CisKK30gIC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>
<flag name="review"
          id="24376"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42797</attachid>
            <date>2009-11-09 13:39:50 -0800</date>
            <delta_ts>2009-11-09 14:13:20 -0800</delta_ts>
            <desc>WebH*.h and WebI*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>26289</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2ODUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNDIgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSByZXN0IG9mIFdlYkgqLmggYW5kIFdlYkkq
LmggQ2hyb21pdW0gQVBJIGhlYWRlcnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUEJvZHku
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjpFbGVtZW50OjopOgorICAg
ICAgICAoV2ViS2l0OjpXZWJIVFRQQm9keTo6fldlYkhUVFBCb2R5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSFRUUEJvZHk6OldlYkhUVFBCb2R5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUEJv
ZHk6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5Ojppc051bGwpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViSFRUUEhlYWRlclZpc2l0b3I6On5XZWJIVFRQSGVhZGVyVmlzaXRvcik6Cisg
ICAgICAgICogcHVibGljL1dlYkhpc3RvcnlJdGVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGlzdG9y
eUl0ZW06Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpc3RvcnlJdGVtOjppc051
bGwpOgorICAgICAgICAqIHB1YmxpYy9XZWJJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2U6On5XZWJJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpXZWJJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbWFnZTo6Z2V0U2tCaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFn
ZTo6aW5pdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5wdXRFdmVudDo6V2ViSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0
RXZlbnQ6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0RXZlbnQ6OmlzS2V5Ym9hcmRFdmVu
dFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VFdmVudDo6KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1v
dXNlV2hlZWxFdmVudDo6V2ViTW91c2VXaGVlbEV2ZW50KToKKworMjAwOS0xMS0wOSAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KIAogICAgICAgICBVcHN0cmVhbSByZW1haW5kZXIgb2YgV2ViRSouaCBhbmQg
V2ViRiouaCBDaHJvbWl1bSBBUEkgaGVhZGVycy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW5wdXRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW5wdXRFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJ
bnB1dEV2ZW50X2gKKyNkZWZpbmUgV2ViSW5wdXRFdmVudF9oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
VGhlIGNsYXNzZXMgZGVmaW5lZCBpbiB0aGlzIGZpbGUgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQg
d2l0aAorLy8gV2ViV2lkZ2V0J3MgaGFuZGxlSW5wdXRFdmVudCBtZXRob2QuICBUaGVzZSBldmVu
dCB0eXBlcyBhcmUgY3Jvc3MtCisvLyBwbGF0Zm9ybSBhbmQgY29ycmVzcG9uZCBjbG9zZWx5IHRv
IFdlYkNvcmUncyBQbGF0Zm9ybSpFdmVudCBjbGFzc2VzLgorLy8KKy8vIFdBUk5JTkchIFRoZXNl
IGNsYXNzZXMgbXVzdCByZW1haW4gUE9EcyAocGxhaW4gb2xkIGRhdGEpLiAgVGhleSBhcmUKKy8v
IGludGVuZGVkIHRvIGJlICJzZXJpYWxpemFibGUiIGJ5IGNvcHlpbmcgdGhlaXIgcmF3IGJ5dGVz
LCBzbyB0aGV5IG11c3QKKy8vIG5vdCBjb250YWluIGFueSBub24tYml0LWNvcHlhYmxlIG1lbWJl
ciB2YXJpYWJsZXMhCisKKy8vIFdlYklucHV0RXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViSW5wdXRF
dmVudCB7CitwdWJsaWM6CisgICAgV2ViSW5wdXRFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBz
aXplb2YoV2ViSW5wdXRFdmVudCkpCisgICAgICAgIDogc2l6ZShzaXplUGFyYW0pCisgICAgICAg
ICwgdHlwZShVbmRlZmluZWQpCisgICAgICAgICwgbW9kaWZpZXJzKDApCisgICAgICAgICwgdGlt
ZVN0YW1wU2Vjb25kcygwLjApIHsgfQorCisgICAgLy8gV2hlbiB3ZSB1c2UgYW4gaW5wdXQgbWV0
aG9kIChvciBhbiBpbnB1dCBtZXRob2QgZWRpdG9yKSwgd2UgcmVjZWl2ZQorICAgIC8vIHR3byBl
dmVudHMgZm9yIGEga2V5cHJlc3MuIFRoZSBmb3JtZXIgZXZlbnQgaXMgYSBrZXlkb3duLCB3aGlj
aAorICAgIC8vIHByb3ZpZGVzIGEga2V5Y29kZSwgYW5kIHRoZSBsYXR0ZXIgaXMgYSB0ZXh0aW5w
dXQsIHdoaWNoIHByb3ZpZGVzCisgICAgLy8gYSBjaGFyYWN0ZXIgcHJvY2Vzc2VkIGJ5IGFuIGlu
cHV0IG1ldGhvZC4gKFRoZSBtYXBwaW5nIGZyb20gYQorICAgIC8vIGtleWNvZGUgdG8gYSBjaGFy
YWN0ZXIgY29kZSBpcyBub3QgdHJpdmlhbCBmb3Igbm9uLUVuZ2xpc2gKKyAgICAvLyBrZXlib2Fy
ZHMuKQorICAgIC8vIFRvIHN1cHBvcnQgaW5wdXQgbWV0aG9kcywgU2FmYXJpIHNlbmRzIGtleWRv
d24gZXZlbnRzIHRvIFdlYktpdCBmb3IKKyAgICAvLyBmaWx0ZXJpbmcuIFdlYktpdCBzZW5kcyBm
aWx0ZXJlZCBrZXlkb3duIGV2ZW50cyBiYWNrIHRvIFNhZmFyaSwKKyAgICAvLyB3aGljaCBzZW5k
cyB0aGVtIHRvIGlucHV0IG1ldGhvZHMuCisgICAgLy8gVW5mb3J0dW5hdGVseSwgaXQgaXMgaGFy
ZCB0byBhcHBseSB0aGlzIGRlc2lnbiB0byBDaHJvbWUgYmVjYXVzZSBvZgorICAgIC8vIG91ciBt
dWx0aXByb2Nlc3MgYXJjaGl0ZWN0dXJlLiBBbiBpbnB1dCBtZXRob2QgaXMgcnVubmluZyBpbiBh
CisgICAgLy8gYnJvd3NlciBwcm9jZXNzLiBPbiB0aGUgb3RoZXIgaGFuZCwgV2ViS2l0IGlzIHJ1
bm5pbmcgaW4gYSByZW5kZXJlcgorICAgIC8vIHByb2Nlc3MuIFNvLCB0aGlzIGRlc2lnbiByZXN1
bHRzIGluIGluY3JlYXNpbmcgSVBDIG1lc3NhZ2VzLgorICAgIC8vIFRvIHN1cHBvcnQgaW5wdXQg
bWV0aG9kcyB3aXRob3V0IGluY3JlYXNpbmcgSVBDIG1lc3NhZ2VzLCBDaHJvbWUKKyAgICAvLyBo
YW5kbGVzIGtleWJvYXJkIGV2ZW50cyBpbiBhIGJyb3dzZXIgcHJvY2VzcyBhbmQgc2VuZCBhc3lu
Y2hyb25vdXMKKyAgICAvLyBpbnB1dCBldmVudHMgKHRvIGJlIHRyYW5zbGF0ZWQgdG8gRE9NIGV2
ZW50cykgdG8gYSByZW5kZXJlcgorICAgIC8vIHByb2Nlc3MuCisgICAgLy8gVGhpcyBkZXNpZ24g
aXMgbW9zdGx5IHRoZSBzYW1lIGFzIHRoZSBvbmUgb2YgV2luZG93cyBhbmQgTWFjIENhcmJvbi4K
KyAgICAvLyBTbywgZm9yIHdoYXQgaXQncyB3b3J0aCwgb3VyIExpbnV4IGFuZCBNYWMgZnJvbnQt
ZW5kcyBlbXVsYXRlIG91cgorICAgIC8vIFdpbmRvd3MgZnJvbnQtZW5kLiBUbyBlbXVsYXRlIG91
ciBXaW5kb3dzIGZyb250LWVuZCwgd2UgY2FuIHNoYXJlCisgICAgLy8gb3VyIGJhY2stZW5kIGNv
ZGUgYW1vbmcgV2luZG93cywgTGludXgsIGFuZCBNYWMuCisgICAgLy8gVE9ETyhoYm9ubyk6IElz
c3VlIDE4MDY0OiByZW1vdmUgdGhlIEtleURvd24gdHlwZSBzaW5jZSBpdCBpc24ndAorICAgIC8v
IHVzZWQgaW4gQ2hyb21lIGFueSBsb25nZXIuCisKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBV
bmRlZmluZWQgPSAtMSwKKworICAgICAgICAvLyBXZWJNb3VzZUV2ZW50CisgICAgICAgIE1vdXNl
RG93biwKKyAgICAgICAgTW91c2VVcCwKKyAgICAgICAgTW91c2VNb3ZlLAorICAgICAgICBNb3Vz
ZUVudGVyLAorICAgICAgICBNb3VzZUxlYXZlLAorCisgICAgICAgIC8vIFdlYk1vdXNlV2hlZWxF
dmVudAorICAgICAgICBNb3VzZVdoZWVsLAorCisgICAgICAgIC8vIFdlYktleWJvYXJkRXZlbnQK
KyAgICAgICAgUmF3S2V5RG93biwKKyAgICAgICAgS2V5RG93biwKKyAgICAgICAgS2V5VXAsCisg
ICAgICAgIENoYXIKKyAgICB9OworCisgICAgZW51bSBNb2RpZmllcnMgeworICAgICAgICAvLyBt
b2RpZmllcnMgZm9yIGFsbCBldmVudHM6CisgICAgICAgIFNoaWZ0S2V5ICAgICAgICAgPSAxIDw8
IDAsCisgICAgICAgIENvbnRyb2xLZXkgICAgICAgPSAxIDw8IDEsCisgICAgICAgIEFsdEtleSAg
ICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIE1ldGFLZXkgICAgICAgICAgPSAxIDw8IDMsCisK
KyAgICAgICAgLy8gbW9kaWZpZXJzIGZvciBrZXlib2FyZCBldmVudHM6CisgICAgICAgIElzS2V5
UGFkICAgICAgICAgPSAxIDw8IDQsCisgICAgICAgIElzQXV0b1JlcGVhdCAgICAgPSAxIDw8IDUs
CisKKyAgICAgICAgLy8gbW9kaWZpZXJzIGZvciBtb3VzZSBldmVudHM6CisgICAgICAgIExlZnRC
dXR0b25Eb3duICAgPSAxIDw8IDYsCisgICAgICAgIE1pZGRsZUJ1dHRvbkRvd24gPSAxIDw8IDcs
CisgICAgICAgIFJpZ2h0QnV0dG9uRG93biAgPSAxIDw8IDgsCisgICAgfTsKKworICAgIHVuc2ln
bmVkIHNpemU7ICAgLy8gVGhlIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUsIGZvciBzZXJpYWxpemF0
aW9uLgorICAgIFR5cGUgdHlwZTsKKyAgICBpbnQgbW9kaWZpZXJzOworICAgIGRvdWJsZSB0aW1l
U3RhbXBTZWNvbmRzOyAgIC8vIFNlY29uZHMgc2luY2UgZXBvY2guCisKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIFdlYklucHV0RXZlbnQgfHR5cGV8IGlzIGEga2V5Ym9hcmQgZXZlbnQuCisg
ICAgc3RhdGljIGJvb2wgaXNLZXlib2FyZEV2ZW50VHlwZShpbnQgdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0eXBlID09IFJhd0tleURvd24KKyAgICAgICAgICAgIHx8IHR5cGUgPT0gS2V5
RG93bgorICAgICAgICAgICAgfHwgdHlwZSA9PSBLZXlVcAorICAgICAgICAgICAgfHwgdHlwZSA9
PSBDaGFyOworICAgIH0KK307CisKKy8vIFdlYktleWJvYXJkRXZlbnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICAvLyBD
YXBzIG9uIHN0cmluZyBsZW5ndGhzIHNvIHdlIGNhbiBtYWtlIHRoZW0gc3RhdGljIGFycmF5cyBh
bmQga2VlcAorICAgIC8vIHRoZW0gUE9Ecy4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHRleHRM
ZW5ndGhDYXAgPSA0OworCisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMt
RXZlbnRzL2tleXNldC5odG1sIGxpc3RzIHRoZQorICAgIC8vIGlkZW50aWZpZXJzLiAgVGhlIGxv
bmdlc3QgaXMgMTggY2hhcmFjdGVycywgc28gd2Ugcm91bmQgdXAgdG8gdGhlCisgICAgLy8gbmV4
dCBtdWx0aXBsZSBvZiA0LgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga2V5SWRlbnRpZmllckxl
bmd0aENhcCA9IDIwOworCisgICAgLy8gfHdpbmRvd3NLZXlDb2RlfCBpcyB0aGUgV2luZG93cyBr
ZXkgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkKKyAgICAvLyBldmVudC4gIFNvbWV0aW1l
cyBpdCdzIGRpcmVjdCBmcm9tIHRoZSBldmVudCAoaS5lLiBvbiBXaW5kb3dzKSwKKyAgICAvLyBz
b21ldGltZXMgaXQncyB2aWEgYSBtYXBwaW5nIGZ1bmN0aW9uLiAgSWYgeW91IHdhbnQgYSBsaXN0
LCBzZWUKKyAgICAvLyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0tleWJvYXJkQ29kZXMqIC4K
KyAgICBpbnQgd2luZG93c0tleUNvZGU7CisKKyAgICAvLyBUaGUgYWN0dWFsIGtleSBjb2RlIGdl
bmVuZXJhdGVkIGJ5IHRoZSBwbGF0Zm9ybS4gIFRoZSBET00gc3BlYyBydW5zCisgICAgLy8gb24g
V2luZG93cy1lcXVpdmFsZW50IGNvZGVzICh0aHVzIHx3aW5kb3dzS2V5Q29kZXwgYWJvdmUpIGJ1
dCBpdAorICAgIC8vIGRvZXNuJ3QgaHVydCB0byBoYXZlIHRoaXMgb25lIGFyb3VuZC4KKyAgICBp
bnQgbmF0aXZlS2V5Q29kZTsKKworICAgIC8vIHx0ZXh0fCBpcyB0aGUgdGV4dCBnZW5lcmF0ZWQg
YnkgdGhpcyBrZXlzdHJva2UuICB8dW5tb2RpZmllZFRleHR8IGlzCisgICAgLy8gfHRleHR8LCBi
dXQgdW5tb2RpZmllZCBieSBhbiBjb25jdXJyZW50bHktaGVsZCBtb2RpZmllcnMgKGV4Y2VwdAor
ICAgIC8vIHNoaWZ0KS4gIFRoaXMgaXMgdXNlZnVsIGZvciB3b3JraW5nIG91dCBzaG9ydGN1dCBr
ZXlzLiAgTGludXggYW5kCisgICAgLy8gV2luZG93cyBndWFyYW50ZWUgb25lIGNoYXJhY3RlciBw
ZXIgZXZlbnQuICBUaGUgTWFjIGRvZXMgbm90LCBidXQgaW4KKyAgICAvLyByZWFsaXR5IHRoYXQn
cyBhbGwgaXQgZXZlciBnaXZlcy4gIFdlJ3JlIGdlbmVyb3VzLCBhbmQgY2FwIGl0IGEgYml0Cisg
ICAgLy8gbG9uZ2VyLgorICAgIFdlYlVDaGFyIHRleHRbdGV4dExlbmd0aENhcF07CisgICAgV2Vi
VUNoYXIgdW5tb2RpZmllZFRleHRbdGV4dExlbmd0aENhcF07CisKKyAgICAvLyBUaGlzIGlzIGEg
c3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBrZXkgcHJlc3NlZC4KKyAgICBjaGFyIGtleUlkZW50aWZp
ZXJba2V5SWRlbnRpZmllckxlbmd0aENhcF07CisKKyAgICAvLyBUaGlzIGlkZW50aWZpZXMgd2hl
dGhlciB0aGlzIGV2ZW50IHdhcyB0YWdnZWQgYnkgdGhlIHN5c3RlbSBhcyBiZWluZworICAgIC8v
IGEgInN5c3RlbSBrZXkiIGV2ZW50IChzZWUKKyAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvbXM2NDYyODYoVlMuODUpLmFzcHggZm9yCisgICAgLy8gZGV0YWls
cykuICBPdGhlciBwbGF0Zm9ybXMgZG9uJ3QgaGF2ZSB0aGlzIGNvbmNlcHQsIGJ1dCBpdCdzIGp1
c3QKKyAgICAvLyBlYXNpZXIgdG8gbGVhdmUgaXQgYWx3YXlzIGZhbHNlIHRoYW4gaWZkZWYuCisg
ICAgLy8gaW50IGlzIHVzZWQgaW5zdGVhZCBvZiBib29sIHRvIGVuc3VyZSB0aGUgc2l6ZSBvZiB0
aGlzIHN0cnVjdHVyZSBpcworICAgIC8vIHN0cmljdGx5IGFsaWduZWQgdG8gYSBmYWN0b3Igb2Yg
NCBieXRlcywgb3RoZXJ3aXNlIG1lbW9yeSBjaGVjayB0b29scworICAgIC8vIGxpa2UgdmFsZ3Jp
bmQgbWF5IGNvbXBsYWluIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHdoZW4KKyAg
ICAvLyB0cmFuc2ZlcmluZyBpdCBvdmVyIHRoZSB3aXJlLgorICAgIGludCBpc1N5c3RlbUtleTsK
KworICAgIFdlYktleWJvYXJkRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYktl
eWJvYXJkRXZlbnQpKQorICAgICAgICA6IFdlYklucHV0RXZlbnQoc2l6ZVBhcmFtKQorICAgICAg
ICAsIHdpbmRvd3NLZXlDb2RlKDApCisgICAgICAgICwgbmF0aXZlS2V5Q29kZSgwKQorICAgICAg
ICAsIGlzU3lzdGVtS2V5KGZhbHNlKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZ0ZXh0LCAwLCBz
aXplb2YodGV4dCkpOworICAgICAgICBtZW1zZXQoJnVubW9kaWZpZWRUZXh0LCAwLCBzaXplb2Yo
dW5tb2RpZmllZFRleHQpKTsKKyAgICAgICAgbWVtc2V0KCZrZXlJZGVudGlmaWVyLCAwLCBzaXpl
b2Yoa2V5SWRlbnRpZmllcikpOworICAgIH0KKworICAgIC8vIFNldHMga2V5SWRlbnRpZmllciBi
YXNlZCBvbiB0aGUgdmFsdWUgb2Ygd2luZG93c0tleUNvZGUuICBUaGlzIGlzCisgICAgLy8gaGFu
ZHkgZm9yIGdlbmVyYXRpbmcgc3ludGhldGljIGtleWJvYXJkIGV2ZW50cy4KKyAgICBXRUJLSVRf
QVBJIHZvaWQgc2V0S2V5SWRlbnRpZmllckZyb21XaW5kb3dzS2V5Q29kZSgpOworfTsKKworLy8g
V2ViTW91c2VFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBXZWJNb3VzZUV2ZW50IDogcHVibGljIFdlYklu
cHV0RXZlbnQgeworcHVibGljOgorICAgIC8vIFRoZXNlIHZhbHVlcyBkZWZpbmVkIGZvciBXZWJD
b3JlOjpNb3VzZUJ1dHRvbgorICAgIGVudW0gQnV0dG9uIHsKKyAgICAgICAgQnV0dG9uTm9uZSA9
IC0xLAorICAgICAgICBCdXR0b25MZWZ0LAorICAgICAgICBCdXR0b25NaWRkbGUsCisgICAgICAg
IEJ1dHRvblJpZ2h0CisgICAgfTsKKworICAgIEJ1dHRvbiBidXR0b247CisgICAgaW50IHg7Cisg
ICAgaW50IHk7CisgICAgaW50IHdpbmRvd1g7CisgICAgaW50IHdpbmRvd1k7CisgICAgaW50IGds
b2JhbFg7CisgICAgaW50IGdsb2JhbFk7CisgICAgaW50IGNsaWNrQ291bnQ7CisKKyAgICBXZWJN
b3VzZUV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJNb3VzZUV2ZW50KSkKKyAg
ICAgICAgOiBXZWJJbnB1dEV2ZW50KHNpemVQYXJhbSkKKyAgICAgICAgLCBidXR0b24oQnV0dG9u
Tm9uZSkKKyAgICAgICAgLCB4KDApCisgICAgICAgICwgeSgwKQorICAgICAgICAsIHdpbmRvd1go
MCkKKyAgICAgICAgLCB3aW5kb3dZKDApCisgICAgICAgICwgZ2xvYmFsWCgwKQorICAgICAgICAs
IGdsb2JhbFkoMCkKKyAgICAgICAgLCBjbGlja0NvdW50KDApCisgICAgeworICAgIH0KK307CisK
Ky8vIFdlYk1vdXNlV2hlZWxFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50IDogcHVi
bGljIFdlYk1vdXNlRXZlbnQgeworcHVibGljOgorICAgIGZsb2F0IGRlbHRhWDsKKyAgICBmbG9h
dCBkZWx0YVk7CisgICAgZmxvYXQgd2hlZWxUaWNrc1g7CisgICAgZmxvYXQgd2hlZWxUaWNrc1k7
CisKKyAgICAvLyBpbnQgaXMgdXNlZCBpbnN0ZWFkIG9mIGJvb2wgdG8gZW5zdXJlIHRoZSBzaXpl
IG9mIHRoaXMgc3RydWN0dXJlIGlzCisgICAgLy8gc3RyaWN0bHkgYWxpZ25lZCB0byBhIGZhY3Rv
ciBvZiA0IGJ5dGVzLCBvdGhlcndpc2UgbWVtb3J5IGNoZWNrIHRvb2xzCisgICAgLy8gbGlrZSB2
YWxncmluZCBtYXkgY29tcGxhaW4gYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugd2hl
bgorICAgIC8vIHRyYW5zZmVyaW5nIGl0IG92ZXIgdGhlIHdpcmUuCisgICAgaW50IHNjcm9sbEJ5
UGFnZTsKKworICAgIFdlYk1vdXNlV2hlZWxFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXpl
b2YoV2ViTW91c2VXaGVlbEV2ZW50KSkKKyAgICAgICAgOiBXZWJNb3VzZUV2ZW50KHNpemVQYXJh
bSkKKyAgICAgICAgLCBkZWx0YVgoMC4wZikKKyAgICAgICAgLCBkZWx0YVkoMC4wZikKKyAgICAg
ICAgLCB3aGVlbFRpY2tzWCgwLjBmKQorICAgICAgICAsIHdoZWVsVGlja3NZKDAuMGYpCisgICAg
ICAgICwgc2Nyb2xsQnlQYWdlKGZhbHNlKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhU
VFBIZWFkZXJWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJIVFRQSGVhZGVyVmlzaXRvci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJIVFRQSGVhZGVyVmlzaXRvcl9oCisjZGVmaW5lIFdlYkhUVFBIZWFkZXJWaXNp
dG9yX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3Mg
V2ViSFRUUEhlYWRlclZpc2l0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdEhl
YWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIH5XZWJIVFRQSGVhZGVyVmlzaXRvcigpIHsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQQm9keS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SFRUUEJvZHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRU
UEJvZHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkhUVFBCb2R5
X2gKKyNkZWZpbmUgV2ViSFRUUEJvZHlfaAorCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1
ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9ybURhdGE7IH0K
K25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJIVFRQQm9keVByaXZh
dGU7CisKK2NsYXNzIFdlYkhUVFBCb2R5IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgRWxlbWVudCB7
CisgICAgICAgIGVudW0geyBUeXBlRGF0YSwgVHlwZUZpbGUgfSB0eXBlOworICAgICAgICBXZWJE
YXRhIGRhdGE7CisgICAgICAgIFdlYlN0cmluZyBmaWxlUGF0aDsKKyAgICB9OworCisgICAgfldl
YkhUVFBCb2R5KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJIVFRQQm9keSgpIDogbV9wcml2YXRl
KDApIHsgfQorICAgIFdlYkhUVFBCb2R5KGNvbnN0IFdlYkhUVFBCb2R5JiBiKSA6IG1fcHJpdmF0
ZSgwKSB7IGFzc2lnbihiKTsgfQorICAgIFdlYkhUVFBCb2R5JiBvcGVyYXRvcj0oY29uc3QgV2Vi
SFRUUEJvZHkmIGIpCisgICAgeworICAgICAgICBhc3NpZ24oYik7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFdF
QktJVF9BUEkgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3Qg
V2ViSFRUUEJvZHkmKTsKKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJp
dmF0ZTsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXByaXNp
bmcgdGhlIGh0dHAgYm9keS4KKyAgICBXRUJLSVRfQVBJIHNpemVfdCBlbGVtZW50Q291bnQoKSBj
b25zdDsKKworICAgIC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2
ZW4gaW5kZXguICBSZXR1cm5zIGZhbHNlIGlmCisgICAgLy8gaW5kZXggaXMgb3V0IG9mIGJvdW5k
cy4KKyAgICBXRUJLSVRfQVBJIGJvb2wgZWxlbWVudEF0KHNpemVfdCBpbmRleCwgRWxlbWVudCYp
IGNvbnN0OworCisgICAgLy8gQXBwZW5kIHRvIHRoZSBsaXN0IG9mIGVsZW1lbnRzLgorICAgIFdF
QktJVF9BUEkgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFdlYkRhdGEmKTsKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgYXBwZW5kRmlsZShjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIC8vIElkZW50aWZpZXMg
YSBwYXJ0aWN1bGFyIGZvcm0gc3VibWlzc2lvbiBpbnN0YW5jZS4gIEEgdmFsdWUgb2YgMCBpcwor
ICAgIC8vIHVzZWQgdG8gaW5kaWNhdGUgYW4gdW5zcGVjaWZpZWQgaWRlbnRpZmllci4KKyAgICBX
RUJLSVRfQVBJIGxvbmcgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2
b2lkIHNldElkZW50aWZpZXIobG9uZyBsb25nKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkhUVFBCb2R5KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtRGF0
YT4mKTsKKyAgICBXZWJIVFRQQm9keSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpGb3JtRGF0YT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Rm9ybURhdGE+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2ln
bihXZWJIVFRQQm9keVByaXZhdGUqKTsKKyAgICB2b2lkIGVuc3VyZU11dGFibGUoKTsKKyAgICBX
ZWJIVFRQQm9keVByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSGlzdG9yeUl0ZW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhpc3RvcnlJdGVtLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJIaXN0b3J5SXRlbV9oCisj
ZGVmaW5lIFdlYkhpc3RvcnlJdGVtX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEhpc3RvcnlJ
dGVtOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NS
ZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlOworY2xhc3MgV2ViSFRUUEJvZHk7CitjbGFzcyBXZWJTdHJpbmc7CitzdHJ1
Y3QgV2ViUG9pbnQ7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOworCisv
LyBSZXByZXNlbnRzIGEgZnJhbWUtbGV2ZWwgbmF2aWdhdGlvbiBlbnRyeSBpbiBzZXNzaW9uIGhp
c3RvcnkuICBBCisvLyBXZWJIaXN0b3J5SXRlbSBpcyBhIG5vZGUgaW4gYSB0cmVlLgorLy8KKy8v
IENvcHlpbmcgYSBXZWJIaXN0b3J5SXRlbSBpcyBjaGVhcC4KKy8vCitjbGFzcyBXZWJIaXN0b3J5
SXRlbSB7CitwdWJsaWM6CisgICAgfldlYkhpc3RvcnlJdGVtKCkgeyByZXNldCgpOyB9CisKKyAg
ICBXZWJIaXN0b3J5SXRlbSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkhpc3RvcnlJdGVt
KGNvbnN0IFdlYkhpc3RvcnlJdGVtJiBoKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihoKTsgfQor
ICAgIFdlYkhpc3RvcnlJdGVtJiBvcGVyYXRvcj0oY29uc3QgV2ViSGlzdG9yeUl0ZW0mIGgpCisg
ICAgeworICAgICAgICBhc3NpZ24oaCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICBXRUJLSVRfQVBJIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFdFQktJVF9BUEkgdm9pZCBy
ZXNldCgpOworICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViSGlzdG9yeUl0ZW0m
KTsKKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisg
ICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdXJsU3RyaW5nKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQ
SSB2b2lkIHNldFVSTFN0cmluZyhjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdFQktJVF9BUEkg
V2ViU3RyaW5nIG9yaWdpbmFsVVJMU3RyaW5nKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lk
IHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgV0VCS0lUX0FQ
SSBXZWJTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmVm
ZXJyZXIoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0YXJn
ZXQoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0VGFyZ2V0KGNvbnN0IFdlYlN0cmlu
ZyYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgcGFyZW50KCkgY29uc3Q7CisgICAgV0VC
S0lUX0FQSSB2b2lkIHNldFBhcmVudChjb25zdCBXZWJTdHJpbmcmKTsKKworICAgIFdFQktJVF9B
UEkgV2ViU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYlN0cmluZyYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgYWx0ZXJuYXRl
VGl0bGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0QWx0ZXJuYXRlVGl0bGUoY29u
c3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJLSVRfQVBJIGRvdWJsZSBsYXN0VmlzaXRlZFRpbWUo
KSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0TGFzdFZpc2l0ZWRUaW1lKGRvdWJsZSk7
CisKKyAgICBXRUJLSVRfQVBJIFdlYlBvaW50IHNjcm9sbE9mZnNldCgpIGNvbnN0OworICAgIFdF
QktJVF9BUEkgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViUG9pbnQmKTsKKworICAgIFdF
QktJVF9BUEkgYm9vbCBpc1RhcmdldEl0ZW0oKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQg
c2V0SXNUYXJnZXRJdGVtKGJvb2wpOworCisgICAgV0VCS0lUX0FQSSBpbnQgdmlzaXRDb3VudCgp
IGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRWaXNpdENvdW50KGludCk7CisKKyAgICBX
RUJLSVRfQVBJIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGRvY3VtZW50U3RhdGUoKSBjb25zdDsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0RG9jdW1lbnRTdGF0ZShjb25zdCBXZWJWZWN0b3I8V2ViU3Ry
aW5nPiYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgaHR0cENvbnRlbnRUeXBlKCkgY29u
c3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldEhUVFBDb250ZW50VHlwZShjb25zdCBXZWJTdHJp
bmcmKTsKKworICAgIFdFQktJVF9BUEkgV2ViSFRUUEJvZHkgaHR0cEJvZHkoKSBjb25zdDsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0SFRUUEJvZHkoY29uc3QgV2ViSFRUUEJvZHkmKTsKKworICAg
IFdFQktJVF9BUEkgV2ViVmVjdG9yPFdlYkhpc3RvcnlJdGVtPiBjaGlsZHJlbigpIGNvbnN0Owor
ICAgIFdFQktJVF9BUEkgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViSGlzdG9y
eUl0ZW0+Jik7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFwcGVuZFRvQ2hpbGRyZW4oY29uc3QgV2Vi
SGlzdG9yeUl0ZW0mKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkhpc3Rv
cnlJdGVtKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mKTsKKyAg
ICBXZWJIaXN0b3J5SXRlbSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2ln
bihXZWJIaXN0b3J5SXRlbVByaXZhdGUqKTsKKyAgICB2b2lkIGVuc3VyZU11dGFibGUoKTsKKyAg
ICBXZWJIaXN0b3J5SXRlbVByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbWFnZV9oCisjZGVmaW5lIFdlYkltYWdlX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1NLSUEKKyNpbmNs
dWRlIDxTa0JpdG1hcC5oPgorI2VsaWYgV0VCS0lUX1VTSU5HX0NHCit0eXBlZGVmIHN0cnVjdCBD
R0ltYWdlKiBDR0ltYWdlUmVmOworI2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW1hZ2U7IH0KK25hbWVzcGFjZSBXVEYgeyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhOworc3RydWN0IFdlYlNpemU7CisKKy8vIEEgY29u
dGFpbmVyIGZvciBhbiBBUkdCIGJpdG1hcC4KK2NsYXNzIFdlYkltYWdlIHsKK3B1YmxpYzoKKyAg
ICB+V2ViSW1hZ2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkltYWdlKCkgeyBpbml0KCk7IH0K
KyAgICBXZWJJbWFnZShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAgICBpbml0
KCk7CisgICAgICAgIGFzc2lnbihpbWFnZSk7CisgICAgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJh
dG9yPShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAgICBhc3NpZ24oaW1hZ2Up
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8gRGVjb2RlcyB0aGUgZ2l2
ZW4gaW1hZ2UgZGF0YS4gIElmIHRoZSBpbWFnZSBoYXMgbXVsdGlwbGUgZnJhbWVzLAorICAgIC8v
IHRoZW4gdGhlIGZyYW1lIHdob3NlIHNpemUgaXMgZGVzaXJlZFNpemUgaXMgcmV0dXJuZWQuICBP
dGhlcndpc2UsCisgICAgLy8gdGhlIGZpcnN0IGZyYW1lIGlzIHJldHVybmVkLgorICAgIFdFQktJ
VF9BUEkgc3RhdGljIFdlYkltYWdlIGZyb21EYXRhKGNvbnN0IFdlYkRhdGEmLCBjb25zdCBXZWJT
aXplJiBkZXNpcmVkU2l6ZSk7CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBX
RUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkltYWdlJik7CisKKyAgICBXRUJLSVRfQVBJ
IGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTaXplIHNpemUoKSBjb25z
dDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkltYWdlKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4mKTsKKyAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4mKTsKKyNlbmRpZgorCisjaWYgV0VC
S0lUX1VTSU5HX1NLSUEKKyAgICBXZWJJbWFnZShjb25zdCBTa0JpdG1hcCYgYml0bWFwKSA6IG1f
Yml0bWFwKGJpdG1hcCkgeyB9CisKKyAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KGNvbnN0IFNrQml0
bWFwJiBiaXRtYXApCisgICAgeworICAgICAgICBtX2JpdG1hcCA9IGJpdG1hcDsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFNrQml0bWFwJiBnZXRTa0JpdG1hcCgpIHsgcmV0
dXJuIG1fYml0bWFwOyB9CisgICAgY29uc3QgU2tCaXRtYXAmIGdldFNrQml0bWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRtYXA7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXQoKSB7IH0KKyAg
ICBTa0JpdG1hcCBtX2JpdG1hcDsKKworI2VsaWYgV0VCS0lUX1VTSU5HX0NHCisgICAgV2ViSW1h
Z2UoQ0dJbWFnZVJlZiBpbWFnZVJlZikKKyAgICB7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAg
YXNzaWduKGltYWdlUmVmKTsKKyAgICB9CisKKyAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KENHSW1h
Z2VSZWYgaW1hZ2VSZWYpCisgICAgeworICAgICAgICBhc3NpZ24oaW1hZ2VSZWYpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZVJlZjsgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5pdCgp
IHsgbV9pbWFnZVJlZiA9IDA7IH0KKyAgICB2b2lkIGFzc2lnbihDR0ltYWdlUmVmKTsKKyAgICBD
R0ltYWdlUmVmIG1faW1hZ2VSZWY7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYK
</data>
<flag name="review"
          id="24379"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42799</attachid>
            <date>2009-11-09 14:02:22 -0800</date>
            <delta_ts>2009-11-09 14:13:23 -0800</delta_ts>
            <desc>WebKit.h through WebMedia*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27370</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2ODcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBDaHJvbWl1bSBBUEkgaGVhZGVycyBXZWJr
aXQuaCB0aHJ1IFdlYk1lZGlhUGxheWVyQ2xpZW50LmguCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
S2l0Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYktpdENsaWVudDo6fldlYktpdENsaWVudCk6CisgICAgICAgICog
cHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9jYWxpemVkU3RyaW5nOjopOgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGltZVJhbmdlOjpXZWJUaW1lUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllcjo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXI6On5XZWJNZWRpYVBsYXllcik6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxh
eWVyQWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckFjdGlv
bjo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJBY3Rpb246OldlYk1lZGlhUGxh
eWVyQWN0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50Ojp+V2ViTWVkaWFQbGF5
ZXJDbGllbnQpOgorCiAyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhUGxheWVyQ2xpZW50X2gKKyNk
ZWZpbmUgV2ViTWVkaWFQbGF5ZXJDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUmVxdWVzdDsKK2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2ViTWVkaWFQbGF5ZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdm9sdW1lQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGltZUNoYW5nZWQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGFpbnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGR1cmF0aW9uQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNpemVDaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzYXdVbnN1cHBvcnRlZFRyYWNrcygpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJNZWRp
YVBsYXllckNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTG9jYWxpemVkU3RyaW5n
X2gKKyNkZWZpbmUgV2ViTG9jYWxpemVkU3RyaW5nX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBXZWJMb2NhbGl6ZWRTdHJpbmcgeworICAgIGVudW0gTmFtZSB7CisgICAgICAgIFN1
Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCwKKyAgICAgICAgSW5wdXRFbGVtZW50QWx0VGV4dCwKKyAg
ICAgICAgUmVzZXRCdXR0b25EZWZhdWx0TGFiZWwsCisgICAgICAgIEZpbGVCdXR0b25DaG9vc2VG
aWxlTGFiZWwsCisgICAgICAgIEZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsLAorICAgICAg
ICBNdWx0aXBsZUZpbGVVcGxvYWRUZXh0LAorICAgICAgICBTZWFyY2hhYmxlSW5kZXhJbnRyb2R1
Y3Rpb24sCisgICAgICAgIFNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCwKKyAgICAgICAg
U2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCwKKyAgICAgICAgU2VhcmNoTWVudUNsZWFyUmVj
ZW50U2VhcmNoZXNUZXh0LAorICAgICAgICBBWFdlYkFyZWFUZXh0LAorICAgICAgICBBWExpbmtU
ZXh0LAorICAgICAgICBBWExpc3RNYXJrZXJUZXh0LAorICAgICAgICBBWEltYWdlTWFwVGV4dCwK
KyAgICAgICAgQVhIZWFkaW5nVGV4dCwKKyAgICAgICAgQVhCdXR0b25BY3Rpb25WZXJiLAorICAg
ICAgICBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYiwKKyAgICAgICAgQVhUZXh0RmllbGRBY3Rpb25W
ZXJiLAorICAgICAgICBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIsCisgICAgICAgIEFYVW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiLAorICAgICAgICBBWExpbmtBY3Rpb25WZXJiLAorICAg
ICAgICBLZXlnZW5NZW51SGlnaEdyYWRlS2V5U2l6ZSwKKyAgICAgICAgS2V5Z2VuTWVudU1lZGl1
bUdyYWRlS2V5U2l6ZSwKKyAgICB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0X2gKKyNkZWZpbmUgV2ViS2l0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViS2l0Q2xpZW50OworCisvLyBNdXN0
IGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIHRoYXQgd2lsbCBiZSB0aGUgbWFpbiBXZWJLaXQgdGhy
ZWFkIGJlZm9yZQorLy8gdXNpbmcgYW55IG90aGVyIFdlYktpdCBBUElzLiAgVGhlIHByb3ZpZGVk
IFdlYktpdENsaWVudCBtdXN0IGJlIG5vbi1udWxsCisvLyBhbmQgbXVzdCByZW1haW4gdmFsaWQg
dW50aWwgdGhlIGN1cnJlbnQgdGhyZWFkIGNhbGxzIHNodXRkb3duLgorV0VCS0lUX0FQSSB2b2lk
IGluaXRpYWxpemUoV2ViS2l0Q2xpZW50Kik7CisKKy8vIE9uY2Ugc2h1dGRvd24sIHRoZSBXZWJL
aXRDbGllbnQgcGFzc2VkIHRvIGluaXRpYWxpemUgd2lsbCBubyBsb25nZXIgYmUKKy8vIGFjY2Vz
c2VkLiAgTm8gb3RoZXIgV2ViS2l0IG9iamVjdHMgc2hvdWxkIGJlIGluIHVzZSB3aGVuIHRoaXMg
ZnVuY3Rpb24KKy8vIGlzIGNhbGxlZC4gIEFueSBiYWNrZ3JvdW5kIHRocmVhZHMgY3JlYXRlZCBi
eSBXZWJLaXQgYXJlIHByb21pc2VkIHRvIGJlCisvLyB0ZXJtaW5hdGVkIGJ5IHRoZSB0aW1lIHRo
aXMgZnVuY3Rpb24gcmV0dXJucy4KK1dFQktJVF9BUEkgdm9pZCBzaHV0ZG93bigpOworCisvLyBS
ZXR1cm5zIHRoZSBXZWJLaXRDbGllbnQgaW5zdGFuY2UgcGFzc2VkIHRvIGluaXRpYWxpemUuCitX
RUJLSVRfQVBJIFdlYktpdENsaWVudCogd2ViS2l0Q2xpZW50KCk7CisKKy8vIEFsdGVycyB0aGUg
cmVuZGVyaW5nIG9mIGNvbnRlbnQgdG8gY29uZm9ybSB0byBhIGZpeGVkIHNldCBvZiBydWxlcy4K
K1dFQktJVF9BUEkgdm9pZCBzZXRMYXlvdXRUZXN0TW9kZShib29sKTsKK1dFQktJVF9BUEkgYm9v
bCBsYXlvdXRUZXN0TW9kZSgpOworCisvLyBQdXJnZSB0aGUgcGx1Z2luIGxpc3QgY2FjaGUuIElm
IHxyZWxvYWRQYWdlc3wgaXMgdHJ1ZSwgYW55IHBhZ2VzCisvLyBjb250YWluaW5nIHBsdWdpbnMg
d2lsbCBiZSByZWxvYWRlZCBhZnRlciByZWZyZXNoaW5nIHRoZSBwbHVnaW4gbGlzdC4KK1dFQktJ
VF9BUEkgdm9pZCByZXNldFBsdWdpbkNhY2hlKGJvb2wgcmVsb2FkUGFnZXMpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYVBsYXllci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYVBsYXllci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVk
aWFQbGF5ZXJfaAorI2RlZmluZSBXZWJNZWRpYVBsYXllcl9oCisKKyNpbmNsdWRlICJXZWJDYW52
YXMuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OworY2xhc3MgV2ViVVJMOworc3RydWN0IFdlYlJlY3Q7
CitzdHJ1Y3QgV2ViU2l6ZTsKKworc3RydWN0IFdlYlRpbWVSYW5nZSB7CisgICAgV2ViVGltZVJh
bmdlKCkgOiBzdGFydCgwKSwgZW5kKDApIHt9CisgICAgV2ViVGltZVJhbmdlKGZsb2F0IHMsIGZs
b2F0IGUpIDogc3RhcnQocyksIGVuZChlKSB7fQorCisgICAgZmxvYXQgc3RhcnQ7CisgICAgZmxv
YXQgZW5kOworfTsKKwordHlwZWRlZiBXZWJWZWN0b3I8V2ViVGltZVJhbmdlPiBXZWJUaW1lUmFu
Z2VzOworCitjbGFzcyBXZWJNZWRpYVBsYXllciB7CitwdWJsaWM6CisgICAgZW51bSBOZXR3b3Jr
U3RhdGUgeworICAgICAgICBFbXB0eSwKKyAgICAgICAgSWRsZSwKKyAgICAgICAgTG9hZGluZywK
KyAgICAgICAgTG9hZGVkLAorICAgICAgICBGb3JtYXRFcnJvciwKKyAgICAgICAgTmV0d29ya0Vy
cm9yLAorICAgICAgICBEZWNvZGVFcnJvciwKKyAgICB9OworCisgICAgZW51bSBSZWFkeVN0YXRl
IHsKKyAgICAgICAgSGF2ZU5vdGhpbmcsCisgICAgICAgIEhhdmVNZXRhZGF0YSwKKyAgICAgICAg
SGF2ZUN1cnJlbnREYXRhLAorICAgICAgICBIYXZlRnV0dXJlRGF0YSwKKyAgICAgICAgSGF2ZUVu
b3VnaERhdGEsCisgICAgfTsKKworICAgIGVudW0gTW92aWVMb2FkVHlwZSB7CisgICAgICAgIFVu
a25vd24sCisgICAgICAgIERvd25sb2FkLAorICAgICAgICBTdG9yZWRTdHJlYW0sCisgICAgICAg
IExpdmVTdHJlYW0sCisgICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhUGxheWVyKCkge30K
KworICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdlYlVSTCYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKKworICAgIC8vIFBsYXliYWNrIGNvbnRyb2xzLgorICAg
IHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1NhdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
ZWsoZmxvYXQgc2Vjb25kcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmRUaW1lKGZsb2F0
IHNlY29uZHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNldEF1dG9CdWZmZXIoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCB0b3RhbEJ5dGVzS25vd24oKSA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBXZWJUaW1lUmFuZ2VzJiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaXplKGNvbnN0IFdlYlNpemUmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q2FudmFzKiwgY29uc3QgV2ViUmVjdCYpID0gMDsKKworICAgIC8vIFRydWUgaWYgdGhlIGxvYWRl
ZCBtZWRpYSBoYXMgYSBwbGF5YWJsZSB2aWRlby9hdWRpbyB0cmFjay4KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmlkZW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29u
c3QgPSAwOworCisgICAgLy8gRGltZW5zaW9uIG9mIHRoZSB2aWRlby4KKyAgICB2aXJ0dWFsIFdl
YlNpemUgbmF0dXJhbFNpemUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBHZXR0ZXJzIG9mIHBsYXli
YWNrIHN0YXRlLgorICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHNlZWtpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBkdXJhdGlv
bigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3QgPSAw
OworCisgICAgLy8gR2V0IHJhdGUgb2YgbG9hZGluZyB0aGUgcmVzb3VyY2UuCisgICAgdmlydHVh
bCBpbnQgZGF0YVJhdGUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBJbnRlcm5hbCBzdGF0ZXMgb2Yg
bG9hZGluZyBhbmQgbmV0d29yay4KKyAgICB2aXJ0dWFsIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3Rh
dGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc0xvYWRlZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgTW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Qg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYktpdENsaWVudF9oCisjZGVmaW5lIFdlYktpdENsaWVudF9oCisKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKKyNpbmNsdWRl
ICJXZWJWZWN0b3IuaCIKKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2lmZGVmIFdJTjMyCit0eXBl
ZGVmIHZvaWQgKkhBTkRMRTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CitjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudDsKK2NsYXNzIFdlYkNsaXBib2FyZDsKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJNZXNz
YWdlUG9ydENoYW5uZWw7CitjbGFzcyBXZWJNaW1lUmVnaXN0cnk7CitjbGFzcyBXZWJQbHVnaW5M
aXN0QnVpbGRlcjsKK2NsYXNzIFdlYlNhbmRib3hTdXBwb3J0OworY2xhc3MgV2ViU2hhcmVkV29y
a2VyUmVwb3NpdG9yeTsKK2NsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlN0
b3JhZ2VOYW1lc3BhY2U7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsK
K2NsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVSTExvYWRlcjsKK3N0cnVjdCBXZWJDb29raWU7Citz
dHJ1Y3QgV2ViUGx1Z2luSW5mbzsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0
b3I7CisKK2NsYXNzIFdlYktpdENsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTXVzdCByZXR1cm4g
bm9uLW51bGwuCisgICAgdmlydHVhbCBXZWJDbGlwYm9hcmQqIGNsaXBib2FyZCgpID0gMDsKKwor
ICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgorICAgIHZpcnR1YWwgV2ViTWltZVJlZ2lzdHJ5
KiBtaW1lUmVnaXN0cnkoKSA9IDA7CisKKyAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgc2FuZGJv
eCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkKKyAgICB2aXJ0dWFsIFdlYlNhbmRib3hTdXBwb3J0
KiBzYW5kYm94U3VwcG9ydCgpID0gMDsKKworICAgIC8vIE1heSByZXR1cm4gbnVsbCBvbiBzb21l
IHBsYXRmb3Jtcy4KKyAgICB2aXJ0dWFsIFdlYlRoZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpID0g
MDsKKworCisgICAgLy8gQXBwbGljYXRpb24gQ2FjaGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiB0aGUgcHJv
Y2VzcyB0eXBlIGRvZXNuJ3QgaW52b2x2ZSBhcHBjYWNoaW5nLgorICAgIHZpcnR1YWwgV2ViQXBw
bGljYXRpb25DYWNoZUhvc3QqIGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0Q2xpZW50KikgPSAwOworCisKKyAgICAvLyBET00gU3RvcmFnZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmV0
dXJuIGEgTG9jYWxTdG9yYWdlIG5hbWVzcGFjZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBmb2xs
b3dpbmcgcGF0aC4KKyAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKSA9
IDA7CisKKyAgICAvLyBSZXR1cm4gYSBuZXcgU2Vzc2lvblN0b3JhZ2UgbmFtZXNwYWNlLgorICAg
IHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgd2hlbiBzdG9yYWdlIGV2ZW50cyBmaXJlLgorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBXZWJTdHJpbmcmIGtleSwg
Y29uc3QgV2ViU3RyaW5nJiBvbGRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYg
dXJsLCBib29sIGlzTG9jYWxTdG9yYWdlKSA9IDA7CisKKworICAgIC8vIEZpbGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgLy8gVmFyaW91cyBmaWxlL2RpcmVjdG9yeSByZWxhdGVkIGZ1bmN0aW9ucy4gIFRoZXNl
IG1hcCAxOjEgd2l0aAorICAgIC8vIGZ1bmN0aW9ucyBpbiBXZWJDb3JlJ3MgRmlsZVN5c3RlbS5o
LgorICAgIHZpcnR1YWwgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcm
IHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KSA9
IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJTdHJpbmcm
IHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgV2ViU3RyaW5nJiBw
YXRoKSA9IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0QWJzb2x1dGVQYXRoKGNvbnN0IFdl
YlN0cmluZyYgcGF0aCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeShjb25zdCBX
ZWJTdHJpbmcmIHBhdGgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYlVSTCBmaWxlUGF0aFRvVVJMKGNv
bnN0IFdlYlN0cmluZyYgcGF0aCkgPSAwOworCisKKyAgICAvLyBIaXN0b3J5IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAg
IC8vIFJldHVybnMgdGhlIGhhc2ggZm9yIHRoZSBnaXZlbiBjYW5vbmljYWxpemVkIFVSTCBmb3Ig
dXNlIGluIHZpc2l0ZWQKKyAgICAvLyBsaW5rIGNvbG9yaW5nLgorICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBsb25nIHZpc2l0ZWRMaW5rSGFzaCgKKyAgICAgICAgY29uc3QgY2hhciogY2Fub25p
Y2FsVVJMLCBzaXplX3QgbGVuZ3RoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IGdpdmVuIGxpbmsgaGFzaCBpcyBpbiB0aGUgdXNlcidzIGhpc3RvcnkuICBUaGUKKyAgICAvLyBo
YXNoIG11c3QgaGF2ZSBiZWVuIGdlbmVyYXRlZCBieSBjYWxsaW5nIFZpc2l0ZWRMaW5rSGFzaCgp
LgorICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKHVuc2lnbmVkIGxvbmcgbG9uZyBsaW5r
SGFzaCkgPSAwOworCisKKyAgICAvLyBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmZGVmIFdJTjMyCisgICAg
dHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKKyNlbHNlCisgICAgdHlwZWRlZiBpbnQgRmlsZUhh
bmRsZTsKKyNlbmRpZgorCisgICAgLy8gT3BlbnMgYSBkYXRhYmFzZSBmaWxlOyBkaXJIYW5kbGUg
c2hvdWxkIGJlIDAgaWYgdGhlIGNhbGxlciBkb2VzIG5vdCBuZWVkCisgICAgLy8gYSBoYW5kbGUg
dG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgZmlsZQorICAgIHZpcnR1YWwgRmlsZUhh
bmRsZSBkYXRhYmFzZU9wZW5GaWxlKAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
LCBpbnQgZGVzaXJlZEZsYWdzLCBGaWxlSGFuZGxlKiBkaXJIYW5kbGUpID0gMDsKKworICAgIC8v
IERlbGV0ZXMgYSBkYXRhYmFzZSBmaWxlIGFuZCByZXR1cm5zIHRoZSBlcnJvciBjb2RlCisgICAg
dmlydHVhbCBpbnQgZGF0YWJhc2VEZWxldGVGaWxlKGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUs
IGJvb2wgc3luY0RpcikgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgYXR0cmlidXRlcyBvZiB0
aGUgZ2l2ZW4gZGF0YWJhc2UgZmlsZQorICAgIHZpcnR1YWwgbG9uZyBkYXRhYmFzZUdldEZpbGVB
dHRyaWJ1dGVzKGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpID0gMDsKKworICAgIC8vIFJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIGRhdGFiYXNlIGZpbGUKKyAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBkYXRhYmFzZUdldEZpbGVTaXplKGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpID0gMDsK
KworCisgICAgLy8gS2V5Z2VuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBIYW5kbGUgdGhlIDxrZXlnZW4+IHRh
ZyBmb3IgZ2VuZXJhdGluZyBjbGllbnQgY2VydGlmaWNhdGVzCisgICAgLy8gUmV0dXJucyBhIGJh
c2U2NCBlbmNvZGVkIHNpZ25lZCBjb3B5IG9mIGEgcHVibGljIGtleSBmcm9tIGEgbmV3bHkKKyAg
ICAvLyBnZW5lcmF0ZWQga2V5IHBhaXIgYW5kIHRoZSBzdXBwbGllZCBjaGFsbGVuZ2Ugc3RyaW5n
LiBrZXlTaXplaW5kZXgKKyAgICAvLyBzcGVjaWZpZXMgdGhlIHN0cmVuZ3RoIG9mIHRoZSBrZXku
CisgICAgdmlydHVhbCBXZWJTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNoYWxsZW5n
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCkgPSAwOworCisKKworICAgIC8vIE1lbW9yeSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisgICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRo
ZSBwYWdlZmlsZSwgaW4gTUIuCisgICAgLy8gVGhhdCBpcyBjb21taXR0ZWQgc2l6ZSBmb3IgV2lu
ZG93cyBhbmQgdmlydHVhbCBtZW1vcnkgc2l6ZSBmb3IgUE9TSVgKKyAgICB2aXJ0dWFsIHNpemVf
dCBtZW1vcnlVc2FnZU1CKCkgPSAwOworCisKKyAgICAvLyBNZXNzYWdlIFBvcnRzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8v
IENyZWF0ZXMgYSBNZXNzYWdlIFBvcnQgQ2hhbm5lbC4gIFRoaXMgY2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkLgorICAgIC8vIFRoZSByZXR1cm5lZCBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgdXNl
ZCBvbiB0aGUgdGhyZWFkIGl0IHdhcyBjcmVhdGVkIG9uLgorICAgIHZpcnR1YWwgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsKiBjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwoKSA9IDA7CisKKworICAgIC8v
IE5ldHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXMoCisgICAgICAgIGNv
bnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkwmIHBvbGljeVVSTCwgY29uc3QgV2ViU3RyaW5n
JiBjb29raWVzKSA9IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgY29va2llcyhjb25zdCBXZWJV
UkwmIHVybCwgY29uc3QgV2ViVVJMJiBwb2xpY3lVUkwpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cmF3Q29va2llcyhjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViVVJMJiBwb2xpY3lVUkwsIFdl
YlZlY3RvcjxXZWJDb29raWU+KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgY29va2llTmFtZSkgPSAwOworCisg
ICAgLy8gQSBzdWdnZXN0aW9uIHRvIHByZWZldGNoIElQIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2
ZW4gaG9zdG5hbWUuCisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoSG9zdE5hbWUoY29uc3QgV2Vi
U3RyaW5nJikgPSAwOworCisgICAgLy8gUmV0dXJucyBhIG5ldyBXZWJVUkxMb2FkZXIgaW5zdGFu
Y2UuCisgICAgdmlydHVhbCBXZWJVUkxMb2FkZXIqIGNyZWF0ZVVSTExvYWRlcigpID0gMDsKKwor
ICAgIC8vIFJldHVybnMgYSBuZXcgV2ViU29ja2V0U3RyZWFtSGFuZGxlIGluc3RhbmNlLgorICAg
IHZpcnR1YWwgV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUo
KSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBVc2VyLUFnZW50IHN0cmluZyB0aGF0IHNob3Vs
ZCBiZSB1c2VkIGZvciB0aGUgZ2l2ZW4gVVJMLgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJVUkwmKSA9IDA7CisKKworICAgIC8vIFBsdWdpbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAg
Ly8gSWYgcmVmcmVzaCBpcyB0cnVlLCB0aGVuIGNhY2hlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90
IGJlIHVzZWQgdG8KKyAgICAvLyBzYXRpc2Z5IHRoaXMgY2FsbC4KKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGx1Z2luTGlzdChib29sIHJlZnJlc2gsIFdlYlBsdWdpbkxpc3RCdWlsZGVyKikgPSAwOwor
CisKKyAgICAvLyBQcm9maWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRTdGF0
c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1l
bnRTdGF0c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgPSAwOworCisgICAgLy8gQW4gZXZlbnQg
aXMgaWRlbnRpZmllZCBieSB0aGUgcGFpciAobmFtZSwgaWQpLiAgVGhlIGV4dHJhIHBhcmFtZXRl
cgorICAgIC8vIHNwZWNpZmllcyBhZGRpdGlvbmFsIGRhdGEgdG8gbG9nIHdpdGggdGhlIGV2ZW50
LgorICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9p
ZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZl
bnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7
CisKKworICAgIC8vIFJlc291cmNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmV0dXJucyBhIGJsb2Igb2YgZGF0
YSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lZCByZXNvdXJjZS4KKyAgICB2aXJ0dWFsIFdlYkRh
dGEgbG9hZFJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpID0gMDsKKworICAgIC8vIFJldHVybnMg
YSBsb2NhbGl6ZWQgc3RyaW5nIHJlc291cmNlICh3aXRoIGFuIG9wdGlvbmFsIG51bWVyaWMKKyAg
ICAvLyBwYXJhbWV0ZXIgdmFsdWUpLgorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHF1ZXJ5TG9jYWxp
emVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSkgPSAwOworICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIHF1ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSwgaW50
IG51bWVyaWNWYWx1ZSkgPSAwOworCisKKyAgICAvLyBTYW5kYm94IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gSW4g
c29tZSBicm93c2VycywgYSAic2FuZGJveCIgcmVzdHJpY3RzIHdoYXQgb3BlcmF0aW9ucyBhIHBy
b2dyYW0KKyAgICAvLyBpcyBhbGxvd2VkIHRvIHByZWZvcm0uICBTdWNoIG9wZXJhdGlvbnMgYXJl
IHR5cGljYWxseSBhYnN0cmFjdGVkIG91dAorICAgIC8vIHZpYSB0aGlzIEFQSSwgYnV0IHNvbWV0
aW1lcyAobGlrZSBpbiBIVE1MIDUgZGF0YWJhc2Ugb3BlbmluZykgV2ViS2l0CisgICAgLy8gbmVl
ZHMgdG8gYmVoYXZlIGRpZmZlcmVudGx5IGJhc2VkIG9uIHdoZXRoZXIgaXQncyByZXN0cmljdGVk
IG9yIG5vdC4KKyAgICAvLyBJbiB0aGVzZSBjYXNlcyAoYW5kIHRoZXNlIGNhc2VzIG9ubHkpIHlv
dSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgorICAgIC8vIEl0J3MgT0sgZm9yIHRoaXMgdmFsdWUg
dG8gYmUgY29uc2Vydml0aXZlIChpLmUuIHRydWUgZXZlbiBpZiB0aGUKKyAgICAvLyBzYW5kYm94
IGlzbid0IGFjdGl2ZSkuCisgICAgdmlydHVhbCBib29sIHNhbmRib3hFbmFibGVkKCkgPSAwOwor
CisKKyAgICAvLyBTaGFyZWQgV29ya2VycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgV2ViU2hhcmVkV29ya2VyUmVw
b3NpdG9yeSogc2hhcmVkV29ya2VyUmVwb3NpdG9yeSgpID0gMDsKKworICAgIC8vIFN1ZGRlbiBU
ZXJtaW5hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisgICAgLy8gRGlzYWJsZS9FbmFibGUgc3VkZGVuIHRlcm1pbmF0aW9uLgorICAgIHZp
cnR1YWwgdm9pZCBzdWRkZW5UZXJtaW5hdGlvbkNoYW5nZWQoYm9vbCBlbmFibGVkKSA9IDA7CisK
KworICAgIC8vIFN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmV0dXJucyBhIHZhbHVlIHN1Y2ggYXMg
ImVuLVVTIi4KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBkZWZhdWx0TG9jYWxlKCkgPSAwOworCisg
ICAgLy8gV2FsbCBjbG9jayB0aW1lIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLgorICAgIHZp
cnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworCisgICAgLy8gRGVsYXllZCB3b3JrIGlz
IGRyaXZlbiBieSBhIHNoYXJlZCB0aW1lci4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jKSgpKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZVRpbWUoZG91YmxlIGZpcmVUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3BTaGFyZWRUaW1lcigpID0gMDsKKworICAgIC8vIENhbGxhYmxlIGZyb20gYSBiYWNr
Z3JvdW5kIFdlYktpdCB0aHJlYWQuCisgICAgdmlydHVhbCB2b2lkIGNhbGxPbk1haW5UaHJlYWQo
dm9pZCAoKmZ1bmMpKCkpID0gMDsKKworcHJvdGVjdGVkOgorICAgIH5XZWJLaXRDbGllbnQoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyQWN0aW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhUGxheWVyQWN0aW9uX2gKKyNkZWZp
bmUgV2ViTWVkaWFQbGF5ZXJBY3Rpb25faAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFdlYk1lZGlhUGxheWVyQWN0aW9uIHsKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBVbmtub3du
LAorICAgICAgICBQbGF5LAorICAgICAgICBNdXRlLAorICAgICAgICBMb29wCisgICAgfTsKKwor
ICAgIFR5cGUgdHlwZTsKKyAgICBib29sIGVuYWJsZTsKKworICAgIFdlYk1lZGlhUGxheWVyQWN0
aW9uKCkKKyAgICAgICAgOiB0eXBlKFVua25vd24pLCBlbmFibGUoZmFsc2UpIHsgfQorICAgIFdl
Yk1lZGlhUGxheWVyQWN0aW9uKFR5cGUgdHlwZSwgYm9vbCBlbmFibGUpCisgICAgICAgIDogdHlw
ZSh0eXBlKSwgZW5hYmxlKGVuYWJsZSkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCg==
</data>
<flag name="review"
          id="24382"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42801</attachid>
            <date>2009-11-09 14:22:07 -0800</date>
            <delta_ts>2009-11-09 14:55:02 -0800</delta_ts>
            <desc>WebMessage*.h through WebNavigation*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13758</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMjUgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSBDaHJvbWl1bSBBUEkgaGVhZGVycyBXZWJN
ZXNzYWdlIHRocm91Z2ggV2ViTmF2aWdhdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1YmxpYy9XZWJNZXNz
YWdlUG9ydENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbDo6fldlYk1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgICogcHVibGljL1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTWVz
c2FnZVBvcnRDaGFubmVsQ2xpZW50Ojp+V2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50KToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJNaW1lUmVnaXN0cnk6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYk1pbWVSZWdpc3RyeTo6
fldlYk1pbWVSZWdpc3RyeSk6CisgICAgICAgICogcHVibGljL1dlYk5hdmlnYXRpb25Qb2xpY3ku
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogcHVibGljL1dlYk5hdmln
YXRpb25UeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorCisyMDA5LTExLTA5ICBO
YXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgogCiAgICAgICAgIFVwc3RyZWFtIENocm9taXVtIEFQSSBoZWFkZXJz
IFdlYmtpdC5oIHRocnUgV2ViTWVkaWFQbGF5ZXJDbGllbnQuaC4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTmF2aWdhdGlvblR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk5hdmlnYXRpb25UeXBlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk5hdmlnYXRpb25UeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYk5hdmlnYXRpb25UeXBlX2gKKyNkZWZpbmUgV2ViTmF2aWdhdGlv
blR5cGVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBXZWJOYXZpZ2F0aW9uVHlwZSB7
CisgICAgV2ViTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCwKKyAgICBXZWJOYXZpZ2F0aW9uVHlw
ZUZvcm1TdWJtaXR0ZWQsCisgICAgV2ViTmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZCwKKyAgICBX
ZWJOYXZpZ2F0aW9uVHlwZVJlbG9hZCwKKyAgICBXZWJOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1p
dHRlZCwKKyAgICBXZWJOYXZpZ2F0aW9uVHlwZU90aGVyCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hdmlnYXRp
b25Qb2xpY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hdmln
YXRpb25Qb2xpY3kuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TmF2aWdhdGlvblBvbGljeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJOYXZpZ2F0aW9uUG9saWN5X2gKKyNkZWZpbmUgV2ViTmF2aWdhdGlvblBvbGljeV9oCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYk5hdmlnYXRpb25Qb2xpY3kgeworICAgIFdlYk5h
dmlnYXRpb25Qb2xpY3lJZ25vcmUsCisgICAgV2ViTmF2aWdhdGlvblBvbGljeURvd25sb2FkLAor
ICAgIFdlYk5hdmlnYXRpb25Qb2xpY3lDdXJyZW50VGFiLAorICAgIFdlYk5hdmlnYXRpb25Qb2xp
Y3lOZXdCYWNrZ3JvdW5kVGFiLAorICAgIFdlYk5hdmlnYXRpb25Qb2xpY3lOZXdGb3JlZ3JvdW5k
VGFiLAorICAgIFdlYk5hdmlnYXRpb25Qb2xpY3lOZXdXaW5kb3csCisgICAgV2ViTmF2aWdhdGlv
blBvbGljeU5ld1BvcHVwLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENo
YW5uZWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWVzc2FnZVBv
cnRDaGFubmVsX2gKKyNkZWZpbmUgV2ViTWVzc2FnZVBvcnRDaGFubmVsX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50OworY2xhc3MgV2ViU3RyaW5n
OworCit0eXBlZGVmIFdlYlZlY3RvcjxjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWwqPiBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheTsKKworLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIGEg
TWVzc2FnZSBQb3J0IENoYW5uZWwgaW1wbGVtZW50YXRpb24uICBUaGUgb2JqZWN0IG93bnMgaXRz
ZWxmIGFuZAorLy8gaXMgc2lnbmFsbGVkIHRoYXQgaXRzIG5vdCBuZWVkZWQgYW55bW9yZSB3aXRo
IHRoZSBkZXN0cm95KCkgY2FsbC4KK2NsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJNZXNzYWdlUG9ydENoYW5uZWxDbGll
bnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSA9IDA7CisgICAgLy8gV2ViS2l0
IHZlcnNpb25zIG9mIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbC4KKyAgICB2aXJ0dWFsIHZv
aWQgZW50YW5nbGUoV2ViTWVzc2FnZVBvcnRDaGFubmVsKikgPSAwOworICAgIC8vIENhbGxlZSBy
ZWNlaXZlcyBvd25lcnNoaXAgb2YgdGhlIHBhc3NlZCB2ZWN0b3IuCisgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyosIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbENsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50X2gKKyNkZWZpbmUgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFByb3ZpZGVz
IGFuIGludGVyZmFjZSBmb3IgdXNlcnMgb2YgV2ViTWVzc2FnZVBvcnRDaGFubmVsIHRvIGJlIG5v
dGlmaWVkCisvLyB3aGVuIG1lc3NhZ2VzIGFyZSBhdmFpbGFibGUuCitjbGFzcyBXZWJNZXNzYWdl
UG9ydENoYW5uZWxDbGllbnQgeworcHVibGljOgorICAgIC8vIEFsZXJ0cyB0aGF0IG5ldyBtZXNz
YWdlcyBoYXZlIGFycml2ZWQsIHdoaWNoIGFyZSByZXRyaWV2ZWQgYnkgY2FsbGluZworICAgIC8v
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZS4gIE5vdGUgdGhhdCB0aGlzIG1h
eSBiZSBjYWxsZWQKKyAgICAvLyBvbiBhbnkgdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCBtZXNz
YWdlQXZhaWxhYmxlKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYk1lc3NhZ2VQb3J0Q2hh
bm5lbENsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTWltZVJlZ2lzdHJ5X2gKKyNkZWZpbmUgV2Vi
TWltZVJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJNaW1lUmVnaXN0cnkgeworcHVi
bGljOgorICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9ydGVk
LCBNYXlCZVN1cHBvcnRlZCB9OworCisgICAgdmlydHVhbCBTdXBwb3J0c1R5cGUgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKSA9IDA7CisgICAgdmlydHVhbCBTdXBw
b3J0c1R5cGUgc3VwcG9ydHNJbWFnZU1JTUVUeXBlKGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUp
ID0gMDsKKyAgICB2aXJ0dWFsIFN1cHBvcnRzVHlwZSBzdXBwb3J0c0phdmFTY3JpcHRNSU1FVHlw
ZShjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKSA9IDA7CisgICAgdmlydHVhbCBTdXBwb3J0c1R5
cGUgc3VwcG9ydHNNZWRpYU1JTUVUeXBlKGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgY29kZWNzKSA9IDA7CisgICAgdmlydHVhbCBTdXBwb3J0c1R5cGUgc3VwcG9ydHNOb25JbWFn
ZU1JTUVUeXBlKGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUpID0gMDsKKworICAgIHZpcnR1YWwg
V2ViU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFdlYlN0cmluZyYgZmlsZUV4dGVu
c2lvbikgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIG1pbWVUeXBlRnJvbUZpbGUoY29uc3Qg
V2ViU3RyaW5nJiBmaWxlUGF0aCkgPSAwOworICAgIHZpcnR1YWwgV2ViU3RyaW5nIHByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIH5XZWJNaW1lUmVnaXN0cnkoKSB7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYK
</data>
<flag name="review"
          id="24386"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42802</attachid>
            <date>2009-11-09 14:24:07 -0800</date>
            <delta_ts>2009-11-09 14:55:06 -0800</delta_ts>
            <desc>Rest of WebN*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13911</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMjcgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcHN0cmVhbSByZW1haW5pbmcgQ2hyb21pdW0gQVBJIFdl
Yk4qLmggaGVhZGVycy4KKworICAgICAgICAqIHB1YmxpYy9XZWJOb25Db3B5YWJsZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTm9uQ29weWFibGU6OldlYk5vbkNvcHlhYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm9uQ29weWFibGU6On5XZWJOb25Db3B5YWJsZSk6CisgICAgICAg
ICogcHVibGljL1dlYk5vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb246On5XZWJOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmlj
YXRpb246Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6ZXF1
YWxzKToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9w
ZXJhdG9yIT0pOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazo6fldlYk5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogcHVibGljL1dlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyOjopOgorCisyMDA5LTExLTA5ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgogCiAgICAgICAgIFVwc3Ry
ZWFtIENocm9taXVtIEFQSSBoZWFkZXJzIFdlYmtpdC5oIHRocnUgV2ViTWVkaWFQbGF5ZXJDbGll
bnQuaC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5vbkNvcHlhYmxlX2gKKyNkZWZpbmUg
V2ViTm9uQ29weWFibGVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBiYXNlIGNsYXNz
IHRvIGV4dGVuZCBmcm9tIGlmIHlvdSBkbyBub3Qgc3VwcG9ydCBjb3B5aW5nLgorY2xhc3MgV2Vi
Tm9uQ29weWFibGUgeworcHJvdGVjdGVkOgorICAgIFdlYk5vbkNvcHlhYmxlKCkgeyB9CisgICAg
fldlYk5vbkNvcHlhYmxlKCkgeyB9CisKK3ByaXZhdGU6CisgICAgV2ViTm9uQ29weWFibGUoY29u
c3QgV2ViTm9uQ29weWFibGUmKTsKKyAgICBXZWJOb25Db3B5YWJsZSYgb3BlcmF0b3I9KGNvbnN0
IFdlYk5vbkNvcHlhYmxlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tfaAorI2RlZmluZSBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworLy8gQ2FsbGJhY2sgb2JqZWN0IHVzZWQgd2l0aCBXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIuCitjbGFzcyBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sg
eworcHVibGljOgorICAgIC8vIE1ldGhvZCB0byBiZSBpbnZva2VkIHdoZW4gdGhlIGFzeW5jIHBl
cm1pc3Npb24gcmVxdWVzdCBpbnZvbHZpbmcKKyAgICAvLyB0aGlzIG9iamVjdCBoYXMgYmVlbiBj
b21wbGV0ZWQuCisgICAgdmlydHVhbCB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0Q29tcGxldGUoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBUaGlzIG9iamVjdCBpcyB0byBiZSBkZXN0cm95ZWQg
YWZ0ZXIgdGhlIGNhbGxiYWNrIGlzIGludm9rZWQ7CisgICAgLy8gaXQgc2hvdWxkIG5vdCBiZSBk
aXJlY3RseSBkZXN0cm95ZWQuCisgICAgfldlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
aygpIHt9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlvblByZXNl
bnRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXJfaAorI2RlZmluZSBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXJfaAorCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJOb3Rp
ZmljYXRpb247CitjbGFzcyBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CisKKy8v
IFByb3ZpZGVzIHRoZSBzZXJ2aWNlcyB0byBzaG93IGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byB0
aGUgdXNlci4KK2NsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciB7CitwdWJsaWM6CisgICAg
ZW51bSBQZXJtaXNzaW9uIHsKKyAgICAgICAgUGVybWlzc2lvbkFsbG93ZWQsICAgICAvLyBVc2Vy
IGhhcyBhbGxvd2VkIHBlcm1pc3Npb24gdG8gdGhlIG9yaWdpbi4KKyAgICAgICAgUGVybWlzc2lv
bk5vdEFsbG93ZWQsICAvLyBVc2VyIGhhcyBub3QgdGFrZW4gYW4gYWN0aW9uIG9uIHRoZSBvcmln
aW4gKGRlZmF1bHRzIHRvIG5vdCBhbGxvd2VkKS4KKyAgICAgICAgUGVybWlzc2lvbkRlbmllZCAg
ICAgICAvLyBVc2VyIGhhcyBleHBsaWNpdGx5IGRlbmllZCBwZXJtaXNzaW9uIGZyb20gdGhlIG9y
aWdpbi4KKyAgICB9OworCisgICAgLy8gU2hvd3MgYSBub3RpZmljYXRpb24uCisgICAgdmlydHVh
bCBib29sIHNob3coY29uc3QgV2ViTm90aWZpY2F0aW9uJikgPSAwOworCisgICAgLy8gQ2FuY2Vs
cyBhIG5vdGlmaWNhdGlvbiBwcmV2aW91c2x5IHNob3duLCBhbmQgcmVtb3ZlcyBpdCBpZiBiZWlu
ZyBzaG93bi4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYp
ID0gMDsKKworICAgIC8vIEluZGljaWF0ZXMgdGhhdCB0aGUgbm90aWZpY2F0aW9uIG9iamVjdCBz
dWJzY3JpYmVkIHRvIGV2ZW50cyBmb3IgYSBwcmV2aW91c2x5IHNob3duIG5vdGlmaWNhdGlvbiBp
cworICAgIC8vIGJlaW5nIGRlc3Ryb3llZC4gIERvZXMgX25vdF8gcmVtb3ZlIHRoZSBub3RpZmlj
YXRpb24gaWYgYmVpbmcgc2hvd24sIGJ1dCBkZXRhY2hlcyBpdCBmcm9tIHJlY2VpdmluZyBldmVu
dHMuCisgICAgdmlydHVhbCB2b2lkIG9iamVjdERlc3Ryb3llZChjb25zdCBXZWJOb3RpZmljYXRp
b24mKSA9IDA7CisKKyAgICAvLyBDaGVja3MgdGhlIHBlcm1pc3Npb24gbGV2ZWwgb2YgYSBnaXZl
biBvcmlnaW4uCisgICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihjb25zdCBX
ZWJTdHJpbmcmIG9yaWdpbikgPSAwOworCisgICAgLy8gUmVxdWVzdHMgcGVybWlzc2lvbiBmb3Ig
YSBnaXZlbiBvcmlnaW4uICBUaGlzIG9wZXJhdGlvbiBpcyBhc3luY2hyb25vdXMgYW5kIHRoZSBj
YWxsYmFjayBwcm92aWRlZAorICAgIC8vIHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSBwZXJtaXNz
aW9uIGRlY2lzaW9uIGlzIG1hZGUuICBDYWxsYmFjayBwb2ludGVyIG11c3QgcmVtYWluCisgICAg
Ly8gdmFsaWQgdW50aWwgY2FsbGVkLgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihjb25zdCBXZWJTdHJpbmcmIG9yaWdpbiwgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrKiBjYWxsYmFjaykgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb3RpZmljYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlvbi5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb3RpZmljYXRpb24uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5vdGlmaWNhdGlvbl9oCisjZGVmaW5l
IFdlYk5vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBOb3RpZmljYXRpb247
IH0KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0
cjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJOb3RpZmljYXRp
b25Qcml2YXRlOworY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViU3RyaW5nOworCisvLyBSZXByZXNl
bnRzIGFjY2VzcyB0byBhIGRlc2t0b3Agbm90aWZpY2F0aW9uLgorY2xhc3MgV2ViTm90aWZpY2F0
aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJOb3RpZmljYXRpb24oKSA6IG1fcHJpdmF0ZSgwKSB7IH0K
KyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViTm90aWZpY2F0aW9uJiBvdGhlcikgOiBtX3By
aXZhdGUoMCkgeyBhc3NpZ24ob3RoZXIpOyB9CisKKyAgICB+V2ViTm90aWZpY2F0aW9uKCkgeyBy
ZXNldCgpOyB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgYXNzaWduKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYpOworCisgICAgV2ViTm90aWZpY2F0
aW9uJiBvcGVyYXRvcj0oY29uc3QgV2ViTm90aWZpY2F0aW9uJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICAv
LyBPcGVyYXRvcnMgcmVxdWlyZWQgdG8gcHV0IFdlYk5vdGlmaWNhdGlvbiBpbiBhbiBvcmRlcmVk
IG1hcC4KKyAgICBib29sIGVxdWFscyhjb25zdCBXZWJOb3RpZmljYXRpb24mIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3ByaXZhdGUgPT0gb3RoZXIubV9wcml2YXRlOyB9CisgICAgYm9vbCBsZXNz
VGhhbihjb25zdCBXZWJOb3RpZmljYXRpb24mIG90aGVyKSBjb25zdDsKKworICAgIC8vIElzIHRo
ZSBub3RpZmljYXRpb24gSFRNTCB2cy4gaWNvbi10aXRsZS10ZXh0PworICAgIFdFQktJVF9BUEkg
Ym9vbCBpc0hUTUwoKSBjb25zdDsKKworICAgIC8vIElmIEhUTUwsIHRoZSBVUkwgd2hpY2ggY29u
dGFpbnMgdGhlIGNvbnRlbnRzIG9mIHRoZSBub3RpZmljYXRpb24uCisgICAgV0VCS0lUX0FQSSBX
ZWJVUkwgdXJsKCkgY29uc3Q7CisKKyAgICAvLyBJZiBub3QgSFRNTCwgdGhlIHBhcmFtZXRlcnMg
Zm9yIHRoZSBpY29uLXRpdGxlLXRleHQgbm90aWZpY2F0aW9uLgorICAgIFdFQktJVF9BUEkgV2Vi
U3RyaW5nIGljb24oKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0aXRsZSgpIGNv
bnN0OworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGJvZHkoKSBjb25zdDsKKworICAgIC8vIENh
bGxlZCB0byBpbmRpY2F0ZSB0aGUgbm90aWZpY2F0aW9uIGhhcyBiZWVuIGRpc3BsYXllZC4KKyAg
ICBXRUJLSVRfQVBJIHZvaWQgZGlzcGF0Y2hEaXNwbGF5RXZlbnQoKTsKKworICAgIC8vIENhbGxl
ZCB0byBpbmRpY2F0ZSBhbiBlcnJvciBoYXMgb2NjdXJyZWQgd2l0aCB0aGlzIG5vdGlmaWNhdGlv
bi4KKyAgICBXRUJLSVRfQVBJIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KGNvbnN0IFdlYlN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKKworICAgIC8vIENhbGxlZCB0byBpbmRpY2F0ZSB0aGUgbm90aWZp
Y2F0aW9uIGhhcyBiZWVuIGNsb3NlZC4gIElmIGl0IHdhcworICAgIC8vIGNsb3NlZCBieSB0aGUg
dXNlciAoYXMgb3Bwb3NlZCB0byBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0pLAorICAgIC8v
IHRoZSBieVVzZXIgcGFyYW1ldGVyIHdpbGwgYmUgdHJ1ZS4KKyAgICBXRUJLSVRfQVBJIHZvaWQg
ZGlzcGF0Y2hDbG9zZUV2ZW50KGJvb2wgYnlVc2VyKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
Tm90aWZpY2F0aW9uPiYpOworICAgIFdlYk5vdGlmaWNhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+Jik7CisgICAgb3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4oKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIHZvaWQgYXNzaWduKFdlYk5vdGlmaWNhdGlvblByaXZhdGUqKTsKKyAgICBX
ZWJOb3RpZmljYXRpb25Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgYSwgY29uc3QgV2ViTm90aWZpY2F0aW9uJiBi
KQoreworICAgIHJldHVybiBhLmVxdWFscyhiKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBXZWJOb3RpZmljYXRpb24mIGEsIGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgYikKK3sK
KyAgICByZXR1cm4gIWEuZXF1YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgV2ViTm90aWZpY2F0aW9uJiBhLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIGIpCit7CisgICAg
cmV0dXJuIGEubGVzc1RoYW4oYik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYK
</data>
<flag name="review"
          id="24387"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42803</attachid>
            <date>2009-11-09 14:37:08 -0800</date>
            <delta_ts>2009-11-09 14:38:14 -0800</delta_ts>
            <desc>2009-11-09  Nate Chapin  &lt;japhet@chromium.org&gt;</desc>
            <filename>bug-28394-20091109143706.patch</filename>
            <type>text/plain</type>
            <size>19959</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYjRjZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0wLDAgKzEsMjUg
QEAKKzIwMDktMTEtMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgU3RhcnRpbmcgdXBz
dHJlYW1pbmcgdGhlIENocm9taXVtIFdlYktpdCBBUEkuICBwdWJsaWMvIGNvbnRhaW5zIGhlYWRl
ciBmaWxlcyBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODM5NAorCisgICAgICAgICogQ2hhbmdlTG9nOiBGaXJzdCEhCisgICAgICAgICog
cHVibGljOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Q2FjaGU6OldlYkFjY2Vz
c2liaWxpdHlDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlDYWNoZTo6
fldlYkFjY2Vzc2liaWxpdHlDYWNoZSk6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6On5XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNz
aWJpbGl0eU9iamVjdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vz
c2liaWxpdHlSb2xlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAqIHB1
YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0Ojp+V2ViQXBwbGljYXRpb25DYWNoZUhvc3QpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ6On5XZWJBcHBsaWNhdGlvbkNhY2hlSG9z
dENsaWVudCk6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2li
aWxpdHlDYWNoZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q2Fj
aGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDcwNGEwCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGUu
aApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVfaAorI2RlZmlu
ZSBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJWaWV3OworY2xhc3MgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDsKKworY2xhc3MgV2ViQWNjZXNzaWJpbGl0eUNhY2hlIHsKK3B1YmxpYzoKKyAgICBX
ZWJBY2Nlc3NpYmlsaXR5Q2FjaGUoKSB7fQorICAgIHZpcnR1YWwgfldlYkFjY2Vzc2liaWxpdHlD
YWNoZSgpIHt9CisKKyAgICBzdGF0aWMgV2ViQWNjZXNzaWJpbGl0eUNhY2hlKiBjcmVhdGUoKTsK
KyAgICBzdGF0aWMgdm9pZCBlbmFibGVBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZShXZWJWaWV3KiB2aWV3KSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5p
dGlhbGl6ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QgZ2V0T2JqZWN0QnlJZChpbnQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZElkKGlu
dCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGFkZE9yR2V0SWQoY29uc3QgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYgb2JqZWN0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGlu
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZj
NTE5MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0X2gKKyNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdF9oCisKKyNpbmNsdWRlICJX
ZWJBY2Nlc3NpYmlsaXR5Um9sZS5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEFjY2Vzc2liaWxp
dHlPYmplY3Q7IH0KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
UGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0UHJpdmF0ZTsKK2NsYXNzIFdlYlN0cmluZzsKK3N0cnVjdCBXZWJQ
b2ludDsKK3N0cnVjdCBXZWJSZWN0OworCisvLyBBIGNvbnRhaW5lciBmb3IgcGFzc2luZyBhcm91
bmQgYSByZWZlcmVuY2UgdG8gQWNjZXNzaWJpbGl0eU9iamVjdC4KK2NsYXNzIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3QgeworcHVibGljOgorICAgIH5XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgeyBy
ZXNldCgpOyB9CisKKyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCkgOiBtX3ByaXZhdGUoMCkg
eyB9CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBvKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihvKTsgfQorICAgIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QmIG9wZXJhdG9yPShjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvKQorICAg
IHsKKyAgICAgICAgYXNzaWduKG8pOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihj
b25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuICFtX3ByaXZhdGU7IH0KKworICAgIFdlYlN0cmluZyBhY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgYWN0aW9uVmVyYigpIGNvbnN0OworICAg
IGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGNoaWxk
Q291bnQoKSBjb25zdDsKKworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgY2hpbGRBdCh1bnNp
Z25lZCkgY29uc3Q7CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBmaXJzdENoaWxkKCkgY29u
c3Q7CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBmb2N1c2VkQ2hpbGQoKSBjb25zdDsKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IGxhc3RDaGlsZCgpIGNvbnN0OworICAgIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3QgbmV4dFNpYmxpbmcoKSBjb25zdDsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0IHBhcmVudE9iamVjdCgpIGNvbnN0OworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qg
cHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7CisKKyAgICBib29sIGlzQW5jaG9yKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdDsKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc0hvdmVyZWQoKSBjb25zdDsK
KyAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNNdWx0aVNlbGVj
dCgpIGNvbnN0OworICAgIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKKyAgICBib29sIGlzUGFz
c3dvcmRGaWVsZCgpIGNvbnN0OworICAgIGJvb2wgaXNQcmVzc2VkKCkgY29uc3Q7CisgICAgYm9v
bCBpc1JlYWRPbmx5KCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdDsKKworICAg
IFdlYlJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Q7CisgICAgV2ViU3RyaW5nIGhlbHBUZXh0
KCkgY29uc3Q7CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBoaXRUZXN0KGNvbnN0IFdlYlBv
aW50JikgY29uc3Q7CisgICAgV2ViU3RyaW5nIGtleWJvYXJkU2hvcnRjdXQoKSBjb25zdDsKKyAg
ICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9uKCkgY29uc3Q7CisgICAgV2ViQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Q7CisgICAgV2ViU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29u
c3Q7CisgICAgV2ViU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdD4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdD4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNz
aWduKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKik7CisgICAgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJp
bGl0eVJvbGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTFkYjc5Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCkBA
IC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5Um9sZV9oCisjZGVmaW5lIFdl
YkFjY2Vzc2liaWxpdHlSb2xlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworLy8gVGhlc2UgdmFsdWVzIG11c3QgbWF0Y2ggV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJvbGUgdmFsdWVzCitlbnVtIFdlYkFjY2Vzc2liaWxpdHlSb2xlIHsKKyAgICBXZWJB
Y2Nlc3NpYmlsaXR5Um9sZVVua25vd24gPSAxLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQnV0
dG9uLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlUmFkaW9CdXR0b24sCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVDaGVja0JveCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNsaWRlciwKKyAg
ICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYkdyb3VwLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xl
VGV4dEZpZWxkLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlU3RhdGljVGV4dCwKKyAgICBXZWJB
Y2Nlc3NpYmlsaXR5Um9sZVRleHRBcmVhLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlU2Nyb2xs
QXJlYSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVBvcFVwQnV0dG9uLAorICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlTWVudUJ1dHRvbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYmxlLAor
ICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb24sCisgICAgV2ViQWNjZXNzaWJpbGl0
eVJvbGVHcm91cCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVJhZGlvR3JvdXAsCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVMaXN0LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlU2Nyb2xsQmFy
LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlVmFsdWVJbmRpY2F0b3IsCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVJbWFnZSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZU1lbnVCYXIsCisgICAg
V2ViQWNjZXNzaWJpbGl0eVJvbGVNZW51LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudUl0
ZW0sCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVDb2x1bW4sCisgICAgV2ViQWNjZXNzaWJpbGl0
eVJvbGVSb3csCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVUb29sYmFyLAorICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlQnVzeUluZGljYXRvciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVByb2dy
ZXNzSW5kaWNhdG9yLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlV2luZG93LAorICAgIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlRHJhd2VyLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlU3lzdGVtV2lk
ZSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZU91dGxpbmUsCisgICAgV2ViQWNjZXNzaWJpbGl0
eVJvbGVJbmNyZW1lbnRvciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUJyb3dzZXIsCisgICAg
V2ViQWNjZXNzaWJpbGl0eVJvbGVDb21ib0JveCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNw
bGl0R3JvdXAsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTcGxpdHRlciwKKyAgICBXZWJBY2Nl
c3NpYmlsaXR5Um9sZUNvbG9yV2VsbCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUdyb3dBcmVh
LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlU2hlZXQsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJv
bGVIZWxwVGFnLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWF0dGUsCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVSdWxlciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVJ1bGVyTWFya2VyLAor
ICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGluaywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZURp
c2Nsb3N1cmVUcmlhbmdsZSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUdyaWQsCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVDZWxsLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQ29sdW1uSGVh
ZGVyLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlUm93SGVhZGVyLAorCisgICAgV2ViQWNjZXNz
aWJpbGl0eVJvbGVXZWJDb3JlTGluaywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUltYWdlTWFw
TGluaywKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUltYWdlTWFwLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlTGlzdE1hcmtlciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVdlYkFyZWEsCisg
ICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVIZWFkaW5nLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xl
TGlzdEJveCwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpc3RCb3hPcHRpb24sCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVUYWJsZUhlYWRlckNvbnRhaW5lciwKKyAgICBXZWJBY2Nlc3NpYmls
aXR5Um9sZURlZmluaXRpb25MaXN0VGVybSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZURlZmlu
aXRpb25MaXN0RGVmaW5pdGlvbiwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUFubm90YXRpb24s
CisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTbGlkZXJUaHVtYiwKKyAgICBXZWJBY2Nlc3NpYmls
aXR5Um9sZUlnbm9yZWQsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVUYWIsCisgICAgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVUYWJMaXN0LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiUGFuZWws
CisKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrQXBwbGljYXRpb24sCisgICAgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya0Jhbm5lciwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9s
ZUxhbmRtYXJrQ29tcGxlbWVudGFyeSwKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJr
Q29udGVudEluZm8sCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya01haW4sCisgICAg
V2ViQWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya05hdmlnYXRpb24sCisgICAgV2ViQWNjZXNzaWJp
bGl0eVJvbGVMYW5kbWFya1NlYXJjaCwKKworICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGlj
YXRpb25Mb2csCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvbk1hcnF1ZWUsCisg
ICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvblN0YXR1cywKKyAgICBXZWJBY2Nlc3Np
YmlsaXR5Um9sZUFwcGxpY2F0aW9uVGltZXIsCisKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZURv
Y3VtZW50LAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xlRG9jdW1lbnRBcnRpY2xlLAorICAgIFdl
YkFjY2Vzc2liaWxpdHlSb2xlRG9jdW1lbnROb3RlLAorICAgIFdlYkFjY2Vzc2liaWxpdHlSb2xl
RG9jdW1lbnRSZWdpb24sCisKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVVzZXJJbnRlcmZhY2VU
b29sdGlwCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1ZGFmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdF9oCisjZGVmaW5lIFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7CitjbGFzcyBXZWJV
Ukw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7CitzdHJ1Y3Qg
V2ViVVJMRXJyb3I7CisKKy8vIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgd2Via2l0IHRvIGNh
bGwgb3V0IHRvIHRoZSBlbWJlZGRlci4gV2Via2l0IHVzZXMKKy8vIHRoZSBXZWJLaXRDbGllbnQ6
OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0IG1ldGhvZCB0byBjcmVhdGUgaW5zdGFuY2VzLAor
Ly8gYW5kIGNhbGxzIGRlbGV0ZSB3aGVuIHRoZSBpbnN0YW5jZSBpcyBubyBsb25nZXIgbmVlZGVk
LgorY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QgeworcHVibGljOgorICAgIC8vIFRoZXNl
IHZhbHVlcyBtdXN0IG1hdGNoIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMg
dmFsdWVzCisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBVbmNhY2hlZCwKKyAgICAgICAgSWRs
ZSwKKyAgICAgICAgQ2hlY2tpbmcsCisgICAgICAgIERvd25sb2FkaW5nLAorICAgICAgICBVcGRh
dGVSZWFkeSwKKyAgICAgICAgT2Jzb2xldGUKKyAgICB9OworCisgICAgLy8gVGhlc2UgdmFsdWVz
IG11c3QgbWF0Y2ggV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgdmFsdWVz
CisgICAgZW51bSBFdmVudElEIHsKKyAgICAgICAgQ2hlY2tpbmdFdmVudCwKKyAgICAgICAgRXJy
b3JFdmVudCwKKyAgICAgICAgTm9VcGRhdGVFdmVudCwKKyAgICAgICAgRG93bmxvYWRpbmdFdmVu
dCwKKyAgICAgICAgUHJvZ3Jlc3NFdmVudCwKKyAgICAgICAgVXBkYXRlUmVhZHlFdmVudCwKKyAg
ICAgICAgQ2FjaGVkRXZlbnQsCisgICAgICAgIE9ic29sZXRlRXZlbnQKKyAgICB9OworCisgICAg
dmlydHVhbCB+V2ViQXBwbGljYXRpb25DYWNoZUhvc3QoKSB7IH0KKworICAgIC8vIENhbGxlZCBm
b3IgZXZlcnkgcmVxdWVzdCBtYWRlIHdpdGhpbiB0aGUgY29udGV4dC4KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbFN0YXJ0TWFpblJlc291cmNlUmVxdWVzdChXZWJVUkxSZXF1ZXN0JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRTdWJSZXNvdXJjZVJlcXVlc3QoV2ViVVJMUmVxdWVzdCYp
ID0gMDsKKworICAgIC8vIE9uZSBvciB0aGUgb3RoZXIgc2VsZWN0Q2FjaGUgbWV0aG9kcyBpcyBj
YWxsZWQgYWZ0ZXIgaGF2aW5nIHBhcnNlZCB0aGUgPGh0bWw+IHRhZy4KKyAgICAvLyBUaGUgbGF0
dGVyIHJldHVybnMgZmFsc2UgaWYgdGhlIGN1cnJlbnQgZG9jdW1lbnQgaGFzIGJlZW4gaWRlbnRp
ZmllZCBhcyBhICJmb3JlaWduIgorICAgIC8vIGVudHJ5LCBpbiB3aGljaCBjYXNlIHRoZSBmcmFt
ZSBuYXZpZ2F0aW9uIHdpbGwgYmUgcmVzdGFydGVkIGJ5IHdlYmtpdC4KKyAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNl
bGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IFdlYlVSTCYgbWFuaWZlc3RVUkwpID0gMDsKKwor
ICAgIC8vIENhbGxlZCBhcyB0aGUgbWFpbiByZXNvdXJjZSBpcyByZXRyaWV2ZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUZvck1haW5SZXNvdXJjZShjb25zdCBXZWJVUkxS
ZXNwb25zZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGb3JNYWluUmVz
b3VyY2UoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nTWFpblJlc291cmNlKGJvb2wgc3VjY2VzcykgPSAwOworCisgICAgLy8g
Q2FsbGVkIG9uIGJlaGFsZiBvZiB0aGUgc2NyaXB0YWJsZSBpbnRlcmZhY2UuCisgICAgdmlydHVh
bCBTdGF0dXMgc3RhdHVzKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0ZSgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc3dhcENhY2hlKCkgPSAwOworfTsKKworfSAgLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgIC8vIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0X2gKKwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlODMwZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVI
b3N0Q2xpZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQXBwbGljYXRpb25DYWNoZUhv
c3RDbGllbnRfaAorI2RlZmluZSBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudF9oCisKKyNp
bmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSB0
aGUgZW1iZWRkZXIgdG8gY2FsbCBpbnRvIHdlYmtpdC4KK2NsYXNzIFdlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDYWxsZWQgdG8gZmlyZSB0aGUgZXZlbnQg
aW4gdGhlIHNjcmlwdGFibGUgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVu
dExpc3RlbmVyKFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEKSA9IDA7CisKK3Byb3Rl
Y3RlZDoKKyAgICAvLyBTaG91bGQgbm90IGJlIGRlbGV0ZWQgYnkgdGhlIGVtYmVkZGVyLgorICAg
IHZpcnR1YWwgfldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50KCkgeyB9Cit9OworCit9ICAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAgLy8gV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnRfaAor
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42804</attachid>
            <date>2009-11-09 14:38:37 -0800</date>
            <delta_ts>2009-11-09 20:13:51 -0800</delta_ts>
            <desc>Upstreaming Chromium API src files: WebAccessibility</desc>
            <filename>bug-28394-20091109143836.patch</filename>
            <type>text/plain</type>
            <size>26279</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDZlYjRjZmYuLjQwZmE5YTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY3IEBACisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwc3RyZWFt
aW5nIENocm9taXVtIEFQSSBzcmMgZmlsZXM6IFdlYkFjY2Vzc2liaWxpdHkKKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAq
IHNyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eUNhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBz
cmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
Ojp0b0FjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5Q2FjaGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlDYWNo
ZUltcGw6OldlYWtIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlDYWNoZUltcGw6OldlYWtIYW5kbGU6OldlYWtIYW5kbGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjpXZWFrSGFuZGxlOjpkZXRhY2gpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjpXZWJBY2Nlc3NpYmlsaXR5Q2Fj
aGVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbDo6fldl
YkFjY2Vzc2liaWxpdHlDYWNoZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5Q2FjaGVJbXBsOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eUNhY2hlSW1wbDo6Z2V0T2JqZWN0QnlJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlDYWNoZUltcGw6OmlzVmFsaWRJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlDYWNoZUltcGw6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlDYWNoZUltcGw6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eUNhY2hlSW1wbDo6YWRkT3JHZXRJZCk6CisgICAgICAgICogc3JjL1dlYkFjY2Vzc2liaWxpdHlD
YWNoZUltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlDYWNo
ZUltcGw6OmlzSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXNzaWdu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWN0aW9uVmVyYik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNh
blNldEZvY3VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6Y2hpbGRDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNoaWxkQXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpm
aXJzdENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Zm9j
dXNlZENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bGFz
dENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4dFNp
YmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2aW91
c1NpYmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fu
Y2hvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hlY2tl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRm9jdXNlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSG92ZXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTXVsdGlTZWxlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc09mZlNjcmVlbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUGFzc3dvcmRGaWVsZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUHJlc3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmVhZE9ubHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Zpc2l0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveFJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWxwVGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhpdFRlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjprZXlib2FyZFNob3J0Y3V0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9ybURlZmF1bHRBY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdWYWx1ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRpdGxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Om9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Pik6CisKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2li
aWxpdHlDYWNoZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNo
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGEzZjY5NwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmNw
cApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFjY2Vz
c2liaWxpdHlDYWNoZS5oIgorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQWNjZXNz
aWJpbGl0eUNhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCkKK3sKKyAgICBBWE9iamVjdENhY2hl
OjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjIzMmE3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCIKKwor
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNp
bmNsdWRlICJXZWJWaWV3SW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGludCBpbnZhbGlkT2JqZWN0SWQgPSAtMTsKK2NvbnN0
IGludCBmaXJzdE9iamVjdElkID0gMTAwMDsKKworc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gdG9BY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gb2JqZWN0OworfQorCisvLyBXZWJWaWV3IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworV2ViQWNjZXNzaWJpbGl0eUNhY2hlKiBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGU6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsKCk7Cit9
CisKKy8vIFdlYWtIYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQYXNzUmVmUHRyPFdlYkFjY2Vzc2liaWxpdHlDYWNo
ZUltcGw6OldlYWtIYW5kbGU+IFdlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGw6OldlYWtIYW5kbGU6
OmNyZWF0ZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCit7CisgICAgLy8gRklYTUU6IFJl
bW92ZSByZXNldHRpbmcgcmVmLWNvdW50IGZyb20gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIK
KyAgICAvLyBhbmQgY29udmVydCB0byB1c2UgYWRvcHRSZWYuCisgICAgcmV0dXJuIG5ldyBXZWJB
Y2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjpXZWFrSGFuZGxlKG9iamVjdCk7Cit9CisKK1dlYkFjY2Vz
c2liaWxpdHlDYWNoZUltcGw6OldlYWtIYW5kbGU6OldlYWtIYW5kbGUoQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0KQorICAgIDogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIob2JqZWN0KQor
eworICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOworfQorCisvLyBXZWJBY2Nlc3NpYmls
aXR5Q2FjaGVJbXBsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
dm9pZCBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjpXZWFrSGFuZGxlOjpkZXRhY2goKQorewor
ICAgIGlmIChtX29iamVjdCkKKyAgICAgICAgbV9vYmplY3QgPSAwOworfQorCitXZWJBY2Nlc3Np
YmlsaXR5Q2FjaGVJbXBsOjpXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsKCkKKyAgICA6IG1fbmV4
dE5ld0lkKGZpcnN0T2JqZWN0SWQpCisgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQoreworfQor
CitXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjp+V2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbCgp
Cit7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbDo6aW5pdGlhbGl6ZShXZWJW
aWV3KiB2aWV3KQoreworICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsK
KyAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IHJvb3QgPSB2aWV3LT5hY2Nlc3NpYmlsaXR5T2Jq
ZWN0KCk7CisgICAgaWYgKHJvb3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiByb290T2JqZWN0ID0gdG9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0KHJvb3QpOworCisgICAgLy8gSW5zZXJ0IHJvb3QgaW4gaGFzaG1hcHMuCisgICAgbV9vYmpl
Y3RNYXAuc2V0KG1fbmV4dE5ld0lkLCBXZWFrSGFuZGxlOjpjcmVhdGUocm9vdE9iamVjdC5nZXQo
KSkpOworICAgIG1faWRNYXAuc2V0KHJvb3RPYmplY3QuZ2V0KCksIG1fbmV4dE5ld0lkKyspOwor
CisgICAgbV9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qg
V2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbDo6Z2V0T2JqZWN0QnlJZChpbnQgaWQpCit7CisgICAg
T2JqZWN0TWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0TWFwLmZpbmQoaWQpOworCisgICAgaWYg
KGl0ID09IG1fb2JqZWN0TWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kKQorICAgICAgICByZXR1cm4g
V2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOworCisgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QoaXQtPnNlY29uZC0+YWNjZXNzaWJpbGl0eU9iamVjdCgpKTsKK30KKworYm9vbCBXZWJB
Y2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjppc1ZhbGlkSWQoaW50IGlkKSBjb25zdAoreworICAgIHJl
dHVybiBpZCA+PSBmaXJzdE9iamVjdElkOworfQorCit2b2lkIFdlYkFjY2Vzc2liaWxpdHlDYWNo
ZUltcGw6OnJlbW92ZShpbnQgaWQpCit7CisgICAgT2JqZWN0TWFwOjppdGVyYXRvciBpdCA9IG1f
b2JqZWN0TWFwLmZpbmQoaWQpOworCisgICAgaWYgKGl0ID09IG1fb2JqZWN0TWFwLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaXQtPnNlY29uZCkgeworICAgICAgICAvLyBFcmFz
ZSBlbGVtZW50IGZyb20gcmV2ZXJzZSBoYXNobWFwLgorICAgICAgICBJZE1hcDo6aXRlcmF0b3Ig
aXQyID0gbV9pZE1hcC5maW5kKGl0LT5zZWNvbmQtPmFjY2Vzc2liaWxpdHlPYmplY3QoKSk7Cisg
ICAgICAgIGlmIChpdDIgIT0gbV9pZE1hcC5lbmQoKSkKKyAgICAgICAgICAgIG1faWRNYXAucmVt
b3ZlKGl0Mik7CisgICAgfQorCisgICAgbV9vYmplY3RNYXAucmVtb3ZlKGl0KTsKK30KKwordm9p
ZCBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsOjpjbGVhcigpCit7CisgICAgbV9vYmplY3RNYXAu
Y2xlYXIoKTsKKyAgICBtX2lkTWFwLmNsZWFyKCk7Cit9CisKK2ludCBXZWJBY2Nlc3NpYmlsaXR5
Q2FjaGVJbXBsOjphZGRPckdldElkKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkgeworICAgIGlmIChvYmplY3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkT2Jq
ZWN0SWQ7CisKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbyA9IHRvQWNjZXNzaWJp
bGl0eU9iamVjdChvYmplY3QpOworCisgICAgSWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZE1hcC5m
aW5kKG8uZ2V0KCkpOworCisgICAgaWYgKGl0ICE9IG1faWRNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOworCisgICAgLy8gSW5zZXJ0IG5ldyBhY2Nlc3NpYmlsaXR5IG9iamVj
dCBpbiBoYXNobWFwcyBhbmQgcmV0dXJuIGl0cyBuZXdseQorICAgIC8vIGFzc2lnbmVkIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IGlkLgorICAgIG1fb2JqZWN0TWFwLnNldChtX25leHROZXdJZCwgV2Vh
a0hhbmRsZTo6Y3JlYXRlKG8uZ2V0KCkpKTsKKyAgICBtX2lkTWFwLnNldChvLmdldCgpLCBtX25l
eHROZXdJZCk7CisKKyAgICByZXR1cm4gbV9uZXh0TmV3SWQrKzsKK30KKworfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTczYTQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmgKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbF9oCisjZGVmaW5lIFdlYkFjY2Vzc2li
aWxpdHlDYWNoZUltcGxfaAorCisvLyBGSVhNRTogTW92ZSB3dGYvUmVmQ291bnRlZC5oIGluY2x1
ZGUgdG8gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaAorLy8gb25jZSB0aGlzIGZpbGUgaXMg
dXBzdHJlYW0uCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5oIgorI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlDYWNoZS5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1FOiBTaG91bGQgYmUgZWxpbWluYXRlZCB0
byB1c2UgQVhPYmplY3RDYWNoZSBpbnN0ZWFkLgorY2xhc3MgV2ViQWNjZXNzaWJpbGl0eUNhY2hl
SW1wbCA6IHB1YmxpYyBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlDYWNoZSB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV2ViVmlldyogdmlldyk7CisgICAgdmlydHVhbCBi
b29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9CisKKyAg
ICB2aXJ0dWFsIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgZ2V0T2JqZWN0QnlJZChpbnQpOworICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkSWQoaW50KSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBhZGRP
ckdldElkKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOworCisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZShpbnQpOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpOworCitwcm90
ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eUNhY2hlOwor
CisgICAgV2ViQWNjZXNzaWJpbGl0eUNhY2hlSW1wbCgpOworICAgIH5XZWJBY2Nlc3NpYmlsaXR5
Q2FjaGVJbXBsKCk7CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIGp1c3Qg
cGFydCBvZiBDaHJvbWl1bSdzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLgorICAgIGNsYXNz
IFdlYWtIYW5kbGUgOiBwdWJsaWMgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vha0hhbmRsZT4gY3Jl
YXRlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRldGFjaCgpOworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtIYW5kbGUoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdCopOworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBS
ZWZQdHI8V2Vha0hhbmRsZT4gPiBPYmplY3RNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBpbnQ+IElkTWFwOworCisgICAgLy8gSGFzaG1hcCBm
b3IgY2FjaGluZyBvZiBlbGVtZW50cyBpbiB1c2UgYnkgdGhlIEFULCBtYXBwaW5nIGlkIChpbnQp
IHRvCisgICAgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICBPYmplY3RNYXAgbV9vYmpl
Y3RNYXA7CisgICAgLy8gSGFzaG1hcCBmb3IgY2FjaGluZyBvZiBlbGVtZW50cyBpbiB1c2UgYnkg
dGhlIEFULCBtYXBwaW5nIGEKKyAgICAvLyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHBvaW50ZXIgdG8g
aXRzIGlkIChpbnQpLiBOZWVkZWQgZm9yIHJldmVyc2UgbG9va3VwLAorICAgIC8vIHRvIGVuc3Vy
ZSB1bm5lY2Vzc2FyeSBkdXBsaWNhdGUgZW50cmllcyBhcmUgbm90IGNyZWF0ZWQgaW4gdGhlCisg
ICAgLy8gT2JqZWN0TWFwIGFuZCBmb3IgZm9jdXMgY2hhbmdlcyBpbiBXZWJLaXQuCisgICAgSWRN
YXAgbV9pZE1hcDsKKworICAgIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciByZXRyaWV2aW5nIGFu
IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZyb20gdGhlIHBhZ2UncworICAgIC8vIGhhc2htYXBzLiBJ
ZCBpcyBhbHdheXMgMCBmb3IgdGhlIHJvb3Qgb2YgdGhlIGFjY2Vzc2liaWxpdHkgb2JqZWN0Cisg
ICAgLy8gaGllcmFyY2h5IChvbiBhIHBlci1yZW5kZXJlciBwcm9jZXNzIGJhc2lzKS4KKyAgICBp
bnQgbV9uZXh0TmV3SWQ7CisKKyAgICBib29sIG1faW5pdGlhbGl6ZWQ7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDlmZWQwMwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAg
LTAsMCArMSw0MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1
ZGUgIkV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIldlYlBvaW50LmgiCisjaW5jbHVkZSAi
V2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RQcml2YXRlIDogcHVibGljIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QgeworfTsKKwor
dm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZXNldCgpCit7CisgICAgYXNzaWduKDApOwor
fQorCit2b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFzc2lnbihjb25zdCBXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3QmIG90aGVyKQoreworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RQcml2YXRlKiBwID0gY29uc3RfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0UHJpdmF0ZSo+
KG90aGVyLm1fcHJpdmF0ZSk7CisgICAgaWYgKHApCisgICAgICAgIHAtPnJlZigpOworICAgIGFz
c2lnbihwKTsKK30KKworV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAg
IHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3Jl
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7Cit9
CisKK1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisg
ICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5hY3Rpb25WZXJiKCk7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmNhblNldEZvY3VzQXR0cmlidXRlKCk7Cit9CisKK3Vuc2lnbmVk
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIGlmICgh
bV9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9
CisKK1dlYkFjY2Vzc2liaWxpdHlPYmplY3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hpbGRB
dCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAg
cmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7CisgICAgaWYgKG1fcHJpdmF0ZS0+Y2hpbGRyZW4oKS5zaXplKCkgPD0g
aW5kZXgpCisgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICBy
ZXR1cm4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdChtX3ByaXZhdGUtPmNoaWxkcmVuKClbaW5kZXhd
KTsKK30KKworV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpm
aXJzdENoaWxkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJu
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7CisgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2YXRlLT5m
aXJzdENoaWxkKCkpOworfQorCitXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmZvY3VzZWRDaGlsZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisg
ICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICBtX3ByaXZhdGUt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBm
b2N1c2VkID0gbV9wcml2YXRlLT5mb2N1c2VkVUlFbGVtZW50KCk7CisgICAgaWYgKG1fcHJpdmF0
ZSA9PSBmb2N1c2VkLmdldCgpIHx8IGZvY3VzZWQtPnBhcmVudE9iamVjdCgpID09IG1fcHJpdmF0
ZSkKKyAgICAgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoZm9jdXNlZCk7CisKKyAg
ICByZXR1cm4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOworfQorCitXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7
CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHJldHVybiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+bGFzdENoaWxkKCkpOworfQorCisKK1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4dFNpYmxpbmcoKSBj
b25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViQWNjZXNzaWJp
bGl0eU9iamVjdCgpOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAg
ICByZXR1cm4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdChtX3ByaXZhdGUtPm5leHRTaWJsaW5nKCkp
OworfQorCitXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBh
cmVudE9iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVy
biBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOworICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+
cGFyZW50T2JqZWN0KCkpOworfQorCisKK1dlYkFjY2Vzc2liaWxpdHlPYmplY3QgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdDo6cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJp
dmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKworICAgIG1f
cHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QobV9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmcoKSk7Cit9CisKK2Jvb2wgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNob3IoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRl
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3Jl
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNBbmNob3IoKTsKK30KKworYm9vbCBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRl
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3Jl
KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNDaGVja2VkKCk7Cit9CisKKworYm9vbCBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIGlmICghbV9wcml2
YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0
b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNGb2N1c2VkKCk7Cit9CisKK2Jvb2wgV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJp
dmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzRW5hYmxlZCgpOworfQorCitib29sIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSG92ZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3By
aXZhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc0hvdmVyZWQoKTsKK30KKworYm9vbCBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIGlm
ICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNJbmRldGVybWluYXRlKCk7
Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNNdWx0aVNlbGVjdCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9wcml2
YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5pc011bHRp
U2VsZWN0KCk7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNPZmZTY3JlZW4o
KSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
aXNPZmZTY3JlZW4oKTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Bhc3N3
b3JkRmllbGQoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+aXNQYXNzd29yZEZpZWxkKCk7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNQcmVzc2VkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmlzUHJlc3NlZCgpOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzUmVhZE9ubHkoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+aXNSZWFkT25seSgpOworfQorCitib29sIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzVmlzaXRlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5pc1Zpc2l0ZWQoKTsKK30KKworV2ViUmVjdCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpib3VuZGluZ0JveFJlY3QoKSBjb25zdAoreworICAgIGlmICghbV9wcml2
YXRlKQorICAgICAgICByZXR1cm4gV2ViUmVjdCgpOworCisgICAgbV9wcml2YXRlLT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5kb2N1bWVudEZyYW1lVmlldygp
LT5jb250ZW50c1RvV2luZG93KG1fcHJpdmF0ZS0+Ym91bmRpbmdCb3hSZWN0KCkpOworfQorCitX
ZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRleHQoKSBjb25zdAoreworICAg
IGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBtX3By
aXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmhlbHBU
ZXh0KCk7Cit9CisKK1dlYkFjY2Vzc2liaWxpdHlPYmplY3QgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6aGl0VGVzdChjb25zdCBXZWJQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX3By
aXZhdGUpCisgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAgICBt
X3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIEludFBvaW50IGNvbnRlbnRzUG9p
bnQgPSBtX3ByaXZhdGUtPmRvY3VtZW50RnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMocG9p
bnQpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBoaXQgPSBtX3ByaXZhdGUtPmRv
QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29udGVudHNQb2ludCk7CisKKyAgICBpZiAoaGl0LmdldCgp
KQorICAgICAgICByZXR1cm4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdChoaXQpOworCisgICAgaWYg
KG1fcHJpdmF0ZS0+Ym91bmRpbmdCb3hSZWN0KCkuY29udGFpbnMoY29udGVudHNQb2ludCkpCisg
ICAgICAgIHJldHVybiAqdGhpczsKKworICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
KCk7Cit9CisKK1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjprZXlib2FyZFNob3J0
Y3V0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYlN0
cmluZygpOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBTdHJp
bmcgYWNjZXNzS2V5ID0gbV9wcml2YXRlLT5hY2Nlc3NLZXkoKTsKKyAgICBpZiAoYWNjZXNzS2V5
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBzdGF0aWMgU3Ry
aW5nIG1vZGlmaWVyU3RyaW5nOworICAgIGlmIChtb2RpZmllclN0cmluZy5pc051bGwoKSkgewor
ICAgICAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSBFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlm
aWVycygpOworICAgICAgICAvLyBGb2xsb3cgdGhlIHNhbWUgb3JkZXIgYXMgTW96aWxsYSBNU0FB
IGltcGxlbWVudGF0aW9uOgorICAgICAgICAvLyBDdHJsK0FsdCtTaGlmdCtNZXRhK2tleS4gTVNE
TiBzdGF0ZXMgdGhhdCBrZXlib2FyZCBzaG9ydGN1dCBzdHJpbmdzCisgICAgICAgIC8vIHNob3Vs
ZCBub3QgYmUgbG9jYWxpemVkIGFuZCBkZWZpbmVzIHRoZSBzZXBhcmF0b3IgYXMgIisiLgorICAg
ICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDdHJsS2V5KQorICAg
ICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIkN0cmwrIjsKKyAgICAgICAgaWYgKG1vZGlmaWVy
cyAmIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5KQorICAgICAgICAgICAgbW9kaWZpZXJT
dHJpbmcgKz0gIkFsdCsiOworICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgICAgIG1vZGlmaWVyU3RyaW5nICs9ICJTaGlmdCsi
OworICAgICAgICBpZiAobW9kaWZpZXJzICYgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpNZXRhS2V5
KQorICAgICAgICAgICAgbW9kaWZpZXJTdHJpbmcgKz0gIldpbisiOworICAgIH0KKworICAgIHJl
dHVybiBtb2RpZmllclN0cmluZyArIGFjY2Vzc0tleTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OjpwZXJmb3JtRGVmYXVsdEFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3By
aXZhdGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGVyZm9ybURlZmF1bHRBY3Rpb24o
KTsKK30KKworV2ViQWNjZXNzaWJpbGl0eVJvbGUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cm9s
ZVZhbHVlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eVJvbGVVbmtub3duOworCisgICAgbV9wcml2YXRlLT51cGRh
dGVCYWNraW5nU3RvcmUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQWNjZXNzaWJpbGl0
eVJvbGU+KG1fcHJpdmF0ZS0+cm9sZVZhbHVlKCkpOworfQorCitXZWJTdHJpbmcgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdDo6c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRl
KQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJh
Y2tpbmdTdG9yZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmluZ1ZhbHVlKCk7Cit9CisK
K1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0aXRsZSgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJp
dmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dGl0bGUo
KTsKK30KKworV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4mIG9iamVj
dCkKKyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0UHJp
dmF0ZSo+KG9iamVjdC5yZWxlYXNlUmVmKCkpKQoreworfQorCitXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCit7CisgICAgYXNzaWdu
KHN0YXRpY19jYXN0PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKj4ob2JqZWN0LnJlbGVh
c2VSZWYoKSkpOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Pihjb25zdF9jYXN0PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKj4obV9wcml2
YXRlKSk7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXNzaWduKFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RQcml2YXRlKiBwKQoreworICAgIC8vIHAgaXMgYWxyZWFkeSByZWYnZCBm
b3IgdXMgYnkgdGhlIGNhbGxlcgorICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0
ZS0+ZGVyZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42805</attachid>
            <date>2009-11-09 14:58:10 -0800</date>
            <delta_ts>2009-11-09 20:58:34 -0800</delta_ts>
            <desc>WebPa*.h and WebPl*.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20003</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMjQgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJQYSouaCBhbmQgV2ViUGwqLmggQ2hyb21pdW0gQVBJ
IGhlYWRlcnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4Mzk0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0
ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFzc3dvcmRBdXRvY29tcGxldGVM
aXN0ZW5lcjo6fldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIpOgorICAgICAgICAqIHB1
YmxpYy9XZWJQYXNzd29yZEZvcm1EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXNzd29yZEZvcm1EYXRhOjppc1ZhbGlkKToKKyAgICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46On5XZWJQbHVnaW4pOgorICAgICAg
ICAqIHB1YmxpYy9XZWJQbHVnaW5Db250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBsdWdpbkNvbnRhaW5lcjo6fldlYlBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgICogcHVi
bGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJQ
bHVnaW5QYXJhbXMuaDogQWRkZWQuCisKKzIwMDktMTEtMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCiAK
ICAgICAgICAgVXBzdHJlYW0gcmVtYWluaW5nIENocm9taXVtIEFQSSBXZWJOKi5oIGhlYWRlcnMu
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpblBhcmFtcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luUGFyYW1zLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpblBhcmFtcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQbHVnaW5QYXJhbXNfaAorI2RlZmluZSBX
ZWJQbHVnaW5QYXJhbXNfaAorCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2Vi
VVJMLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dHJ1Y3QgV2ViUGx1Z2luUGFyYW1zIHsKKyAgICBXZWJVUkwgdXJsOworICAgIFdlYlN0cmluZyBt
aW1lVHlwZTsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhdHRyaWJ1dGVOYW1lczsKKyAgICBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiBhdHRyaWJ1dGVWYWx1ZXM7CisgICAgYm9vbCBsb2FkTWFudWFs
bHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCisjZGVm
aW5lIFdlYlBsdWdpbkxpc3RCdWlsZGVyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlN0cmluZzsKKworLy8gQW4gaW50ZXJmYWNlIGZvciBidWlsZGluZyBhIGxpc3Qgb2Yga25v
d24gcGx1Z2lucy4KK2NsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmls
ZU5hbWUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4o
CisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlw
dGlvbikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRp
YVR5cGUoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZUV4dGVuc2lvbikgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJQYXNzd29yZEZvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJQYXNzd29yZEZvcm1EYXRhLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBhc3N3b3JkRm9ybURhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3N3b3JkRm9ybURhdGFfaAorI2RlZmluZSBXZWJQYXNz
d29yZEZvcm1EYXRhX2gKKworI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdHJ1Y3QgV2ViUGFzc3dvcmRGb3JtRGF0YSB7CisgICAgLy8gSWYgdGhlIHByb3ZpZGVkIGZv
cm0gaXMgc3VpdGFibGUgZm9yIHBhc3N3b3JkIGNvbXBsZXRpb24sIGlzVmFsaWQoKSB3aWxsCisg
ICAgLy8gcmV0dXJuIHRydWU7CisgICAgV2ViUGFzc3dvcmRGb3JtRGF0YShjb25zdCBXZWJGb3Jt
RWxlbWVudCYpOworCisgICAgLy8gSWYgY3JlYXRpb24gZmFpbGVkLCByZXR1cm4gZmFsc2UuCisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gYWN0aW9uLmlzVmFsaWQoKTsgfQorCisg
ICAgLy8gVGhlIGFjdGlvbiB0YXJnZXQgb2YgdGhlIGZvcm0uIFRoaXMgaXMgdGhlIHByaW1hcnkg
ZGF0YSB1c2VkIGJ5IHRoZQorICAgIC8vIFBhc3N3b3JkTWFuYWdlciBmb3IgZm9ybSBhdXRvZmls
bDsgdGhhdCBpcywgdGhlIGFjdGlvbiBvZiB0aGUgc2F2ZWQKKyAgICAvLyBjcmVkZW50aWFscyBt
dXN0IG1hdGNoIHRoZSBhY3Rpb24gb2YgdGhlIGZvcm0gb24gdGhlIHBhZ2UgdG8gYmUgYXV0b2Zp
bGxlZC4KKyAgICAvLyBJZiB0aGlzIGlzIGVtcHR5IC8gbm90IGF2YWlsYWJsZSwgaXQgd2lsbCBy
ZXN1bHQgaW4gYSAicmVzdHJpY3RlZCIKKyAgICAvLyBJRS1saWtlIGF1dG9maWxsIHBvbGljeSwg
d2hlcmUgd2Ugd2FpdCBmb3IgdGhlIHVzZXIgdG8gdHlwZSBpbiBoaXMKKyAgICAvLyB1c2VybmFt
ZSBiZWZvcmUgYXV0b2ZpbGxpbmcgdGhlIHBhc3N3b3JkLiBJbiB0aGVzZSBjYXNlcywgYWZ0ZXIg
c3VjY2Vzc2Z1bAorICAgIC8vIGxvZ2luIHRoZSBhY3Rpb24gVVJMIHdpbGwgYXV0b21hdGljYWxs
eSBiZSBhc3NpZ25lZCBieSB0aGUKKyAgICAvLyBQYXNzd29yZE1hbmFnZXIuCisgICAgLy8KKyAg
ICAvLyBXaGVuIHBhcnNpbmcgYW4gSFRNTCBmb3JtLCB0aGlzIG11c3QgYWx3YXlzIGJlIHNldC4K
KyAgICBXZWJVUkwgYWN0aW9uOworCisgICAgLy8gVGhlICJSZWFsbSIgZm9yIHRoZSBzaWduLW9u
IChzY2hlbWUsIGhvc3QsIHBvcnQgZm9yIFNDSEVNRV9IVE1MLCBhbmQKKyAgICAvLyBjb250YWlu
cyB0aGUgSFRUUCByZWFsbSBmb3IgZGlhbG9nLWJhc2VkIGZvcm1zKS4KKyAgICAvLyBUaGUgc2ln
bm9uX3JlYWxtIGlzIGVmZmVjdGl2ZWx5IHRoZSBwcmltYXJ5IGtleSB1c2VkIGZvciByZXRyaWV2
aW5nCisgICAgLy8gZGF0YSBmcm9tIHRoZSBkYXRhYmFzZSwgc28gaXQgbXVzdCBub3QgYmUgZW1w
dHkuCisgICAgV2ViU3RyaW5nIHNpZ25vblJlYWxtOworCisgICAgLy8gVGhlIFVSTCAobWludXMg
cXVlcnkgcGFyYW1ldGVycykgY29udGFpbmluZyB0aGUgZm9ybS4gVGhpcyBpcyB0aGUgcHJpbWFy
eQorICAgIC8vIGRhdGEgdXNlZCBieSB0aGUgUGFzc3dvcmRNYW5hZ2VyIHRvIGRlY2lkZSAoaW4g
bG9uZ2VzdCBtYXRjaGluZyBwcmVmaXgKKyAgICAvLyBmYXNoaW9uKSB3aGV0aGVyIG9yIG5vdCBh
IGdpdmVuIFBhc3N3b3JkRm9ybSByZXN1bHQgZnJvbSB0aGUgZGF0YWJhc2UgaXMgYQorICAgIC8v
IGdvb2QgZml0IGZvciBhIHBhcnRpY3VsYXIgZm9ybSBvbiBhIHBhZ2UsIHNvIGl0IG11c3Qgbm90
IGJlIGVtcHR5LgorICAgIFdlYlVSTCBvcmlnaW47CisKKyAgICAvLyBUaGUgbmFtZSBvZiB0aGUg
c3VibWl0IGJ1dHRvbiB1c2VkLiBPcHRpb25hbDsgb25seSB1c2VkIGluIHNjb3JpbmcKKyAgICAv
LyBvZiBQYXNzd29yZEZvcm0gcmVzdWx0cyBmcm9tIHRoZSBkYXRhYmFzZSB0byBtYWtlIG1hdGNo
ZXMgYXMgdGlnaHQgYXMKKyAgICAvLyBwb3NzaWJsZS4KKyAgICAvLworICAgIC8vIFdoZW4gcGFy
c2luZyBhbiBIVE1MIGZvcm0sIHRoaXMgbXVzdCBhbHdheXMgYmUgc2V0LgorICAgIFdlYlN0cmlu
ZyBzdWJtaXRFbGVtZW50OworCisgICAgLy8gVGhlIG5hbWUgb2YgdGhlIHVzZXJuYW1lIGlucHV0
IGVsZW1lbnQuIE9wdGlvbmFsIChpbXByb3ZlcyBzY29yaW5nKS4KKyAgICAvLworICAgIC8vIFdo
ZW4gcGFyc2luZyBhbiBIVE1MIGZvcm0sIHRoaXMgbXVzdCBhbHdheXMgYmUgc2V0LgorICAgIFdl
YlN0cmluZyB1c2VyTmFtZUVsZW1lbnQ7CisKKyAgICAvLyBUaGUgdXNlcm5hbWUuIE9wdGlvbmFs
LgorICAgIC8vCisgICAgLy8gV2hlbiBwYXJzaW5nIGFuIEhUTUwgZm9ybSwgdGhpcyBpcyB0eXBp
Y2FsbHkgZW1wdHkgdW5sZXNzIHRoZSBzaXRlCisgICAgLy8gaGFzIGltcGxlbWVudGVkIHNvbWUg
Zm9ybSBvZiBhdXRvZmlsbC4KKyAgICBXZWJTdHJpbmcgdXNlck5hbWVWYWx1ZTsKKworICAgIC8v
IFRoZSBuYW1lIG9mIHRoZSBwYXNzd29yZCBpbnB1dCBlbGVtZW50LCBPcHRpb25hbCAoaW1wcm92
ZXMgc2NvcmluZykuCisgICAgLy8KKyAgICAvLyBXaGVuIHBhcnNpbmcgYW4gSFRNTCBmb3JtLCB0
aGlzIG11c3QgYWx3YXlzIGJlIHNldC4KKyAgICBXZWJTdHJpbmcgcGFzc3dvcmRFbGVtZW50Owor
CisgICAgLy8gVGhlIHBhc3N3b3JkLiBSZXF1aXJlZC4KKyAgICAvLworICAgIC8vIFdoZW4gcGFy
c2luZyBhbiBIVE1MIGZvcm0sIHRoaXMgaXMgdHlwaWNhbGx5IGVtcHR5LgorICAgIFdlYlN0cmlu
ZyBwYXNzd29yZFZhbHVlOworCisgICAgLy8gSWYgdGhlIGZvcm0gd2FzIGEgY2hhbmdlIHBhc3N3
b3JkIGZvcm0sIHRoZSBuYW1lIG9mIHRoZQorICAgIC8vICdvbGQgcGFzc3dvcmQnIGlucHV0IGVs
ZW1lbnQuIE9wdGlvbmFsLgorICAgIFdlYlN0cmluZyBvbGRQYXNzd29yZEVsZW1lbnQ7CisKKyAg
ICAvLyBUaGUgb2xkIHBhc3N3b3JkLiBPcHRpb25hbC4KKyAgICBXZWJTdHJpbmcgb2xkUGFzc3dv
cmRWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViUGx1Z2luLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBsdWdpbl9oCisjZGVmaW5lIFdlYlBsdWdpbl9oCisKKyNpbmNsdWRlICJXZWJDYW52YXMu
aCIKKworc3RydWN0IE5QT2JqZWN0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
RGF0YVNvdXJjZTsKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViSW5wdXRFdmVudDsKK2NsYXNz
IFdlYlBsdWdpbkNvbnRhaW5lcjsKK2NsYXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVSTFJlc3BvbnNl
Oworc3RydWN0IFdlYkN1cnNvckluZm87CitzdHJ1Y3QgV2ViUGx1Z2luUGFyYW1zOworc3RydWN0
IFdlYlJlY3Q7CitzdHJ1Y3QgV2ViVVJMRXJyb3I7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgV2ViVmVjdG9yOworCitjbGFzcyBXZWJQbHVnaW4geworcHVibGljOgorICAgIHZpcnR1YWwg
Ym9vbCBpbml0aWFsaXplKFdlYlBsdWdpbkNvbnRhaW5lciopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveSgpID0gMDsKKworICAgIHZpcnR1YWwgTlBPYmplY3QqIHNjcmlwdGFibGVPYmpl
Y3QoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2Vi
UmVjdCYpID0gMDsKKworICAgIC8vIENvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgY29u
dGFpbmluZyB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KAorICAgICAg
ICBjb25zdCBXZWJSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYlJlY3QmIGNsaXBSZWN0LAorICAg
ICAgICBjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIGN1dE91dHNSZWN0cywgYm9vbCBpc1Zpc2li
bGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1cyhib29sKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVZpc2liaWxpdHkoYm9vbCkgPSAwOworCisgICAgdmlydHVhbCBi
b29sIGFjY2VwdHNJbnB1dEV2ZW50cygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5w
dXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiwgV2ViQ3Vyc29ySW5mbyYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViVVJMUmVzcG9uc2UmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYlVSTEVycm9yJikg
PSAwOworCisgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFdlYlBsdWdpbkNvbnRhaW5lcjo6
bG9hZEZyYW1lUmVxdWVzdAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRnJhbWVS
ZXF1ZXN0KAorICAgICAgICBjb25zdCBXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nRnJhbWVSZXF1ZXN0KAorICAgICAgICBjb25z
dCBXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhLCBjb25zdCBXZWJVUkxFcnJvciYpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIH5XZWJQbHVnaW4oKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGFzc3dvcmRB
dXRvY29tcGxldGVMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lci5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhc3N3b3JkQXV0b2NvbXBsZXRl
TGlzdGVuZXJfaAorI2RlZmluZSBXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyX2gKKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlBhc3N3b3Jk
QXV0b2NvbXBsZXRlTGlzdGVuZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlBhc3N3b3Jk
QXV0b2NvbXBsZXRlTGlzdGVuZXIoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIGRpZEJsdXJJbnB1
dEVsZW1lbnQoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdXNlcklucHV0KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUlubGluZUF1dG9jb21wbGV0ZSgKKyAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiB1c2VySW5wdXQsCisgICAgICAgIGJvb2wgYmFja1NwYWNlT3JEZWxldGVQcmVz
c2VkLAorICAgICAgICBib29sIHNob3dTdWdnZXN0aW9ucykgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlBsdWdpbkNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViUGx1Z2luQ29udGFpbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlBsdWdpbkNvbnRhaW5lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQbHVnaW5Db250YWluZXJfaAorI2RlZmluZSBXZWJQbHVnaW5Db250YWluZXJfaAor
CitzdHJ1Y3QgTlBPYmplY3Q7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJp
bmc7CitjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJVUkxSZXF1ZXN0Oworc3RydWN0IFdlYlJlY3Q7
CisKK2NsYXNzIFdlYlBsdWdpbkNvbnRhaW5lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0
IFdlYlJlY3QmKSA9IDA7CisKKyAgICAvLyBDYXVzZXMgdGhlIGNvbnRhaW5lciB0byByZXBvcnQg
aXRzIGN1cnJlbnQgZ2VvbWV0cnkgdmlhCisgICAgLy8gV2ViUGx1Z2luOjp1cGRhdGVHZW9tZXRy
eS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0R2VvbWV0cnkoKSA9IDA7CisKKyAgICAvLyBEcm9w
IGFueSByZWZlcmVuY2VzIHRvIHNjcmlwdCBvYmplY3RzIGFsbG9jYXRlZCBieSB0aGUgcGx1Z2lu
LgorICAgIC8vIFRoZXNlIGFyZSBvYmplY3RzIGRlcml2ZWQgZnJvbSBXZWJQbHVnaW46OnNjcmlw
dGFibGVPYmplY3QuICBUaGlzIGlzCisgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBi
ZWluZyBkZXN0cm95ZWQgb3IgaWYgaXQgbmVlZHMgdG8gYmUKKyAgICAvLyByZS1pbml0aWFsaXpl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTY3JpcHRPYmplY3RzKCkgPSAwOworCisgICAgLy8g
UmV0dXJucyB0aGUgc2NyaXB0YWJsZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBET00gZWxl
bWVudAorICAgIC8vIGNvbnRhaW5pbmcgdGhlIHBsdWdpbi4KKyAgICB2aXJ0dWFsIE5QT2JqZWN0
KiBzY3JpcHRhYmxlT2JqZWN0Rm9yRWxlbWVudCgpID0gMDsKKworICAgIC8vIEV4ZWN1dGVzIGEg
ImphdmFzY3JpcHQ6IiBVUkwgb24gYmVoYWxmIG9mIHRoZSBwbHVnaW4gaW4gdGhlIGNvbnRleHQK
KyAgICAvLyBvZiB0aGUgZnJhbWUgY29udGFpbmluZyB0aGUgcGx1Z2luLiAgUmV0dXJucyB0aGUg
cmVzdWx0IG9mIHNjcmlwdAorICAgIC8vIGV4ZWN1dGlvbiwgaWYgYW55LgorICAgIHZpcnR1YWwg
V2ViU3RyaW5nIGV4ZWN1dGVTY3JpcHRVUkwoY29uc3QgV2ViVVJMJiwgYm9vbCBwb3B1cHNBbGxv
d2VkKSA9IDA7CisKKyAgICAvLyBMb2FkcyBhbiBVUkwgaW4gdGhlIHNwZWNpZmllZCBmcmFtZSAo
b3IgdGhlIGZyYW1lIGNvbnRhaW5pbmcgdGhpcworICAgIC8vIHBsdWdpbiBpZiB0YXJnZXQgaXMg
ZW1wdHkpLiAgSWYgbm90aWZ5TmVlZGVkIGlzIHRydWUsIHRoZW4gdXBvbgorICAgIC8vIGNvbXBs
ZXRpb24sIFdlYlBsdWdpbjo6ZGlkRmluaXNoTG9hZGluZ0ZyYW1lUmVxdWVzdCBpcyBjYWxsZWQg
aWYgdGhlCisgICAgLy8gbG9hZCB3YXMgc3VjY2Vzc2Z1bCBvciBXZWJQbHVnaW46OmRpZEZhaWxM
b2FkaW5nRnJhbWVSZXF1ZXN0IGlzCisgICAgLy8gY2FsbGVkIGlmIHRoZSBsb2FkIGZhaWxlZC4g
IFRoZSBnaXZlbiBub3RpZnlEYXRhIGlzIHBhc3NlZCBhbG9uZyB0bworICAgIC8vIHRoZSBjYWxs
YmFjay4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZyYW1lUmVxdWVzdCgKKyAgICAgICAgY29uc3Qg
V2ViVVJMUmVxdWVzdCYsIGNvbnN0IFdlYlN0cmluZyYgdGFyZ2V0LCBib29sIG5vdGlmeU5lZWRl
ZCwgdm9pZCogbm90aWZ5RGF0YSkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgfldlYlBsdWdpbkNv
bnRhaW5lcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42806</attachid>
            <date>2009-11-09 14:58:45 -0800</date>
            <delta_ts>2009-11-09 21:06:02 -0800</delta_ts>
            <desc>WebPo*.h and WebRuntimeFeatures.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11768</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA2OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMjUgQEAKIDIwMDktMTEtMDkgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJQbyouaCBhbmQgV2ViUnVuZXRpbWVGZWF0dXJlcy5o
IENocm9taXVtIEFQSSBoZWFkZXJzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODM5NAorCisgICAgICAgICogcHVibGljL1dlYlBvaW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQb2ludDo6V2ViUG9pbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb2ludDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnQ6Om9w
ZXJhdG9yIFdlYkNvcmU6OkludFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9pbnQ6Om9w
ZXJhdG9yIGdmeDo6UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYktpdDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcHVibGljL1dlYlBvcHVwTWVudS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBNZW51SW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW5mbzo6SXRlbTo6KToKKyAgICAgICAgKiBwdWJs
aWMvV2ViUnVudGltZUZlYXR1cmVzLmg6IEFkZGVkLgorCisyMDA5LTExLTA5ICBOYXRlIENoYXBp
biAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBH
bGF6a292LgogCiAgICAgICAgIFVwc3RyZWFtIHJlbWFpbmluZyBDaHJvbWl1bSBBUEkgV2ViTiou
aCBoZWFkZXJzLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVy
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0
dXJlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1l
RmVhdHVyZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUnVudGlt
ZUZlYXR1cmVzX2gKKyNkZWZpbmUgV2ViUnVudGltZUZlYXR1cmVzX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyBpcyB1c2Vk
IHRvIGVuYWJsZSBydW50aW1lIGZlYXR1cmVzIG9mIFdlYktpdC4gIEl0IGlzIHVuc3BlY2lmaWVk
CisvLyB3aGV0aGVyIGEgZmVhdHVyZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuICBJbiB0aGUgZnV0
dXJlLCBhIGZlYXR1cmUgbWF5IGJlCisvLyBwcm9tb3RlZCBmcm9tIGRpc2FibGVkIGJ5IGRlZmF1
bHQgdG8gZW5hYmxlZCBieSBkZWZhdWx0IG9uY2UgaXQgcmVhY2hlcyBhCisvLyBjZXJ0YWluIGxl
dmVsIG9mIG1hdHVyaXR5LgorY2xhc3MgV2ViUnVudGltZUZlYXR1cmVzIHsKK3B1YmxpYzoKKyAg
ICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIGVuYWJsZURhdGFiYXNlKGJvb2wpOworICAgIFdFQktJ
VF9BUEkgc3RhdGljIGJvb2wgaXNEYXRhYmFzZUVuYWJsZWQoKTsKKworICAgIFdFQktJVF9BUEkg
c3RhdGljIHZvaWQgZW5hYmxlTG9jYWxTdG9yYWdlKGJvb2wpOworICAgIFdFQktJVF9BUEkgc3Rh
dGljIGJvb2wgaXNMb2NhbFN0b3JhZ2VFbmFibGVkKCk7CisKKyAgICBXRUJLSVRfQVBJIHN0YXRp
YyB2b2lkIGVuYWJsZVNlc3Npb25TdG9yYWdlKGJvb2wpOworICAgIFdFQktJVF9BUEkgc3RhdGlj
IGJvb2wgaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQoKTsKKworICAgIFdFQktJVF9BUEkgc3RhdGlj
IHZvaWQgZW5hYmxlTWVkaWFQbGF5ZXIoYm9vbCk7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9v
bCBpc01lZGlhUGxheWVyRW5hYmxlZCgpOworCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBl
bmFibGVTb2NrZXRzKGJvb2wpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgaXNTb2NrZXRz
RW5hYmxlZCgpOworCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBlbmFibGVOb3RpZmljYXRp
b25zKGJvb2wpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgaXNOb3RpZmljYXRpb25zRW5h
YmxlZCgpOworCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBlbmFibGVBcHBsaWNhdGlvbkNh
Y2hlKGJvb2wpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGJvb2wgaXNBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCgpOworCitwcml2YXRlOgorICAgIFdlYlJ1bnRpbWVGZWF0dXJlcygpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJQb3B1cE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUG9w
dXBNZW51X2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYldpZGdldC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViV2lkZ2V0Q2xpZW50OworCitjbGFzcyBXZWJQb3B1cE1lbnUgOiBwdWJsaWMgV2ViV2lkZ2V0
IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJQb3B1cE1lbnUqIGNyZWF0ZShX
ZWJXaWRnZXRDbGllbnQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9pbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTExIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJQb2ludF9oCisjZGVmaW5lIFdlYlBvaW50X2gKKworI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNlbHNlCisjaW5jbHVkZSA8YmFzZS9nZngvcmVjdC5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUG9pbnQgeworICAgIGludCB4OworICAgIGludCB5Owor
CisgICAgV2ViUG9pbnQoKQorICAgICAgICA6IHgoMCkKKyAgICAgICAgLCB5KDApCisgICAgewor
ICAgIH0KKworICAgIFdlYlBvaW50KGludCB4LCBpbnQgeSkKKyAgICAgICAgOiB4KHgpCisgICAg
ICAgICwgeSh5KQorICAgIHsKKyAgICB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcCkKKyAgICAgICAgOiB4KHAueCgp
KQorICAgICAgICAsIHkocC55KCkpCisgICAgeworICAgIH0KKworICAgIFdlYlBvaW50JiBvcGVy
YXRvcj0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHApCisgICAgeworICAgICAgICB4ID0gcC54
KCk7CisgICAgICAgIHkgPSBwLnkoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIG9wZXJhdG9yIFdlYkNvcmU6OkludFBvaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KTsKKyAgICB9CisjZWxzZQorICAgIFdlYlBvaW50
KGNvbnN0IGdmeDo6UG9pbnQmIHApCisgICAgICAgIDogeChwLngoKSkKKyAgICAgICAgLCB5KHAu
eSgpKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJQb2ludCYgb3BlcmF0b3I9KGNvbnN0IGdmeDo6
UG9pbnQmIHApCisgICAgeworICAgICAgICB4ID0gcC54KCk7CisgICAgICAgIHkgPSBwLnkoKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIG9wZXJhdG9yIGdmeDo6UG9pbnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdmeDo6UG9pbnQoeCwgeSk7CisgICAgfQor
I2VuZGlmCit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlBvaW50JiBhLCBj
b25zdCBXZWJQb2ludCYgYikKK3sKKyAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlBvaW50JiBhLCBjb25zdCBX
ZWJQb2ludCYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVw
TWVudUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVw
TWVudUluZm8uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9w
dXBNZW51SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQb3B1
cE1lbnVJbmZvX2gKKyNkZWZpbmUgV2ViUG9wdXBNZW51SW5mb19oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJSZWN0LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBEZXNjcmli
ZXMgdGhlIGNvbnRlbnRzIG9mIGEgcG9wdXAgbWVudS4KK3N0cnVjdCBXZWJQb3B1cE1lbnVJbmZv
IHsKKyAgICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIGVudW0gVHlwZSB7CisgICAgICAgICAgICBP
cHRpb24sCisgICAgICAgICAgICBHcm91cCwKKyAgICAgICAgICAgIFNlcGFyYXRvciwKKyAgICAg
ICAgfTsKKyAgICAgICAgV2ViU3RyaW5nIGxhYmVsOworICAgICAgICBUeXBlIHR5cGU7CisgICAg
ICAgIGJvb2wgZW5hYmxlZDsKKyAgICB9OworCisgICAgaW50IGl0ZW1IZWlnaHQ7CisgICAgaW50
IHNlbGVjdGVkSW5kZXg7CisgICAgV2ViVmVjdG9yPEl0ZW0+IGl0ZW1zOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42815</attachid>
            <date>2009-11-09 17:38:49 -0800</date>
            <delta_ts>2009-11-09 20:25:27 -0800</delta_ts>
            <desc>Upstreaming Chromium API: Platform specific files</desc>
            <filename>bug-28394-20091109173848.patch</filename>
            <type>text/plain</type>
            <size>31417</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDA2MDkxMDYuLjQ5YTVhODcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDA5LTExLTA5ICBZYWFyIFNjaG5pdG1hbiAgPHlhYXJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwc3RyZWFt
aW5nIENocm9taXVtIEFQSTogUGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMKKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzOTQKKworICAgICAgICAqIHB1
YmxpYy9ndGsvV2ViRm9udEluZm8uaDogQWRkZWQuCisgICAgICAgICogcHVibGljL2d0ay9XZWJJ
bnB1dEV2ZW50RmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvZ3RrL1dlYlNjcmVl
bkluZm9GYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJGb250UmVu
ZGVyaW5nLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9y
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvbWFjL1dlYklucHV0RXZlbnRGYWN0b3J5Lmg6
IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9tYWMvV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaDogQWRk
ZWQuCisgICAgICAgICogcHVibGljL3dpbi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAg
ICAqIHB1YmxpYy93aW4vV2ViU2NyZWVuSW5mb0ZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICog
cHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMveDEx
L1dlYlNjcmVlbkluZm9GYWN0b3J5Lmg6IEFkZGVkLgorCiAyMDA5LTExLTA5ICBEYXZpZCBMZXZp
biAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0
b3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9ndGsvV2ViRm9udEluZm8uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDM3NjgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9ndGsvV2ViRm9udEluZm8uaApAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJGb250SW5mb19oCisjZGVmaW5lIFdlYkZvbnRJbmZvX2gKKworI2luY2x1ZGUgIi4uL1dl
YkNTdHJpbmcuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRm9udEluZm8geworcHVibGljOgorICAg
IC8vIFJldHVybiBhIGZvbnQgZmFtaWx5IHdoaWNoIHByb3ZpZGVzIGdseXBocyBmb3IgdGhlIFVu
aWNvZGUgY29kZSBwb2ludHMKKyAgICAvLyBzcGVjaWZpZWQgYnkgfHV0ZjE2fAorICAgIC8vICAg
Y2hhcmFjdGVyczogYSBuYXRpdmUtZW5kaWFuIFVURjE2IHN0cmluZworICAgIC8vICAgbnVtQ2hh
cmFjdGVyczogdGhlIG51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4gfHV0ZjE2fAorICAgIC8vCisg
ICAgLy8gUmV0dXJuczogdGhlIGZvbnQgZmFtaWx5IG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUg
cmVxdWVzdCBjb3VsZCBub3QgYmUKKyAgICAvLyBzYXRpc2ZpZWQuCisgICAgV0VCS0lUX0FQSSBz
dGF0aWMgV2ViQ1N0cmluZyBmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVy
cywgc2l6ZV90IG51bUNoYXJhY3RlcnMpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9ndGsvV2ViSW5wdXRF
dmVudEZhY3RvcnkuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvZ3RrL1dlYklucHV0RXZlbnRG
YWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzYmQyOAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvZ3RrL1dlYklucHV0RXZlbnRG
YWN0b3J5LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5wdXRFdmVudEZhY3RvcnlfaAor
I2RlZmluZSBXZWJJbnB1dEV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRlICIuLi9XZWJDb21tb24u
aCIKKwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50QnV0dG9uIEdka0V2ZW50QnV0dG9uOwordHlw
ZWRlZiBzdHJ1Y3QgX0dka0V2ZW50TW90aW9uIEdka0V2ZW50TW90aW9uOwordHlwZWRlZiBzdHJ1
Y3QgX0dka0V2ZW50Q3Jvc3NpbmcgR2RrRXZlbnRDcm9zc2luZzsKK3R5cGVkZWYgc3RydWN0IF9H
ZGtFdmVudFNjcm9sbCBHZGtFdmVudFNjcm9sbDsKK3R5cGVkZWYgc3RydWN0IF9HZGtFdmVudEtl
eSBHZGtFdmVudEtleTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJk
RXZlbnQ7CitjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50Owor
CitjbGFzcyBXZWJJbnB1dEV2ZW50RmFjdG9yeSB7CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50S2V5Kik7
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KHdj
aGFyX3QgY2hhcmFjdGVyLCBpbnQgc3RhdGUsIGRvdWJsZSB0aW1lU3RhbXBTZWNvbmRzKTsKKyAg
ICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnRCdXR0b24qKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNlRXZl
bnQoY29uc3QgR2RrRXZlbnRNb3Rpb24qKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJNb3Vz
ZUV2ZW50IG1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnRDcm9zc2luZyopOworICAgIFdFQktJVF9B
UEkgc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudCBtb3VzZVdoZWVsRXZlbnQoY29uc3QgR2RrRXZl
bnRTY3JvbGwqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvZ3RrL1dlYlNjcmVlbkluZm9GYWN0b3J5Lmgg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NjQ3NDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9GYWN0b3J5X2gKKyNkZWZpbmUgV2ViU2Ny
ZWVuSW5mb0ZhY3RvcnlfaAorCisjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCisKK3R5cGVkZWYg
c3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFdlYlNjcmVlbkluZm87CisKK2NsYXNzIFdlYlNjcmVlbkluZm9GYWN0b3J5IHsKK3B1Ymxp
YzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oR3RrV2lk
Z2V0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlcmluZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNjFiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJGb250UmVuZGVyaW5nX2gKKyNkZWZpbmUgV2ViRm9udFJlbmRlcmluZ19oCisK
KyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKyNpbmNsdWRlIDxTa0ZvbnRIb3N0Lmg+CisjaW5j
bHVkZSA8U2tQYWludC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRm9udFJl
bmRlcmluZyB7CitwdWJsaWM6CisgICAgLy8gU2V0IGdsb2JhbCBmb250IHJlbmRlcmVyaW5nIHBy
ZWZlcmVuY2VzLgorCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRIaW50aW5nKFNrUGFp
bnQ6OkhpbnRpbmcpOworICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0QW50aUFsaWFzKGJv
b2wgb24pOworICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0U3VicGl4ZWxHbHlwaHMoYm9v
bCBvbik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRMQ0RPcmRlcihTa0ZvbnRIb3N0
OjpMQ0RPcmRlcik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRMQ0RPcmllbnRhdGlv
bihTa0ZvbnRIb3N0OjpMQ0RPcmllbnRhdGlvbik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YlNhbmRib3hTdXBwb3J0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRi
b3hTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxMjYyNgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJv
eFN1cHBvcnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTYW5kYm94U3VwcG9ydF9oCisj
ZGVmaW5lIFdlYlNhbmRib3hTdXBwb3J0X2gKKworI2luY2x1ZGUgIndlYmtpdC9hcGkvcHVibGlj
L1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIndlYmtpdC9hcGkvcHVibGljL1dlYlN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUHV0IG1ldGhvZHMgaGVyZSB0aGF0IGFyZSByZXF1
aXJlZCBkdWUgdG8gc2FuZGJveCByZXN0cmljdGlvbnMuCitjbGFzcyBXZWJTYW5kYm94U3VwcG9y
dCB7CitwdWJsaWM6CisgICAgLy8gRm9udHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBHZXQgYSBmb250IGZh
bWlseSB3aGljaCBjb250YWlucyBnbHlwaHMgZm9yIHRoZSBnaXZlbiBVbmljb2RlCisgICAgLy8g
Y29kZS1wb2ludHMuCisgICAgLy8gICBjaGFyYWN0ZXJzOiBhIFVURi0xNiBlbmNvZGVkIHN0cmlu
ZworICAgIC8vICAgbnVtQ2hhcmFjdGVyczogdGhlIG51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4g
fGNoYXJhY3RlcnN8CisgICAgLy8KKyAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZv
bnQgZmFtaWx5IG9uIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKKyAgICAvLyByZXF1ZXN0IGNhbm5v
dCBiZSBzYXRpc2ZpZWQuCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNo
YXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJz
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmYyMTNjCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViSW5wdXRFdmVudEZhY3RvcnkuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJbnB1dEV2ZW50RmFjdG9yeV9oCisjZGVmaW5lIFdlYklucHV0RXZl
bnRGYWN0b3J5X2gKKworI2luY2x1ZGUgIi4uL1dlYkNvbW1vbi5oIgorCisjaWZkZWYgX19PQkpD
X18KK0BjbGFzcyBOU0V2ZW50OworQGNsYXNzIE5TVmlldzsKKyNlbHNlCitjbGFzcyBOU0V2ZW50
OworY2xhc3MgTlNWaWV3OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk1vdXNlV2hl
ZWxFdmVudDsKKworY2xhc3MgV2ViSW5wdXRFdmVudEZhY3RvcnkgeworcHVibGljOgorICAgIFdF
QktJVF9BUEkgc3RhdGljIFdlYktleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudChOU0V2ZW50Kik7
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KHdj
aGFyX3QgY2hhcmFjdGVyLCBpbnQgbW9kaWZpZXJzLCBkb3VibGUgdGltZVN0YW1wU2Vjb25kcyk7
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50KE5TRXZlbnQq
LCBOU1ZpZXcqKTsKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJNb3VzZVdoZWVsRXZlbnQgbW91
c2VXaGVlbEV2ZW50KE5TRXZlbnQqLCBOU1ZpZXcqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dl
YlNjcmVlbkluZm9GYWN0b3J5LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJTY3Jl
ZW5JbmZvRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NWU3
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJTY3Jl
ZW5JbmZvRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9GYWN0
b3J5X2gKKyNkZWZpbmUgV2ViU2NyZWVuSW5mb0ZhY3RvcnlfaAorCisjaW5jbHVkZSAiLi4vV2Vi
Q29tbW9uLmgiCisKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5TVmlldzsKKyNlbHNlCitjbGFz
cyBOU1ZpZXc7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJTY3Jl
ZW5JbmZvOworCitjbGFzcyBXZWJTY3JlZW5JbmZvRmFjdG9yeSB7CitwdWJsaWM6CisgICAgV0VC
S0lUX0FQSSBzdGF0aWMgV2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKE5TVmlldyopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy93aW4vV2ViSW5wdXRFdmVudEZhY3RvcnkuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWUwMjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvd2luL1dlYklucHV0RXZlbnRGYWN0b3J5LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViSW5wdXRFdmVudEZhY3RvcnlfaAorI2RlZmluZSBXZWJJbnB1dEV2ZW50RmFjdG9yeV9oCisK
KyNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJNb3Vz
ZUV2ZW50OworY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OworCitjbGFzcyBXZWJJbnB1dEV2ZW50
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVu
dCBrZXlib2FyZEV2ZW50KEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICBXRUJLSVRf
QVBJIHN0YXRpYyBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQoSFdORCwgVUlOVCwgV1BBUkFNLCBM
UEFSQU0pOworICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYk1vdXNlV2hlZWxFdmVudCBtb3VzZVdo
ZWVsRXZlbnQoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOworCisgICAgLy8gV2luZG93cyBv
bmx5IHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoZXRoZXIgYSBjbGljayB3YXMgYSBzaW5nbGUg
b3IKKyAgICAvLyBkb3VibGUgY2xpY2ssIHdoaWxlIHdlIG5lZWQgdG8ga25vdyB0aGUgY2xpY2sg
Y291bnQgcGFzdCB0d28uIFRoZQorICAgIC8vIFdlYklucHV0RXZlbnRGYWN0b3J5IGtlZXBzIGlu
dGVybmFsIHN0YXRlIHRvIGFsbG93IGl0IHRvIHN5bnRoZXNpemUKKyAgICAvLyB0aGF0IGluZm9y
bWF0aW9uLiBJbiBzb21lIGNhc2VzLCBsaWtlIGZhc3QtcnVubmluZyB0ZXN0cywgdGhhdAorICAg
IC8vIGluZm9ybWF0aW9uIGlzIGtub3duIHRvIGJlIHN0YWxlIGFuZCBuZWVkcyB0byBiZSByZXNl
dDsgdGhhdCBpcyB0aGUKKyAgICAvLyBmdW5jdGlvbiBvZiByZXNldExhc3RDbGlja1N0YXRlKCku
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZXNldExhc3RDbGlja1N0YXRlKCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44OGQ1MzYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy93aW4vV2ViU2FuZGJveFN1cHBvcnQuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTYW5k
Ym94U3VwcG9ydF9oCisjZGVmaW5lIFdlYlNhbmRib3hTdXBwb3J0X2gKKwordHlwZWRlZiBzdHJ1
Y3QgSEZPTlRfXyogSEZPTlQ7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBQdXQgbWV0aG9k
cyBoZXJlIHRoYXQgYXJlIHJlcXVpcmVkIGR1ZSB0byBzYW5kYm94IHJlc3RyaWN0aW9ucy4KK2Ns
YXNzIFdlYlNhbmRib3hTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICAvLyBTb21ldGltZXMgYSBXaW4z
MiBBUEkgY2FsbCB3aWxsIGZhaWwgYmVjYXVzZSBhIGZvbnQgaXMgbm90IGxvYWRlZCwKKyAgICAv
LyBhbmQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLCB0aGUgY3VycmVudCBwcm9jZXNzIG1h
eSBiZSB1bmFibGUKKyAgICAvLyB0byBhY2Nlc3MgdGhlIGZpbGVzeXN0ZW0gdG8gbG9hZCB0aGUg
Zm9udC4gIFNvLCB0aGlzIGNhbGwgc2VydmVzIGFzCisgICAgLy8gYSBmYWlsb3ZlciB0byBhc2sg
dGhlIGVtYmVkZGVyIHRvIHRyeSBzb21lIG90aGVyIHdheSB0byBsb2FkIHRoZQorICAgIC8vIGZv
bnQgKHVzdWFsbHkgYnkgZGVsZWdhdGluZyB0byBhbiBlbXBvd2VyZWQgcHJvY2VzcyB0byBoYXZl
IGl0IGxvYWQKKyAgICAvLyB0aGUgZm9udCkuICBSZXR1cm5zIHRydWUgaWYgdGhlIGZvbnQgd2Fz
IHN1Y2Nlc3NmdWxseSBsb2FkZWQuCisgICAgdmlydHVhbCBib29sIGVuc3VyZUZvbnRMb2FkZWQo
SEZPTlQpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5Lmgg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL3dpbi9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MDQwZWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL3dpbi9XZWJTY3JlZW5JbmZvRmFjdG9yeS5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9GYWN0b3J5X2gKKyNkZWZpbmUgV2ViU2Ny
ZWVuSW5mb0ZhY3RvcnlfaAorCisjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCisKK3R5cGVkZWYg
c3RydWN0IEhXTkRfXyogSFdORDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJT
Y3JlZW5JbmZvOworCitjbGFzcyBXZWJTY3JlZW5JbmZvRmFjdG9yeSB7CitwdWJsaWM6CisgICAg
V0VCS0lUX0FQSSBzdGF0aWMgV2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKEhXTkQpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
d2luL1dlYlRoZW1lRW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YjU2MzYwOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvd2luL1dl
YlRoZW1lRW5naW5lLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAor
I2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCisKKyNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKKyNp
bmNsdWRlICIuLi9XZWJDb2xvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdl
YlJlY3Q7CisKKy8vIFRoZSBwYXJ0IGFuZCBzdGF0ZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmQgdG8g
dmFsdWVzIGRlZmluZWQgYnkgdGhlCisvLyBXaW5kb3dzIFRoZW1lIEFQSSAoc2VlCisvLyBodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvYmI3NzMxODcoVlMuODUpLmFzcHgg
KS4KKy8vIFRoZSBjbGFzc2ljU3RhdGUgcGFyYW1ldGVyIGNvcnJlc3BvbmRzIHRvIHRoZSB1U3Rh
dGUKKy8vIHBhcmFtZXRlciBvZiB0aGUgV2luZG93cyBEcmF3RnJhbWVDb250cm9sKCkgZnVuY3Rp
b24uCisvLyBTZWUgdGhlIGRlZmluaXRpb25zIGluIDx2c3N0eWxlLmg+IGFuZCA8d2ludXNlci5o
Pi4KK2NsYXNzIFdlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRCdXR0b24oCisgICAgICAgIFdlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYlJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRNZW51TGlzdCgKKyAgICAgICAgV2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBz
dGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViUmVjdCYpID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckFycm93KAorICAgICAgICBXZWJDYW52YXMq
LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYlJlY3QmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2Vi
Q2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAg
Y29uc3QgV2ViUmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRy
YWNrKAorICAgICAgICBXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3Np
Y1N0YXRlLAorICAgICAgICBjb25zdCBXZWJSZWN0JiwgY29uc3QgV2ViUmVjdCYgYWxpZ25SZWN0
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoCisgICAgICAgIFdlYkNh
bnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNv
bnN0IFdlYlJlY3QmLCBXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsIGJvb2wgZHJhd0Vk
Z2VzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2JhcigKKyAgICAgICAgV2Vi
Q2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAg
Y29uc3QgV2ViUmVjdCYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMveDExL1dlYlNjcmVlbkluZm9G
YWN0b3J5LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9y
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMzBkYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9y
eS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmVlbkluZm9GYWN0b3J5X2gKKyNkZWZp
bmUgV2ViU2NyZWVuSW5mb0ZhY3RvcnlfaAorCisjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCisK
K3R5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYlNjcmVlbkluZm87CisKK2NsYXNzIFdlYlNjcmVlbkluZm9GYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8o
RGlzcGxheSosIGludCBzY3JlZW5OdW1iZXIpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZg==
</data>

          </attachment>
      

    </bug>

</bugzilla>