<?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>83777</bug_id>
          
          <creation_ts>2012-04-12 06:19:00 -0700</creation_ts>
          <short_desc>Introduce MenuItemID to autofill popup</short_desc>
          <delta_ts>2012-04-16 14:29:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>83742</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>isherman</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>601153</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-12 06:19:00 -0700</bug_when>
    <thetext>Introduce MenuItemID so we can add multiple separators to a menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601178</commentid>
    <comment_count>1</comment_count>
      <attachid>136895</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-12 06:46:59 -0700</bug_when>
    <thetext>Created attachment 136895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601183</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 06:53:03 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601513</commentid>
    <comment_count>3</comment_count>
      <attachid>136895</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-04-12 14:00:44 -0700</bug_when>
    <thetext>Comment on attachment 136895
Patch

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

&gt; Source/WebKit/chromium/public/WebAutofillClient.h:43
&gt; +    enum {

nit: we usually name enums, and then we use the enum name
as the typename elsewhere.

shouldn&apos;t didAcceptAutofillSuggestion use a named enum type
for the itemID parameter?

please also see:
http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

&gt; Source/WebKit/chromium/public/WebView.h:364
&gt; +        const WebVector&lt;int&gt;&amp; itemIDs) = 0;

Chrome doesn&apos;t yet call this function?  It is easy to land without breaking Chrome?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601769</commentid>
    <comment_count>4</comment_count>
      <attachid>136895</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-12 19:31:09 -0700</bug_when>
    <thetext>Comment on attachment 136895
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebAutofillClient.h:43
&gt;&gt; +    enum {
&gt; 
&gt; nit: we usually name enums, and then we use the enum name
&gt; as the typename elsewhere.
&gt; 
&gt; shouldn&apos;t didAcceptAutofillSuggestion use a named enum type
&gt; for the itemID parameter?
&gt; 
&gt; please also see:
&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

In my understanding, we usually use positive numbers for the ID and these symbols are special values.  Maybe we shouldn&apos;t use the enum name as the type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601898</commentid>
    <comment_count>5</comment_count>
      <attachid>137054</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-13 01:03:20 -0700</bug_when>
    <thetext>Created attachment 137054
Added argument with default value so we don&apos;t break the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601900</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 01:05:42 -0700</bug_when>
    <thetext>Attachment 137054 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1
Source/WebKit/chromium/public/WebInputElement.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601903</commentid>
    <comment_count>7</comment_count>
      <attachid>137056</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-13 01:08:55 -0700</bug_when>
    <thetext>Created attachment 137056
Fixed mistake

&gt; (From update of attachment 136895 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136895&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebAutofillClient.h:43
&gt; &gt; +    enum {
&gt; 
&gt; nit: we usually name enums, and then we use the enum name
&gt; as the typename elsewhere.
&gt; 
&gt; shouldn&apos;t didAcceptAutofillSuggestion use a named enum type
&gt; for the itemID parameter?
&gt; 
&gt; please also see:
&gt; http://trac.webkit.org/wiki/ChromiumWebKitAPI#Enums

Positive itemID are unique ids used to identify the autofill item. And the enum values are used for zero and negative itemIDs.

@fishd should I still use the enum name?

&gt; &gt; Source/WebKit/chromium/public/WebView.h:364
&gt; &gt; +        const WebVector&lt;int&gt;&amp; itemIDs) = 0;
&gt; 
&gt; Chrome doesn&apos;t yet call this function?  It is easy to land without breaking Chrome?

I added a default value to the argument I want to remove, so we can transition without breaking the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601913</commentid>
    <comment_count>8</comment_count>
      <attachid>137056</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-13 01:30:24 -0700</bug_when>
    <thetext>Comment on attachment 137056
Fixed mistake

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

&gt; Source/WebKit/chromium/public/WebAutofillClient.h:45
&gt; +        AutocompleteEntryMenuItemID = 0,
&gt; +        WarningMessageMenuItemID = -1,

Anyway, we should name them like MenuItemIDAutocompleEntry, MenuItemIDWarningMessage, ....

&gt; Source/WebKit/chromium/public/WebView.h:365
&gt;          const WebVector&lt;WebString&gt;&amp; names,
&gt;          const WebVector&lt;WebString&gt;&amp; labels,
&gt;          const WebVector&lt;WebString&gt;&amp; icons,
&gt; -        const WebVector&lt;int&gt;&amp; uniqueIDs,
&gt; -        int separatorIndex) = 0;
&gt; +        const WebVector&lt;int&gt;&amp; itemIDs,
&gt; +        int separatorIndex = -1) = 0;

You need to update the comment of this function.

The build issue can be avoided by the default argument, but I&apos;m afraid this change will make problems because the expected content of the uniqueIDs/itemIDs is changed.
The current callsites of this function doesn&apos;t put SeparatorMenuItemID in uniqueIDs, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602018</commentid>
    <comment_count>9</comment_count>
      <attachid>137077</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-13 06:30:33 -0700</bug_when>
    <thetext>Created attachment 137077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602021</commentid>
    <comment_count>10</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-13 06:33:31 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 137056 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137056&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebAutofillClient.h:45
&gt; &gt; +        AutocompleteEntryMenuItemID = 0,
&gt; &gt; +        WarningMessageMenuItemID = -1,
&gt; 
&gt; Anyway, we should name them like MenuItemIDAutocompleEntry, MenuItemIDWarningMessage, ....
Done.

&gt; &gt; Source/WebKit/chromium/public/WebView.h:365
&gt; &gt;          const WebVector&lt;WebString&gt;&amp; names,
&gt; &gt;          const WebVector&lt;WebString&gt;&amp; labels,
&gt; &gt;          const WebVector&lt;WebString&gt;&amp; icons,
&gt; &gt; -        const WebVector&lt;int&gt;&amp; uniqueIDs,
&gt; &gt; -        int separatorIndex) = 0;
&gt; &gt; +        const WebVector&lt;int&gt;&amp; itemIDs,
&gt; &gt; +        int separatorIndex = -1) = 0;
&gt; 
&gt; You need to update the comment of this function.
&gt; 
&gt; The build issue can be avoided by the default argument, but I&apos;m afraid this change will make problems because the expected content of the uniqueIDs/itemIDs is changed.
&gt; The current callsites of this function doesn&apos;t put SeparatorMenuItemID in uniqueIDs, right?

Yes it won&apos;t break the build but it will break autofill. So, for this new patch I made it so it will switch between the old behavior and the new one depending on the separatorIndex passed from the chromium side. Autofill will work fine before and after we land the chromium side of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602552</commentid>
    <comment_count>11</comment_count>
      <attachid>137077</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-13 17:37:48 -0700</bug_when>
    <thetext>Comment on attachment 137077
Patch

ok, it looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602622</commentid>
    <comment_count>12</comment_count>
      <attachid>137077</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 21:39:24 -0700</bug_when>
    <thetext>Comment on attachment 137077
Patch

Rejecting attachment 137077 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: ChangeLog entry in Source/WebKit/chromium/ChangeLog is not at the top of the file.

Full output: http://queues.webkit.org/results/12408066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602855</commentid>
    <comment_count>13</comment_count>
      <attachid>137266</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-15 19:29:53 -0700</bug_when>
    <thetext>Created attachment 137266
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602881</commentid>
    <comment_count>14</comment_count>
      <attachid>137266</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-15 21:13:27 -0700</bug_when>
    <thetext>Comment on attachment 137266
Rebased

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

&gt; Source/WebKit/chromium/ChangeLog:213
&gt;  
&gt; -2012-04-13  Keishi Hattori  &lt;keishi@webkit.org&gt;
&gt; +2012-04-12  Keishi Hattori  &lt;keishi@webkit.org&gt;
&gt;  

Do not change the existing ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602885</commentid>
    <comment_count>15</comment_count>
      <attachid>137274</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-04-15 21:22:51 -0700</bug_when>
    <thetext>Created attachment 137274
Fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602901</commentid>
    <comment_count>16</comment_count>
      <attachid>137274</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-15 22:22:14 -0700</bug_when>
    <thetext>Comment on attachment 137274
Fixed ChangeLog

Clearing flags on attachment: 137274

Committed r114223: &lt;http://trac.webkit.org/changeset/114223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602902</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-15 22:22:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136895</attachid>
            <date>2012-04-12 06:46:59 -0700</date>
            <delta_ts>2012-04-13 01:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>17124</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTFhMTg3NC4uN2RjOTc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MSBAQAogMjAxMi0wNC0xMiAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAorICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1J
RCB0byBhdXRvZmlsbCBwb3B1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NzcKKworICAgICAgICBJbnRyb2R1Y2luZyBNZW51SXRlbUlEcyBiZWNh
dXNlIHdlIHdhbnQgdG8gYWRkIG11bHRpcGxlIHNlcGFyYXRvcnMgYW5kCisgICAgICAgIG5lZWQg
dG8gaWRlbnRpZnkgbm9uLWF1dG9maWxsIG1lbnUgaXRlbXMgd2l0aG91dCByZXNvcnRpbmcgdG8g
dGhlIHNlcGFyYXRvciBwb3NpdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKTog
Q2hhbmdlZCB1bmlxdWVJRCB0byBpdGVtSUQgYmVjYXVzZSB0aGV5IGFyZW4ndCB1bmlxdWUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRTZWxlY3RBdXRvZmlsbFN1Z2dl
c3Rpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToK
KyAgICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOiBS
ZW1vdmVkIG1fc2VwYXJhdG9ySW5kZXguCisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBN
ZW51Q2xpZW50OjpnZXRTdWdnZXN0aW9uc0NvdW50KTogTm8gbmVlZCB0byBhY2NvdW50IGZvciB0
aGUgc2VwYXJhdG9yIGFueW1vcmUuCisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51
Q2xpZW50OjpnZXRTdWdnZXN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmdldExhYmVsKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQ6OmdldEljb24pOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6cmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6Y2FuUmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1dhcm5pbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyk6
CisgICAgICAgICogc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50Lmg6IFJlbW92ZWQgbV9zZXBh
cmF0b3JJbmRleCBiZWNhdXNlIG5vdyB3ZSB1c2UgaXRlbUlEIHRvIGlkZW50aWZ5IHNlcGFyYXRv
cnMuCisgICAgICAgIChBdXRvZmlsbFBvcHVwTWVudUNsaWVudCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b2Zp
bGxTdWdnZXN0aW9ucyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJWaWV3SW1wbCk6CisKKzIwMTItMDQtMTIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2UgV2ViRGF0YUxpc3RFbGVtZW50
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc2Mgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENs
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQu
aAppbmRleCA1ODI0ZjE3Li43ODQ4YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKQEAgLTQwLDE2ICs0MCwyNiBAQCBjbGFzcyBX
ZWJTdHJpbmc7CiAKIGNsYXNzIFdlYkF1dG9maWxsQ2xpZW50IHsKIHB1YmxpYzoKKyAgICBlbnVt
IHsKKyAgICAgICAgQXV0b2NvbXBsZXRlRW50cnlNZW51SXRlbUlEID0gMCwKKyAgICAgICAgV2Fy
bmluZ01lc3NhZ2VNZW51SXRlbUlEID0gLTEsCisgICAgICAgIFBhc3N3b3JkRW50cnlNZW51SXRl
bUlEID0gLTIsCisgICAgICAgIFNlcGFyYXRvck1lbnVJdGVtSUQgPSAtMywKKyAgICAgICAgQ2xl
YXJGb3JtTWVudUl0ZW1JRCA9IC00LAorICAgICAgICBBdXRvZmlsbE9wdGlvbnNNZW51SXRlbUlE
ID0gLTUsCisgICAgICAgIERhdGFMaXN0RW50cnlNZW51SXRlbUlEID0gLTYKKyAgICB9OworCiAg
ICAgLy8gSW5mb3JtcyB0aGUgYnJvd3NlciB0aGF0IHRoZSB1c2VyIGhhcyBhY2NlcHRlZCBhbiBB
dXRvZmlsbCBzdWdnZXN0aW9uIGZvcgotICAgIC8vIGEgV2ViTm9kZS4gIHx1bmlxdWVJRHwgaXMg
dXNlZCBhcyBhIGtleSBpbnRvIHRoZSBzZXQgb2YgQXV0b2ZpbGwgcHJvZmlsZXMsCi0gICAgLy8g
YW5kIHNob3VsZCBuZXZlciBiZSBuZWdhdGl2ZS4gIElmIGl0IGlzIDAsIHRoZW4gdGhlIHN1Z2dl
c3Rpb24gaXMgYW4KLSAgICAvLyBBdXRvY29tcGxldGUgc3VnZ2VzdGlvbjsgYW5kIHx2YWx1ZXwg
c3RvcmVzIHRoZSBzdWdnZXN0ZWQgdGV4dC4gIHxpbmRleHwKLSAgICAvLyBpcyBhbiBpbmRleCBv
ZiB0aGUgc2VsZWN0ZWQgc3VnZ2VzdGlvbiBpbiB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyBwcm92
aWRlZAotICAgIC8vIGJ5IHRoZSBjbGllbnQuCisgICAgLy8gYSBXZWJOb2RlLiBBIHBvc2l0aXZl
IHxpdGVtSUR8IGlzIGEgdW5pcXVlIGlkIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNldAorICAgIC8v
IG9mIEF1dG9maWxsIHByb2ZpbGVzLiBJZiBpdCBpcyBBdXRvY29tcGxldGVFbnRyeU1lbnVJdGVt
SUQsIHRoZW4gdGhlCisgICAgLy8gc3VnZ2VzdGlvbiBpcyBhbiBBdXRvY29tcGxldGUgc3VnZ2Vz
dGlvbjsgYW5kIHx2YWx1ZXwgc3RvcmVzIHRoZQorICAgIC8vIHN1Z2dlc3RlZCB0ZXh0LiB8aW5k
ZXh8IGlzIGFuIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBzdWdnZXN0aW9uIGluIHRoZQorICAgIC8v
IGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGNsaWVudC4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKGNvbnN0IFdlYk5vZGUmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB2
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgbGFiZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgdW5pcXVlSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXgpIHsgfQogCiAgICAgLy8gSW5mb3JtcyB0aGUgYnJv
d3NlciB0aGF0IHRoZSB1c2VyIGhhcyBzZWxlY3RlZCBhbiBBdXRvZmlsbCBzdWdnZXN0aW9uIGZv
cgpAQCAtNTgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbGVjdEF1
dG9maWxsU3VnZ2VzdGlvbihjb25zdCBXZWJOb2RlJiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbGFiZWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW5pcXVl
SUQpIHsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGl0ZW1JRCkgeyB9CiAKICAgICAvLyBJbmZvcm1zIHRoZSBicm93c2VyIHRoYXQgdGhlIHVzZXIg
aGFzIGNsZWFyZWQgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZQogICAgIC8vIEF1dG9maWxsIHN1Z2dl
c3Rpb25zIHBvcHVwLiBUaGlzIGhhcHBlbnMgd2hlbiBhIHVzZXIgdXNlcyB0aGUgYXJyb3cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxZGZhM2E2Li5hN2IxNDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0zNjEsOCArMzYx
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMs
CiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAgICAgY29uc3QgV2ViVmVjdG9y
PGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgaW50IHNlcGFyYXRvckluZGV4KSA9IDA7CisgICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzKSA9IDA7CiAKICAgICAvLyBIaWRlcyBh
bnkgcG9wdXAgKHN1Z2dlc3Rpb25zLCBzZWxlY3RzLi4uKSB0aGF0IG1pZ2h0IGJlIHNob3dpbmcu
CiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cHMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKaW5kZXggYzg0
ZWExMi4uZmI0ZmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcApAQCAtNTIsOCArNTIsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRvZmlsbFBvcHVwTWVudUNs
aWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQoKQotICAgIDogbV9zZXBhcmF0b3JJbmRleCgt
MSkKLSAgICAsIG1fc2VsZWN0ZWRJbmRleCgtMSkKKyAgICA6IG1fc2VsZWN0ZWRJbmRleCgtMSkK
ICAgICAsIG1fdGV4dEZpZWxkKDApCiB7CiB9CkBAIC02NCwzNyArNjMsMjUgQEAgQXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6On5BdXRvZmlsbFBvcHVwTWVudUNsaWVudCgpCiAKIHVuc2lnbmVkIEF1
dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRTdWdnZXN0aW9uc0NvdW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9uYW1lcy5zaXplKCkgKyAoKG1fc2VwYXJhdG9ySW5kZXggPT0gLTEpID8gMCA6
IDEpOworICAgIHJldHVybiBtX25hbWVzLnNpemUoKTsKIH0KIAogV2ViU3RyaW5nIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50OjpnZXRTdWdnZXN0aW9uKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QK
IHsKLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJ
bmRleCk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7
Ci0KLSAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8
IG1fbmFtZXMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbV9uYW1lc1tpbmRleF07CisgICAgQVNTRVJU
KGxpc3RJbmRleCA8IG1fbmFtZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9uYW1lc1tsaXN0SW5k
ZXhdOwogfQogCiBXZWJTdHJpbmcgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldExhYmVsKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdElu
ZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAg
ICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1fbGFiZWxzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1f
bGFiZWxzW2luZGV4XTsKKyAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9sYWJlbHMuc2l6ZSgpKTsK
KyAgICByZXR1cm4gbV9sYWJlbHNbbGlzdEluZGV4XTsKIH0KIAogV2ViU3RyaW5nIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50OjpnZXRJY29uKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAg
ICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7
Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAg
ICBBU1NFUlQoaW5kZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1faWNv
bnMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbV9pY29uc1tpbmRleF07CisgICAgQVNTRVJUKGxpc3RJ
bmRleCA8IG1faWNvbnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9pY29uc1tsaXN0SW5kZXhdOwog
fQogCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpyZW1vdmVTdWdnZXN0aW9uQXRJbmRl
eCh1bnNpZ25lZCBsaXN0SW5kZXgpCkBAIC0xMDIsMjYgKzg5LDE3IEBAIHZvaWQgQXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OnJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KHVuc2lnbmVkIGxpc3RJbmRl
eCkKICAgICBpZiAoIWNhblJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KGxpc3RJbmRleCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFs
SW5kZXgobGlzdEluZGV4KTsKLQotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpIDwgbV9uYW1lcy5zaXplKCkpOwotCi0gICAgbV9uYW1lcy5yZW1vdmUoaW5kZXgpOwotICAg
IG1fbGFiZWxzLnJlbW92ZShpbmRleCk7Ci0gICAgbV9pY29ucy5yZW1vdmUoaW5kZXgpOwotICAg
IG1fdW5pcXVlSURzLnJlbW92ZShpbmRleCk7CisgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbmFt
ZXMuc2l6ZSgpKTsKIAotICAgIC8vIFNoaWZ0IHRoZSBzZXBhcmF0b3IgaW5kZXggaWYgbmVjZXNz
YXJ5LgotICAgIGlmIChtX3NlcGFyYXRvckluZGV4ICE9IC0xKQotICAgICAgICBtX3NlcGFyYXRv
ckluZGV4LS07CisgICAgbV9uYW1lcy5yZW1vdmUobGlzdEluZGV4KTsKKyAgICBtX2xhYmVscy5y
ZW1vdmUobGlzdEluZGV4KTsKKyAgICBtX2ljb25zLnJlbW92ZShsaXN0SW5kZXgpOworICAgIG1f
aXRlbUlEcy5yZW1vdmUobGlzdEluZGV4KTsKIH0KIAogYm9vbCBBdXRvZmlsbFBvcHVwTWVudUNs
aWVudDo6Y2FuUmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgodW5zaWduZWQgbGlzdEluZGV4KQogewot
ICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpb24gb2YgaXRlbXMgYmVmb3JlIHRoZSBzZXBhcmF0b3Ig
dGhhdCBoYXZlIHVuaXF1ZSBpZCAwCi0gICAgLy8gKGkuZS4gYXJlIGF1dG9jb21wbGV0ZSByYXRo
ZXIgdGhhbiBhdXRvZmlsbCBpdGVtcykuCi0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRl
eFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIHJldHVybiAhbV91bmlxdWVJRHNbaW5k
ZXhdICYmIChtX3NlcGFyYXRvckluZGV4ID09IC0xIHx8IGxpc3RJbmRleCA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSk7CisgICAgcmV0dXJuIG1faXRlbUlEc1tsaXN0
SW5kZXhdID09IFdlYkF1dG9maWxsQ2xpZW50OjpBdXRvY29tcGxldGVFbnRyeU1lbnVJdGVtSUQg
fHwgbV9pdGVtSURzW2xpc3RJbmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6OlBhc3N3b3JkRW50
cnlNZW51SXRlbUlEOwogfQogCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojp2YWx1ZUNo
YW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMpCkBAIC0xMzAsMTUgKzEw
OCwxMiBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojp2YWx1ZUNoYW5nZWQodW5zaWdu
ZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMpCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSAmJiBsaXN0SW5kZXgg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIC0tbGlz
dEluZGV4OwotCiAgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbmFtZXMuc2l6ZSgpKTsKIAogICAg
IHdlYlZpZXctPmF1dG9maWxsQ2xpZW50KCktPmRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbihX
ZWJOb2RlKGdldFRleHRGaWVsZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uYW1lc1tsaXN0SW5kZXhdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhYmVs
c1tsaXN0SW5kZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VuaXF1ZUlEc1tsaXN0SW5kZXhdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2l0ZW1JRHNbbGlz
dEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlzdEluZGV4KTsKIH0KIApAQCAtMTQ4LDE1ICsxMjMsMTIgQEAgdm9pZCBB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5k
ZXgsIGJvb2wgZmlyZUV2ZW4KICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3NlcGFyYXRvckluZGV4ICE9IC0xICYmIGxpc3RJbmRleCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgLS1saXN0SW5kZXg7Ci0KICAg
ICBBU1NFUlQobGlzdEluZGV4IDwgbV9uYW1lcy5zaXplKCkpOwogCiAgICAgd2ViVmlldy0+YXV0
b2ZpbGxDbGllbnQoKS0+ZGlkU2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uKFdlYk5vZGUoZ2V0VGV4
dEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX25hbWVzW2xpc3RJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFiZWxzW2xpc3RJbmRleF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdW5pcXVlSURzW2xpc3RJbmRleF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2l0ZW1JRHNbbGlzdEluZGV4XSk7CiB9
CiAKIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNsZWFyZWQoKQpAQCAt
MjI4LDE3ICsyMDAsMTIgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cG9wdXBEaWRI
aWRlKCkKIAogYm9vbCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fc2VwYXJhdG9ySW5kZXgg
IT0gLTEgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpID09IGxpc3RJ
bmRleCk7CisgICAgcmV0dXJuIG1faXRlbUlEc1tsaXN0SW5kZXhdID09IFdlYkF1dG9maWxsQ2xp
ZW50OjpTZXBhcmF0b3JNZW51SXRlbUlEOwogfQogCiBib29sIEF1dG9maWxsUG9wdXBNZW51Q2xp
ZW50OjppdGVtSXNXYXJuaW5nKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBpbnQg
aW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAg
aWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoaW5k
ZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1fdW5pcXVlSURzLnNpemUo
KSk7Ci0gICAgcmV0dXJuIG1fdW5pcXVlSURzW2luZGV4XSA8IDA7CisgICAgcmV0dXJuIG1faXRl
bUlEc1tsaXN0SW5kZXhdID09IFdlYkF1dG9maWxsQ2xpZW50OjpXYXJuaW5nTWVzc2FnZU1lbnVJ
dGVtSUQ7CiB9CiAKIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNldFRleHRGcm9tSXRl
bSh1bnNpZ25lZCBsaXN0SW5kZXgpCkBAIC0yNjksMjAgKzIzNiwxOCBAQCB2b2lkIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJp
bmc+JiBuYW1lcywKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAg
IGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICBjb25zdCBXZWJWZWN0b3I8
aW50PiYgdW5pcXVlSURzLAotICAgIGludCBzZXBhcmF0b3JJbmRleCkKKyAgICBjb25zdCBXZWJW
ZWN0b3I8aW50PiYgaXRlbUlEcykKIHsKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGxhYmVs
cy5zaXplKCkpOwogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWNvbnMuc2l6ZSgpKTsKLSAg
ICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkpOwotICAgIEFTU0VSVChz
ZXBhcmF0b3JJbmRleCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSk7CisgICAgQVNT
RVJUKG5hbWVzLnNpemUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAKICAgICBtX3NlbGVjdGVkSW5k
ZXggPSAtMTsKICAgICBtX3RleHRGaWVsZCA9IHRleHRGaWVsZDsKIAogICAgIC8vIFRoZSBzdWdn
ZXN0aW9ucyBtdXN0IGJlIHNldCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZQogICAgIC8vIEF1dG9m
aWxsUG9wdXBNZW51Q2xpZW50LgotICAgIHNldFN1Z2dlc3Rpb25zKG5hbWVzLCBsYWJlbHMsIGlj
b25zLCB1bmlxdWVJRHMsIHNlcGFyYXRvckluZGV4KTsKKyAgICBzZXRTdWdnZXN0aW9ucyhuYW1l
cywgbGFiZWxzLCBpY29ucywgaXRlbUlEcyk7CiAKICAgICBGb250RGVzY3JpcHRpb24gcmVndWxh
ckZvbnREZXNjcmlwdGlvbjsKICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3Rl
bUZvbnQoQ1NTVmFsdWVXZWJraXRDb250cm9sLApAQCAtMzEzLDQyICsyNzgsMjggQEAgdm9pZCBB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKIHZvaWQgQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OnNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1l
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8
aW50PiYgdW5pcXVlSURzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNlcGFyYXRvckluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMpCiB7CiAgICAgQVNT
RVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMuc2l6ZSgpKTsKICAgICBBU1NFUlQobmFtZXMuc2l6
ZSgpID09IGljb25zLnNpemUoKSk7Ci0gICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSB1bmlxdWVJ
RHMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoc2VwYXJhdG9ySW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+
KG5hbWVzLnNpemUoKSkpOworICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaXRlbUlEcy5zaXpl
KCkpOwogCiAgICAgbV9uYW1lcy5jbGVhcigpOwogICAgIG1fbGFiZWxzLmNsZWFyKCk7CiAgICAg
bV9pY29ucy5jbGVhcigpOwotICAgIG1fdW5pcXVlSURzLmNsZWFyKCk7CisgICAgbV9pdGVtSURz
LmNsZWFyKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYW1lcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBtX25hbWVzLmFwcGVuZChuYW1lc1tpXSk7CiAgICAgICAgIG1fbGFiZWxzLmFw
cGVuZChsYWJlbHNbaV0pOwogICAgICAgICBtX2ljb25zLmFwcGVuZChpY29uc1tpXSk7Ci0gICAg
ICAgIG1fdW5pcXVlSURzLmFwcGVuZCh1bmlxdWVJRHNbaV0pOworICAgICAgICBtX2l0ZW1JRHMu
YXBwZW5kKGl0ZW1JRHNbaV0pOwogICAgIH0KIAotICAgIG1fc2VwYXJhdG9ySW5kZXggPSBzZXBh
cmF0b3JJbmRleDsKLQogICAgIC8vIFRyeSB0byBwcmVzZXJ2ZSBzZWxlY3Rpb24gaWYgcG9zc2li
bGUuCiAgICAgaWYgKGdldFNlbGVjdGVkSW5kZXgoKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG5hbWVz
LnNpemUoKSkpCiAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpOwogfQogCi1pbnQgQXV0b2Zp
bGxQb3B1cE1lbnVDbGllbnQ6OmNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgodW5zaWdu
ZWQgbGlzdEluZGV4KSBjb25zdAotewotICAgIGlmIChsaXN0SW5kZXggPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBp
ZiAobV9zZXBhcmF0b3JJbmRleCA9PSAtMSB8fCBsaXN0SW5kZXggPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIHJldHVybiBsaXN0SW5kZXg7Ci0gICAg
cmV0dXJuIGxpc3RJbmRleCAtIDE7Ci19Ci0KIFdlYlZpZXdJbXBsKiBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6Z2V0V2ViVmlldygpIGNvbnN0CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV90ZXh0
RmllbGQtPmRvY3VtZW50KCktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaAppbmRleCA3M2NjMTgwLi5mNTY1NmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBN
ZW51Q2xpZW50LmgKQEAgLTEwNiwyMCArMTA2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgICAgICAgICAgICAg
IGludCBzZXBhcmF0b3JJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3Rv
cjxpbnQ+JiBpdGVtSURzKTsKIAogICAgIHZvaWQgc2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
VmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVj
dG9yPGludD4mIGl0ZW1JRHMpOwogCiBwcml2YXRlOgotICAgIC8vIENvbnZlcnQgdGhlIHNwZWNp
ZmllZCBpbmRleCBmcm9tIGFuIGluZGV4IGludG8gdGhlIHZpc2libGUgbGlzdCAod2hpY2ggbWln
aHQKLSAgICAvLyBpbmNsdWRlIGEgc2VwYXJhdG9yIGVudHJ5KSB0byBhbiBpbmRleCB0byB8bV9u
YW1lc3wgYW5kIHxtX2xhYmVsc3wuCi0gICAgLy8gUmV0dXJucyAtMSBpZiB0aGUgZ2l2ZW4gaW5k
ZXggcG9pbnRzIHRvIHRoZSBzZXBhcmF0b3IuCi0gICAgaW50IGNvbnZlcnRMaXN0SW5kZXhUb0lu
dGVybmFsSW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAgIFdlYlZpZXdJbXBsKiBnZXRXZWJWaWV3
KCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogZ2V0VGV4dEZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RmllbGQuZ2V0KCk7IH0KICAgICBXZWJDb3JlOjpSZW5kZXJT
dHlsZSogdGV4dEZpZWxkU3R5bGUoKSBjb25zdDsKQEAgLTEzMywxMCArMTI3LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbmFtZXM7CiAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBtX2xhYmVsczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1faWNvbnM7Ci0gICAgVmVj
dG9yPGludD4gbV91bmlxdWVJRHM7Ci0KLSAgICAvLyBUaGUgaW5kZXggb2YgdGhlIHNlcGFyYXRv
ci4gIC0xIGlmIHRoZXJlIGlzIG5vIHNlcGFyYXRvci4KLSAgICBpbnQgbV9zZXBhcmF0b3JJbmRl
eDsKKyAgICBWZWN0b3I8aW50PiBtX2l0ZW1JRHM7CiAKICAgICAvLyBUaGUgaW5kZXggb2YgdGhl
IHNlbGVjdGVkIGl0ZW0uICAtMSBpZiB0aGVyZSBpcyBubyBzZWxlY3RlZCBpdGVtLgogICAgIGlu
dCBtX3NlbGVjdGVkSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKaW5kZXggYmNmNmQ4MS4uNDlmMzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjY3OSwxMiArMjY3OSwxMCBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMoCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0
cmluZz4mIG5hbWVzLAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAg
ICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgIGNvbnN0IFdlYlZlY3Rv
cjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgaW50IHNlcGFyYXRvckluZGV4KQorICAgIGNvbnN0IFdl
YlZlY3RvcjxpbnQ+JiBpdGVtSURzKQogewogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gbGFi
ZWxzLnNpemUoKSk7Ci0gICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSB1bmlxdWVJRHMuc2l6ZSgp
KTsKLSAgICBBU1NFUlQoc2VwYXJhdG9ySW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG5hbWVzLnNp
emUoKSkpOworICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaXRlbUlEcy5zaXplKCkpOwogCiAg
ICAgaWYgKG5hbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBoaWRlQXV0b2ZpbGxQb3B1cCgpOwpA
QCAtMjcwOSw3ICsyNzA3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvZmlsbFN1Z2dl
c3Rpb25zKAogICAgICAgICBtX2F1dG9maWxsUG9wdXBDbGllbnQgPSBhZG9wdFB0cihuZXcgQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQpOwogCiAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT5pbml0
aWFsaXplKAotICAgICAgICBpbnB1dEVsZW0sIG5hbWVzLCBsYWJlbHMsIGljb25zLCB1bmlxdWVJ
RHMsIHNlcGFyYXRvckluZGV4KTsKKyAgICAgICAgaW5wdXRFbGVtLCBuYW1lcywgbGFiZWxzLCBp
Y29ucywgaXRlbUlEcyk7CiAKICAgICBpZiAoIW1fYXV0b2ZpbGxQb3B1cCkgewogICAgICAgICBQ
b3B1cENvbnRhaW5lclNldHRpbmdzIHBvcHVwU2V0dGluZ3MgPSBhdXRvZmlsbFBvcHVwU2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA3MjAyYTQ3
Li45OGVmYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAg
LTI0Niw4ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJp
bmc+JiBuYW1lcywKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywK
ICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICBjb25z
dCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgp
OworICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcyk7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVQb3B1cHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyQ29sb3JzKHVu
c2lnbmVkIGluYWN0aXZlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhY3RpdmVDb2xvciwK
</data>
<flag name="review"
          id="141820"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137054</attachid>
            <date>2012-04-13 01:03:20 -0700</date>
            <delta_ts>2012-04-13 01:08:55 -0700</delta_ts>
            <desc>Added argument with default value so we don&apos;t break the build</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>20063</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmZjM2MxMy4uM2I1NzZhZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTItMDQtMTIgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIE1lbnVJdGVt
SUQgdG8gYXV0b2ZpbGwgcG9wdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzc3CisKKyAgICAgICAgSW50cm9kdWNpbmcgTWVudUl0ZW1JRHMgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBtdWx0aXBsZSBzZXBhcmF0b3JzIGFuZAorICAgICAgICBuZWVk
IHRvIGlkZW50aWZ5IG5vbi1hdXRvZmlsbCBtZW51IGl0ZW1zIHdpdGhvdXQgcmVzb3J0aW5nIHRv
IHRoZSBzZXBhcmF0b3IgcG9zaXRpb24uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b2ZpbGxDbGllbnQ6OmRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbik6
IENoYW5nZWQgdW5pcXVlSUQgdG8gaXRlbUlEIGJlY2F1c2UgdGhleSBhcmVuJ3QgdW5pcXVlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkU2VsZWN0QXV0b2ZpbGxTdWdn
ZXN0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6
CisgICAgICAgICogc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50KTog
UmVtb3ZlZCBtX3NlcGFyYXRvckluZGV4LgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnNDb3VudCk6IE5vIG5lZWQgdG8gYWNjb3VudCBmb3Ig
dGhlIHNlcGFyYXRvciBhbnltb3JlLgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6Z2V0U3VnZ2VzdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBN
ZW51Q2xpZW50OjpnZXRMYWJlbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51
Q2xpZW50OjpnZXRJY29uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGll
bnQ6OnJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OmNhblJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KToKKyAgICAgICAgKFdl
YktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZWxlY3Rpb25DaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1NlcGFyYXRvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjppdGVtSXNXYXJuaW5nKToK
KyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMp
OgorICAgICAgICAqIHNyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oOiBSZW1vdmVkIG1fc2Vw
YXJhdG9ySW5kZXggYmVjYXVzZSBub3cgd2UgdXNlIGl0ZW1JRCB0byBpZGVudGlmeSBzZXBhcmF0
b3JzLgorICAgICAgICAoQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseUF1dG9m
aWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOgorCisyMDEyLTA0LTEyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgdG8gYWNjZXNzIDxk
YXRhbGlzdD4gb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODM3NjIKKworICAgICAgICBJbnRyb2R1Y2UgV2ViSW5wdXRFbGVtZW50OjpkYXRh
TGlzdE9wdGlvbnMgc28gd2UgY2FuIGltcGxlbWVudCBhIFVJIGZvciBkYXRhbGlzdC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbnB1dEVsZW1l
bnQpOgorICAgICAgICAqIHNyYy9XZWJJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0T3B0aW9ucyk6IEFkZGVkLiBSZXR1cm5zIGEgV2Vi
Tm9kZUNvbGxlY3Rpb24gY29udGFpbmluZyBXZWJPcHRpb25FbGVtZW50cy4KKwogMjAxMi0wNC0x
MiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBNb3ZlIHNvbWUgY29kZSBvZiBXZWJWaWV3SW1wbCBhbmQgV2ViRnJhbWVJbXBsIHRvIFBhZ2VX
aWRnZXREZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQXV0b2ZpbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1
dG9maWxsQ2xpZW50LmgKaW5kZXggNTgyNGYxNy4uNzg0OGJmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oCkBAIC00MCwxNiArNDAs
MjYgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJBdXRvZmlsbENsaWVudCB7CiBwdWJs
aWM6CisgICAgZW51bSB7CisgICAgICAgIEF1dG9jb21wbGV0ZUVudHJ5TWVudUl0ZW1JRCA9IDAs
CisgICAgICAgIFdhcm5pbmdNZXNzYWdlTWVudUl0ZW1JRCA9IC0xLAorICAgICAgICBQYXNzd29y
ZEVudHJ5TWVudUl0ZW1JRCA9IC0yLAorICAgICAgICBTZXBhcmF0b3JNZW51SXRlbUlEID0gLTMs
CisgICAgICAgIENsZWFyRm9ybU1lbnVJdGVtSUQgPSAtNCwKKyAgICAgICAgQXV0b2ZpbGxPcHRp
b25zTWVudUl0ZW1JRCA9IC01LAorICAgICAgICBEYXRhTGlzdEVudHJ5TWVudUl0ZW1JRCA9IC02
CisgICAgfTsKKwogICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgdXNlciBoYXMg
YWNjZXB0ZWQgYW4gQXV0b2ZpbGwgc3VnZ2VzdGlvbiBmb3IKLSAgICAvLyBhIFdlYk5vZGUuICB8
dW5pcXVlSUR8IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgc2V0IG9mIEF1dG9maWxsIHByb2Zp
bGVzLAotICAgIC8vIGFuZCBzaG91bGQgbmV2ZXIgYmUgbmVnYXRpdmUuICBJZiBpdCBpcyAwLCB0
aGVuIHRoZSBzdWdnZXN0aW9uIGlzIGFuCi0gICAgLy8gQXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb247
IGFuZCB8dmFsdWV8IHN0b3JlcyB0aGUgc3VnZ2VzdGVkIHRleHQuICB8aW5kZXh8Ci0gICAgLy8g
aXMgYW4gaW5kZXggb2YgdGhlIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaW4gdGhlIGxpc3Qgb2Ygc3Vn
Z2VzdGlvbnMgcHJvdmlkZWQKLSAgICAvLyBieSB0aGUgY2xpZW50LgorICAgIC8vIGEgV2ViTm9k
ZS4gQSBwb3NpdGl2ZSB8aXRlbUlEfCBpcyBhIHVuaXF1ZSBpZCB1c2VkIHRvIGlkZW50aWZ5IHRo
ZSBzZXQKKyAgICAvLyBvZiBBdXRvZmlsbCBwcm9maWxlcy4gSWYgaXQgaXMgQXV0b2NvbXBsZXRl
RW50cnlNZW51SXRlbUlELCB0aGVuIHRoZQorICAgIC8vIHN1Z2dlc3Rpb24gaXMgYW4gQXV0b2Nv
bXBsZXRlIHN1Z2dlc3Rpb247IGFuZCB8dmFsdWV8IHN0b3JlcyB0aGUKKyAgICAvLyBzdWdnZXN0
ZWQgdGV4dC4gfGluZGV4fCBpcyBhbiBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgc3VnZ2VzdGlvbiBp
biB0aGUKKyAgICAvLyBsaXN0IG9mIHN1Z2dlc3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQu
CiAgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbihjb25zdCBXZWJO
b2RlJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGxhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHVuaXF1ZUlELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4KSB7IH0KIAogICAgIC8vIElu
Zm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgYW4gQXV0b2ZpbGwg
c3VnZ2VzdGlvbiBmb3IKQEAgLTU4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb24oY29uc3QgV2ViTm9kZSYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJT
dHJpbmcmIGxhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHVuaXF1ZUlEKSB7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVtSUQpIHsgfQogCiAgICAgLy8gSW5mb3JtcyB0aGUgYnJvd3NlciB0
aGF0IHRoZSB1c2VyIGhhcyBjbGVhcmVkIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUKICAgICAvLyBB
dXRvZmlsbCBzdWdnZXN0aW9ucyBwb3B1cC4gVGhpcyBoYXBwZW5zIHdoZW4gYSB1c2VyIHVzZXMg
dGhlIGFycm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
bnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RWxl
bWVudC5oCmluZGV4IDNkMWZmYjYuLjQ4ZTg2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklucHV0RWxlbWVudC5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgSFRNTElucHV0RWxlbWVudDsgfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorICAgIGNsYXNzIFdlYk5vZGVDb2xsZWN0aW9uOworCiAgICAgLy8gUHJvdmlkZXMgcmVh
ZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVydGllcyBvZiBhIERPTSBpbnB1dCBlbGVtZW50IG5v
ZGUuCiAgICAgY2xhc3MgV2ViSW5wdXRFbGVtZW50IDogcHVibGljIFdlYkZvcm1Db250cm9sRWxl
bWVudCB7CiAgICAgcHVibGljOgpAQCAtODQsNiArODYsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBXZWJTdHJpbmcm
KSBjb25zdDsKICAgICAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0Owog
CisgICAgICAgIFdFQktJVF9FWFBPUlQgV2ViTm9kZUNvbGxlY3Rpb24gZGF0YUxpc3RPcHRpb25z
KCkgY29uc3Q7CisKICAgICAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzU3BlZWNoSW5wdXRFbmFi
bGVkKCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9FWFBPUlQgU3BlZWNoSW5wdXRTdGF0ZSBnZXRT
cGVlY2hJbnB1dFN0YXRlKCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzdGFy
dFNwZWVjaElucHV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJOb2RlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Tm9kZUNvbGxlY3Rpb24uaAppbmRleCA5NzA3ZTE3Li5iMTY4YjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgKQEAgLTU0LDYgKzU0
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9CisKICAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVzZXQoKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk5v
ZGVDb2xsZWN0aW9uJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApp
bmRleCAxZGZhM2E2Li4yZWQ2OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oCkBAIC0zNjEsOCArMzYxLDggQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+
JiBsYWJlbHMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgaW50IHNlcGFy
YXRvckluZGV4KSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAor
ICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXggPSAtMSkgPSAwOwogCiAgICAgLy8gSGlkZXMgYW55
IHBvcHVwIChzdWdnZXN0aW9ucywgc2VsZWN0cy4uLikgdGhhdCBtaWdodCBiZSBzaG93aW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCmluZGV4IGM4NGVh
MTIuLmZiNGZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9m
aWxsUG9wdXBNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
dXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKQEAgLTUyLDggKzUyLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQXV0b2ZpbGxQb3B1cE1lbnVDbGll
bnQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50KCkKLSAgICA6IG1fc2VwYXJhdG9ySW5kZXgoLTEp
Ci0gICAgLCBtX3NlbGVjdGVkSW5kZXgoLTEpCisgICAgOiBtX3NlbGVjdGVkSW5kZXgoLTEpCiAg
ICAgLCBtX3RleHRGaWVsZCgwKQogewogfQpAQCAtNjQsMzcgKzYzLDI1IEBAIEF1dG9maWxsUG9w
dXBNZW51Q2xpZW50Ojp+QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQoKQogCiB1bnNpZ25lZCBBdXRv
ZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnNDb3VudCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fbmFtZXMuc2l6ZSgpICsgKChtX3NlcGFyYXRvckluZGV4ID09IC0xKSA/IDAgOiAx
KTsKKyAgICByZXR1cm4gbV9uYW1lcy5zaXplKCk7CiB9CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7
Ci0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5k
ZXgpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwot
Ci0gICAgQVNTRVJUKGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBt
X25hbWVzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1fbmFtZXNbaW5kZXhdOworICAgIEFTU0VSVChs
aXN0SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CisgICAgcmV0dXJuIG1fbmFtZXNbbGlzdEluZGV4
XTsKIH0KIAogV2ViU3RyaW5nIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRMYWJlbCh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRl
eFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAg
ICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgQVNTRVJUKGluZGV4ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtX2xhYmVscy5zaXplKCkpOwotICAgIHJldHVybiBtX2xh
YmVsc1tpbmRleF07CisgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbGFiZWxzLnNpemUoKSk7Cisg
ICAgcmV0dXJuIG1fbGFiZWxzW2xpc3RJbmRleF07CiB9CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6Z2V0SWNvbih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAg
aW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwot
ICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAg
QVNTRVJUKGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtX2ljb25z
LnNpemUoKSk7Ci0gICAgcmV0dXJuIG1faWNvbnNbaW5kZXhdOworICAgIEFTU0VSVChsaXN0SW5k
ZXggPCBtX2ljb25zLnNpemUoKSk7CisgICAgcmV0dXJuIG1faWNvbnNbbGlzdEluZGV4XTsKIH0K
IAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgo
dW5zaWduZWQgbGlzdEluZGV4KQpAQCAtMTAyLDI2ICs4OSwxNyBAQCB2b2lkIEF1dG9maWxsUG9w
dXBNZW51Q2xpZW50OjpyZW1vdmVTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgp
CiAgICAgaWYgKCFjYW5SZW1vdmVTdWdnZXN0aW9uQXRJbmRleChsaXN0SW5kZXgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbElu
ZGV4KGxpc3RJbmRleCk7Ci0KLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSA8IG1fbmFtZXMuc2l6ZSgpKTsKLQotICAgIG1fbmFtZXMucmVtb3ZlKGluZGV4KTsKLSAgICBt
X2xhYmVscy5yZW1vdmUoaW5kZXgpOwotICAgIG1faWNvbnMucmVtb3ZlKGluZGV4KTsKLSAgICBt
X3VuaXF1ZUlEcy5yZW1vdmUoaW5kZXgpOworICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX25hbWVz
LnNpemUoKSk7CiAKLSAgICAvLyBTaGlmdCB0aGUgc2VwYXJhdG9yIGluZGV4IGlmIG5lY2Vzc2Fy
eS4KLSAgICBpZiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSkKLSAgICAgICAgbV9zZXBhcmF0b3JJ
bmRleC0tOworICAgIG1fbmFtZXMucmVtb3ZlKGxpc3RJbmRleCk7CisgICAgbV9sYWJlbHMucmVt
b3ZlKGxpc3RJbmRleCk7CisgICAgbV9pY29ucy5yZW1vdmUobGlzdEluZGV4KTsKKyAgICBtX2l0
ZW1JRHMucmVtb3ZlKGxpc3RJbmRleCk7CiB9CiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1lbnVDbGll
bnQ6OmNhblJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KHVuc2lnbmVkIGxpc3RJbmRleCkKIHsKLSAg
ICAvLyBPbmx5IGFsbG93IGRlbGV0aW9uIG9mIGl0ZW1zIGJlZm9yZSB0aGUgc2VwYXJhdG9yIHRo
YXQgaGF2ZSB1bmlxdWUgaWQgMAotICAgIC8vIChpLmUuIGFyZSBhdXRvY29tcGxldGUgcmF0aGVy
IHRoYW4gYXV0b2ZpbGwgaXRlbXMpLgotICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhU
b0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICByZXR1cm4gIW1fdW5pcXVlSURzW2luZGV4
XSAmJiAobV9zZXBhcmF0b3JJbmRleCA9PSAtMSB8fCBsaXN0SW5kZXggPCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkpOworICAgIHJldHVybiBtX2l0ZW1JRHNbbGlzdElu
ZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVudDo6QXV0b2NvbXBsZXRlRW50cnlNZW51SXRlbUlEIHx8
IG1faXRlbUlEc1tsaXN0SW5kZXhdID09IFdlYkF1dG9maWxsQ2xpZW50OjpQYXNzd29yZEVudHJ5
TWVudUl0ZW1JRDsKIH0KIAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6dmFsdWVDaGFu
Z2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzKQpAQCAtMTMwLDE1ICsxMDgs
MTIgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVk
IGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzKQogICAgIGlmICghd2ViVmlldykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggIT0gLTEgJiYgbGlzdEluZGV4ID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICAtLWxpc3RJ
bmRleDsKLQogICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CiAKICAgICB3
ZWJWaWV3LT5hdXRvZmlsbENsaWVudCgpLT5kaWRBY2NlcHRBdXRvZmlsbFN1Z2dlc3Rpb24oV2Vi
Tm9kZShnZXRUZXh0RmllbGQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbmFtZXNbbGlzdEluZGV4XSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYWJlbHNb
bGlzdEluZGV4XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV91bmlxdWVJRHNbbGlzdEluZGV4XSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pdGVtSURzW2xpc3RJ
bmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3RJbmRleCk7CiB9CiAKQEAgLTE0OCwxNSArMTIzLDEyIEBAIHZvaWQgQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4
LCBib29sIGZpcmVFdmVuCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSAmJiBsaXN0SW5kZXggPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIC0tbGlzdEluZGV4OwotCiAgICAg
QVNTRVJUKGxpc3RJbmRleCA8IG1fbmFtZXMuc2l6ZSgpKTsKIAogICAgIHdlYlZpZXctPmF1dG9m
aWxsQ2xpZW50KCktPmRpZFNlbGVjdEF1dG9maWxsU3VnZ2VzdGlvbihXZWJOb2RlKGdldFRleHRG
aWVsZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9uYW1lc1tsaXN0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhYmVsc1tsaXN0SW5kZXhdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VuaXF1ZUlEc1tsaXN0SW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pdGVtSURzW2xpc3RJbmRleF0pOwogfQog
CiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZWxlY3Rpb25DbGVhcmVkKCkKQEAgLTIy
OCwxNyArMjAwLDEyIEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnBvcHVwRGlkSGlk
ZSgpCiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1NlcGFyYXRvcih1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3NlcGFyYXRvckluZGV4ICE9
IC0xICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSA9PSBsaXN0SW5k
ZXgpOworICAgIHJldHVybiBtX2l0ZW1JRHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVu
dDo6U2VwYXJhdG9yTWVudUl0ZW1JRDsKIH0KIAogYm9vbCBBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6aXRlbUlzV2FybmluZyh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgaW50IGlu
ZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIGlm
IChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKGluZGV4
ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtX3VuaXF1ZUlEcy5zaXplKCkp
OwotICAgIHJldHVybiBtX3VuaXF1ZUlEc1tpbmRleF0gPCAwOworICAgIHJldHVybiBtX2l0ZW1J
RHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVudDo6V2FybmluZ01lc3NhZ2VNZW51SXRl
bUlEOwogfQogCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRUZXh0RnJvbUl0ZW0o
dW5zaWduZWQgbGlzdEluZGV4KQpAQCAtMjY5LDIwICsyMzYsMTggQEAgdm9pZCBBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5n
PiYgbmFtZXMsCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgY29uc3QgV2ViVmVjdG9yPGlu
dD4mIHVuaXF1ZUlEcywKLSAgICBpbnQgc2VwYXJhdG9ySW5kZXgpCisgICAgY29uc3QgV2ViVmVj
dG9yPGludD4mIGl0ZW1JRHMpCiB7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMu
c2l6ZSgpKTsKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGljb25zLnNpemUoKSk7Ci0gICAg
QVNTRVJUKG5hbWVzLnNpemUoKSA9PSB1bmlxdWVJRHMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoc2Vw
YXJhdG9ySW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG5hbWVzLnNpemUoKSkpOworICAgIEFTU0VS
VChuYW1lcy5zaXplKCkgPT0gaXRlbUlEcy5zaXplKCkpOwogCiAgICAgbV9zZWxlY3RlZEluZGV4
ID0gLTE7CiAgICAgbV90ZXh0RmllbGQgPSB0ZXh0RmllbGQ7CiAKICAgICAvLyBUaGUgc3VnZ2Vz
dGlvbnMgbXVzdCBiZSBzZXQgYmVmb3JlIGluaXRpYWxpemluZyB0aGUKICAgICAvLyBBdXRvZmls
bFBvcHVwTWVudUNsaWVudC4KLSAgICBzZXRTdWdnZXN0aW9ucyhuYW1lcywgbGFiZWxzLCBpY29u
cywgdW5pcXVlSURzLCBzZXBhcmF0b3JJbmRleCk7CisgICAgc2V0U3VnZ2VzdGlvbnMobmFtZXMs
IGxhYmVscywgaWNvbnMsIGl0ZW1JRHMpOwogCiAgICAgRm9udERlc2NyaXB0aW9uIHJlZ3VsYXJG
b250RGVzY3JpcHRpb247CiAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1G
b250KENTU1ZhbHVlV2Via2l0Q29udHJvbCwKQEAgLTMxMyw0MiArMjc4LDI4IEBAIHZvaWQgQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUoCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51
Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyhjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGlu
dD4mIHVuaXF1ZUlEcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzZXBhcmF0b3JJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzKQogewogICAgIEFTU0VS
VChuYW1lcy5zaXplKCkgPT0gbGFiZWxzLnNpemUoKSk7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUo
KSA9PSBpY29ucy5zaXplKCkpOwotICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gdW5pcXVlSURz
LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNlcGFyYXRvckluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pihu
YW1lcy5zaXplKCkpKTsKKyAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGl0ZW1JRHMuc2l6ZSgp
KTsKIAogICAgIG1fbmFtZXMuY2xlYXIoKTsKICAgICBtX2xhYmVscy5jbGVhcigpOwogICAgIG1f
aWNvbnMuY2xlYXIoKTsKLSAgICBtX3VuaXF1ZUlEcy5jbGVhcigpOworICAgIG1faXRlbUlEcy5j
bGVhcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgbV9uYW1lcy5hcHBlbmQobmFtZXNbaV0pOwogICAgICAgICBtX2xhYmVscy5hcHBl
bmQobGFiZWxzW2ldKTsKICAgICAgICAgbV9pY29ucy5hcHBlbmQoaWNvbnNbaV0pOwotICAgICAg
ICBtX3VuaXF1ZUlEcy5hcHBlbmQodW5pcXVlSURzW2ldKTsKKyAgICAgICAgbV9pdGVtSURzLmFw
cGVuZChpdGVtSURzW2ldKTsKICAgICB9CiAKLSAgICBtX3NlcGFyYXRvckluZGV4ID0gc2VwYXJh
dG9ySW5kZXg7Ci0KICAgICAvLyBUcnkgdG8gcHJlc2VydmUgc2VsZWN0aW9uIGlmIHBvc3NpYmxl
LgogICAgIGlmIChnZXRTZWxlY3RlZEluZGV4KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihuYW1lcy5z
aXplKCkpKQogICAgICAgICBzZXRTZWxlY3RlZEluZGV4KC0xKTsKIH0KIAotaW50IEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50Ojpjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3QKLXsKLSAgICBpZiAobGlzdEluZGV4ID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYg
KG1fc2VwYXJhdG9ySW5kZXggPT0gLTEgfHwgbGlzdEluZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICByZXR1cm4gbGlzdEluZGV4OwotICAgIHJl
dHVybiBsaXN0SW5kZXggLSAxOwotfQotCiBXZWJWaWV3SW1wbCogQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQ6OmdldFdlYlZpZXcoKSBjb25zdAogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fdGV4dEZp
ZWxkLT5kb2N1bWVudCgpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgKaW5kZXggNzNjYzE4MC4uZjU2NTZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVu
dUNsaWVudC5oCkBAIC0xMDYsMjAgKzEwNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAgICAgICAgICAgICAgICBp
bnQgc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8
aW50PiYgaXRlbUlEcyk7CiAKICAgICB2b2lkIHNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3Rv
cjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3Rv
cjxpbnQ+JiBpdGVtSURzKTsKIAogcHJpdmF0ZToKLSAgICAvLyBDb252ZXJ0IHRoZSBzcGVjaWZp
ZWQgaW5kZXggZnJvbSBhbiBpbmRleCBpbnRvIHRoZSB2aXNpYmxlIGxpc3QgKHdoaWNoIG1pZ2h0
Ci0gICAgLy8gaW5jbHVkZSBhIHNlcGFyYXRvciBlbnRyeSkgdG8gYW4gaW5kZXggdG8gfG1fbmFt
ZXN8IGFuZCB8bV9sYWJlbHN8LgotICAgIC8vIFJldHVybnMgLTEgaWYgdGhlIGdpdmVuIGluZGV4
IHBvaW50cyB0byB0aGUgc2VwYXJhdG9yLgotICAgIGludCBjb252ZXJ0TGlzdEluZGV4VG9JbnRl
cm5hbEluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICBXZWJWaWV3SW1wbCogZ2V0V2ViVmlldygp
IGNvbnN0OwogICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqIGdldFRleHRGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dEZpZWxkLmdldCgpOyB9CiAgICAgV2ViQ29yZTo6UmVuZGVyU3R5
bGUqIHRleHRGaWVsZFN0eWxlKCkgY29uc3Q7CkBAIC0xMzMsMTAgKzEyNyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX25hbWVzOwogICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gbV9sYWJlbHM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2ljb25zOwotICAgIFZlY3Rv
cjxpbnQ+IG1fdW5pcXVlSURzOwotCi0gICAgLy8gVGhlIGluZGV4IG9mIHRoZSBzZXBhcmF0b3Iu
ICAtMSBpZiB0aGVyZSBpcyBubyBzZXBhcmF0b3IuCi0gICAgaW50IG1fc2VwYXJhdG9ySW5kZXg7
CisgICAgVmVjdG9yPGludD4gbV9pdGVtSURzOwogCiAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBz
ZWxlY3RlZCBpdGVtLiAgLTEgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWQgaXRlbS4KICAgICBpbnQg
bV9zZWxlY3RlZEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0
RWxlbWVudC5jcHAKaW5kZXggZjVkNTJkYS4uNDg2ZWZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbnB1dEVsZW1lbnQuY3BwCkBAIC0zMSw5ICszMSwxMSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogCisjaW5jbHVk
ZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCIKKyNpbmNsdWRlICJXZWJOb2RlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTE1MSw2ICsx
NTMsMTYgQEAgYm9vbCBXZWJJbnB1dEVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1lbnQ+KCktPmNoZWNrZWQoKTsKIH0KIAorV2Vi
Tm9kZUNvbGxlY3Rpb24gV2ViSW5wdXRFbGVtZW50OjpkYXRhTGlzdE9wdGlvbnMoKSBjb25zdAor
eworI2lmIEVOQUJMRShEQVRBTElTVCkKKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlz
dCA9IHN0YXRpY19jYXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQqPihjb25zdFVud3JhcDxIVE1MSW5w
dXRFbGVtZW50PigpLT5saXN0KCkpOworICAgIGlmIChkYXRhTGlzdCkKKyAgICAgICAgcmV0dXJu
IFdlYk5vZGVDb2xsZWN0aW9uKGRhdGFMaXN0LT5vcHRpb25zKCkpOworI2VuZGlmCisgICAgcmV0
dXJuIFdlYk5vZGVDb2xsZWN0aW9uKCk7Cit9CisKIGJvb2wgV2ViSW5wdXRFbGVtZW50Ojppc1Nw
ZWVjaElucHV0RW5hYmxlZCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiY2Y2ZDgxLi5k
ODVjNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC0yNjc5LDEyICsyNjc5LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b2ZpbGxTdWdn
ZXN0aW9ucygKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICBjb25zdCBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiYgaWNvbnMsCi0gICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKKyAg
ICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKICAgICBpbnQgc2VwYXJhdG9ySW5kZXgp
CiB7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMuc2l6ZSgpKTsKLSAgICBBU1NF
UlQobmFtZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkpOwotICAgIEFTU0VSVChzZXBhcmF0
b3JJbmRleCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSk7CisgICAgQVNTRVJUKG5h
bWVzLnNpemUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAKICAgICBpZiAobmFtZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGhpZGVBdXRvZmlsbFBvcHVwKCk7CkBAIC0yNzA5LDcgKzI3MDgsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMoCiAgICAgICAgIG1fYXV0
b2ZpbGxQb3B1cENsaWVudCA9IGFkb3B0UHRyKG5ldyBBdXRvZmlsbFBvcHVwTWVudUNsaWVudCk7
CiAKICAgICBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmluaXRpYWxpemUoCi0gICAgICAgIGlucHV0
RWxlbSwgbmFtZXMsIGxhYmVscywgaWNvbnMsIHVuaXF1ZUlEcywgc2VwYXJhdG9ySW5kZXgpOwor
ICAgICAgICBpbnB1dEVsZW0sIG5hbWVzLCBsYWJlbHMsIGljb25zLCBpdGVtSURzKTsKIAogICAg
IGlmICghbV9hdXRvZmlsbFBvcHVwKSB7CiAgICAgICAgIFBvcHVwQ29udGFpbmVyU2V0dGluZ3Mg
cG9wdXBTZXR0aW5ncyA9IGF1dG9maWxsUG9wdXBTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDcyMDJhNDcuLjVkNDhjYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICBjb25zdCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlx
dWVJRHMsCisgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAgICBp
bnQgc2VwYXJhdG9ySW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBzKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137056</attachid>
            <date>2012-04-13 01:08:55 -0700</date>
            <delta_ts>2012-04-13 06:30:33 -0700</delta_ts>
            <desc>Fixed mistake</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>17114</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZTcwZWNkZS4uM2I1NzZhZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDEgQEAKIDIwMTItMDQtMTIgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSW50cm9kdWNlIE1lbnVJdGVt
SUQgdG8gYXV0b2ZpbGwgcG9wdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzc3CisKKyAgICAgICAgSW50cm9kdWNpbmcgTWVudUl0ZW1JRHMgYmVj
YXVzZSB3ZSB3YW50IHRvIGFkZCBtdWx0aXBsZSBzZXBhcmF0b3JzIGFuZAorICAgICAgICBuZWVk
IHRvIGlkZW50aWZ5IG5vbi1hdXRvZmlsbCBtZW51IGl0ZW1zIHdpdGhvdXQgcmVzb3J0aW5nIHRv
IHRoZSBzZXBhcmF0b3IgcG9zaXRpb24uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b2ZpbGxDbGllbnQ6OmRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbik6
IENoYW5nZWQgdW5pcXVlSUQgdG8gaXRlbUlEIGJlY2F1c2UgdGhleSBhcmVuJ3QgdW5pcXVlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkU2VsZWN0QXV0b2ZpbGxTdWdn
ZXN0aW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6
CisgICAgICAgICogc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50KTog
UmVtb3ZlZCBtX3NlcGFyYXRvckluZGV4LgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnNDb3VudCk6IE5vIG5lZWQgdG8gYWNjb3VudCBmb3Ig
dGhlIHNlcGFyYXRvciBhbnltb3JlLgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6Z2V0U3VnZ2VzdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBN
ZW51Q2xpZW50OjpnZXRMYWJlbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51
Q2xpZW50OjpnZXRJY29uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGll
bnQ6OnJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OmNhblJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KToKKyAgICAgICAgKFdl
YktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZWxlY3Rpb25DaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1NlcGFyYXRvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjppdGVtSXNXYXJuaW5nKToK
KyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMp
OgorICAgICAgICAqIHNyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oOiBSZW1vdmVkIG1fc2Vw
YXJhdG9ySW5kZXggYmVjYXVzZSBub3cgd2UgdXNlIGl0ZW1JRCB0byBpZGVudGlmeSBzZXBhcmF0
b3JzLgorICAgICAgICAoQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseUF1dG9m
aWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOgorCisyMDEyLTA0LTEyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgdG8gYWNjZXNzIDxk
YXRhbGlzdD4gb3B0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODM3NjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQXV0b2ZpbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkF1dG9maWxsQ2xpZW50LmgKaW5kZXggNTgyNGYxNy4uNzg0OGJmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oCkBAIC00MCwxNiAr
NDAsMjYgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJBdXRvZmlsbENsaWVudCB7CiBw
dWJsaWM6CisgICAgZW51bSB7CisgICAgICAgIEF1dG9jb21wbGV0ZUVudHJ5TWVudUl0ZW1JRCA9
IDAsCisgICAgICAgIFdhcm5pbmdNZXNzYWdlTWVudUl0ZW1JRCA9IC0xLAorICAgICAgICBQYXNz
d29yZEVudHJ5TWVudUl0ZW1JRCA9IC0yLAorICAgICAgICBTZXBhcmF0b3JNZW51SXRlbUlEID0g
LTMsCisgICAgICAgIENsZWFyRm9ybU1lbnVJdGVtSUQgPSAtNCwKKyAgICAgICAgQXV0b2ZpbGxP
cHRpb25zTWVudUl0ZW1JRCA9IC01LAorICAgICAgICBEYXRhTGlzdEVudHJ5TWVudUl0ZW1JRCA9
IC02CisgICAgfTsKKwogICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgdXNlciBo
YXMgYWNjZXB0ZWQgYW4gQXV0b2ZpbGwgc3VnZ2VzdGlvbiBmb3IKLSAgICAvLyBhIFdlYk5vZGUu
ICB8dW5pcXVlSUR8IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgc2V0IG9mIEF1dG9maWxsIHBy
b2ZpbGVzLAotICAgIC8vIGFuZCBzaG91bGQgbmV2ZXIgYmUgbmVnYXRpdmUuICBJZiBpdCBpcyAw
LCB0aGVuIHRoZSBzdWdnZXN0aW9uIGlzIGFuCi0gICAgLy8gQXV0b2NvbXBsZXRlIHN1Z2dlc3Rp
b247IGFuZCB8dmFsdWV8IHN0b3JlcyB0aGUgc3VnZ2VzdGVkIHRleHQuICB8aW5kZXh8Ci0gICAg
Ly8gaXMgYW4gaW5kZXggb2YgdGhlIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaW4gdGhlIGxpc3Qgb2Yg
c3VnZ2VzdGlvbnMgcHJvdmlkZWQKLSAgICAvLyBieSB0aGUgY2xpZW50LgorICAgIC8vIGEgV2Vi
Tm9kZS4gQSBwb3NpdGl2ZSB8aXRlbUlEfCBpcyBhIHVuaXF1ZSBpZCB1c2VkIHRvIGlkZW50aWZ5
IHRoZSBzZXQKKyAgICAvLyBvZiBBdXRvZmlsbCBwcm9maWxlcy4gSWYgaXQgaXMgQXV0b2NvbXBs
ZXRlRW50cnlNZW51SXRlbUlELCB0aGVuIHRoZQorICAgIC8vIHN1Z2dlc3Rpb24gaXMgYW4gQXV0
b2NvbXBsZXRlIHN1Z2dlc3Rpb247IGFuZCB8dmFsdWV8IHN0b3JlcyB0aGUKKyAgICAvLyBzdWdn
ZXN0ZWQgdGV4dC4gfGluZGV4fCBpcyBhbiBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgc3VnZ2VzdGlv
biBpbiB0aGUKKyAgICAvLyBsaXN0IG9mIHN1Z2dlc3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBjbGll
bnQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbihjb25zdCBX
ZWJOb2RlJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGxhYmVsLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVuaXF1ZUlELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZW1JRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4KSB7IH0KIAogICAgIC8v
IEluZm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgYW4gQXV0b2Zp
bGwgc3VnZ2VzdGlvbiBmb3IKQEAgLTU4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb24oY29uc3QgV2ViTm9kZSYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGxhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHVuaXF1ZUlEKSB7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpdGVtSUQpIHsgfQogCiAgICAgLy8gSW5mb3JtcyB0aGUgYnJvd3Nl
ciB0aGF0IHRoZSB1c2VyIGhhcyBjbGVhcmVkIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUKICAgICAv
LyBBdXRvZmlsbCBzdWdnZXN0aW9ucyBwb3B1cC4gVGhpcyBoYXBwZW5zIHdoZW4gYSB1c2VyIHVz
ZXMgdGhlIGFycm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXgg
MWRmYTNhNi4uMmVkNjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aApAQCAtMzYxLDggKzM2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdl
YlN0cmluZz4mIG5hbWVzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFi
ZWxzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAg
IGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgIGludCBzZXBhcmF0b3JJ
bmRleCkgPSAwOworICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKKyAgICAg
ICAgaW50IHNlcGFyYXRvckluZGV4ID0gLTEpID0gMDsKIAogICAgIC8vIEhpZGVzIGFueSBwb3B1
cCAoc3VnZ2VzdGlvbnMsIHNlbGVjdHMuLi4pIHRoYXQgbWlnaHQgYmUgc2hvd2luZy4KICAgICB2
aXJ0dWFsIHZvaWQgaGlkZVBvcHVwcygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcAppbmRleCBjODRlYTEyLi5m
YjRmYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBv
cHVwTWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2Zp
bGxQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC01Miw4ICs1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpB
dXRvZmlsbFBvcHVwTWVudUNsaWVudCgpCi0gICAgOiBtX3NlcGFyYXRvckluZGV4KC0xKQotICAg
ICwgbV9zZWxlY3RlZEluZGV4KC0xKQorICAgIDogbV9zZWxlY3RlZEluZGV4KC0xKQogICAgICwg
bV90ZXh0RmllbGQoMCkKIHsKIH0KQEAgLTY0LDM3ICs2MywyNSBAQCBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6fkF1dG9maWxsUG9wdXBNZW51Q2xpZW50KCkKIAogdW5zaWduZWQgQXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OmdldFN1Z2dlc3Rpb25zQ291bnQoKSBjb25zdAogewotICAgIHJldHVy
biBtX25hbWVzLnNpemUoKSArICgobV9zZXBhcmF0b3JJbmRleCA9PSAtMSkgPyAwIDogMSk7Cisg
ICAgcmV0dXJuIG1fbmFtZXMuc2l6ZSgpOwogfQogCiBXZWJTdHJpbmcgQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmdldFN1Z2dlc3Rpb24odW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewotICAg
IGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsK
LSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLQotICAg
IEFTU0VSVChpbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbV9uYW1l
cy5zaXplKCkpOwotICAgIHJldHVybiBtX25hbWVzW2luZGV4XTsKKyAgICBBU1NFUlQobGlzdElu
ZGV4IDwgbV9uYW1lcy5zaXplKCkpOworICAgIHJldHVybiBtX25hbWVzW2xpc3RJbmRleF07CiB9
CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0TGFiZWwodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0lu
dGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJl
dHVybiBXZWJTdHJpbmcoKTsKLQotICAgIEFTU0VSVChpbmRleCA+PSAwICYmIHN0YXRpY19jYXN0
PHNpemVfdD4oaW5kZXgpIDwgbV9sYWJlbHMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbV9sYWJlbHNb
aW5kZXhdOworICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX2xhYmVscy5zaXplKCkpOworICAgIHJl
dHVybiBtX2xhYmVsc1tsaXN0SW5kZXhdOwogfQogCiBXZWJTdHJpbmcgQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmdldEljb24odW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBp
bmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBp
ZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLQotICAgIEFTU0VS
VChpbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbV9pY29ucy5zaXpl
KCkpOwotICAgIHJldHVybiBtX2ljb25zW2luZGV4XTsKKyAgICBBU1NFUlQobGlzdEluZGV4IDwg
bV9pY29ucy5zaXplKCkpOworICAgIHJldHVybiBtX2ljb25zW2xpc3RJbmRleF07CiB9CiAKIHZv
aWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnJlbW92ZVN1Z2dlc3Rpb25BdEluZGV4KHVuc2ln
bmVkIGxpc3RJbmRleCkKQEAgLTEwMiwyNiArODksMTcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgodW5zaWduZWQgbGlzdEluZGV4KQogICAg
IGlmICghY2FuUmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgobGlzdEluZGV4KSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChs
aXN0SW5kZXgpOwotCi0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPCBt
X25hbWVzLnNpemUoKSk7Ci0KLSAgICBtX25hbWVzLnJlbW92ZShpbmRleCk7Ci0gICAgbV9sYWJl
bHMucmVtb3ZlKGluZGV4KTsKLSAgICBtX2ljb25zLnJlbW92ZShpbmRleCk7Ci0gICAgbV91bmlx
dWVJRHMucmVtb3ZlKGluZGV4KTsKKyAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9uYW1lcy5zaXpl
KCkpOwogCi0gICAgLy8gU2hpZnQgdGhlIHNlcGFyYXRvciBpbmRleCBpZiBuZWNlc3NhcnkuCi0g
ICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggIT0gLTEpCi0gICAgICAgIG1fc2VwYXJhdG9ySW5kZXgt
LTsKKyAgICBtX25hbWVzLnJlbW92ZShsaXN0SW5kZXgpOworICAgIG1fbGFiZWxzLnJlbW92ZShs
aXN0SW5kZXgpOworICAgIG1faWNvbnMucmVtb3ZlKGxpc3RJbmRleCk7CisgICAgbV9pdGVtSURz
LnJlbW92ZShsaXN0SW5kZXgpOwogfQogCiBib29sIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpj
YW5SZW1vdmVTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7Ci0gICAgLy8g
T25seSBhbGxvdyBkZWxldGlvbiBvZiBpdGVtcyBiZWZvcmUgdGhlIHNlcGFyYXRvciB0aGF0IGhh
dmUgdW5pcXVlIGlkIDAKLSAgICAvLyAoaS5lLiBhcmUgYXV0b2NvbXBsZXRlIHJhdGhlciB0aGFu
IGF1dG9maWxsIGl0ZW1zKS4KLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRl
cm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgcmV0dXJuICFtX3VuaXF1ZUlEc1tpbmRleF0gJiYg
KG1fc2VwYXJhdG9ySW5kZXggPT0gLTEgfHwgbGlzdEluZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKTsKKyAgICByZXR1cm4gbV9pdGVtSURzW2xpc3RJbmRleF0g
PT0gV2ViQXV0b2ZpbGxDbGllbnQ6OkF1dG9jb21wbGV0ZUVudHJ5TWVudUl0ZW1JRCB8fCBtX2l0
ZW1JRHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVudDo6UGFzc3dvcmRFbnRyeU1lbnVJ
dGVtSUQ7CiB9CiAKIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCh1
bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cykKQEAgLTEzMCwxNSArMTA4LDEyIEBA
IHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0
SW5kZXgsIGJvb2wgZmlyZUV2ZW50cykKICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX3NlcGFyYXRvckluZGV4ICE9IC0xICYmIGxpc3RJbmRleCA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgLS1saXN0SW5kZXg7
Ci0KICAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9uYW1lcy5zaXplKCkpOwogCiAgICAgd2ViVmll
dy0+YXV0b2ZpbGxDbGllbnQoKS0+ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKFdlYk5vZGUo
Z2V0VGV4dEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX25hbWVzW2xpc3RJbmRleF0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFiZWxzW2xpc3RJ
bmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdW5pcXVlSURzW2xpc3RJbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faXRlbUlEc1tsaXN0SW5kZXhd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaXN0SW5kZXgpOwogfQogCkBAIC0xNDgsMTUgKzEyMywxMiBAQCB2b2lkIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50OjpzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9v
bCBmaXJlRXZlbgogICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1fc2VwYXJhdG9ySW5kZXggIT0gLTEgJiYgbGlzdEluZGV4ID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICAtLWxpc3RJbmRleDsKLQogICAgIEFTU0VS
VChsaXN0SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CiAKICAgICB3ZWJWaWV3LT5hdXRvZmlsbENs
aWVudCgpLT5kaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb24oV2ViTm9kZShnZXRUZXh0RmllbGQo
KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbmFtZXNbbGlzdEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYWJlbHNbbGlzdEluZGV4XSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91
bmlxdWVJRHNbbGlzdEluZGV4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faXRlbUlEc1tsaXN0SW5kZXhdKTsKIH0KIAogdm9p
ZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2VsZWN0aW9uQ2xlYXJlZCgpCkBAIC0yMjgsMTcg
KzIwMCwxMiBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpwb3B1cERpZEhpZGUoKQog
CiBib29sIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjppdGVtSXNTZXBhcmF0b3IodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdAogewotICAgIHJldHVybiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSAm
JiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkgPT0gbGlzdEluZGV4KTsK
KyAgICByZXR1cm4gbV9pdGVtSURzW2xpc3RJbmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6OlNl
cGFyYXRvck1lbnVJdGVtSUQ7CiB9CiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0
ZW1Jc1dhcm5pbmcodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBpbmRleCA9
IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBpZiAoaW5k
ZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChpbmRleCA+PSAw
ICYmIHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbV91bmlxdWVJRHMuc2l6ZSgpKTsKLSAg
ICByZXR1cm4gbV91bmlxdWVJRHNbaW5kZXhdIDwgMDsKKyAgICByZXR1cm4gbV9pdGVtSURzW2xp
c3RJbmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Oldhcm5pbmdNZXNzYWdlTWVudUl0ZW1JRDsK
IH0KIAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0VGV4dEZyb21JdGVtKHVuc2ln
bmVkIGxpc3RJbmRleCkKQEAgLTI2OSwyMCArMjM2LDE4IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmluaXRpYWxpemUoCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5h
bWVzLAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgY29uc3Qg
V2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1
bmlxdWVJRHMsCi0gICAgaW50IHNlcGFyYXRvckluZGV4KQorICAgIGNvbnN0IFdlYlZlY3Rvcjxp
bnQ+JiBpdGVtSURzKQogewogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gbGFiZWxzLnNpemUo
KSk7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpY29ucy5zaXplKCkpOwotICAgIEFTU0VS
VChuYW1lcy5zaXplKCkgPT0gdW5pcXVlSURzLnNpemUoKSk7Ci0gICAgQVNTRVJUKHNlcGFyYXRv
ckluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihuYW1lcy5zaXplKCkpKTsKKyAgICBBU1NFUlQobmFt
ZXMuc2l6ZSgpID09IGl0ZW1JRHMuc2l6ZSgpKTsKIAogICAgIG1fc2VsZWN0ZWRJbmRleCA9IC0x
OwogICAgIG1fdGV4dEZpZWxkID0gdGV4dEZpZWxkOwogCiAgICAgLy8gVGhlIHN1Z2dlc3Rpb25z
IG11c3QgYmUgc2V0IGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCiAgICAgLy8gQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuCi0gICAgc2V0U3VnZ2VzdGlvbnMobmFtZXMsIGxhYmVscywgaWNvbnMsIHVu
aXF1ZUlEcywgc2VwYXJhdG9ySW5kZXgpOworICAgIHNldFN1Z2dlc3Rpb25zKG5hbWVzLCBsYWJl
bHMsIGljb25zLCBpdGVtSURzKTsKIAogICAgIEZvbnREZXNjcmlwdGlvbiByZWd1bGFyRm9udERl
c2NyaXB0aW9uOwogICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChD
U1NWYWx1ZVdlYmtpdENvbnRyb2wsCkBAIC0zMTMsNDIgKzI3OCwyOCBAQCB2b2lkIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6c2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1
bmlxdWVJRHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2VwYXJhdG9ySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcykKIHsKICAgICBBU1NFUlQobmFt
ZXMuc2l6ZSgpID09IGxhYmVscy5zaXplKCkpOwogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0g
aWNvbnMuc2l6ZSgpKTsKLSAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXpl
KCkpOwotICAgIEFTU0VSVChzZXBhcmF0b3JJbmRleCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMu
c2l6ZSgpKSk7CisgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAK
ICAgICBtX25hbWVzLmNsZWFyKCk7CiAgICAgbV9sYWJlbHMuY2xlYXIoKTsKICAgICBtX2ljb25z
LmNsZWFyKCk7Ci0gICAgbV91bmlxdWVJRHMuY2xlYXIoKTsKKyAgICBtX2l0ZW1JRHMuY2xlYXIo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIG1fbmFtZXMuYXBwZW5kKG5hbWVzW2ldKTsKICAgICAgICAgbV9sYWJlbHMuYXBwZW5kKGxh
YmVsc1tpXSk7CiAgICAgICAgIG1faWNvbnMuYXBwZW5kKGljb25zW2ldKTsKLSAgICAgICAgbV91
bmlxdWVJRHMuYXBwZW5kKHVuaXF1ZUlEc1tpXSk7CisgICAgICAgIG1faXRlbUlEcy5hcHBlbmQo
aXRlbUlEc1tpXSk7CiAgICAgfQogCi0gICAgbV9zZXBhcmF0b3JJbmRleCA9IHNlcGFyYXRvcklu
ZGV4OwotCiAgICAgLy8gVHJ5IHRvIHByZXNlcnZlIHNlbGVjdGlvbiBpZiBwb3NzaWJsZS4KICAg
ICBpZiAoZ2V0U2VsZWN0ZWRJbmRleCgpID49IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgp
KSkKICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgtMSk7CiB9CiAKLWludCBBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6Y29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleCh1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKGxpc3RJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChtX3Nl
cGFyYXRvckluZGV4ID09IC0xIHx8IGxpc3RJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgcmV0dXJuIGxpc3RJbmRleDsKLSAgICByZXR1cm4g
bGlzdEluZGV4IC0gMTsKLX0KLQogV2ViVmlld0ltcGwqIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50
OjpnZXRXZWJWaWV3KCkgY29uc3QKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3RleHRGaWVsZC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oCmluZGV4IDczY2MxODAuLmY1NjU2ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGll
bnQuaApAQCAtMTA2LDIwICsxMDYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgICAgICAgICAgICAgaW50IHNl
cGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4m
IGl0ZW1JRHMpOwogCiAgICAgdm9pZCBzZXRTdWdnZXN0aW9ucyhjb25zdCBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiYgbmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
VmVjdG9yPGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXBh
cmF0b3JJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50
PiYgaXRlbUlEcyk7CiAKIHByaXZhdGU6Ci0gICAgLy8gQ29udmVydCB0aGUgc3BlY2lmaWVkIGlu
ZGV4IGZyb20gYW4gaW5kZXggaW50byB0aGUgdmlzaWJsZSBsaXN0ICh3aGljaCBtaWdodAotICAg
IC8vIGluY2x1ZGUgYSBzZXBhcmF0b3IgZW50cnkpIHRvIGFuIGluZGV4IHRvIHxtX25hbWVzfCBh
bmQgfG1fbGFiZWxzfC4KLSAgICAvLyBSZXR1cm5zIC0xIGlmIHRoZSBnaXZlbiBpbmRleCBwb2lu
dHMgdG8gdGhlIHNlcGFyYXRvci4KLSAgICBpbnQgY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJ
bmRleCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgV2ViVmlld0ltcGwqIGdldFdlYlZpZXcoKSBjb25z
dDsKICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBnZXRUZXh0RmllbGQoKSBjb25zdCB7
IHJldHVybiBtX3RleHRGaWVsZC5nZXQoKTsgfQogICAgIFdlYkNvcmU6OlJlbmRlclN0eWxlKiB0
ZXh0RmllbGRTdHlsZSgpIGNvbnN0OwpAQCAtMTMzLDEwICsxMjcsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbV9uYW1lczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1f
bGFiZWxzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9pY29uczsKLSAgICBWZWN0b3I8aW50
PiBtX3VuaXF1ZUlEczsKLQotICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgc2VwYXJhdG9yLiAgLTEg
aWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9yLgotICAgIGludCBtX3NlcGFyYXRvckluZGV4OworICAg
IFZlY3RvcjxpbnQ+IG1faXRlbUlEczsKIAogICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgc2VsZWN0
ZWQgaXRlbS4gIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkIGl0ZW0uCiAgICAgaW50IG1fc2Vs
ZWN0ZWRJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCBiY2Y2ZDgxLi5kODVjNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0yNjc5LDEyICsyNjc5LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFw
cGx5QXV0b2ZpbGxTdWdnZXN0aW9ucygKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
bmFtZXMsCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICBjb25z
dCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgY29uc3QgV2ViVmVjdG9yPGludD4m
IHVuaXF1ZUlEcywKKyAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKICAgICBpbnQg
c2VwYXJhdG9ySW5kZXgpCiB7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMuc2l6
ZSgpKTsKLSAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkpOwotICAg
IEFTU0VSVChzZXBhcmF0b3JJbmRleCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSk7
CisgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAKICAgICBpZiAo
bmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGhpZGVBdXRvZmlsbFBvcHVwKCk7CkBAIC0yNzA5
LDcgKzI3MDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMo
CiAgICAgICAgIG1fYXV0b2ZpbGxQb3B1cENsaWVudCA9IGFkb3B0UHRyKG5ldyBBdXRvZmlsbFBv
cHVwTWVudUNsaWVudCk7CiAKICAgICBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmluaXRpYWxpemUo
Ci0gICAgICAgIGlucHV0RWxlbSwgbmFtZXMsIGxhYmVscywgaWNvbnMsIHVuaXF1ZUlEcywgc2Vw
YXJhdG9ySW5kZXgpOworICAgICAgICBpbnB1dEVsZW0sIG5hbWVzLCBsYWJlbHMsIGljb25zLCBp
dGVtSURzKTsKIAogICAgIGlmICghbV9hdXRvZmlsbFBvcHVwKSB7CiAgICAgICAgIFBvcHVwQ29u
dGFpbmVyU2V0dGluZ3MgcG9wdXBTZXR0aW5ncyA9IGF1dG9maWxsUG9wdXBTZXR0aW5nczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDcyMDJhNDcuLjVkNDhj
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjQ2LDcg
KzI0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5h
bWVzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAg
ICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAgIGNvbnN0IFdlYlZl
Y3RvcjxpbnQ+JiB1bmlxdWVJRHMsCisgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVt
SURzLAogICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRl
UG9wdXBzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBp
bmFjdGl2ZUNvbG9yLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137077</attachid>
            <date>2012-04-13 06:30:33 -0700</date>
            <delta_ts>2012-04-15 19:29:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>19751</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2I1YzlmMC4uYWE2ZTVkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MyBAQAogMjAxMi0wNC0xMyAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAorICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1J
RCB0byBhdXRvZmlsbCBwb3B1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NzcKKworICAgICAgICBJbnRyb2R1Y2luZyBNZW51SXRlbUlEcyBiZWNh
dXNlIHdlIHdhbnQgdG8gYWRkIG11bHRpcGxlIHNlcGFyYXRvcnMgYW5kCisgICAgICAgIG5lZWQg
dG8gaWRlbnRpZnkgbm9uLWF1dG9maWxsIG1lbnUgaXRlbXMgd2l0aG91dCByZXNvcnRpbmcgdG8g
dGhlIHNlcGFyYXRvciBwb3NpdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKTog
Q2hhbmdlZCB1bmlxdWVJRCB0byBpdGVtSUQgYmVjYXVzZSB0aGV5IGFyZW4ndCB1bmlxdWUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRTZWxlY3RBdXRvZmlsbFN1Z2dl
c3Rpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToK
KyAgICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRTdWdn
ZXN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldExh
YmVsKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldEljb24p
OgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cmVtb3ZlU3VnZ2Vz
dGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6
Y2FuUmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRv
ZmlsbFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6
QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1dhcm5pbmcpOgorICAgICAgICAoV2ViS2l0
OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyk6CisgICAgICAgICogc3Jj
L0F1dG9maWxsUG9wdXBNZW51Q2xpZW50Lmg6ICBSZW1vdmVkIG1fc2VwYXJhdG9ySW5kZXggYmVj
YXVzZSBub3cgd2UgdXNlIGl0ZW1JRCB0byBpZGVudGlmeSBzZXBhcmF0b3JzLgorICAgICAgICBB
ZGRlZCBtX3VzZUxlZ2FjeUJlaGF2aW9yIHdoaWNoIGlzIHRydWUgd2hlbiBpdCBpcyBpbml0aWFs
aXplZCB3aXRoIGEgdmFsaWQgc2VwYXJhdG9yIGluZGV4LiBUaGlzIGlzIHRvIGtlZXAKKyAgICAg
ICAgdGhlIGF1dG9maWxsIHdvcmtpbmcgZXZlbiB3aGVuIHRoZSBjaHJvbWl1bSBzaWRlIGhhc24n
dCBiZWVuIHVwZGF0ZWQgeWV0LgorICAgICAgICAoQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCisyMDEyLTA0LTEyICBLZWlzaGkgSGF0dG9y
aSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYktpdCBB
UEkgdG8gYWNjZXNzIDxkYXRhbGlzdD4gb3B0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKaW5kZXggNTgyNGYxNy4uN2I0OGY1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVu
dC5oCkBAIC00MCwxNiArNDAsMjYgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJBdXRv
ZmlsbENsaWVudCB7CiBwdWJsaWM6CisgICAgZW51bSB7CisgICAgICAgIE1lbnVJdGVtSURBdXRv
Y29tcGxldGVFbnRyeSA9IDAsCisgICAgICAgIE1lbnVJdGVtSURXYXJuaW5nTWVzc2FnZSA9IC0x
LAorICAgICAgICBNZW51SXRlbUlEUGFzc3dvcmRFbnRyeSA9IC0yLAorICAgICAgICBNZW51SXRl
bUlEU2VwYXJhdG9yID0gLTMsCisgICAgICAgIE1lbnVJdGVtSURDbGVhckZvcm0gPSAtNCwKKyAg
ICAgICAgTWVudUl0ZW1JREF1dG9maWxsT3B0aW9ucyA9IC01LAorICAgICAgICBNZW51SXRlbUlE
RGF0YUxpc3RFbnRyeSA9IC02CisgICAgfTsKKwogICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIg
dGhhdCB0aGUgdXNlciBoYXMgYWNjZXB0ZWQgYW4gQXV0b2ZpbGwgc3VnZ2VzdGlvbiBmb3IKLSAg
ICAvLyBhIFdlYk5vZGUuICB8dW5pcXVlSUR8IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgc2V0
IG9mIEF1dG9maWxsIHByb2ZpbGVzLAotICAgIC8vIGFuZCBzaG91bGQgbmV2ZXIgYmUgbmVnYXRp
dmUuICBJZiBpdCBpcyAwLCB0aGVuIHRoZSBzdWdnZXN0aW9uIGlzIGFuCi0gICAgLy8gQXV0b2Nv
bXBsZXRlIHN1Z2dlc3Rpb247IGFuZCB8dmFsdWV8IHN0b3JlcyB0aGUgc3VnZ2VzdGVkIHRleHQu
ICB8aW5kZXh8Ci0gICAgLy8gaXMgYW4gaW5kZXggb2YgdGhlIHNlbGVjdGVkIHN1Z2dlc3Rpb24g
aW4gdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgcHJvdmlkZWQKLSAgICAvLyBieSB0aGUgY2xpZW50
LgorICAgIC8vIGEgV2ViTm9kZS4gQSBwb3NpdGl2ZSB8aXRlbUlEfCBpcyBhIHVuaXF1ZSBpZCB1
c2VkIHRvIGlkZW50aWZ5IHRoZSBzZXQKKyAgICAvLyBvZiBBdXRvZmlsbCBwcm9maWxlcy4gSWYg
aXQgaXMgQXV0b2NvbXBsZXRlRW50cnlNZW51SXRlbUlELCB0aGVuIHRoZQorICAgIC8vIHN1Z2dl
c3Rpb24gaXMgYW4gQXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb247IGFuZCB8dmFsdWV8IHN0b3JlcyB0
aGUKKyAgICAvLyBzdWdnZXN0ZWQgdGV4dC4gfGluZGV4fCBpcyBhbiBpbmRleCBvZiB0aGUgc2Vs
ZWN0ZWQgc3VnZ2VzdGlvbiBpbiB0aGUKKyAgICAvLyBsaXN0IG9mIHN1Z2dlc3Rpb25zIHByb3Zp
ZGVkIGJ5IHRoZSBjbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEF1dG9maWxsU3Vn
Z2VzdGlvbihjb25zdCBXZWJOb2RlJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGxhYmVsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVuaXF1ZUlELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZW1JRCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4
KSB7IH0KIAogICAgIC8vIEluZm9ybXMgdGhlIGJyb3dzZXIgdGhhdCB0aGUgdXNlciBoYXMgc2Vs
ZWN0ZWQgYW4gQXV0b2ZpbGwgc3VnZ2VzdGlvbiBmb3IKQEAgLTU4LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb24oY29uc3QgV2Vi
Tm9kZSYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGxhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHVuaXF1ZUlEKSB7IH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVtSUQpIHsgfQogCiAgICAgLy8gSW5m
b3JtcyB0aGUgYnJvd3NlciB0aGF0IHRoZSB1c2VyIGhhcyBjbGVhcmVkIHRoZSBzZWxlY3Rpb24g
ZnJvbSB0aGUKICAgICAvLyBBdXRvZmlsbCBzdWdnZXN0aW9ucyBwb3B1cC4gVGhpcyBoYXBwZW5z
IHdoZW4gYSB1c2VyIHVzZXMgdGhlIGFycm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmgKaW5kZXggMWRmYTNhNi4uYmFkOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaApAQCAtMzUwLDE5ICszNTAsMTYgQEAgcHVibGljOgogICAgIC8vIEF1
dG9maWxsICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLy8gTm90aWZpZXMgdGhlIFdlYlZpZXcgdGhhdCBBdXRvZmlsbCBz
dWdnZXN0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBhIG5vZGUuCi0gICAgLy8gfHVuaXF1ZUlEc3wg
aXMgYSB2ZWN0b3Igb2YgSURzIHRoYXQgcmVwcmVzZW50IHRoZSB1bmlxdWUgSUQgb2YgZWFjaAot
ICAgIC8vIEF1dG9maWxsIHByb2ZpbGUgaW4gdGhlIHN1Z2dlc3Rpb25zIHBvcHVwLiBJZiBhIHVu
aXF1ZSBJRCBpcyAwLCB0aGVuIHRoZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgc3VnZ2VzdGlvbiBj
b21lcyBmcm9tIEF1dG9jb21wbGV0ZSByYXRoZXIgdGhhbiBBdXRvZmlsbC4KLSAgICAvLyBJZiBh
IHVuaXF1ZSBJRCBpcyBuZWdhdGl2ZSwgdGhlbiB0aGUgY29ycmVzcG9uZGluZyAic3VnZ2VzdGlv
biIgaXMKLSAgICAvLyBhY3R1YWxseSBhIHVzZXItZmFjaW5nIHdhcm5pbmcsIGUuZy4gZXhwbGFp
bmluZyB3aHkgQXV0b2ZpbGwgaXMKLSAgICAvLyB1bmF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQg
Zm9ybS4KKyAgICAvLyB8aXRlbUlEc3wgaXMgYSB2ZWN0b3Igb2YgSURzIGZvciB0aGUgbWVudSBp
dGVtcy4gQSBwb3NpdGl2ZSBpdGVtSUQgaXMgYQorICAgIC8vIHVuaXF1ZSBJRCBmb3IgdGhlIEF1
dG9maWxsIGVudHJpZXMuIE90aGVyIE1lbnVJdGVtSURzIGFyZSBkZWZpbmVkIGluCisgICAgLy8g
V2ViQXV0b2ZpbGxDbGllbnQuaAogICAgIHZpcnR1YWwgdm9pZCBhcHBseUF1dG9maWxsU3VnZ2Vz
dGlvbnMoCiAgICAgICAgIGNvbnN0IFdlYk5vZGUmLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBs
YWJlbHMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAg
ICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgaW50IHNlcGFyYXRv
ckluZGV4KSA9IDA7CisgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAorICAg
ICAgICBpbnQgc2VwYXJhdG9ySW5kZXggPSAtMSkgPSAwOwogCiAgICAgLy8gSGlkZXMgYW55IHBv
cHVwIChzdWdnZXN0aW9ucywgc2VsZWN0cy4uLikgdGhhdCBtaWdodCBiZSBzaG93aW5nLgogICAg
IHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCmluZGV4IGM4NGVhMTIu
LjI4YTdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxs
UG9wdXBNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRv
ZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6
OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50KCkKLSAgICA6IG1fc2VwYXJhdG9ySW5kZXgoLTEpCi0g
ICAgLCBtX3NlbGVjdGVkSW5kZXgoLTEpCisgICAgOiBtX3NlbGVjdGVkSW5kZXgoLTEpCiAgICAg
LCBtX3RleHRGaWVsZCgwKQorICAgICwgbV91c2VMZWdhY3lCZWhhdmlvcihmYWxzZSkKIHsKIH0K
IApAQCAtNjQsMzcgKzY0LDI1IEBAIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojp+QXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQoKQogCiB1bnNpZ25lZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0
U3VnZ2VzdGlvbnNDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbmFtZXMuc2l6ZSgpICsg
KChtX3NlcGFyYXRvckluZGV4ID09IC0xKSA/IDAgOiAxKTsKKyAgICByZXR1cm4gbV9uYW1lcy5z
aXplKCk7CiB9CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0U3VnZ2Vz
dGlvbih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgaW50IGluZGV4ID0gY29udmVy
dExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIGlmIChpbmRleCA9PSAt
MSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgQVNTRVJUKGluZGV4ID49IDAg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtX25hbWVzLnNpemUoKSk7Ci0gICAgcmV0
dXJuIG1fbmFtZXNbaW5kZXhdOworICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX25hbWVzLnNpemUo
KSk7CisgICAgcmV0dXJuIG1fbmFtZXNbbGlzdEluZGV4XTsKIH0KIAogV2ViU3RyaW5nIEF1dG9m
aWxsUG9wdXBNZW51Q2xpZW50OjpnZXRMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7
Ci0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5k
ZXgpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwot
Ci0gICAgQVNTRVJUKGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBt
X2xhYmVscy5zaXplKCkpOwotICAgIHJldHVybiBtX2xhYmVsc1tpbmRleF07CisgICAgQVNTRVJU
KGxpc3RJbmRleCA8IG1fbGFiZWxzLnNpemUoKSk7CisgICAgcmV0dXJuIG1fbGFiZWxzW2xpc3RJ
bmRleF07CiB9CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0SWNvbih1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJ
bmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygpOwotCi0gICAgQVNTRVJUKGluZGV4ID49IDAgJiYgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtX2ljb25zLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1f
aWNvbnNbaW5kZXhdOworICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX2ljb25zLnNpemUoKSk7Cisg
ICAgcmV0dXJuIG1faWNvbnNbbGlzdEluZGV4XTsKIH0KIAogdm9pZCBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgodW5zaWduZWQgbGlzdEluZGV4KQpAQCAt
MTAyLDI2ICs5MCwxNyBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpyZW1vdmVTdWdn
ZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiAgICAgaWYgKCFjYW5SZW1vdmVTdWdn
ZXN0aW9uQXRJbmRleChsaXN0SW5kZXgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgaW5k
ZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0KLSAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8IG1fbmFtZXMuc2l6ZSgpKTsKLQot
ICAgIG1fbmFtZXMucmVtb3ZlKGluZGV4KTsKLSAgICBtX2xhYmVscy5yZW1vdmUoaW5kZXgpOwot
ICAgIG1faWNvbnMucmVtb3ZlKGluZGV4KTsKLSAgICBtX3VuaXF1ZUlEcy5yZW1vdmUoaW5kZXgp
OworICAgIEFTU0VSVChsaXN0SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CiAKLSAgICAvLyBTaGlm
dCB0aGUgc2VwYXJhdG9yIGluZGV4IGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAobV9zZXBhcmF0b3JJ
bmRleCAhPSAtMSkKLSAgICAgICAgbV9zZXBhcmF0b3JJbmRleC0tOworICAgIG1fbmFtZXMucmVt
b3ZlKGxpc3RJbmRleCk7CisgICAgbV9sYWJlbHMucmVtb3ZlKGxpc3RJbmRleCk7CisgICAgbV9p
Y29ucy5yZW1vdmUobGlzdEluZGV4KTsKKyAgICBtX2l0ZW1JRHMucmVtb3ZlKGxpc3RJbmRleCk7
CiB9CiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmNhblJlbW92ZVN1Z2dlc3Rpb25B
dEluZGV4KHVuc2lnbmVkIGxpc3RJbmRleCkKIHsKLSAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW9u
IG9mIGl0ZW1zIGJlZm9yZSB0aGUgc2VwYXJhdG9yIHRoYXQgaGF2ZSB1bmlxdWUgaWQgMAotICAg
IC8vIChpLmUuIGFyZSBhdXRvY29tcGxldGUgcmF0aGVyIHRoYW4gYXV0b2ZpbGwgaXRlbXMpLgot
ICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4
KTsKLSAgICByZXR1cm4gIW1fdW5pcXVlSURzW2luZGV4XSAmJiAobV9zZXBhcmF0b3JJbmRleCA9
PSAtMSB8fCBsaXN0SW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRl
eCkpOworICAgIHJldHVybiBtX2l0ZW1JRHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVu
dDo6TWVudUl0ZW1JREF1dG9jb21wbGV0ZUVudHJ5IHx8IG1faXRlbUlEc1tsaXN0SW5kZXhdID09
IFdlYkF1dG9maWxsQ2xpZW50OjpNZW51SXRlbUlEUGFzc3dvcmRFbnRyeTsKIH0KIAogdm9pZCBB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwg
Ym9vbCBmaXJlRXZlbnRzKQpAQCAtMTMwLDE1ICsxMDksMjIgQEAgdm9pZCBBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZl
bnRzKQogICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fc2Vw
YXJhdG9ySW5kZXggIT0gLTEgJiYgbGlzdEluZGV4ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
c2VwYXJhdG9ySW5kZXgpKQotICAgICAgICAtLWxpc3RJbmRleDsKLQogICAgIEFTU0VSVChsaXN0
SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CiAKKyAgICBpZiAobV91c2VMZWdhY3lCZWhhdmlvcikg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faXRlbUlEcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgaWYgKG1faXRlbUlEc1tpXSA9PSBXZWJBdXRvZmlsbENsaWVudDo6TWVu
dUl0ZW1JRFNlcGFyYXRvcikgeworICAgICAgICAgICAgICAgIGlmIChsaXN0SW5kZXggPiBpKQor
ICAgICAgICAgICAgICAgICAgICBsaXN0SW5kZXgtLTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHdlYlZpZXctPmF1dG9maWxs
Q2xpZW50KCktPmRpZEFjY2VwdEF1dG9maWxsU3VnZ2VzdGlvbihXZWJOb2RlKGdldFRleHRGaWVs
ZCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9uYW1lc1tsaXN0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhYmVsc1tsaXN0SW5kZXhdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3VuaXF1ZUlEc1tsaXN0SW5kZXhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2l0ZW1JRHNbbGlzdEluZGV4XSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdElu
ZGV4KTsKIH0KIApAQCAtMTQ4LDE1ICsxMzQsMTIgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNs
aWVudDo6c2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW4K
ICAgICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3NlcGFyYXRv
ckluZGV4ICE9IC0xICYmIGxpc3RJbmRleCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NlcGFy
YXRvckluZGV4KSkKLSAgICAgICAgLS1saXN0SW5kZXg7Ci0KICAgICBBU1NFUlQobGlzdEluZGV4
IDwgbV9uYW1lcy5zaXplKCkpOwogCiAgICAgd2ViVmlldy0+YXV0b2ZpbGxDbGllbnQoKS0+ZGlk
U2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uKFdlYk5vZGUoZ2V0VGV4dEZpZWxkKCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25h
bWVzW2xpc3RJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGFiZWxzW2xpc3RJbmRleF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdW5pcXVlSURzW2xp
c3RJbmRleF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2l0ZW1JRHNbbGlzdEluZGV4XSk7CiB9CiAKIHZvaWQgQXV0b2ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNsZWFyZWQoKQpAQCAtMjI4LDE3ICsyMTEsMTIgQEAg
dm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cG9wdXBEaWRIaWRlKCkKIAogYm9vbCBBdXRv
ZmlsbFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRleCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gKG1fc2VwYXJhdG9ySW5kZXggIT0gLTEgJiYgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpID09IGxpc3RJbmRleCk7CisgICAgcmV0dXJu
IG1faXRlbUlEc1tsaXN0SW5kZXhdID09IFdlYkF1dG9maWxsQ2xpZW50OjpNZW51SXRlbUlEU2Vw
YXJhdG9yOwogfQogCiBib29sIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjppdGVtSXNXYXJuaW5n
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlz
dEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1fdW5pcXVlSURzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1f
dW5pcXVlSURzW2luZGV4XSA8IDA7CisgICAgcmV0dXJuIG1faXRlbUlEc1tsaXN0SW5kZXhdID09
IFdlYkF1dG9maWxsQ2xpZW50OjpNZW51SXRlbUlEV2FybmluZ01lc3NhZ2U7CiB9CiAKIHZvaWQg
QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNldFRleHRGcm9tSXRlbSh1bnNpZ25lZCBsaXN0SW5k
ZXgpCkBAIC0yNjksMjAgKzI0NywzNiBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpp
bml0aWFsaXplKAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgIGNvbnN0IFdlYlZlY3RvcjxX
ZWJTdHJpbmc+JiBpY29ucywKLSAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAor
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgIGludCBzZXBhcmF0b3JJbmRl
eCkKIHsKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGxhYmVscy5zaXplKCkpOwogICAgIEFT
U0VSVChuYW1lcy5zaXplKCkgPT0gaWNvbnMuc2l6ZSgpKTsKLSAgICBBU1NFUlQobmFtZXMuc2l6
ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkpOwotICAgIEFTU0VSVChzZXBhcmF0b3JJbmRleCA8IHN0
YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSk7CisgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9
PSBpdGVtSURzLnNpemUoKSk7CiAKICAgICBtX3NlbGVjdGVkSW5kZXggPSAtMTsKICAgICBtX3Rl
eHRGaWVsZCA9IHRleHRGaWVsZDsKIAotICAgIC8vIFRoZSBzdWdnZXN0aW9ucyBtdXN0IGJlIHNl
dCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZQotICAgIC8vIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50
LgotICAgIHNldFN1Z2dlc3Rpb25zKG5hbWVzLCBsYWJlbHMsIGljb25zLCB1bmlxdWVJRHMsIHNl
cGFyYXRvckluZGV4KTsKKyAgICBpZiAoc2VwYXJhdG9ySW5kZXggPT0gLTEpIHsKKyAgICAgICAg
Ly8gVGhlIHN1Z2dlc3Rpb25zIG11c3QgYmUgc2V0IGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCisg
ICAgICAgIC8vIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50LgorICAgICAgICBzZXRTdWdnZXN0aW9u
cyhuYW1lcywgbGFiZWxzLCBpY29ucywgaXRlbUlEcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV91c2VMZWdhY3lCZWhhdmlvciA9IHRydWU7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IG5hbWVzV2l0aFNlcGFyYXRvcihuYW1lcy5zaXplKCkgKyAxKTsKKyAgICAgICAgV2ViVmVjdG9y
PFdlYlN0cmluZz4gbGFiZWxzV2l0aFNlcGFyYXRvcihsYWJlbHMuc2l6ZSgpICsgMSk7CisgICAg
ICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGljb25zV2l0aFNlcGFyYXRvcihpY29ucy5zaXplKCkg
KyAxKTsKKyAgICAgICAgV2ViVmVjdG9yPGludD4gaXRlbUlEc1dpdGhTZXBhcmF0b3IoaXRlbUlE
cy5zaXplKCkgKyAxKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYW1lcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgc2l6ZV90IGogPSBpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihzZXBhcmF0b3JJbmRleCkgPyBpIDogaSArIDE7CisgICAgICAgICAgICBuYW1lc1dpdGhTZXBh
cmF0b3Jbal0gPSBuYW1lc1tpXTsKKyAgICAgICAgICAgIGxhYmVsc1dpdGhTZXBhcmF0b3Jbal0g
PSBsYWJlbHNbaV07CisgICAgICAgICAgICBpY29uc1dpdGhTZXBhcmF0b3Jbal0gPSBpY29uc1tp
XTsKKyAgICAgICAgICAgIGl0ZW1JRHNXaXRoU2VwYXJhdG9yW2pdID0gaXRlbUlEc1tpXTsKKyAg
ICAgICAgfQorICAgICAgICBpdGVtSURzV2l0aFNlcGFyYXRvcltzZXBhcmF0b3JJbmRleF0gPSBX
ZWJBdXRvZmlsbENsaWVudDo6TWVudUl0ZW1JRFNlcGFyYXRvcjsKKyAgICAgICAgc2V0U3VnZ2Vz
dGlvbnMobmFtZXNXaXRoU2VwYXJhdG9yLCBsYWJlbHNXaXRoU2VwYXJhdG9yLCBpY29uc1dpdGhT
ZXBhcmF0b3IsIGl0ZW1JRHNXaXRoU2VwYXJhdG9yKTsKKyAgICB9CiAKICAgICBGb250RGVzY3Jp
cHRpb24gcmVndWxhckZvbnREZXNjcmlwdGlvbjsKICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRo
ZW1lKCktPnN5c3RlbUZvbnQoQ1NTVmFsdWVXZWJraXRDb250cm9sLApAQCAtMzEzLDQyICszMDcs
MjggQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKIHZvaWQgQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBuYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
aWNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNlcGFyYXRvckluZGV4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMp
CiB7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMuc2l6ZSgpKTsKICAgICBBU1NF
UlQobmFtZXMuc2l6ZSgpID09IGljb25zLnNpemUoKSk7Ci0gICAgQVNTRVJUKG5hbWVzLnNpemUo
KSA9PSB1bmlxdWVJRHMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoc2VwYXJhdG9ySW5kZXggPCBzdGF0
aWNfY2FzdDxpbnQ+KG5hbWVzLnNpemUoKSkpOworICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0g
aXRlbUlEcy5zaXplKCkpOwogCiAgICAgbV9uYW1lcy5jbGVhcigpOwogICAgIG1fbGFiZWxzLmNs
ZWFyKCk7CiAgICAgbV9pY29ucy5jbGVhcigpOwotICAgIG1fdW5pcXVlSURzLmNsZWFyKCk7Cisg
ICAgbV9pdGVtSURzLmNsZWFyKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYW1lcy5z
aXplKCk7ICsraSkgewogICAgICAgICBtX25hbWVzLmFwcGVuZChuYW1lc1tpXSk7CiAgICAgICAg
IG1fbGFiZWxzLmFwcGVuZChsYWJlbHNbaV0pOwogICAgICAgICBtX2ljb25zLmFwcGVuZChpY29u
c1tpXSk7Ci0gICAgICAgIG1fdW5pcXVlSURzLmFwcGVuZCh1bmlxdWVJRHNbaV0pOworICAgICAg
ICBtX2l0ZW1JRHMuYXBwZW5kKGl0ZW1JRHNbaV0pOwogICAgIH0KIAotICAgIG1fc2VwYXJhdG9y
SW5kZXggPSBzZXBhcmF0b3JJbmRleDsKLQogICAgIC8vIFRyeSB0byBwcmVzZXJ2ZSBzZWxlY3Rp
b24gaWYgcG9zc2libGUuCiAgICAgaWYgKGdldFNlbGVjdGVkSW5kZXgoKSA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KG5hbWVzLnNpemUoKSkpCiAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoLTEpOwogfQog
Ci1pbnQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFs
SW5kZXgodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAotewotICAgIGlmIChsaXN0SW5kZXggPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICByZXR1cm4g
LTE7Ci0KLSAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA9PSAtMSB8fCBsaXN0SW5kZXggPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIHJldHVybiBsaXN0
SW5kZXg7Ci0gICAgcmV0dXJuIGxpc3RJbmRleCAtIDE7Ci19Ci0KIFdlYlZpZXdJbXBsKiBBdXRv
ZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0V2ViVmlldygpIGNvbnN0CiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gbV90ZXh0RmllbGQtPmRvY3VtZW50KCktPmZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaAppbmRleCA3M2Nj
MTgwLi41ODhlMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRv
ZmlsbFBvcHVwTWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1
dG9maWxsUG9wdXBNZW51Q2xpZW50LmgKQEAgLTEwNiwyMCArMTA2LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAgICAgICAg
ICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpOwogCiAgICAgdm9pZCBzZXRTdWdnZXN0aW9ucyhj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcyk7CiAKIHByaXZhdGU6Ci0gICAgLy8gQ29udmVy
dCB0aGUgc3BlY2lmaWVkIGluZGV4IGZyb20gYW4gaW5kZXggaW50byB0aGUgdmlzaWJsZSBsaXN0
ICh3aGljaCBtaWdodAotICAgIC8vIGluY2x1ZGUgYSBzZXBhcmF0b3IgZW50cnkpIHRvIGFuIGlu
ZGV4IHRvIHxtX25hbWVzfCBhbmQgfG1fbGFiZWxzfC4KLSAgICAvLyBSZXR1cm5zIC0xIGlmIHRo
ZSBnaXZlbiBpbmRleCBwb2ludHMgdG8gdGhlIHNlcGFyYXRvci4KLSAgICBpbnQgY29udmVydExp
c3RJbmRleFRvSW50ZXJuYWxJbmRleCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgV2ViVmlld0ltcGwq
IGdldFdlYlZpZXcoKSBjb25zdDsKICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBnZXRU
ZXh0RmllbGQoKSBjb25zdCB7IHJldHVybiBtX3RleHRGaWVsZC5nZXQoKTsgfQogICAgIFdlYkNv
cmU6OlJlbmRlclN0eWxlKiB0ZXh0RmllbGRTdHlsZSgpIGNvbnN0OwpAQCAtMTMzLDEwICsxMjgs
NyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9uYW1lczsKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fbGFiZWxzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9pY29u
czsKLSAgICBWZWN0b3I8aW50PiBtX3VuaXF1ZUlEczsKLQotICAgIC8vIFRoZSBpbmRleCBvZiB0
aGUgc2VwYXJhdG9yLiAgLTEgaWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9yLgotICAgIGludCBtX3Nl
cGFyYXRvckluZGV4OworICAgIFZlY3RvcjxpbnQ+IG1faXRlbUlEczsKIAogICAgIC8vIFRoZSBp
bmRleCBvZiB0aGUgc2VsZWN0ZWQgaXRlbS4gIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkIGl0
ZW0uCiAgICAgaW50IG1fc2VsZWN0ZWRJbmRleDsKQEAgLTE0NCw2ICsxMzYsOSBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PiBtX3RleHRGaWVsZDsKICAg
ICBPd25QdHI8V2ViQ29yZTo6UG9wdXBNZW51U3R5bGU+IG1fcmVndWxhclN0eWxlOwogICAgIE93
blB0cjxXZWJDb3JlOjpQb3B1cE1lbnVTdHlsZT4gbV93YXJuaW5nU3R5bGU7CisKKyAgICAvLyBV
c2UgbGVnYWN5IGJlaGF2aW9yIHdoaWxlIHRoZSBjaHJvbWl1bSBzaWRlIGhhc24ndCBiZWVuIHVw
ZGF0ZWQuCisgICAgYm9vbCBtX3VzZUxlZ2FjeUJlaGF2aW9yOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggY2JkZWJiNC4uYzhlNmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMjc0MCwxMiArMjc0MCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBs
eUF1dG9maWxsU3VnZ2VzdGlvbnMoCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5h
bWVzLAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgY29uc3Qg
V2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1
bmlxdWVJRHMsCisgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMsCiAgICAgaW50IHNl
cGFyYXRvckluZGV4KQogewogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gbGFiZWxzLnNpemUo
KSk7Ci0gICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSB1bmlxdWVJRHMuc2l6ZSgpKTsKLSAgICBB
U1NFUlQoc2VwYXJhdG9ySW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KG5hbWVzLnNpemUoKSkpOwor
ICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaXRlbUlEcy5zaXplKCkpOwogCiAgICAgaWYgKG5h
bWVzLmlzRW1wdHkoKSkgewogICAgICAgICBoaWRlQXV0b2ZpbGxQb3B1cCgpOwpAQCAtMjc3MCw3
ICsyNzY5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAog
ICAgICAgICBtX2F1dG9maWxsUG9wdXBDbGllbnQgPSBhZG9wdFB0cihuZXcgQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQpOwogCiAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT5pbml0aWFsaXplKAot
ICAgICAgICBpbnB1dEVsZW0sIG5hbWVzLCBsYWJlbHMsIGljb25zLCB1bmlxdWVJRHMsIHNlcGFy
YXRvckluZGV4KTsKKyAgICAgICAgaW5wdXRFbGVtLCBuYW1lcywgbGFiZWxzLCBpY29ucywgaXRl
bUlEcywgc2VwYXJhdG9ySW5kZXgpOwogCiAgICAgaWYgKCFtX2F1dG9maWxsUG9wdXApIHsKICAg
ICAgICAgUG9wdXBDb250YWluZXJTZXR0aW5ncyBwb3B1cFNldHRpbmdzID0gYXV0b2ZpbGxQb3B1
cFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXgg
MzIzNzlkZC4uOTgxZjYwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
bGFiZWxzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCisgICAgICAgIGNvbnN0IFdlYlZl
Y3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpOwogICAgIHZp
cnR1YWwgdm9pZCBoaWRlUG9wdXBzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNv
bG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAo=
</data>
<flag name="review"
          id="142057"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="142203"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137266</attachid>
            <date>2012-04-15 19:29:53 -0700</date>
            <delta_ts>2012-04-15 21:22:51 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>19968</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmUwYWU4ZS4uYWNlNWUzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wNC0xNSAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1J
RCB0byBhdXRvZmlsbCBwb3B1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NzcKKworICAgICAgICBJbnRyb2R1Y2luZyBNZW51SXRlbUlEcyBiZWNh
dXNlIHdlIHdhbnQgdG8gYWRkIG11bHRpcGxlIHNlcGFyYXRvcnMgYW5kCisgICAgICAgIG5lZWQg
dG8gaWRlbnRpZnkgbm9uLWF1dG9maWxsIG1lbnUgaXRlbXMgd2l0aG91dCByZXNvcnRpbmcgdG8g
dGhlIHNlcGFyYXRvciBwb3NpdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKTogQ2hh
bmdlZCB1bmlxdWVJRCB0byBpdGVtSUQgYmVjYXVzZSB0aGV5IGFyZW4ndCB1bmlxdWUuCisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rp
b24pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAg
ICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnNDb3Vu
dCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRTdWdnZXN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldExhYmVs
KToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldEljb24pOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Y2Fu
UmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmls
bFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1dhcm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1
dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyk6CisgICAgICAgICogc3JjL0F1
dG9maWxsUG9wdXBNZW51Q2xpZW50Lmg6ICBSZW1vdmVkIG1fc2VwYXJhdG9ySW5kZXggYmVjYXVz
ZSBub3cgd2UgdXNlIGl0ZW1JRCB0byBpZGVudGlmeSBzZXBhcmF0b3JzLgorICAgICAgICBBZGRl
ZCBtX3VzZUxlZ2FjeUJlaGF2aW9yIHdoaWNoIGlzIHRydWUgd2hlbiBpdCBpcyBpbml0aWFsaXpl
ZCB3aXRoIGEgdmFsaWQgc2VwYXJhdG9yIGluZGV4LiBUaGlzIGlzIHRvIGtlZXAKKyAgICAgICAg
dGhlIGF1dG9maWxsIHdvcmtpbmcgZXZlbiB3aGVuIHRoZSBjaHJvbWl1bSBzaWRlIGhhc24ndCBi
ZWVuIHVwZGF0ZWQgeWV0LgorICAgICAgICAoQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA0LTE1ICBZdXRhIEtpdGFtdXJhICA8
eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExlYWsgaW4gV2ViU29ja2V0Q2hhbm5lbCB3
aXRoIHdvcmtlcnMvd29ya2VyLXJlbG9hZC5odG1sIChwYXJ0IDIpCkBAIC0xNzEsNyArMjA5LDcg
QEAKIAogICAgICAgICAqIFdlYktpdC5neXA6CiAKLTIwMTItMDQtMTMgIEtlaXNoaSBIYXR0b3Jp
ICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisyMDEyLTA0LTEyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgdG8gYWNj
ZXNzIDxkYXRhbGlzdD4gb3B0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODM3NjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdXRvZmlsbENsaWVudC5oCmluZGV4IDU4MjRmMTcuLjdiNDhmNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9maWxsQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaApAQCAtNDAs
MTYgKzQwLDI2IEBAIGNsYXNzIFdlYlN0cmluZzsKIAogY2xhc3MgV2ViQXV0b2ZpbGxDbGllbnQg
ewogcHVibGljOgorICAgIGVudW0geworICAgICAgICBNZW51SXRlbUlEQXV0b2NvbXBsZXRlRW50
cnkgPSAwLAorICAgICAgICBNZW51SXRlbUlEV2FybmluZ01lc3NhZ2UgPSAtMSwKKyAgICAgICAg
TWVudUl0ZW1JRFBhc3N3b3JkRW50cnkgPSAtMiwKKyAgICAgICAgTWVudUl0ZW1JRFNlcGFyYXRv
ciA9IC0zLAorICAgICAgICBNZW51SXRlbUlEQ2xlYXJGb3JtID0gLTQsCisgICAgICAgIE1lbnVJ
dGVtSURBdXRvZmlsbE9wdGlvbnMgPSAtNSwKKyAgICAgICAgTWVudUl0ZW1JRERhdGFMaXN0RW50
cnkgPSAtNgorICAgIH07CisKICAgICAvLyBJbmZvcm1zIHRoZSBicm93c2VyIHRoYXQgdGhlIHVz
ZXIgaGFzIGFjY2VwdGVkIGFuIEF1dG9maWxsIHN1Z2dlc3Rpb24gZm9yCi0gICAgLy8gYSBXZWJO
b2RlLiAgfHVuaXF1ZUlEfCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIHNldCBvZiBBdXRvZmls
bCBwcm9maWxlcywKLSAgICAvLyBhbmQgc2hvdWxkIG5ldmVyIGJlIG5lZ2F0aXZlLiAgSWYgaXQg
aXMgMCwgdGhlbiB0aGUgc3VnZ2VzdGlvbiBpcyBhbgotICAgIC8vIEF1dG9jb21wbGV0ZSBzdWdn
ZXN0aW9uOyBhbmQgfHZhbHVlfCBzdG9yZXMgdGhlIHN1Z2dlc3RlZCB0ZXh0LiAgfGluZGV4fAot
ICAgIC8vIGlzIGFuIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBzdWdnZXN0aW9uIGluIHRoZSBsaXN0
IG9mIHN1Z2dlc3Rpb25zIHByb3ZpZGVkCi0gICAgLy8gYnkgdGhlIGNsaWVudC4KKyAgICAvLyBh
IFdlYk5vZGUuIEEgcG9zaXRpdmUgfGl0ZW1JRHwgaXMgYSB1bmlxdWUgaWQgdXNlZCB0byBpZGVu
dGlmeSB0aGUgc2V0CisgICAgLy8gb2YgQXV0b2ZpbGwgcHJvZmlsZXMuIElmIGl0IGlzIEF1dG9j
b21wbGV0ZUVudHJ5TWVudUl0ZW1JRCwgdGhlbiB0aGUKKyAgICAvLyBzdWdnZXN0aW9uIGlzIGFu
IEF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uOyBhbmQgfHZhbHVlfCBzdG9yZXMgdGhlCisgICAgLy8g
c3VnZ2VzdGVkIHRleHQuIHxpbmRleHwgaXMgYW4gaW5kZXggb2YgdGhlIHNlbGVjdGVkIHN1Z2dl
c3Rpb24gaW4gdGhlCisgICAgLy8gbGlzdCBvZiBzdWdnZXN0aW9ucyBwcm92aWRlZCBieSB0aGUg
Y2xpZW50LgogICAgIHZpcnR1YWwgdm9pZCBkaWRBY2NlcHRBdXRvZmlsbFN1Z2dlc3Rpb24oY29u
c3QgV2ViTm9kZSYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bmlxdWVJRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVtSUQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCkgeyB9CiAKICAg
ICAvLyBJbmZvcm1zIHRoZSBicm93c2VyIHRoYXQgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIGFuIEF1
dG9maWxsIHN1Z2dlc3Rpb24gZm9yCkBAIC01OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uKGNvbnN0IFdlYk5vZGUmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBsYWJlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB1bmlxdWVJRCkgeyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaXRlbUlEKSB7IH0KIAogICAgIC8vIEluZm9ybXMgdGhlIGJy
b3dzZXIgdGhhdCB0aGUgdXNlciBoYXMgY2xlYXJlZCB0aGUgc2VsZWN0aW9uIGZyb20gdGhlCiAg
ICAgLy8gQXV0b2ZpbGwgc3VnZ2VzdGlvbnMgcG9wdXAuIFRoaXMgaGFwcGVucyB3aGVuIGEgdXNl
ciB1c2VzIHRoZSBhcnJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmlu
ZGV4IDFkZmEzYTYuLmJhZDhiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKQEAgLTM1MCwxOSArMzUwLDE2IEBAIHB1YmxpYzoKICAgICAvLyBBdXRvZmlsbCAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogICAgIC8vIE5vdGlmaWVzIHRoZSBXZWJWaWV3IHRoYXQgQXV0b2ZpbGwgc3VnZ2VzdGlvbnMg
YXJlIGF2YWlsYWJsZSBmb3IgYSBub2RlLgotICAgIC8vIHx1bmlxdWVJRHN8IGlzIGEgdmVjdG9y
IG9mIElEcyB0aGF0IHJlcHJlc2VudCB0aGUgdW5pcXVlIElEIG9mIGVhY2gKLSAgICAvLyBBdXRv
ZmlsbCBwcm9maWxlIGluIHRoZSBzdWdnZXN0aW9ucyBwb3B1cC4gSWYgYSB1bmlxdWUgSUQgaXMg
MCwgdGhlbiB0aGUKLSAgICAvLyBjb3JyZXNwb25kaW5nIHN1Z2dlc3Rpb24gY29tZXMgZnJvbSBB
dXRvY29tcGxldGUgcmF0aGVyIHRoYW4gQXV0b2ZpbGwuCi0gICAgLy8gSWYgYSB1bmlxdWUgSUQg
aXMgbmVnYXRpdmUsIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgInN1Z2dlc3Rpb24iIGlzCi0gICAg
Ly8gYWN0dWFsbHkgYSB1c2VyLWZhY2luZyB3YXJuaW5nLCBlLmcuIGV4cGxhaW5pbmcgd2h5IEF1
dG9maWxsIGlzCi0gICAgLy8gdW5hdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IGZvcm0uCisgICAg
Ly8gfGl0ZW1JRHN8IGlzIGEgdmVjdG9yIG9mIElEcyBmb3IgdGhlIG1lbnUgaXRlbXMuIEEgcG9z
aXRpdmUgaXRlbUlEIGlzIGEKKyAgICAvLyB1bmlxdWUgSUQgZm9yIHRoZSBBdXRvZmlsbCBlbnRy
aWVzLiBPdGhlciBNZW51SXRlbUlEcyBhcmUgZGVmaW5lZCBpbgorICAgIC8vIFdlYkF1dG9maWxs
Q2xpZW50LmgKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAogICAg
ICAgICBjb25zdCBXZWJOb2RlJiwKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4m
IG5hbWVzLAogICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAg
ICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAgIGNvbnN0IFdl
YlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgIGludCBzZXBhcmF0b3JJbmRleCkgPSAw
OworICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKKyAgICAgICAgaW50IHNl
cGFyYXRvckluZGV4ID0gLTEpID0gMDsKIAogICAgIC8vIEhpZGVzIGFueSBwb3B1cCAoc3VnZ2Vz
dGlvbnMsIHNlbGVjdHMuLi4pIHRoYXQgbWlnaHQgYmUgc2hvd2luZy4KICAgICB2aXJ0dWFsIHZv
aWQgaGlkZVBvcHVwcygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcAppbmRleCBjODRlYTEyLi4yOGE3Y2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQuY3BwCkBAIC01Miw5ICs1Miw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpBdXRvZmlsbFBv
cHVwTWVudUNsaWVudCgpCi0gICAgOiBtX3NlcGFyYXRvckluZGV4KC0xKQotICAgICwgbV9zZWxl
Y3RlZEluZGV4KC0xKQorICAgIDogbV9zZWxlY3RlZEluZGV4KC0xKQogICAgICwgbV90ZXh0Rmll
bGQoMCkKKyAgICAsIG1fdXNlTGVnYWN5QmVoYXZpb3IoZmFsc2UpCiB7CiB9CiAKQEAgLTY0LDM3
ICs2NCwyNSBAQCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6fkF1dG9maWxsUG9wdXBNZW51Q2xp
ZW50KCkKIAogdW5zaWduZWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldFN1Z2dlc3Rpb25z
Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX25hbWVzLnNpemUoKSArICgobV9zZXBhcmF0
b3JJbmRleCA9PSAtMSkgPyAwIDogMSk7CisgICAgcmV0dXJuIG1fbmFtZXMuc2l6ZSgpOwogfQog
CiBXZWJTdHJpbmcgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldFN1Z2dlc3Rpb24odW5zaWdu
ZWQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhU
b0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAg
IHJldHVybiBXZWJTdHJpbmcoKTsKLQotICAgIEFTU0VSVChpbmRleCA+PSAwICYmIHN0YXRpY19j
YXN0PHNpemVfdD4oaW5kZXgpIDwgbV9uYW1lcy5zaXplKCkpOwotICAgIHJldHVybiBtX25hbWVz
W2luZGV4XTsKKyAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9uYW1lcy5zaXplKCkpOworICAgIHJl
dHVybiBtX25hbWVzW2xpc3RJbmRleF07CiB9CiAKIFdlYlN0cmluZyBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6Z2V0TGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBp
bmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBp
ZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKLQotICAgIEFTU0VS
VChpbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbV9sYWJlbHMuc2l6
ZSgpKTsKLSAgICByZXR1cm4gbV9sYWJlbHNbaW5kZXhdOworICAgIEFTU0VSVChsaXN0SW5kZXgg
PCBtX2xhYmVscy5zaXplKCkpOworICAgIHJldHVybiBtX2xhYmVsc1tsaXN0SW5kZXhdOwogfQog
CiBXZWJTdHJpbmcgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldEljb24odW5zaWduZWQgbGlz
dEluZGV4KSBjb25zdAogewotICAgIGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVy
bmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVy
biBXZWJTdHJpbmcoKTsKLQotICAgIEFTU0VSVChpbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNp
emVfdD4oaW5kZXgpIDwgbV9pY29ucy5zaXplKCkpOwotICAgIHJldHVybiBtX2ljb25zW2luZGV4
XTsKKyAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9pY29ucy5zaXplKCkpOworICAgIHJldHVybiBt
X2ljb25zW2xpc3RJbmRleF07CiB9CiAKIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnJl
bW92ZVN1Z2dlc3Rpb25BdEluZGV4KHVuc2lnbmVkIGxpc3RJbmRleCkKQEAgLTEwMiwyNiArOTAs
MTcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlvbkF0SW5k
ZXgodW5zaWduZWQgbGlzdEluZGV4KQogICAgIGlmICghY2FuUmVtb3ZlU3VnZ2VzdGlvbkF0SW5k
ZXgobGlzdEluZGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGluZGV4ID0gY29udmVy
dExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotCi0gICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbmRleCkgPCBtX25hbWVzLnNpemUoKSk7Ci0KLSAgICBtX25hbWVz
LnJlbW92ZShpbmRleCk7Ci0gICAgbV9sYWJlbHMucmVtb3ZlKGluZGV4KTsKLSAgICBtX2ljb25z
LnJlbW92ZShpbmRleCk7Ci0gICAgbV91bmlxdWVJRHMucmVtb3ZlKGluZGV4KTsKKyAgICBBU1NF
UlQobGlzdEluZGV4IDwgbV9uYW1lcy5zaXplKCkpOwogCi0gICAgLy8gU2hpZnQgdGhlIHNlcGFy
YXRvciBpbmRleCBpZiBuZWNlc3NhcnkuCi0gICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggIT0gLTEp
Ci0gICAgICAgIG1fc2VwYXJhdG9ySW5kZXgtLTsKKyAgICBtX25hbWVzLnJlbW92ZShsaXN0SW5k
ZXgpOworICAgIG1fbGFiZWxzLnJlbW92ZShsaXN0SW5kZXgpOworICAgIG1faWNvbnMucmVtb3Zl
KGxpc3RJbmRleCk7CisgICAgbV9pdGVtSURzLnJlbW92ZShsaXN0SW5kZXgpOwogfQogCiBib29s
IEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpjYW5SZW1vdmVTdWdnZXN0aW9uQXRJbmRleCh1bnNp
Z25lZCBsaXN0SW5kZXgpCiB7Ci0gICAgLy8gT25seSBhbGxvdyBkZWxldGlvbiBvZiBpdGVtcyBi
ZWZvcmUgdGhlIHNlcGFyYXRvciB0aGF0IGhhdmUgdW5pcXVlIGlkIDAKLSAgICAvLyAoaS5lLiBh
cmUgYXV0b2NvbXBsZXRlIHJhdGhlciB0aGFuIGF1dG9maWxsIGl0ZW1zKS4KLSAgICBpbnQgaW5k
ZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgcmV0
dXJuICFtX3VuaXF1ZUlEc1tpbmRleF0gJiYgKG1fc2VwYXJhdG9ySW5kZXggPT0gLTEgfHwgbGlz
dEluZGV4IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKTsKKyAgICBy
ZXR1cm4gbV9pdGVtSURzW2xpc3RJbmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Ok1lbnVJdGVt
SURBdXRvY29tcGxldGVFbnRyeSB8fCBtX2l0ZW1JRHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmls
bENsaWVudDo6TWVudUl0ZW1JRFBhc3N3b3JkRW50cnk7CiB9CiAKIHZvaWQgQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2
ZW50cykKQEAgLTEzMCwxNSArMTA5LDIyIEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6
OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cykKICAgICBp
ZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3NlcGFyYXRvckluZGV4
ICE9IC0xICYmIGxpc3RJbmRleCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NlcGFyYXRvcklu
ZGV4KSkKLSAgICAgICAgLS1saXN0SW5kZXg7Ci0KICAgICBBU1NFUlQobGlzdEluZGV4IDwgbV9u
YW1lcy5zaXplKCkpOwogCisgICAgaWYgKG1fdXNlTGVnYWN5QmVoYXZpb3IpIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2l0ZW1JRHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChtX2l0ZW1JRHNbaV0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Ok1lbnVJdGVtSURTZXBh
cmF0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAobGlzdEluZGV4ID4gaSkKKyAgICAgICAgICAg
ICAgICAgICAgbGlzdEluZGV4LS07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICB3ZWJWaWV3LT5hdXRvZmlsbENsaWVudCgpLT5k
aWRBY2NlcHRBdXRvZmlsbFN1Z2dlc3Rpb24oV2ViTm9kZShnZXRUZXh0RmllbGQoKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bmFtZXNbbGlzdEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9sYWJlbHNbbGlzdEluZGV4XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91bmlxdWVJRHNb
bGlzdEluZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pdGVtSURzW2xpc3RJbmRleF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJbmRleCk7CiB9CiAK
QEAgLTE0OCwxNSArMTM0LDEyIEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNlbGVj
dGlvbkNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVuCiAgICAgaWYgKCF3
ZWJWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zZXBhcmF0b3JJbmRleCAhPSAt
MSAmJiBsaXN0SW5kZXggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkp
Ci0gICAgICAgIC0tbGlzdEluZGV4OwotCiAgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbmFtZXMu
c2l6ZSgpKTsKIAogICAgIHdlYlZpZXctPmF1dG9maWxsQ2xpZW50KCktPmRpZFNlbGVjdEF1dG9m
aWxsU3VnZ2VzdGlvbihXZWJOb2RlKGdldFRleHRGaWVsZCgpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uYW1lc1tsaXN0SW5k
ZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2xhYmVsc1tsaXN0SW5kZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VuaXF1ZUlEc1tsaXN0SW5kZXhdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pdGVtSURzW2xpc3RJbmRleF0pOwogfQogCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xp
ZW50OjpzZWxlY3Rpb25DbGVhcmVkKCkKQEAgLTIyOCwxNyArMjExLDEyIEBAIHZvaWQgQXV0b2Zp
bGxQb3B1cE1lbnVDbGllbnQ6OnBvcHVwRGlkSGlkZSgpCiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6Oml0ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIChtX3NlcGFyYXRvckluZGV4ICE9IC0xICYmIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NlcGFyYXRvckluZGV4KSA9PSBsaXN0SW5kZXgpOworICAgIHJldHVybiBtX2l0ZW1JRHNb
bGlzdEluZGV4XSA9PSBXZWJBdXRvZmlsbENsaWVudDo6TWVudUl0ZW1JRFNlcGFyYXRvcjsKIH0K
IAogYm9vbCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aXRlbUlzV2FybmluZyh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50
ZXJuYWxJbmRleChsaXN0SW5kZXgpOwotICAgIGlmIChpbmRleCA9PSAtMSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKGluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbmRleCkgPCBtX3VuaXF1ZUlEcy5zaXplKCkpOwotICAgIHJldHVybiBtX3VuaXF1ZUlEc1tp
bmRleF0gPCAwOworICAgIHJldHVybiBtX2l0ZW1JRHNbbGlzdEluZGV4XSA9PSBXZWJBdXRvZmls
bENsaWVudDo6TWVudUl0ZW1JRFdhcm5pbmdNZXNzYWdlOwogfQogCiB2b2lkIEF1dG9maWxsUG9w
dXBNZW51Q2xpZW50OjpzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KQpAQCAtMjY5
LDIwICsyNDcsMzYgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgK
ICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
aWNvbnMsCi0gICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKKyAgICBjb25zdCBX
ZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpCiB7CiAgICAg
QVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJlbHMuc2l6ZSgpKTsKICAgICBBU1NFUlQobmFtZXMu
c2l6ZSgpID09IGljb25zLnNpemUoKSk7Ci0gICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSB1bmlx
dWVJRHMuc2l6ZSgpKTsKLSAgICBBU1NFUlQoc2VwYXJhdG9ySW5kZXggPCBzdGF0aWNfY2FzdDxp
bnQ+KG5hbWVzLnNpemUoKSkpOworICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaXRlbUlEcy5z
aXplKCkpOwogCiAgICAgbV9zZWxlY3RlZEluZGV4ID0gLTE7CiAgICAgbV90ZXh0RmllbGQgPSB0
ZXh0RmllbGQ7CiAKLSAgICAvLyBUaGUgc3VnZ2VzdGlvbnMgbXVzdCBiZSBzZXQgYmVmb3JlIGlu
aXRpYWxpemluZyB0aGUKLSAgICAvLyBBdXRvZmlsbFBvcHVwTWVudUNsaWVudC4KLSAgICBzZXRT
dWdnZXN0aW9ucyhuYW1lcywgbGFiZWxzLCBpY29ucywgdW5pcXVlSURzLCBzZXBhcmF0b3JJbmRl
eCk7CisgICAgaWYgKHNlcGFyYXRvckluZGV4ID09IC0xKSB7CisgICAgICAgIC8vIFRoZSBzdWdn
ZXN0aW9ucyBtdXN0IGJlIHNldCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZQorICAgICAgICAvLyBB
dXRvZmlsbFBvcHVwTWVudUNsaWVudC4KKyAgICAgICAgc2V0U3VnZ2VzdGlvbnMobmFtZXMsIGxh
YmVscywgaWNvbnMsIGl0ZW1JRHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fdXNlTGVnYWN5
QmVoYXZpb3IgPSB0cnVlOworICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBuYW1lc1dpdGhT
ZXBhcmF0b3IobmFtZXMuc2l6ZSgpICsgMSk7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IGxhYmVsc1dpdGhTZXBhcmF0b3IobGFiZWxzLnNpemUoKSArIDEpOworICAgICAgICBXZWJWZWN0
b3I8V2ViU3RyaW5nPiBpY29uc1dpdGhTZXBhcmF0b3IoaWNvbnMuc2l6ZSgpICsgMSk7CisgICAg
ICAgIFdlYlZlY3RvcjxpbnQ+IGl0ZW1JRHNXaXRoU2VwYXJhdG9yKGl0ZW1JRHMuc2l6ZSgpICsg
MSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIHNpemVfdCBqID0gaSA8IHN0YXRpY19jYXN0PHNpemVfdD4oc2VwYXJhdG9y
SW5kZXgpID8gaSA6IGkgKyAxOworICAgICAgICAgICAgbmFtZXNXaXRoU2VwYXJhdG9yW2pdID0g
bmFtZXNbaV07CisgICAgICAgICAgICBsYWJlbHNXaXRoU2VwYXJhdG9yW2pdID0gbGFiZWxzW2ld
OworICAgICAgICAgICAgaWNvbnNXaXRoU2VwYXJhdG9yW2pdID0gaWNvbnNbaV07CisgICAgICAg
ICAgICBpdGVtSURzV2l0aFNlcGFyYXRvcltqXSA9IGl0ZW1JRHNbaV07CisgICAgICAgIH0KKyAg
ICAgICAgaXRlbUlEc1dpdGhTZXBhcmF0b3Jbc2VwYXJhdG9ySW5kZXhdID0gV2ViQXV0b2ZpbGxD
bGllbnQ6Ok1lbnVJdGVtSURTZXBhcmF0b3I7CisgICAgICAgIHNldFN1Z2dlc3Rpb25zKG5hbWVz
V2l0aFNlcGFyYXRvciwgbGFiZWxzV2l0aFNlcGFyYXRvciwgaWNvbnNXaXRoU2VwYXJhdG9yLCBp
dGVtSURzV2l0aFNlcGFyYXRvcik7CisgICAgfQogCiAgICAgRm9udERlc2NyaXB0aW9uIHJlZ3Vs
YXJGb250RGVzY3JpcHRpb247CiAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0
ZW1Gb250KENTU1ZhbHVlV2Via2l0Q29udHJvbCwKQEAgLTMxMyw0MiArMzA3LDI4IEBAIHZvaWQg
QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUoCiB2b2lkIEF1dG9maWxsUG9wdXBN
ZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyhjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFt
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9y
PGludD4mIHVuaXF1ZUlEcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzZXBhcmF0b3JJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzKQogewogICAgIEFT
U0VSVChuYW1lcy5zaXplKCkgPT0gbGFiZWxzLnNpemUoKSk7CiAgICAgQVNTRVJUKG5hbWVzLnNp
emUoKSA9PSBpY29ucy5zaXplKCkpOwotICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gdW5pcXVl
SURzLnNpemUoKSk7Ci0gICAgQVNTRVJUKHNlcGFyYXRvckluZGV4IDwgc3RhdGljX2Nhc3Q8aW50
PihuYW1lcy5zaXplKCkpKTsKKyAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGl0ZW1JRHMuc2l6
ZSgpKTsKIAogICAgIG1fbmFtZXMuY2xlYXIoKTsKICAgICBtX2xhYmVscy5jbGVhcigpOwogICAg
IG1faWNvbnMuY2xlYXIoKTsKLSAgICBtX3VuaXF1ZUlEcy5jbGVhcigpOworICAgIG1faXRlbUlE
cy5jbGVhcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgbV9uYW1lcy5hcHBlbmQobmFtZXNbaV0pOwogICAgICAgICBtX2xhYmVscy5h
cHBlbmQobGFiZWxzW2ldKTsKICAgICAgICAgbV9pY29ucy5hcHBlbmQoaWNvbnNbaV0pOwotICAg
ICAgICBtX3VuaXF1ZUlEcy5hcHBlbmQodW5pcXVlSURzW2ldKTsKKyAgICAgICAgbV9pdGVtSURz
LmFwcGVuZChpdGVtSURzW2ldKTsKICAgICB9CiAKLSAgICBtX3NlcGFyYXRvckluZGV4ID0gc2Vw
YXJhdG9ySW5kZXg7Ci0KICAgICAvLyBUcnkgdG8gcHJlc2VydmUgc2VsZWN0aW9uIGlmIHBvc3Np
YmxlLgogICAgIGlmIChnZXRTZWxlY3RlZEluZGV4KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihuYW1l
cy5zaXplKCkpKQogICAgICAgICBzZXRTZWxlY3RlZEluZGV4KC0xKTsKIH0KIAotaW50IEF1dG9m
aWxsUG9wdXBNZW51Q2xpZW50Ojpjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KHVuc2ln
bmVkIGxpc3RJbmRleCkgY29uc3QKLXsKLSAgICBpZiAobGlzdEluZGV4ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAg
aWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gLTEgfHwgbGlzdEluZGV4IDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICByZXR1cm4gbGlzdEluZGV4OwotICAg
IHJldHVybiBsaXN0SW5kZXggLSAxOwotfQotCiBXZWJWaWV3SW1wbCogQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmdldFdlYlZpZXcoKSBjb25zdAogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fdGV4
dEZpZWxkLT5kb2N1bWVudCgpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgKaW5kZXggNzNjYzE4MC4uNTg4ZTE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVw
TWVudUNsaWVudC5oCkBAIC0xMDYsMjAgKzEwNiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKICAgICAgICAgICAgICAgICAgICAgaW50
IHNlcGFyYXRvckluZGV4KTsKIAogICAgIHZvaWQgc2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
VmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVj
dG9yPGludD4mIGl0ZW1JRHMpOwogCiBwcml2YXRlOgotICAgIC8vIENvbnZlcnQgdGhlIHNwZWNp
ZmllZCBpbmRleCBmcm9tIGFuIGluZGV4IGludG8gdGhlIHZpc2libGUgbGlzdCAod2hpY2ggbWln
aHQKLSAgICAvLyBpbmNsdWRlIGEgc2VwYXJhdG9yIGVudHJ5KSB0byBhbiBpbmRleCB0byB8bV9u
YW1lc3wgYW5kIHxtX2xhYmVsc3wuCi0gICAgLy8gUmV0dXJucyAtMSBpZiB0aGUgZ2l2ZW4gaW5k
ZXggcG9pbnRzIHRvIHRoZSBzZXBhcmF0b3IuCi0gICAgaW50IGNvbnZlcnRMaXN0SW5kZXhUb0lu
dGVybmFsSW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAgIFdlYlZpZXdJbXBsKiBnZXRXZWJWaWV3
KCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogZ2V0VGV4dEZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RmllbGQuZ2V0KCk7IH0KICAgICBXZWJDb3JlOjpSZW5kZXJT
dHlsZSogdGV4dEZpZWxkU3R5bGUoKSBjb25zdDsKQEAgLTEzMywxMCArMTI4LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbmFtZXM7CiAgICAgVmVjdG9yPFdURjo6U3Ry
aW5nPiBtX2xhYmVsczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1faWNvbnM7Ci0gICAgVmVj
dG9yPGludD4gbV91bmlxdWVJRHM7Ci0KLSAgICAvLyBUaGUgaW5kZXggb2YgdGhlIHNlcGFyYXRv
ci4gIC0xIGlmIHRoZXJlIGlzIG5vIHNlcGFyYXRvci4KLSAgICBpbnQgbV9zZXBhcmF0b3JJbmRl
eDsKKyAgICBWZWN0b3I8aW50PiBtX2l0ZW1JRHM7CiAKICAgICAvLyBUaGUgaW5kZXggb2YgdGhl
IHNlbGVjdGVkIGl0ZW0uICAtMSBpZiB0aGVyZSBpcyBubyBzZWxlY3RlZCBpdGVtLgogICAgIGlu
dCBtX3NlbGVjdGVkSW5kZXg7CkBAIC0xNDQsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4gbV90ZXh0RmllbGQ7CiAgICAgT3duUHRyPFdl
YkNvcmU6OlBvcHVwTWVudVN0eWxlPiBtX3JlZ3VsYXJTdHlsZTsKICAgICBPd25QdHI8V2ViQ29y
ZTo6UG9wdXBNZW51U3R5bGU+IG1fd2FybmluZ1N0eWxlOworCisgICAgLy8gVXNlIGxlZ2FjeSBi
ZWhhdmlvciB3aGlsZSB0aGUgY2hyb21pdW0gc2lkZSBoYXNuJ3QgYmVlbiB1cGRhdGVkLgorICAg
IGJvb2wgbV91c2VMZWdhY3lCZWhhdmlvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDYyNjg4MzAu
LmMyYmJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTI3NDAsMTIgKzI3NDAsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvZmlsbFN1
Z2dlc3Rpb25zKAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbGFiZWxzLAogICAgIGNvbnN0IFdlYlZlY3RvcjxX
ZWJTdHJpbmc+JiBpY29ucywKLSAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAor
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgIGludCBzZXBhcmF0b3JJbmRl
eCkKIHsKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGxhYmVscy5zaXplKCkpOwotICAgIEFT
U0VSVChuYW1lcy5zaXplKCkgPT0gdW5pcXVlSURzLnNpemUoKSk7Ci0gICAgQVNTRVJUKHNlcGFy
YXRvckluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihuYW1lcy5zaXplKCkpKTsKKyAgICBBU1NFUlQo
bmFtZXMuc2l6ZSgpID09IGl0ZW1JRHMuc2l6ZSgpKTsKIAogICAgIGlmIChuYW1lcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgaGlkZUF1dG9maWxsUG9wdXAoKTsKQEAgLTI3NzAsNyArMjc2OSw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b2ZpbGxTdWdnZXN0aW9ucygKICAgICAgICAgbV9h
dXRvZmlsbFBvcHVwQ2xpZW50ID0gYWRvcHRQdHIobmV3IEF1dG9maWxsUG9wdXBNZW51Q2xpZW50
KTsKIAogICAgIG1fYXV0b2ZpbGxQb3B1cENsaWVudC0+aW5pdGlhbGl6ZSgKLSAgICAgICAgaW5w
dXRFbGVtLCBuYW1lcywgbGFiZWxzLCBpY29ucywgdW5pcXVlSURzLCBzZXBhcmF0b3JJbmRleCk7
CisgICAgICAgIGlucHV0RWxlbSwgbmFtZXMsIGxhYmVscywgaWNvbnMsIGl0ZW1JRHMsIHNlcGFy
YXRvckluZGV4KTsKIAogICAgIGlmICghbV9hdXRvZmlsbFBvcHVwKSB7CiAgICAgICAgIFBvcHVw
Q29udGFpbmVyU2V0dGluZ3MgcG9wdXBTZXR0aW5ncyA9IGF1dG9maWxsUG9wdXBTZXR0aW5nczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDMyMzc5ZGQuLjk4
MWY2MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI0
OSw3ICsyNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+
JiBuYW1lcywKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAg
ICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgICAgICBjb25zdCBX
ZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAorICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYg
aXRlbUlEcywKICAgICAgICAgaW50IHNlcGFyYXRvckluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQg
aGlkZVBvcHVwcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnModW5zaWdu
ZWQgaW5hY3RpdmVDb2xvciwK
</data>
<flag name="commit-queue"
          id="142274"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137274</attachid>
            <date>2012-04-15 21:22:51 -0700</date>
            <delta_ts>2012-04-15 22:22:14 -0700</delta_ts>
            <desc>Fixed ChangeLog</desc>
            <filename>datalist-menu.diff</filename>
            <type>text/plain</type>
            <size>19702</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmUwYWU4ZS4uNTQwNGU4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wNC0xNSAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgTWVudUl0ZW1J
RCB0byBhdXRvZmlsbCBwb3B1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NzcKKworICAgICAgICBJbnRyb2R1Y2luZyBNZW51SXRlbUlEcyBiZWNh
dXNlIHdlIHdhbnQgdG8gYWRkIG11bHRpcGxlIHNlcGFyYXRvcnMgYW5kCisgICAgICAgIG5lZWQg
dG8gaWRlbnRpZnkgbm9uLWF1dG9maWxsIG1lbnUgaXRlbXMgd2l0aG91dCByZXNvcnRpbmcgdG8g
dGhlIHNlcGFyYXRvciBwb3NpdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvZmlsbENsaWVudDo6ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKTogQ2hh
bmdlZCB1bmlxdWVJRCB0byBpdGVtSUQgYmVjYXVzZSB0aGV5IGFyZW4ndCB1bmlxdWUuCisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9maWxsQ2xpZW50OjpkaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rp
b24pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAg
ICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Z2V0U3VnZ2VzdGlvbnNDb3Vu
dCk6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRTdWdnZXN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldExhYmVs
KToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldEljb24pOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6cmVtb3ZlU3VnZ2VzdGlv
bkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Y2Fu
UmVtb3ZlU3VnZ2VzdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVw
TWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6QXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQ6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmls
bFBvcHVwTWVudUNsaWVudDo6aXRlbUlzU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc1dhcm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkF1
dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyk6CisgICAgICAgICogc3JjL0F1
dG9maWxsUG9wdXBNZW51Q2xpZW50Lmg6ICBSZW1vdmVkIG1fc2VwYXJhdG9ySW5kZXggYmVjYXVz
ZSBub3cgd2UgdXNlIGl0ZW1JRCB0byBpZGVudGlmeSBzZXBhcmF0b3JzLgorICAgICAgICBBZGRl
ZCBtX3VzZUxlZ2FjeUJlaGF2aW9yIHdoaWNoIGlzIHRydWUgd2hlbiBpdCBpcyBpbml0aWFsaXpl
ZCB3aXRoIGEgdmFsaWQgc2VwYXJhdG9yIGluZGV4LiBUaGlzIGlzIHRvIGtlZXAKKyAgICAgICAg
dGhlIGF1dG9maWxsIHdvcmtpbmcgZXZlbiB3aGVuIHRoZSBjaHJvbWl1bSBzaWRlIGhhc24ndCBi
ZWVuIHVwZGF0ZWQgeWV0LgorICAgICAgICAoQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjphcHBseUF1dG9maWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA0LTE1ICBZdXRhIEtpdGFtdXJhICA8
eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExlYWsgaW4gV2ViU29ja2V0Q2hhbm5lbCB3
aXRoIHdvcmtlcnMvd29ya2VyLXJlbG9hZC5odG1sIChwYXJ0IDIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRvZmlsbENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXV0b2ZpbGxDbGllbnQuaAppbmRleCA1ODI0ZjE3Li43
YjQ4ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdXRv
ZmlsbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF1dG9m
aWxsQ2xpZW50LmgKQEAgLTQwLDE2ICs0MCwyNiBAQCBjbGFzcyBXZWJTdHJpbmc7CiAKIGNsYXNz
IFdlYkF1dG9maWxsQ2xpZW50IHsKIHB1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgTWVudUl0
ZW1JREF1dG9jb21wbGV0ZUVudHJ5ID0gMCwKKyAgICAgICAgTWVudUl0ZW1JRFdhcm5pbmdNZXNz
YWdlID0gLTEsCisgICAgICAgIE1lbnVJdGVtSURQYXNzd29yZEVudHJ5ID0gLTIsCisgICAgICAg
IE1lbnVJdGVtSURTZXBhcmF0b3IgPSAtMywKKyAgICAgICAgTWVudUl0ZW1JRENsZWFyRm9ybSA9
IC00LAorICAgICAgICBNZW51SXRlbUlEQXV0b2ZpbGxPcHRpb25zID0gLTUsCisgICAgICAgIE1l
bnVJdGVtSUREYXRhTGlzdEVudHJ5ID0gLTYKKyAgICB9OworCiAgICAgLy8gSW5mb3JtcyB0aGUg
YnJvd3NlciB0aGF0IHRoZSB1c2VyIGhhcyBhY2NlcHRlZCBhbiBBdXRvZmlsbCBzdWdnZXN0aW9u
IGZvcgotICAgIC8vIGEgV2ViTm9kZS4gIHx1bmlxdWVJRHwgaXMgdXNlZCBhcyBhIGtleSBpbnRv
IHRoZSBzZXQgb2YgQXV0b2ZpbGwgcHJvZmlsZXMsCi0gICAgLy8gYW5kIHNob3VsZCBuZXZlciBi
ZSBuZWdhdGl2ZS4gIElmIGl0IGlzIDAsIHRoZW4gdGhlIHN1Z2dlc3Rpb24gaXMgYW4KLSAgICAv
LyBBdXRvY29tcGxldGUgc3VnZ2VzdGlvbjsgYW5kIHx2YWx1ZXwgc3RvcmVzIHRoZSBzdWdnZXN0
ZWQgdGV4dC4gIHxpbmRleHwKLSAgICAvLyBpcyBhbiBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgc3Vn
Z2VzdGlvbiBpbiB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyBwcm92aWRlZAotICAgIC8vIGJ5IHRo
ZSBjbGllbnQuCisgICAgLy8gYSBXZWJOb2RlLiBBIHBvc2l0aXZlIHxpdGVtSUR8IGlzIGEgdW5p
cXVlIGlkIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNldAorICAgIC8vIG9mIEF1dG9maWxsIHByb2Zp
bGVzLiBJZiBpdCBpcyBBdXRvY29tcGxldGVFbnRyeU1lbnVJdGVtSUQsIHRoZW4gdGhlCisgICAg
Ly8gc3VnZ2VzdGlvbiBpcyBhbiBBdXRvY29tcGxldGUgc3VnZ2VzdGlvbjsgYW5kIHx2YWx1ZXwg
c3RvcmVzIHRoZQorICAgIC8vIHN1Z2dlc3RlZCB0ZXh0LiB8aW5kZXh8IGlzIGFuIGluZGV4IG9m
IHRoZSBzZWxlY3RlZCBzdWdnZXN0aW9uIGluIHRoZQorICAgIC8vIGxpc3Qgb2Ygc3VnZ2VzdGlv
bnMgcHJvdmlkZWQgYnkgdGhlIGNsaWVudC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQWNjZXB0QXV0
b2ZpbGxTdWdnZXN0aW9uKGNvbnN0IFdlYk5vZGUmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbGFiZWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW5pcXVl
SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXRl
bUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW5kZXgpIHsgfQogCiAgICAgLy8gSW5mb3JtcyB0aGUgYnJvd3NlciB0aGF0IHRoZSB1c2Vy
IGhhcyBzZWxlY3RlZCBhbiBBdXRvZmlsbCBzdWdnZXN0aW9uIGZvcgpAQCAtNTgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbGVjdEF1dG9maWxsU3VnZ2VzdGlvbihj
b25zdCBXZWJOb2RlJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW5pcXVlSUQpIHsgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZW1JRCkgeyB9CiAKICAg
ICAvLyBJbmZvcm1zIHRoZSBicm93c2VyIHRoYXQgdGhlIHVzZXIgaGFzIGNsZWFyZWQgdGhlIHNl
bGVjdGlvbiBmcm9tIHRoZQogICAgIC8vIEF1dG9maWxsIHN1Z2dlc3Rpb25zIHBvcHVwLiBUaGlz
IGhhcHBlbnMgd2hlbiBhIHVzZXIgdXNlcyB0aGUgYXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaAppbmRleCAxZGZhM2E2Li5iYWQ4YjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0zNTAsMTkgKzM1MCwxNiBAQCBwdWJsaWM6CiAg
ICAgLy8gQXV0b2ZpbGwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBOb3RpZmllcyB0aGUgV2ViVmlldyB0aGF0IEF1
dG9maWxsIHN1Z2dlc3Rpb25zIGFyZSBhdmFpbGFibGUgZm9yIGEgbm9kZS4KLSAgICAvLyB8dW5p
cXVlSURzfCBpcyBhIHZlY3RvciBvZiBJRHMgdGhhdCByZXByZXNlbnQgdGhlIHVuaXF1ZSBJRCBv
ZiBlYWNoCi0gICAgLy8gQXV0b2ZpbGwgcHJvZmlsZSBpbiB0aGUgc3VnZ2VzdGlvbnMgcG9wdXAu
IElmIGEgdW5pcXVlIElEIGlzIDAsIHRoZW4gdGhlCi0gICAgLy8gY29ycmVzcG9uZGluZyBzdWdn
ZXN0aW9uIGNvbWVzIGZyb20gQXV0b2NvbXBsZXRlIHJhdGhlciB0aGFuIEF1dG9maWxsLgotICAg
IC8vIElmIGEgdW5pcXVlIElEIGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nICJz
dWdnZXN0aW9uIiBpcwotICAgIC8vIGFjdHVhbGx5IGEgdXNlci1mYWNpbmcgd2FybmluZywgZS5n
LiBleHBsYWluaW5nIHdoeSBBdXRvZmlsbCBpcwotICAgIC8vIHVuYXZhaWxhYmxlIGZvciB0aGUg
Y3VycmVudCBmb3JtLgorICAgIC8vIHxpdGVtSURzfCBpcyBhIHZlY3RvciBvZiBJRHMgZm9yIHRo
ZSBtZW51IGl0ZW1zLiBBIHBvc2l0aXZlIGl0ZW1JRCBpcyBhCisgICAgLy8gdW5pcXVlIElEIGZv
ciB0aGUgQXV0b2ZpbGwgZW50cmllcy4gT3RoZXIgTWVudUl0ZW1JRHMgYXJlIGRlZmluZWQgaW4K
KyAgICAvLyBXZWJBdXRvZmlsbENsaWVudC5oCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5QXV0b2Zp
bGxTdWdnZXN0aW9ucygKICAgICAgICAgY29uc3QgV2ViTm9kZSYsCiAgICAgICAgIGNvbnN0IFdl
YlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0
cmluZz4mIGxhYmVscywKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGljb25z
LAotICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAgICBpbnQg
c2VwYXJhdG9ySW5kZXgpID0gMDsKKyAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1J
RHMsCisgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCA9IC0xKSA9IDA7CiAKICAgICAvLyBIaWRl
cyBhbnkgcG9wdXAgKHN1Z2dlc3Rpb25zLCBzZWxlY3RzLi4uKSB0aGF0IG1pZ2h0IGJlIHNob3dp
bmcuCiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cHMoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKaW5kZXgg
Yzg0ZWExMi4uMjhhN2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcApAQCAtNTIsOSArNTIsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudDo6QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQoKQotICAgIDogbV9zZXBhcmF0b3JJbmRl
eCgtMSkKLSAgICAsIG1fc2VsZWN0ZWRJbmRleCgtMSkKKyAgICA6IG1fc2VsZWN0ZWRJbmRleCgt
MSkKICAgICAsIG1fdGV4dEZpZWxkKDApCisgICAgLCBtX3VzZUxlZ2FjeUJlaGF2aW9yKGZhbHNl
KQogewogfQogCkBAIC02NCwzNyArNjQsMjUgQEAgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6On5B
dXRvZmlsbFBvcHVwTWVudUNsaWVudCgpCiAKIHVuc2lnbmVkIEF1dG9maWxsUG9wdXBNZW51Q2xp
ZW50OjpnZXRTdWdnZXN0aW9uc0NvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9uYW1lcy5z
aXplKCkgKyAoKG1fc2VwYXJhdG9ySW5kZXggPT0gLTEpID8gMCA6IDEpOworICAgIHJldHVybiBt
X25hbWVzLnNpemUoKTsKIH0KIAogV2ViU3RyaW5nIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpn
ZXRTdWdnZXN0aW9uKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBpbnQgaW5kZXgg
PSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgaWYgKGlu
ZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQoaW5k
ZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1fbmFtZXMuc2l6ZSgpKTsK
LSAgICByZXR1cm4gbV9uYW1lc1tpbmRleF07CisgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbmFt
ZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9uYW1lc1tsaXN0SW5kZXhdOwogfQogCiBXZWJTdHJp
bmcgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OmdldExhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkg
Y29uc3QKIHsKLSAgICBpbnQgaW5kZXggPSBjb252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4
KGxpc3RJbmRleCk7Ci0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV2ViU3Ry
aW5nKCk7Ci0KLSAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
ZGV4KSA8IG1fbGFiZWxzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1fbGFiZWxzW2luZGV4XTsKKyAg
ICBBU1NFUlQobGlzdEluZGV4IDwgbV9sYWJlbHMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbV9sYWJl
bHNbbGlzdEluZGV4XTsKIH0KIAogV2ViU3RyaW5nIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpn
ZXRJY29uKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBpbnQgaW5kZXggPSBjb252
ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KGxpc3RJbmRleCk7Ci0gICAgaWYgKGluZGV4ID09
IC0xKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQoaW5kZXggPj0g
MCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1faWNvbnMuc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gbV9pY29uc1tpbmRleF07CisgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1faWNvbnMuc2l6
ZSgpKTsKKyAgICByZXR1cm4gbV9pY29uc1tsaXN0SW5kZXhdOwogfQogCiB2b2lkIEF1dG9maWxs
UG9wdXBNZW51Q2xpZW50OjpyZW1vdmVTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5k
ZXgpCkBAIC0xMDIsMjYgKzkwLDE3IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6OnJl
bW92ZVN1Z2dlc3Rpb25BdEluZGV4KHVuc2lnbmVkIGxpc3RJbmRleCkKICAgICBpZiAoIWNhblJl
bW92ZVN1Z2dlc3Rpb25BdEluZGV4KGxpc3RJbmRleCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGludCBpbmRleCA9IGNvbnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsK
LQotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDwgbV9uYW1lcy5zaXpl
KCkpOwotCi0gICAgbV9uYW1lcy5yZW1vdmUoaW5kZXgpOwotICAgIG1fbGFiZWxzLnJlbW92ZShp
bmRleCk7Ci0gICAgbV9pY29ucy5yZW1vdmUoaW5kZXgpOwotICAgIG1fdW5pcXVlSURzLnJlbW92
ZShpbmRleCk7CisgICAgQVNTRVJUKGxpc3RJbmRleCA8IG1fbmFtZXMuc2l6ZSgpKTsKIAotICAg
IC8vIFNoaWZ0IHRoZSBzZXBhcmF0b3IgaW5kZXggaWYgbmVjZXNzYXJ5LgotICAgIGlmIChtX3Nl
cGFyYXRvckluZGV4ICE9IC0xKQotICAgICAgICBtX3NlcGFyYXRvckluZGV4LS07CisgICAgbV9u
YW1lcy5yZW1vdmUobGlzdEluZGV4KTsKKyAgICBtX2xhYmVscy5yZW1vdmUobGlzdEluZGV4KTsK
KyAgICBtX2ljb25zLnJlbW92ZShsaXN0SW5kZXgpOworICAgIG1faXRlbUlEcy5yZW1vdmUobGlz
dEluZGV4KTsKIH0KIAogYm9vbCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Y2FuUmVtb3ZlU3Vn
Z2VzdGlvbkF0SW5kZXgodW5zaWduZWQgbGlzdEluZGV4KQogewotICAgIC8vIE9ubHkgYWxsb3cg
ZGVsZXRpb24gb2YgaXRlbXMgYmVmb3JlIHRoZSBzZXBhcmF0b3IgdGhhdCBoYXZlIHVuaXF1ZSBp
ZCAwCi0gICAgLy8gKGkuZS4gYXJlIGF1dG9jb21wbGV0ZSByYXRoZXIgdGhhbiBhdXRvZmlsbCBp
dGVtcykuCi0gICAgaW50IGluZGV4ID0gY29udmVydExpc3RJbmRleFRvSW50ZXJuYWxJbmRleChs
aXN0SW5kZXgpOwotICAgIHJldHVybiAhbV91bmlxdWVJRHNbaW5kZXhdICYmIChtX3NlcGFyYXRv
ckluZGV4ID09IC0xIHx8IGxpc3RJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NlcGFy
YXRvckluZGV4KSk7CisgICAgcmV0dXJuIG1faXRlbUlEc1tsaXN0SW5kZXhdID09IFdlYkF1dG9m
aWxsQ2xpZW50OjpNZW51SXRlbUlEQXV0b2NvbXBsZXRlRW50cnkgfHwgbV9pdGVtSURzW2xpc3RJ
bmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Ok1lbnVJdGVtSURQYXNzd29yZEVudHJ5OwogfQog
CiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojp2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlz
dEluZGV4LCBib29sIGZpcmVFdmVudHMpCkBAIC0xMzAsMTUgKzEwOSwyMiBAQCB2b2lkIEF1dG9m
aWxsUG9wdXBNZW51Q2xpZW50Ojp2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29s
IGZpcmVFdmVudHMpCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSAmJiBsaXN0SW5kZXggPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAgIC0tbGlzdEluZGV4OwotCiAgICAgQVNT
RVJUKGxpc3RJbmRleCA8IG1fbmFtZXMuc2l6ZSgpKTsKIAorICAgIGlmIChtX3VzZUxlZ2FjeUJl
aGF2aW9yKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pdGVtSURzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9pdGVtSURzW2ldID09IFdlYkF1dG9maWxsQ2xp
ZW50OjpNZW51SXRlbUlEU2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKGxpc3RJbmRl
eCA+IGkpCisgICAgICAgICAgICAgICAgICAgIGxpc3RJbmRleC0tOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgd2ViVmlldy0+
YXV0b2ZpbGxDbGllbnQoKS0+ZGlkQWNjZXB0QXV0b2ZpbGxTdWdnZXN0aW9uKFdlYk5vZGUoZ2V0
VGV4dEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX25hbWVzW2xpc3RJbmRleF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFiZWxzW2xpc3RJbmRl
eF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdW5pcXVlSURzW2xpc3RJbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faXRlbUlEc1tsaXN0SW5kZXhdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0SW5kZXgpOwogfQogCkBAIC0xNDgsMTUgKzEzNCwxMiBAQCB2b2lkIEF1dG9maWxsUG9w
dXBNZW51Q2xpZW50OjpzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBm
aXJlRXZlbgogICAgIGlmICghd2ViVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
c2VwYXJhdG9ySW5kZXggIT0gLTEgJiYgbGlzdEluZGV4ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2VwYXJhdG9ySW5kZXgpKQotICAgICAgICAtLWxpc3RJbmRleDsKLQogICAgIEFTU0VSVChs
aXN0SW5kZXggPCBtX25hbWVzLnNpemUoKSk7CiAKICAgICB3ZWJWaWV3LT5hdXRvZmlsbENsaWVu
dCgpLT5kaWRTZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb24oV2ViTm9kZShnZXRUZXh0RmllbGQoKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbmFtZXNbbGlzdEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYWJlbHNbbGlzdEluZGV4XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91bmlx
dWVJRHNbbGlzdEluZGV4XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faXRlbUlEc1tsaXN0SW5kZXhdKTsKIH0KIAogdm9pZCBB
dXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2VsZWN0aW9uQ2xlYXJlZCgpCkBAIC0yMjgsMTcgKzIx
MSwxMiBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojpwb3B1cERpZEhpZGUoKQogCiBi
b29sIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjppdGVtSXNTZXBhcmF0b3IodW5zaWduZWQgbGlz
dEluZGV4KSBjb25zdAogewotICAgIHJldHVybiAobV9zZXBhcmF0b3JJbmRleCAhPSAtMSAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkgPT0gbGlzdEluZGV4KTsKKyAg
ICByZXR1cm4gbV9pdGVtSURzW2xpc3RJbmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Ok1lbnVJ
dGVtSURTZXBhcmF0b3I7CiB9CiAKIGJvb2wgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6Oml0ZW1J
c1dhcm5pbmcodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewotICAgIGludCBpbmRleCA9IGNv
bnZlcnRMaXN0SW5kZXhUb0ludGVybmFsSW5kZXgobGlzdEluZGV4KTsKLSAgICBpZiAoaW5kZXgg
PT0gLTEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChpbmRleCA+PSAwICYm
IHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbV91bmlxdWVJRHMuc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gbV91bmlxdWVJRHNbaW5kZXhdIDwgMDsKKyAgICByZXR1cm4gbV9pdGVtSURzW2xpc3RJ
bmRleF0gPT0gV2ViQXV0b2ZpbGxDbGllbnQ6Ok1lbnVJdGVtSURXYXJuaW5nTWVzc2FnZTsKIH0K
IAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0VGV4dEZyb21JdGVtKHVuc2lnbmVk
IGxpc3RJbmRleCkKQEAgLTI2OSwyMCArMjQ3LDM2IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQ6OmluaXRpYWxpemUoCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVz
LAogICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgY29uc3QgV2Vi
VmVjdG9yPFdlYlN0cmluZz4mIGljb25zLAotICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlx
dWVJRHMsCisgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMsCiAgICAgaW50IHNlcGFy
YXRvckluZGV4KQogewogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gbGFiZWxzLnNpemUoKSk7
CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpY29ucy5zaXplKCkpOwotICAgIEFTU0VSVChu
YW1lcy5zaXplKCkgPT0gdW5pcXVlSURzLnNpemUoKSk7Ci0gICAgQVNTRVJUKHNlcGFyYXRvcklu
ZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihuYW1lcy5zaXplKCkpKTsKKyAgICBBU1NFUlQobmFtZXMu
c2l6ZSgpID09IGl0ZW1JRHMuc2l6ZSgpKTsKIAogICAgIG1fc2VsZWN0ZWRJbmRleCA9IC0xOwog
ICAgIG1fdGV4dEZpZWxkID0gdGV4dEZpZWxkOwogCi0gICAgLy8gVGhlIHN1Z2dlc3Rpb25zIG11
c3QgYmUgc2V0IGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCi0gICAgLy8gQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQuCi0gICAgc2V0U3VnZ2VzdGlvbnMobmFtZXMsIGxhYmVscywgaWNvbnMsIHVuaXF1
ZUlEcywgc2VwYXJhdG9ySW5kZXgpOworICAgIGlmIChzZXBhcmF0b3JJbmRleCA9PSAtMSkgewor
ICAgICAgICAvLyBUaGUgc3VnZ2VzdGlvbnMgbXVzdCBiZSBzZXQgYmVmb3JlIGluaXRpYWxpemlu
ZyB0aGUKKyAgICAgICAgLy8gQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuCisgICAgICAgIHNldFN1
Z2dlc3Rpb25zKG5hbWVzLCBsYWJlbHMsIGljb25zLCBpdGVtSURzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX3VzZUxlZ2FjeUJlaGF2aW9yID0gdHJ1ZTsKKyAgICAgICAgV2ViVmVjdG9yPFdl
YlN0cmluZz4gbmFtZXNXaXRoU2VwYXJhdG9yKG5hbWVzLnNpemUoKSArIDEpOworICAgICAgICBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiBsYWJlbHNXaXRoU2VwYXJhdG9yKGxhYmVscy5zaXplKCkgKyAx
KTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gaWNvbnNXaXRoU2VwYXJhdG9yKGljb25z
LnNpemUoKSArIDEpOworICAgICAgICBXZWJWZWN0b3I8aW50PiBpdGVtSURzV2l0aFNlcGFyYXRv
cihpdGVtSURzLnNpemUoKSArIDEpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5h
bWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBzaXplX3QgaiA9IGkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNlcGFyYXRvckluZGV4KSA/IGkgOiBpICsgMTsKKyAgICAgICAgICAgIG5hbWVz
V2l0aFNlcGFyYXRvcltqXSA9IG5hbWVzW2ldOworICAgICAgICAgICAgbGFiZWxzV2l0aFNlcGFy
YXRvcltqXSA9IGxhYmVsc1tpXTsKKyAgICAgICAgICAgIGljb25zV2l0aFNlcGFyYXRvcltqXSA9
IGljb25zW2ldOworICAgICAgICAgICAgaXRlbUlEc1dpdGhTZXBhcmF0b3Jbal0gPSBpdGVtSURz
W2ldOworICAgICAgICB9CisgICAgICAgIGl0ZW1JRHNXaXRoU2VwYXJhdG9yW3NlcGFyYXRvcklu
ZGV4XSA9IFdlYkF1dG9maWxsQ2xpZW50OjpNZW51SXRlbUlEU2VwYXJhdG9yOworICAgICAgICBz
ZXRTdWdnZXN0aW9ucyhuYW1lc1dpdGhTZXBhcmF0b3IsIGxhYmVsc1dpdGhTZXBhcmF0b3IsIGlj
b25zV2l0aFNlcGFyYXRvciwgaXRlbUlEc1dpdGhTZXBhcmF0b3IpOworICAgIH0KIAogICAgIEZv
bnREZXNjcmlwdGlvbiByZWd1bGFyRm9udERlc2NyaXB0aW9uOwogICAgIFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChDU1NWYWx1ZVdlYmtpdENvbnRyb2wsCkBAIC0zMTMs
NDIgKzMwNywyOCBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAog
dm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIG5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBpY29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiB1bmlxdWVJRHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYg
aXRlbUlEcykKIHsKICAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGxhYmVscy5zaXplKCkpOwog
ICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWNvbnMuc2l6ZSgpKTsKLSAgICBBU1NFUlQobmFt
ZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkpOwotICAgIEFTU0VSVChzZXBhcmF0b3JJbmRl
eCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSk7CisgICAgQVNTRVJUKG5hbWVzLnNp
emUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAKICAgICBtX25hbWVzLmNsZWFyKCk7CiAgICAgbV9s
YWJlbHMuY2xlYXIoKTsKICAgICBtX2ljb25zLmNsZWFyKCk7Ci0gICAgbV91bmlxdWVJRHMuY2xl
YXIoKTsKKyAgICBtX2l0ZW1JRHMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5hbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIG1fbmFtZXMuYXBwZW5kKG5hbWVzW2ldKTsK
ICAgICAgICAgbV9sYWJlbHMuYXBwZW5kKGxhYmVsc1tpXSk7CiAgICAgICAgIG1faWNvbnMuYXBw
ZW5kKGljb25zW2ldKTsKLSAgICAgICAgbV91bmlxdWVJRHMuYXBwZW5kKHVuaXF1ZUlEc1tpXSk7
CisgICAgICAgIG1faXRlbUlEcy5hcHBlbmQoaXRlbUlEc1tpXSk7CiAgICAgfQogCi0gICAgbV9z
ZXBhcmF0b3JJbmRleCA9IHNlcGFyYXRvckluZGV4OwotCiAgICAgLy8gVHJ5IHRvIHByZXNlcnZl
IHNlbGVjdGlvbiBpZiBwb3NzaWJsZS4KICAgICBpZiAoZ2V0U2VsZWN0ZWRJbmRleCgpID49IHN0
YXRpY19jYXN0PGludD4obmFtZXMuc2l6ZSgpKSkKICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCgt
MSk7CiB9CiAKLWludCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6Y29udmVydExpc3RJbmRleFRv
SW50ZXJuYWxJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKGxpc3RJ
bmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zZXBhcmF0b3JJbmRleCkpCi0gICAgICAg
IHJldHVybiAtMTsKLQotICAgIGlmIChtX3NlcGFyYXRvckluZGV4ID09IC0xIHx8IGxpc3RJbmRl
eCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NlcGFyYXRvckluZGV4KSkKLSAgICAgICAgcmV0
dXJuIGxpc3RJbmRleDsKLSAgICByZXR1cm4gbGlzdEluZGV4IC0gMTsKLX0KLQogV2ViVmlld0lt
cGwqIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpnZXRXZWJWaWV3KCkgY29uc3QKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBtX3RleHRGaWVsZC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oCmlu
ZGV4IDczY2MxODAuLjU4OGUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaApAQCAtMTA2LDIwICsxMDYsMTUgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFt
ZXMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJl
bHMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29u
cywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMsCiAgICAg
ICAgICAgICAgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCk7CiAKICAgICB2b2lkIHNldFN1Z2dl
c3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBsYWJlbHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgdW5pcXVlSURzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNlcGFyYXRvckluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzKTsKIAogcHJpdmF0ZToKLSAgICAv
LyBDb252ZXJ0IHRoZSBzcGVjaWZpZWQgaW5kZXggZnJvbSBhbiBpbmRleCBpbnRvIHRoZSB2aXNp
YmxlIGxpc3QgKHdoaWNoIG1pZ2h0Ci0gICAgLy8gaW5jbHVkZSBhIHNlcGFyYXRvciBlbnRyeSkg
dG8gYW4gaW5kZXggdG8gfG1fbmFtZXN8IGFuZCB8bV9sYWJlbHN8LgotICAgIC8vIFJldHVybnMg
LTEgaWYgdGhlIGdpdmVuIGluZGV4IHBvaW50cyB0byB0aGUgc2VwYXJhdG9yLgotICAgIGludCBj
b252ZXJ0TGlzdEluZGV4VG9JbnRlcm5hbEluZGV4KHVuc2lnbmVkKSBjb25zdDsKICAgICBXZWJW
aWV3SW1wbCogZ2V0V2ViVmlldygpIGNvbnN0OwogICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQqIGdldFRleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEZpZWxkLmdldCgpOyB9CiAg
ICAgV2ViQ29yZTo6UmVuZGVyU3R5bGUqIHRleHRGaWVsZFN0eWxlKCkgY29uc3Q7CkBAIC0xMzMs
MTAgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX25hbWVzOwog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9sYWJlbHM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5n
PiBtX2ljb25zOwotICAgIFZlY3RvcjxpbnQ+IG1fdW5pcXVlSURzOwotCi0gICAgLy8gVGhlIGlu
ZGV4IG9mIHRoZSBzZXBhcmF0b3IuICAtMSBpZiB0aGVyZSBpcyBubyBzZXBhcmF0b3IuCi0gICAg
aW50IG1fc2VwYXJhdG9ySW5kZXg7CisgICAgVmVjdG9yPGludD4gbV9pdGVtSURzOwogCiAgICAg
Ly8gVGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBpdGVtLiAgLTEgaWYgdGhlcmUgaXMgbm8gc2Vs
ZWN0ZWQgaXRlbS4KICAgICBpbnQgbV9zZWxlY3RlZEluZGV4OwpAQCAtMTQ0LDYgKzEzNiw5IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ+IG1fdGV4dEZp
ZWxkOwogICAgIE93blB0cjxXZWJDb3JlOjpQb3B1cE1lbnVTdHlsZT4gbV9yZWd1bGFyU3R5bGU7
CiAgICAgT3duUHRyPFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlPiBtX3dhcm5pbmdTdHlsZTsKKwor
ICAgIC8vIFVzZSBsZWdhY3kgYmVoYXZpb3Igd2hpbGUgdGhlIGNocm9taXVtIHNpZGUgaGFzbid0
IGJlZW4gdXBkYXRlZC4KKyAgICBib29sIG1fdXNlTGVnYWN5QmVoYXZpb3I7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCA2MjY4ODMwLi5jMmJiYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yNzQwLDEyICsyNzQwLDExIEBAIHZvaWQgV2ViVmlld0lt
cGw6OmFwcGx5QXV0b2ZpbGxTdWdnZXN0aW9ucygKICAgICBjb25zdCBXZWJWZWN0b3I8V2ViU3Ry
aW5nPiYgbmFtZXMsCiAgICAgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGxhYmVscywKICAg
ICBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaWNvbnMsCi0gICAgY29uc3QgV2ViVmVjdG9y
PGludD4mIHVuaXF1ZUlEcywKKyAgICBjb25zdCBXZWJWZWN0b3I8aW50PiYgaXRlbUlEcywKICAg
ICBpbnQgc2VwYXJhdG9ySW5kZXgpCiB7CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBsYWJl
bHMuc2l6ZSgpKTsKLSAgICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IHVuaXF1ZUlEcy5zaXplKCkp
OwotICAgIEFTU0VSVChzZXBhcmF0b3JJbmRleCA8IHN0YXRpY19jYXN0PGludD4obmFtZXMuc2l6
ZSgpKSk7CisgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpdGVtSURzLnNpemUoKSk7CiAKICAg
ICBpZiAobmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGhpZGVBdXRvZmlsbFBvcHVwKCk7CkBA
IC0yNzcwLDcgKzI3NjksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9maWxsU3VnZ2Vz
dGlvbnMoCiAgICAgICAgIG1fYXV0b2ZpbGxQb3B1cENsaWVudCA9IGFkb3B0UHRyKG5ldyBBdXRv
ZmlsbFBvcHVwTWVudUNsaWVudCk7CiAKICAgICBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmluaXRp
YWxpemUoCi0gICAgICAgIGlucHV0RWxlbSwgbmFtZXMsIGxhYmVscywgaWNvbnMsIHVuaXF1ZUlE
cywgc2VwYXJhdG9ySW5kZXgpOworICAgICAgICBpbnB1dEVsZW0sIG5hbWVzLCBsYWJlbHMsIGlj
b25zLCBpdGVtSURzLCBzZXBhcmF0b3JJbmRleCk7CiAKICAgICBpZiAoIW1fYXV0b2ZpbGxQb3B1
cCkgewogICAgICAgICBQb3B1cENvbnRhaW5lclNldHRpbmdzIHBvcHVwU2V0dGluZ3MgPSBhdXRv
ZmlsbFBvcHVwU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCAzMjM3OWRkLi45ODFmNjA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBsYWJlbHMsCiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBpY29u
cywKLSAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4mIHVuaXF1ZUlEcywKKyAgICAgICAgY29u
c3QgV2ViVmVjdG9yPGludD4mIGl0ZW1JRHMsCiAgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCk7
CiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsYmFyQ29sb3JzKHVuc2lnbmVkIGluYWN0aXZlQ29sb3IsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>