<?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>73301</bug_id>
          
          <creation_ts>2011-11-29 02:59:53 -0800</creation_ts>
          <short_desc>Web Inspector: Add FileSystemView</short_desc>
          <delta_ts>2012-06-29 02:54:30 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72691</dependson>
    
    <dependson>88602</dependson>
    
    <dependson>89555</dependson>
    
    <dependson>89739</dependson>
          <blocked>68203</blocked>
    
    <blocked>89642</blocked>
    
    <blocked>89961</blocked>
    
    <blocked>90244</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510648</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-29 02:59:53 -0800</bug_when>
    <thetext>This is a splitted patch of https://bugs.webkit.org/show_bug.cgi?id=68203, part3.
- Adding split-view on FileSystemView and putting directory tree on the view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510651</commentid>
    <comment_count>1</comment_count>
      <attachid>116933</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-29 03:01:29 -0800</bug_when>
    <thetext>Created attachment 116933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652020</commentid>
    <comment_count>2</comment_count>
      <attachid>148242</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-18 21:41:07 -0700</bug_when>
    <thetext>Created attachment 148242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654179</commentid>
    <comment_count>3</comment_count>
      <attachid>148715</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-20 19:52:34 -0700</bug_when>
    <thetext>Created attachment 148715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654180</commentid>
    <comment_count>4</comment_count>
      <attachid>148715</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-20 19:56:28 -0700</bug_when>
    <thetext>Comment on attachment 148715
Patch

Updated for http://webkit.org/b/89555 (Renaming from readDirectory to requestDirectoryContent)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654291</commentid>
    <comment_count>5</comment_count>
      <attachid>148715</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 00:19:39 -0700</bug_when>
    <thetext>Comment on attachment 148715
Patch

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

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:133
&gt; +                this.insertChild(new WebInspector.FileSystemView.Entry(this._fileSystemView, entries[0]), currentTreeItem);

entries[0] should be entries[newEntryIndex]. I&apos;ll fix it in next version of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654295</commentid>
    <comment_count>6</comment_count>
      <attachid>148740</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 00:28:00 -0700</bug_when>
    <thetext>Created attachment 148740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655252</commentid>
    <comment_count>7</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 23:03:36 -0700</bug_when>
    <thetext>Since some part of this patch is depended by http://webkit.org/b/87856 (Web Inspector: Add requestMetadata command and metadataReceived event to FileSystem),
let me split out that (FileSystemModel.{Entry,Directory,File}) to https://bugs.webkit.org/show_bug.cgi?id=89739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655261</commentid>
    <comment_count>8</comment_count>
      <attachid>148966</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 23:23:33 -0700</bug_when>
    <thetext>Created attachment 148966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657274</commentid>
    <comment_count>9</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-25 21:57:41 -0700</bug_when>
    <thetext>Could anyone take a look to this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657275</commentid>
    <comment_count>10</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-25 22:00:35 -0700</bug_when>
    <thetext>Ah, I forgot to upload newest version. I&apos;ll do it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657281</commentid>
    <comment_count>11</comment_count>
      <attachid>149451</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-25 22:14:56 -0700</bug_when>
    <thetext>Created attachment 149451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657282</commentid>
    <comment_count>12</comment_count>
      <attachid>149452</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-25 22:15:54 -0700</bug_when>
    <thetext>Created attachment 149452
Screenshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657301</commentid>
    <comment_count>13</comment_count>
      <attachid>149451</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-25 22:44:15 -0700</bug_when>
    <thetext>Comment on attachment 149451
Patch

I&apos;m not familiar with the frontend code but the logic looks ok to me.

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

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:302
&gt; +    }

Is this same as following?

if (x.isDirectory != y.isDirectory) {
  if (!y.isDirectory)
    return -1;
  else
    return 1;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658292</commentid>
    <comment_count>14</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-26 20:25:05 -0700</bug_when>
    <thetext>Pavel, Vsevolod or someone in inspector team could you please take a look.

FileSystem related logic looks good to my untrained eyes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658409</commentid>
    <comment_count>15</comment_count>
      <attachid>149695</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-27 00:18:37 -0700</bug_when>
    <thetext>Created attachment 149695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658410</commentid>
    <comment_count>16</comment_count>
      <attachid>149451</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-27 00:19:40 -0700</bug_when>
    <thetext>Comment on attachment 149451
Patch

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

Updated. +added a test.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:302
&gt;&gt; +    }
&gt; 
&gt; Is this same as following?
&gt; 
&gt; if (x.isDirectory != y.isDirectory) {
&gt;   if (!y.isDirectory)
&gt;     return -1;
&gt;   else
&gt;     return 1;
&gt; }

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658591</commentid>
    <comment_count>17</comment_count>
      <attachid>149695</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-27 07:27:08 -0700</bug_when>
    <thetext>Comment on attachment 149695
Patch

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

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:304
&gt; +    if (x.name &lt; y.name)

We prefer localeCompare(). See WebInspector.NavigatorTreeOutline._treeElementsCompare in NavigatorView.js for an example.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:38
&gt; +    WebInspector.SplitView.call(this, WebInspector.SplitView.SidebarPosition.Left, &quot;FileSystemViewSidebarWidth&quot;);

We have never used nested SplitViews with sidebars on the same side.
Does it work nicely (Resize, restoring size after inspector reload, etc.)?

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:47
&gt; +    this.directoryTree.appendChild(new WebInspector.FileSystemView.Entry(this, fileSystem.root));

Root entry should be expanded by default.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:48
&gt; +    this.visibleView = null;

This is never used outside from the FileSystemView, should be private.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:93
&gt; +        this.refresh();

This should be in onpopulate() method.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:99
&gt; +        contextMenu.appendItem(WebInspector.UIString(&quot;Refresh&quot;), this.refresh.bind(this));

We should not show &quot;Refresh&quot; action it context menu when it does nothing (e.g. selected entry is not a directory).

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:103
&gt; +    _directoryContentReceived: function(errorCode, entries)

Please add compiler annotations.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:124
&gt; +                oldChildren[oldChildIndex].refresh();

I am not sure I understand what you are trying to do here.
Why do you call refresh on all old children? I would expect that you call it on expanded old children instead.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2005
&gt; +        if (!this._fileSystemView)

if (this._fileSystemView) ? 

This still looks weird (Why context menu click does nothing in some cases?). 
I think context menu is always shown after onselect, so this check is probably redundant, it could be replaced with console.assert().

I would use refresh button in the status bar instead though. This is how we did it for other views in reosurces panel (IndexedDB, Cookies).
It is much more discoverable.

We might end up having two refresh button for both FileSystemView main view and sidebar.
Pavel what do you think about such UI decision?

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2016
&gt; +    clear: function()

Shouldn&apos;t this method be called from ResourcesPanel._fileSystemRemoved?

&gt; LayoutTests/http/tests/inspector/filesystem/directory-tree.html:1
&gt; +&lt;!DOCTYPE html&gt;&lt;meta charset=&quot;UTF-8&quot;&gt;

Please add &lt;head&gt; &lt;body&gt; and closing &lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659349</commentid>
    <comment_count>18</comment_count>
      <attachid>149905</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-28 02:12:12 -0700</bug_when>
    <thetext>Created attachment 149905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659351</commentid>
    <comment_count>19</comment_count>
      <attachid>149695</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-28 02:22:38 -0700</bug_when>
    <thetext>Comment on attachment 149695
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:304
&gt;&gt; +    if (x.name &lt; y.name)
&gt; 
&gt; We prefer localeCompare(). See WebInspector.NavigatorTreeOutline._treeElementsCompare in NavigatorView.js for an example.

I see. Done.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:38
&gt;&gt; +    WebInspector.SplitView.call(this, WebInspector.SplitView.SidebarPosition.Left, &quot;FileSystemViewSidebarWidth&quot;);
&gt; 
&gt; We have never used nested SplitViews with sidebars on the same side.
&gt; Does it work nicely (Resize, restoring size after inspector reload, etc.)?

Yes, it looks working well to me.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:47
&gt;&gt; +    this.directoryTree.appendChild(new WebInspector.FileSystemView.Entry(this, fileSystem.root));
&gt; 
&gt; Root entry should be expanded by default.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:48
&gt;&gt; +    this.visibleView = null;
&gt; 
&gt; This is never used outside from the FileSystemView, should be private.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:93
&gt;&gt; +        this.refresh();
&gt; 
&gt; This should be in onpopulate() method.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:99
&gt;&gt; +        contextMenu.appendItem(WebInspector.UIString(&quot;Refresh&quot;), this.refresh.bind(this));
&gt; 
&gt; We should not show &quot;Refresh&quot; action it context menu when it does nothing (e.g. selected entry is not a directory).

Removed for files.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:103
&gt;&gt; +    _directoryContentReceived: function(errorCode, entries)
&gt; 
&gt; Please add compiler annotations.

OK, I added.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:124
&gt;&gt; +                oldChildren[oldChildIndex].refresh();
&gt; 
&gt; I am not sure I understand what you are trying to do here.
&gt; Why do you call refresh on all old children? I would expect that you call it on expanded old children instead.

Ah, that&apos;s right.
I should refresh only expanded directory.

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2005
&gt;&gt; +        if (!this._fileSystemView)
&gt; 
&gt; if (this._fileSystemView) ? 
&gt; 
&gt; This still looks weird (Why context menu click does nothing in some cases?). 
&gt; I think context menu is always shown after onselect, so this check is probably redundant, it could be replaced with console.assert().
&gt; 
&gt; I would use refresh button in the status bar instead though. This is how we did it for other views in reosurces panel (IndexedDB, Cookies).
&gt; It is much more discoverable.
&gt; 
&gt; We might end up having two refresh button for both FileSystemView main view and sidebar.
&gt; Pavel what do you think about such UI decision?

&gt; if (this._fileSystemView) ? 
Right. I might fail to rebase.

&gt; I would use refresh button in the status bar instead though. This is how we did it for other views in reosurces panel (IndexedDB, Cookies).
&gt; It is much more discoverable.
OK, so we don&apos;t need context menu on each filesystem to refresh its view.

How about placing just one button to refresh active item or view?

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2016
&gt;&gt; +    clear: function()
&gt; 
&gt; Shouldn&apos;t this method be called from ResourcesPanel._fileSystemRemoved?

Done

&gt;&gt; LayoutTests/http/tests/inspector/filesystem/directory-tree.html:1
&gt;&gt; +&lt;!DOCTYPE html&gt;&lt;meta charset=&quot;UTF-8&quot;&gt;
&gt; 
&gt; Please add &lt;head&gt; &lt;body&gt; and closing &lt;/html&gt;

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659422</commentid>
    <comment_count>20</comment_count>
      <attachid>149905</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-28 04:47:14 -0700</bug_when>
    <thetext>Comment on attachment 149905
Patch

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

Please fix how the root element is expanded. Other than that looks good.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:48
&gt; +    rootItem.expand();

I don&apos;t think this will work because expand() should not be called until TreeElement is attached. 
You should set expanded to true instead: rootItem.expanded = true;
expand() will be called from TreeElement._attach automatically then.

&gt; Source/WebCore/inspector/front-end/FileSystemView.js:76
&gt; +WebInspector.FileSystemView.Entry = function(fileSystemView, entry)

nit: I would rename it to EntryTreeElement to avoid confusion with FileSystemModel.Entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659423</commentid>
    <comment_count>21</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-28 04:50:43 -0700</bug_when>
    <thetext>&gt; &gt; I would use refresh button in the status bar instead though. This is how we did it for other views in reosurces panel (IndexedDB, Cookies).
&gt; &gt; It is much more discoverable.
&gt; OK, so we don&apos;t need context menu on each filesystem to refresh its view.
&gt; 
&gt; How about placing just one button to refresh active item or view?

I think we can have one button that both refreshes the files list and active file view.
This should be fine since your entry list update procedure would work smoothly when there are no changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660110</commentid>
    <comment_count>22</comment_count>
      <attachid>150078</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-28 20:57:43 -0700</bug_when>
    <thetext>Created attachment 150078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660111</commentid>
    <comment_count>23</comment_count>
      <attachid>149905</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-28 21:00:01 -0700</bug_when>
    <thetext>Comment on attachment 149905
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:48
&gt;&gt; +    rootItem.expand();
&gt; 
&gt; I don&apos;t think this will work because expand() should not be called until TreeElement is attached. 
&gt; You should set expanded to true instead: rootItem.expanded = true;
&gt; expand() will be called from TreeElement._attach automatically then.

I see. Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemView.js:76
&gt;&gt; +WebInspector.FileSystemView.Entry = function(fileSystemView, entry)
&gt; 
&gt; nit: I would rename it to EntryTreeElement to avoid confusion with FileSystemModel.Entry.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660328</commentid>
    <comment_count>24</comment_count>
      <attachid>150078</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 02:54:15 -0700</bug_when>
    <thetext>Comment on attachment 150078
Patch

Clearing flags on attachment: 150078

Committed r121542: &lt;http://trac.webkit.org/changeset/121542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660329</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 02:54:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116933</attachid>
            <date>2011-11-29 03:01:29 -0800</date>
            <delta_ts>2012-06-18 21:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20111129200126.patch</filename>
            <type>text/plain</type>
            <size>17444</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRlZTc2NTk3YWU3Y2M5
NDMzZjhjZTAwYTYzNjVmZDZiZjQyMWEwZC4uYTlhYTJhOGQxMTNkNTU3NTJhMTBkYzRhZjgxZTFm
YmVkNmUzNTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTExLTI5ICBUYWlq
dSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW5zcGVjdG9yXVtGaWxl
U3lzdGVtXSBBZGQgc3BsaXQgdmlldyBvbiBGaWxlU3lzdGVtVmlldy4KKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMDEKKworICAgICAgICBBZGRpbmcg
c3BsaXQgdmlldyBvbiBGaWxlU3lzdGVtVmlldyBhbmQgcHV0dGluZyBkaXJlY3RvcnkgdHJlZSBv
biBpdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0IHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3NUeXBlOjpjcmVhdGVEaXNwYXRjaGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3NUeXBlOjp0eXBlVG9TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzc1R5cGU6Om1ha2VCYWNrUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6RmlsZVRhc2tCYXNlOjp+RmlsZVRhc2tCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RmlsZVRhc2tCYXNlOjpGaWxl
VGFza0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpG
aWxlVGFza0Jhc2U6OmdldEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6RmlsZVRhc2tCYXNlOjpnZXRGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6RmlsZVRhc2tCYXNlOjpnZXRGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZpbGVUYXNrQmFz
ZTo6Z2V0UmVxdWVzdElkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6UmVhZERpcmVjdG9yeVRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OlJlYWREaXJlY3RvcnlUYXNrOjp+UmVhZERpcmVjdG9yeVRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpSZWFkRGly
ZWN0b3J5VGFzazo6U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjpSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeVRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpSZWFkRGlyZWN0b3J5VGFzazo6b25T
dWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6UmVh
ZERpcmVjdG9yeVRhc2s6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpyZWFkRGlyZWN0b3J5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLl9w
dXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVy
Ll9wb3BDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNo
ZXIuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5y
ZWFkRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hl
ci5wcm90b3R5cGUuZmlsZVN5c3RlbUludmFsaWRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5wcm90b3R5cGUuZGlkUmVhZERpcmVjdG9yeSk6CisKIDIw
MTEtMTEtMjkgIFNlYW4gV2FuZyAgPFh1ZXdlbi5XYW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBVcHN0cmVhbSBCbGFja0JlcnJ5IHBvcnRpbmcgb2YgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBmZjJmNTY3
Nzk4NjYyNmZiZjYzNzc3NTkyOTczMDRmY2M3MzUxOTU1Li5hMjliOGMxOTFmYzlmZThmMTJlODEz
OWM4NjBlNThjZmE0MmYzNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC0xMDA4LDYgKzEwMDgsMjcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlz
YWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICJuYW1lIjogInJlYWREaXJlY3RvcnkiLAorICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyBiYWNrZW5kIHRvIHJlYWQgdGhlIGRpcmVjdG9y
eSBjb250ZW50LiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVTeXN0ZW1O
YW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaWxlU3lzdGVt
IElkZW50aWZpZXIgcGFzc2VkIHdpdGggZmlsZVN5c3RlbUFkZGVkIGV2ZW50LiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog
ImRpcmVjdG9yeVBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkZ1bGwgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHRvIHJlYWQuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdElk
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgSWRlbnRp
ZmllciBmb3IgdGhlIHJlcXVlc3QuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjog
ImludGVnZXIiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xMDQyLDYgKzEw
NjMsMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlkUmVhZERpcmVjdG9yeSIsCisg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3RJZCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJRCBwYXNzZWQgdG8gcmVhZERpcmVj
dG9yeS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIjAgb3IgZXJyb3IgY29kZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5
cGUiOiAiaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZW50cmllcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlsZSBvciBkaXJlY3RvcnkgZW50cnkg
b24gdGhlIGRpcmVjdG9yeS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiYXJy
YXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIml0ZW1zIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJmdWxsUGF0aCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNEaXJl
Y3RvcnkiLCAidHlwZSI6ICJib29sZWFuIiB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAK
aW5kZXggMWZkYmMzZWRjODBmYTdmOTkyNGYyMDM2ZTM3OTk2NzdlM2Q2YWJhOC4uNjA5MDczNzVm
OTcxY2E4ODAyNzUyYmZiNDhjMGM4NWRlNjI1Zjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTM0LDE1ICsz
NCw4OCBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAog
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXIuaCIK
KyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJFbnRyeUFycmF5LmgiCisj
aW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSB7CiAKLVN0cmluZyB0eXBlVG9TdHJp
bmcoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIFN5bm9ueW0+CitjbGFz
cyBDYWxsYmFja0Rpc3BhdGNoZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2VDYWxsYmFjaywg
dHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmcxPgorY2xhc3Mg
Q2FsbGJhY2tEaXNwYXRjaGVyPEJhc2VDYWxsYmFjaywgSGFuZGxlciwgUmVzdWx0KEFyZzEpPiA6
IHB1YmxpYyBCYXNlQ2FsbGJhY2sgeworcHVibGljOgorICAgIHR5cGVkZWYgUmVzdWx0IChIYW5k
bGVyOjoqIEhhbmRsaW5nTWV0aG9kKShBcmcxKTsKKworICAgIENhbGxiYWNrRGlzcGF0Y2hlcihQ
YXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRsaW5nTWV0aG9kIG1ldGhvZCkKKyAgICAg
ICAgOiBtX2hhbmRsZXIoaGFuZGxlciksIG1fbWV0aG9kKG1ldGhvZCkgeyB9CisKKyAgICB2aXJ0
dWFsIFJlc3VsdCBoYW5kbGVFdmVudChBcmcxIGFyZykKKyAgICB7CisgICAgICAgIHJldHVybiAo
bV9oYW5kbGVyLmdldCgpLT4qbV9tZXRob2QpKGFyZyk7CisgICAgfQorCisgICAgdmlydHVhbCB+
Q2FsbGJhY2tEaXNwYXRjaGVyKCkgeyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxIYW5kbGVyPiBt
X2hhbmRsZXI7CisgICAgSGFuZGxpbmdNZXRob2QgbV9tZXRob2Q7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIFJlc3VsdCwg
dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMj4KK2NsYXNzIENhbGxiYWNrRGlzcGF0Y2hlcjxC
YXNlQ2FsbGJhY2ssIEhhbmRsZXIsIFJlc3VsdChBcmcxLCBBcmcyKT4gOiBwdWJsaWMgQmFzZUNh
bGxiYWNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKEhhbmRsZXI6OiogSGFuZGxpbmdN
ZXRob2QpKEFyZzEsIEFyZzIpOworICAgIENhbGxiYWNrRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEhh
bmRsZXI+IGhhbmRsZXIsIEhhbmRsaW5nTWV0aG9kIG1ldGhvZCkKKyAgICAgICAgOiBtX2hhbmRs
ZXIoaGFuZGxlciksIG1fbWV0aG9kKG1ldGhvZCkgeyB9CisKKyAgICB2aXJ0dWFsIFJlc3VsdCBo
YW5kbGVFdmVudChBcmcxIGFyZzEsIEFyZzIgYXJnMikKKyAgICB7CisgICAgICAgIChtX2hhbmRs
ZXIuZ2V0KCktPiptX21ldGhvZCkoYXJnMSwgYXJnMik7CisgICAgfQorCisgICAgdmlydHVhbCB+
Q2FsbGJhY2tEaXNwYXRjaGVyKCkgeyB9Citwcml2YXRlOgorICAgIFdURjo6UmVmUHRyPEhhbmRs
ZXI+IG1faGFuZGxlcjsKKyAgICBIYW5kbGluZ01ldGhvZCBtX21ldGhvZDsKK307CisKK2NsYXNz
IEV2ZW50TGlzdGVuZXJEaXNwYXRjaGVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgeworcHVibGlj
OgorICAgIEV2ZW50TGlzdGVuZXJEaXNwYXRjaGVyKCkgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlz
dGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIH5FdmVudExpc3Rl
bmVyRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIHJocykKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzID09ICZyaHM7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWU+CitjbGFzcyBQYXNzVHlwZSB7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1l
IFJlc3VsdCwgdHlwZW5hbWUgQXJnMT4KK1Bhc3NSZWZQdHI8QmFzZUNhbGxiYWNrPiBjcmVhdGVE
aXNwYXRjaGVyKFBhc3NUeXBlPEJhc2VDYWxsYmFjaz4sIEhhbmRsZXIqIGhhbmRsZXIsIFJlc3Vs
dCAoSGFuZGxlcjo6Km1ldGhvZCkoQXJnMSkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YWxsYmFja0Rpc3BhdGNoZXI8QmFzZUNhbGxiYWNrLCBIYW5kbGVyLCBSZXN1bHQoQXJnMSk+KFJl
ZlB0cjxIYW5kbGVyPihoYW5kbGVyKSwgbWV0aG9kKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEJhc2VDYWxsYmFjaywgdHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFt
ZSBBcmcxLCB0eXBlbmFtZSBBcmcyPgorUGFzc1JlZlB0cjxCYXNlQ2FsbGJhY2s+IGNyZWF0ZURp
c3BhdGNoZXIoUGFzc1R5cGU8QmFzZUNhbGxiYWNrPiwgSGFuZGxlciogaGFuZGxlciwgUmVzdWx0
IChIYW5kbGVyOjoqbWV0aG9kKShBcmcxLCBBcmcyKSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENhbGxiYWNrRGlzcGF0Y2hlcjxCYXNlQ2FsbGJhY2ssIEhhbmRsZXIsIFJlc3VsdChBcmcx
LCBBcmcyKT4oUmVmUHRyPEhhbmRsZXI+KGhhbmRsZXIpLCBtZXRob2QpKTsKK30KKworU3RyaW5n
IHR5cGVUb1N0cmluZyhBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSkKIHsKLSAgICB1c2luZyBX
ZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW07CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBB
c3luY0ZpbGVTeXN0ZW06OkV4dGVybmFsOgogICAgICAgICByZXR1cm4gImV4dGVybmFsIjsKQEAg
LTU1LDIzICsxMjgsMTQ4IEBAIFN0cmluZyB0eXBlVG9TdHJpbmcoV2ViQ29yZTo6QXN5bmNGaWxl
U3lzdGVtOjpUeXBlIHR5cGUpCiAgICAgfQogfQogCi10eXBlZGVmIFdlYkNvcmU6OkJhY2tQdHI8
V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBBZ2VudFByb3ZpZGVyOwotdHlwZWRl
ZiBXZWJDb3JlOjpCYWNrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVt
PiBGcm9udGVuZFByb3ZpZGVyOwordHlwZWRlZiBCYWNrUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudD4gQWdlbnRQcm92aWRlcjsKK3R5cGVkZWYgQmFja1B0cjxJbnNwZWN0b3JGcm9udGVuZDo6
RmlsZVN5c3RlbT4gRnJvbnRlbmRQcm92aWRlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVBh
c3NSZWZQdHI8V2ViQ29yZTo6QmFja1B0cjxUPiA+IG1ha2VCYWNrUHRyKFQqIHB0cikKK1Bhc3NS
ZWZQdHI8QmFja1B0cjxUPiA+IG1ha2VCYWNrUHRyKFQqIHB0cikKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6QmFja1B0cjxUPjo6Y3JlYXRlKHB0cik7CisgICAgcmV0dXJuIEJhY2tQdHI8VD46OmNy
ZWF0ZShwdHIpOwogfQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotCiBuYW1lc3BhY2UgRmlsZVN5c3RlbUFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0
IGNoYXIgZmlsZVN5c3RlbUFnZW50RW5hYmxlZFtdID0gImZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQi
OwogfQogCitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OkZpbGVUYXNrQmFzZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEZpbGVUYXNrQmFzZT4geworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBTdGFydCgpID0gMDsKKyAgICB2aXJ0dWFsIH5GaWxlVGFza0Jhc2UoKSB7IH0KKworcHJvdGVj
dGVkOgorICAgIEZpbGVUYXNrQmFzZShQYXNzUmVmUHRyPEFnZW50UHJvdmlkZXI+IGFnZW50UHJv
dmlkZXIsIFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSkgOiBtX2FnZW50UHJvdmlk
ZXIoYWdlbnRQcm92aWRlciksIG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKSwg
bV9yZXF1ZXN0SWQocmVxdWVzdElkKSwgbV9maWxlU3lzdGVtTmFtZShmaWxlU3lzdGVtTmFtZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2FnZW50UHJvdmlkZXIuZ2V0KCkpOworICAgICAgICBB
U1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKTsKKyAgICB9CisKKyAgICBGaWxlVGFza0Jh
c2UoY29uc3QgRmlsZVRhc2tCYXNlJiByaHMpIDogbV9hZ2VudFByb3ZpZGVyKHJocy5tX2FnZW50
UHJvdmlkZXIpLCBtX2Zyb250ZW5kUHJvdmlkZXIocmhzLm1fZnJvbnRlbmRQcm92aWRlciksIG1f
cmVxdWVzdElkKG1fcmVxdWVzdElkKSwgbV9maWxlU3lzdGVtTmFtZShyaHMubV9maWxlU3lzdGVt
TmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FnZW50UHJvdmlkZXIuZ2V0KCkpOworICAg
ICAgICBBU1NFUlQobV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKTsKKyAgICB9CisKKyAgICBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGdldEFnZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2FnZW50UHJvdmlkZXIuZ2V0KCkpOworICAgICAgICByZXR1cm4gbV9hZ2VudFByb3ZpZGVyLT5n
ZXQoKTsKKyAgICB9CisKKyAgICBET01GaWxlU3lzdGVtKiBnZXRGaWxlU3lzdGVtKCkKKyAgICB7
CisgICAgICAgIGlmIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50ID0gZ2V0QWdlbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBhZ2VudC0+Z2V0RmlsZVN5c3RlbShtX2ZpbGVTeXN0ZW1O
YW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgSW5zcGVjdG9yRnJvbnRlbmQ6
OkZpbGVTeXN0ZW0qIGdldEZyb250ZW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2Zyb250
ZW5kUHJvdmlkZXIpOworICAgICAgICBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50ID0g
Z2V0QWdlbnQoKTsKKyAgICAgICAgaWYgKGFnZW50ICYmIGFnZW50LT5tX2VuYWJsZWQpCisgICAg
ICAgICAgICByZXR1cm4gbV9mcm9udGVuZFByb3ZpZGVyLT5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgaW50IGdldFJlcXVlc3RJZCgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9yZXF1ZXN0SWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxBZ2VudFByb3Zp
ZGVyPiBtX2FnZW50UHJvdmlkZXI7CisgICAgUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IG1fZnJv
bnRlbmRQcm92aWRlcjsKKyAgICBpbnQgbV9yZXF1ZXN0SWQ7CisgICAgU3RyaW5nIG1fZmlsZVN5
c3RlbU5hbWU7Cit9OworCitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OlJlYWREaXJl
Y3RvcnlUYXNrIDogcHVibGljIEZpbGVUYXNrQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8QWdlbnRQcm92aWRlcj4g
YWdlbnRQcm92aWRlciwgUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3Zp
ZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFk
RGlyZWN0b3J5VGFzayhhZ2VudFByb3ZpZGVyLCBmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQs
IGZpbGVTeXN0ZW1OYW1lLCBmdWxsUGF0aCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflJlYWRE
aXJlY3RvcnlUYXNrKCkKKyAgICB7CisgICAgICAgIGlmIChtX3JldHJ5KQorICAgICAgICAgICAg
YWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrKCp0aGlzKSktPlN0YXJ0KCk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFN0YXJ0KCkKKyAgICB7CisgICAgICAgIERPTUZpbGVTeXN0ZW0q
IGZpbGVzeXN0ZW0gPSBnZXRGaWxlU3lzdGVtKCk7CisgICAgICAgIGlmICghZmlsZXN5c3RlbSkg
eworICAgICAgICAgICAgbV9yZXRyeSA9IGZhbHNlOworICAgICAgICAgICAgUmVmUHRyPEZpbGVF
cnJvcj4gZXJyb3IoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpBQk9SVF9FUlIpKTsKKyAg
ICAgICAgICAgIG9uRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IHJlYWRlciA9IERpcmVjdG9y
eVJlYWRlcjo6Y3JlYXRlKGZpbGVzeXN0ZW0sIG1fZnVsbFBhdGgpOworICAgICAgICByZWFkZXIt
PnJlYWRFbnRyaWVzKAorICAgICAgICAgICAgY3JlYXRlRGlzcGF0Y2hlcihQYXNzVHlwZTxFbnRy
aWVzQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6b25TdWNjZXNzKSwKKyAg
ICAgICAgICAgIGNyZWF0ZURpc3BhdGNoZXIoUGFzc1R5cGU8RXJyb3JDYWxsYmFjaz4oKSwgdGhp
cywgJlJlYWREaXJlY3RvcnlUYXNrOjpvbkVycm9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFJlYWREaXJlY3RvcnlUYXNrKFBhc3NSZWZQdHI8QWdlbnRQcm92aWRlcj4gYWdlbnRQcm92aWRl
ciwgUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKSA6IEZpbGVUYXNrQmFzZShhZ2VudFByb3ZpZGVyLCBmcm9udGVuZFByb3ZpZGVyLCByZXF1
ZXN0SWQsIGZpbGVTeXN0ZW1OYW1lKSwgbV9yZXRyeSh0cnVlKSwgbV9mdWxsUGF0aChmdWxsUGF0
aCkKKyAgICB7CisgICAgfQorCisgICAgUmVhZERpcmVjdG9yeVRhc2soY29uc3QgUmVhZERpcmVj
dG9yeVRhc2smIHJocykgOiBGaWxlVGFza0Jhc2UocmhzKSwgbV9yZXRyeSh0cnVlKSwgbV9mdWxs
UGF0aChyaHMubV9mdWxsUGF0aCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBvblN1Y2Nlc3Mo
RW50cnlBcnJheSogZ290RW50cmllcykKKyAgICB7CisgICAgICAgIEFTU0VSVChnb3RFbnRyaWVz
KTsKKyAgICAgICAgbV9yZXRyeSA9IGZhbHNlOworCisgICAgICAgIEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtKiBmcm9udGVuZCA9IGdldEZyb250ZW5kKCk7CisgICAgICAgIGlmICghZnJv
bnRlbmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGVudHJpZXMoSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDtpIDwgZ290RW50cmllcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgRW50cnkqIGdvdEVudHJ5ID0gZ290RW50cmllcy0+aXRlbShpKTsKKworICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZW50cnkoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJuYW1lIiwgZ290RW50cnktPm5hbWUo
KSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJmdWxsUGF0aCIsIGdvdEVudHJ5LT5m
dWxsUGF0aCgpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInVybCIsIGdvdEVudHJ5
LT50b1VSTCgpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRCb29sZWFuKCJpc0RpcmVjdG9yeSIs
IGdvdEVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKKyAgICAgICAgICAgIGVudHJpZXMtPnB1c2hPYmpl
Y3QoZW50cnkpOworICAgICAgICB9CisgICAgICAgIGdldEZyb250ZW5kKCktPmRpZFJlYWREaXJl
Y3RvcnkoZ2V0UmVxdWVzdElkKCksIDAsIGVudHJpZXMucmVsZWFzZSgpKTsKKworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIG9uRXJyb3IoRmlsZUVycm9yKiBlcnJvcikK
KyAgICB7CisgICAgICAgIG1fcmV0cnkgPSBmYWxzZTsKKworICAgICAgICBpZiAoSW5zcGVjdG9y
RnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIGZyb250ZW5kID0gZ2V0RnJvbnRlbmQoKSkKKyAgICAgICAg
ICAgIGZyb250ZW5kLT5kaWRSZWFkRGlyZWN0b3J5KGdldFJlcXVlc3RJZCgpLCBlcnJvci0+Y29k
ZSgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBtX3JldHJ5
OworICAgIFN0cmluZyBtX2Z1bGxQYXRoOworfTsKKwogLy8gc3RhdGljCiBQYXNzT3duUHRyPElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IHN0YXRlKQogewpAQCAtODcsNiArMjg1LDEyIEBAIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoMCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpyZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnVsbFBhdGgsIGludCByZXF1ZXN0
SWQpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRQcm92aWRlcik7CisgICAgUmVhZERpcmVjdG9y
eVRhc2s6OmNyZWF0ZShtX2FnZW50UHJvdmlkZXIsIG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVz
dElkLCBmaWxlU3lzdGVtTmFtZSwgZnVsbFBhdGgpLT5TdGFydCgpOworfQorCiBQYXNzUmVmUHRy
PEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lz
dGVtKQogewogICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW1QdHIgPSBmaWxlU3lzdGVtLmdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5oCmluZGV4IGI4MDVlZDg0Njk3ZTA1MWFkOTM5MTI1MDUyNzVjNjY3MDgzY2VlOTMu
LjFlM2I2OGU3YmYwM2Y3ZDllMmUyOWFjODZiZDIwYTk2N2M0ZjExNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTYz
LDkgKzYzLDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQgewogcHVibGljOgorICAgIGNsYXNzIEZpbGVUYXNr
QmFzZTsKKyAgICBjbGFzcyBSZWFkRGlyZWN0b3J5VGFzazsKKwogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dCgpOwogCisgICAgdm9pZCByZWFkRGlyZWN0b3J5KEVycm9yU3RyaW5nKiwgY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5UGF0aCwg
aW50IHJlcXVlc3RJZCk7CisKICAgICBQYXNzUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4p
OwogICAgIHZvaWQgZmlsZVN5c3RlbUludmFsaWRhdGVkKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW0uanMKaW5kZXggODg1NGNiZjlhZjJjNTZhNTdhOWJmODM0Mjg4ZDdmMWViNGY3YWMwMS4uMjVk
NTIyNzQwNjhjODZiNDczNjhlYzhmMDU3N2Y1NDYwODUyZTU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5qcwpAQCAtMzIsNiArMzIsMzYg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24oKQogewogfTsK
IAorV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLl9wZW5kaW5nQ2FsbGJhY2tzID0g
e307CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX25leHRSZXF1ZXN0SWQgPSAx
OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX3B1c2hDYWxsYmFjayA9IGZ1
bmN0aW9uKG9iaikKK3sKKyAgICB2YXIgcmVxdWVzdElkID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1EaXNwYXRjaGVyLl9uZXh0UmVxdWVzdElkKys7CisgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1EaXNwYXRjaGVyLl9wZW5kaW5nQ2FsbGJhY2tzW3JlcXVlc3RJZF0gPSBvYmo7CisgICAgcmV0
dXJuIHJlcXVlc3RJZDsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5f
cG9wQ2FsbGJhY2sgPSBmdW5jdGlvbihyZXF1ZXN0SWQpCit7CisgICAgdmFyIGNhbGxiYWNrcyA9
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fcGVuZGluZ0NhbGxiYWNrczsKKyAg
ICB2YXIgcmVzdWx0ID0gY2FsbGJhY2tzW3JlcXVlc3RJZF07CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgZGVsZXRlIGNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgIHJldHVybiByZXN1bHQ7Cit9
OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIuX3Jlc2V0ID0gZnVuY3Rpb24o
KQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fcGVuZGluZ0NhbGxi
YWNrcyA9IHt9OworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnJlYWRE
aXJlY3RvcnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtTmFtZSwgcGF0aCwgc3VjY2VzcywgZXJyb3Ip
Cit7CisgICAgdmFyIHJlcXVlc3RJZCA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hl
ci5fcHVzaENhbGxiYWNrKHtvblN1Y2Nlc3M6IHN1Y2Nlc3MsIG9uRXJyb3I6IGVycm9yfSk7Cisg
ICAgRmlsZVN5c3RlbUFnZW50LnJlYWREaXJlY3RvcnkoZmlsZVN5c3RlbU5hbWUsIHBhdGgsIHJl
cXVlc3RJZCk7Cit9OworCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIucHJvdG90
eXBlID0gewogICAgIGZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24obmFtZSwgb3JpZ2luLCB0eXBl
KQogICAgIHsKQEAgLTQxLDYgKzcxLDE3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgZmlsZVN5c3RlbUludmFsaWRhdGVkOiBmdW5jdGlvbihu
YW1lKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuaW52YWxp
ZGF0ZUZpbGVTeXN0ZW0obmFtZSk7CisgICAgfSwKKworICAgIGRpZFJlYWREaXJlY3Rvcnk6IGZ1
bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBlbnRyaWVzKSB7CisgICAgICB2YXIgaGFuZGxl
ciA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5fcG9wQ2FsbGJhY2socmVxdWVz
dElkKTsKKyAgICAgIGlmIChlcnJvckNvZGUpIHsKKyAgICAgICAgaWYgKGhhbmRsZXIgJiYgaGFu
ZGxlci5vbkVycm9yKQorICAgICAgICAgIGhhbmRsZXIub25FcnJvcihlcnJvckNvZGUpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5vblN1Y2Nlc3MpCisg
ICAgICAgICAgaGFuZGxlci5vblN1Y2Nlc3MoZW50cmllcyk7CisgICAgICB9CiAgICAgfQogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148242</attachid>
            <date>2012-06-18 21:41:07 -0700</date>
            <delta_ts>2012-06-20 19:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120619134106.patch</filename>
            <type>text/plain</type>
            <size>19786</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFhNDY3MmYyYWM0NDgw
YTRlMDUwZmUzNWFmNzVmOWJlMjkzODZmNC4uNTU0ZjJiNzE4NDk4OGFjYjE0MGNiZDUzMDRiZWU0
MDZkZDM5ZTQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA2LTE4ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW1WaWV3IGNsYXNzIHRvIHNo
b3cgZGlyZWN0b3J5IHRyZWUgb24gYSBGaWxlU3lzdGVtLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBl
Ll9nb3RGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLnJlYWREaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5wcm90b3R5cGUuX2RpZFJlYWREaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5FbnRyeS5jb21wYXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRW50cnkucHJvdG90eXBlLmdldCBmaWxlU3lzdGVtTW9kZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IGZpbGVTeXN0ZW0pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0
IHVybCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3Rv
dHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVu
dHJ5LnByb3RvdHlwZS5nZXQgaXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5EaXJlY3RvcnkucHJvdG90eXBlLnJlYWREaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUuZ2V0IG1pbWVUeXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUuZ2V0IHJlc291cmNlVHlw
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5yZWFkRGlyZWN0b3J5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZS5zaG93RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1l
bnVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fcmVmcmVzaEZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuY2xlYXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEyLTA2LTE4ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3
dGhlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5nIHRpdGxlIGR5
bmFtaWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2MyYmE3ZjU0NmJmZTI3OGUzMmFkNDg5MzVm
YWM3ODFkNTdhN2YxZC4uYzI2MjMwYWRmN2Y2YWI0YjAwYmJmN2EzM2FlOWNmMmJiYTk5NGE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjQyMyw2ICs2NDIzLDcgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9GaWxlTWFuYWdlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ZvbnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0dvVG9MaW5lRGlhbG9nLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggZDA2ZGRhYWExNDYyZDg5Y2M1MWY5ZjNlZDZkOGJlZTQ4OWNl
YWRlYy4uYWY4NzdjMGJmNGViMGQxN2ZjNmNkNDk4YTNkOWU2OTU3NWU1YWE3NSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc0ODA2LDYgKzc0
ODA2LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3LmpzIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxmaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQt
ZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Cmlu
ZGV4IGMzMjgxNWJlN2JhNWEwMDhlMzU3M2IyYTJmMTYwZDFlOGI3ZjUxNzEuLjAyMTc4NDhmODQ1
NjQyZWI5M2IxZmE1N2RmMzJhOWJiOGMzMTcxYzQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAgLTIxMSw2ICsyMTEsNyBAQCBtb2R1bGVzID0g
WwogICAgICAgICAgICAgIkRhdGFiYXNlUXVlcnlWaWV3LmpzIiwKICAgICAgICAgICAgICJEYXRh
YmFzZVRhYmxlVmlldy5qcyIsCiAgICAgICAgICAgICAiRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyIs
CisgICAgICAgICAgICAiRmlsZVN5c3RlbVZpZXcuanMiLAogICAgICAgICAgICAgIkluZGV4ZWRE
QlZpZXdzLmpzIiwKICAgICAgICAgICAgICJSZXNvdXJjZXNQYW5lbC5qcyIsCiAgICAgICAgIF0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
TW9kZWwuanMKaW5kZXggZjJlZjY5ZWMyYTY1ZTA1OGI1OGM4OTA0NzRkYjQ3MDU5ZWYyZmViMS4u
YTY5MjZiOWViNTJmZmZhMzViOGQxYjc0ZThkZGNiNGYwYmJhNmM4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAg
LTIwMiw2ICsyMDIsMzkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBzdG9yZVt0eXBlXSA9IGZpbGVTeXN0ZW07CiAgICAgICAgICAgICB0
aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7CiAgICAgICAgIH0KKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVj
dG9yeX0gZGlyZWN0b3J5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEFycmF5LjxX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5Pj0pfSBjYWxsYmFjaworICAgICAqLwor
ICAgIHJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9uKGRpcmVjdG9yeSwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIucmVhZERpcmVjdG9yeShkaXJlY3RvcnkudXJsLCB0
aGlzLl9kaWRSZWFkRGlyZWN0b3J5LmJpbmQodGhpcywgZGlyZWN0b3J5LCBjYWxsYmFjaykpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRGlyZWN0b3J5fSBwYXJlbnREaXJlY3RvcnkKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnk+PSl9IGNh
bGxiYWNrCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAgICAqIEBwYXJhbSB7
QXJyYXkuPEZpbGVTeXN0ZW1BZ2VudC5FbnRyeT49fSBiYWNrZW5kRW50cmllcworICAgICAqLwor
ICAgIF9kaWRSZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihwYXJlbnREaXJlY3RvcnksIGNhbGxiYWNr
LCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yQ29k
ZSAhPT0gMCkgeworICAgICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBudWxsKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBlbnRyaWVzID0gW107Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFja2VuZEVudHJpZXMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChiYWNrZW5kRW50cmllc1tpXS5pc0RpcmVjdG9yeSkKKyAgICAgICAg
ICAgICAgICBlbnRyaWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGly
ZWN0b3J5KHRoaXMsIHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtLCBiYWNrZW5kRW50cmllc1tp
XSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlKHRoaXMsIHBhcmVudERpcmVjdG9yeS5m
aWxlU3lzdGVtLCBiYWNrZW5kRW50cmllc1tpXSkpOworICAgICAgICB9CisKKyAgICAgICAgY2Fs
bGJhY2soZXJyb3JDb2RlLCBlbnRyaWVzKTsKICAgICB9CiB9CiAKQEAgLTIyMyw2ICsyNTYsOCBA
QCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0gPSBmdW5jdGlvbihmaWxl
U3lzdGVtTW9kZWwsIG9yaWdpbiwgdHlwZQogewogICAgIHRoaXMub3JpZ2luID0gb3JpZ2luOwog
ICAgIHRoaXMudHlwZSA9IHR5cGU7CisKKyAgICB0aGlzLnJvb3QgPSBuZXcgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3RlbU1vZGVsLCB0aGlzLCBiYWNrZW5k
Um9vdEVudHJ5KTsKIH0KIAogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVt
LnByb3RvdHlwZSA9IHsKQEAgLTIzNCw2ICsyNjksOTkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IK
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVs
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmls
ZVN5c3RlbQorICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnl9IGJhY2tlbmRFbnRyeQor
ICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5ID0gZnVuY3Rpb24oZmlsZVN5
c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZW5kRW50cnkpCit7CisgICAgdGhpcy5fZmlsZVN5
c3RlbU1vZGVsID0gZmlsZVN5c3RlbU1vZGVsOworICAgIHRoaXMuX2ZpbGVTeXN0ZW0gPSBmaWxl
U3lzdGVtOworCisgICAgdGhpcy5fdXJsID0gYmFja2VuZEVudHJ5LnVybDsKKyAgICB0aGlzLl9u
YW1lID0gYmFja2VuZEVudHJ5Lm5hbWU7CisgICAgdGhpcy5faXNEaXJlY3RvcnkgPSBiYWNrZW5k
RW50cnkuaXNEaXJlY3Rvcnk7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkVudHJ5fSB4CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnl9IHkKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5FbnRyeS5jb21wYXJlID0gZnVuY3Rpb24oeCwgeSkKK3sKKyAgICBpZiAo
eC5pc0RpcmVjdG9yeSkgeworICAgICAgICBpZiAoIXkuaXNEaXJlY3RvcnkpCisgICAgICAgICAg
ICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHkuaXNEaXJlY3RvcnkpCisg
ICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoeC5uYW1lIDwgeS5uYW1lKQor
ICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHgubmFtZSA+IHkubmFtZSkKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RW50cnkucHJvdG90eXBlID0geworICAgIGdldCBmaWxlU3lzdGVtTW9kZWwoKSB7IHJldHVybiB0
aGlzLl9maWxlU3lzdGVtTW9kZWw7IH0sCisgICAgZ2V0IGZpbGVTeXN0ZW0oKSB7IHJldHVybiB0
aGlzLl9maWxlU3lzdGVtOyB9LAorCisgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsg
fSwKKyAgICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0sCisgICAgZ2V0IGlzRGly
ZWN0b3J5KCkgeyByZXR1cm4gdGhpcy5faXNEaXJlY3Rvcnk7IH0KK30KKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5
fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVtTW9k
ZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBm
aWxlU3lzdGVtCisgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZEVudHJ5
CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5ID0gZnVuY3Rpb24o
ZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZW5kRW50cnkpCit7CisgICAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxsKHRoaXMsIGZpbGVTeXN0ZW1Nb2RlbCwg
ZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5EaXJlY3RvcnkucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rv
cnk+KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsLnJlYWREaXJlY3Rvcnko
dGhpcywgY2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5EaXJlY3RvcnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnkucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJh
bSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kRW50cnkKKyAqLworV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5GaWxlID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lz
dGVtLCBiYWNrZW5kRW50cnkpCit7CisgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5F
bnRyeS5jYWxsKHRoaXMsIGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5
KTsKKworICAgIHRoaXMuX21pbWVUeXBlID0gYmFja2VuZEVudHJ5Lm1pbWVUeXBlOworICAgIHRo
aXMuX3Jlc291cmNlVHlwZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzW2JhY2tlbmRFbnRy
eS5yZXNvdXJjZVR5cGVdOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUu
cHJvdG90eXBlID0geworICAgIGdldCBtaW1lVHlwZSgpIHsgcmV0dXJuIHRoaXMuX21pbWVUeXBl
OyB9LAorICAgIGdldCByZXNvdXJjZVR5cGUoKSB7IHJldHVybiB0aGlzLl9yZXNvdXJjZVR5cGU7
IH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKICAqLwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0
TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKQEAgLTI4Nyw3ICs0MTUsNyBAQCBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZWFk
RGlyZWN0b3J5OiBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJl
cXVlc3RJZCA9IHRoaXMucmVxdWVzdElkKCk7CisgICAgICAgIHZhciByZXF1ZXN0SWQgPSB0aGlz
Ll9yZXF1ZXN0SWQoKTsKICAgICAgICAgdGhpcy5fcGVuZGluZ1JlYWREaXJlY3RvcnlSZXF1ZXN0
c1tyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CiAgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRGly
ZWN0b3J5KHJlcXVlc3RJZCwgdXJsKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNiMjJi
Mzg2OTQ4OWE0ZjdlZmNlYmVlYzgzOTA1OThlYzgxZWJjNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKQEAgLTAs
MCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5TcGxpdFZpZXd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZVN5c3RlbX0gZmlsZVN5c3RlbQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBm
dW5jdGlvbihmaWxlU3lzdGVtKQoreworICAgIFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuY2FsbCh0
aGlzLCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAiRmlsZVN5
c3RlbVZpZXdTaWRlYmFyV2lkdGgiKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
ZmlsZS1zeXN0ZW0tdmlldyIpOworCisgICAgdmFyIGRpcmVjdG9yeVRyZWVFbGVtZW50ID0gdGhp
cy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIsICJmaWxlc3lzdGVtLWRpcmVjdG9yeS10cmVlIik7
CisgICAgdGhpcy5kaXJlY3RvcnlUcmVlID0gbmV3IFRyZWVPdXRsaW5lKGRpcmVjdG9yeVRyZWVF
bGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENoaWxkKGRpcmVjdG9yeVRy
ZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxp
bmUtZGlzY2xvc3VyZSIpOworICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
c2lkZWJhciIpOworCisgICAgdGhpcy5kaXJlY3RvcnlUcmVlLmFwcGVuZENoaWxkKG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcywgZmlsZVN5c3RlbS5yb290KSk7Cisg
ICAgdGhpcy52aXNpYmxlVmlldyA9IG51bGw7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
Vmlldy5wcm90b3R5cGUgPSB7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd1ZpZXc6IGZ1bmN0aW9uKHZpZXcpCisgICAg
eworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gdmlldykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpCisgICAgICAgICAgICB0aGlzLnZp
c2libGVWaWV3LmRldGFjaCgpOworICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gdmlldzsKKyAg
ICAgICAgdmlldy5zaG93KHRoaXMubWFpbkVsZW1lbnQpOworICAgIH0KK30KKworV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtU
cmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3fSBmaWxl
U3lzdGVtVmlldworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5
fSBlbnRyeQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkgPSBmdW5jdGlv
bihmaWxlU3lzdGVtVmlldywgZW50cnkpCit7CisgICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBl
bnRyeS5uYW1lLCBudWxsLCBlbnRyeS5pc0RpcmVjdG9yeSk7CisKKyAgICB0aGlzLl9lbnRyeSA9
IGVudHJ5OworICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gZmlsZVN5c3RlbVZpZXc7Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgb25h
dHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLmxp
c3RJdGVtRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2IiwgInNlbGVjdGlvbiIpOworICAgICAgICB0
aGlzLmxpc3RJdGVtRWxlbWVudC5pbnNlcnRCZWZvcmUoc2VsZWN0aW9uLCB0aGlzLmxpc3RJdGVt
RWxlbWVudC5maXJzdENoaWxkKTsKKworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQu
YmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB9LAorCisgICAgX2hhbmRsZUNvbnRl
eHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRleHRN
ZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCB0aGlzLnJlZnJl
c2guYmluZCh0aGlzKSk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgIH0s
CisKKyAgICBfZGlkUmVhZERpcmVjdG9yeTogZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQor
ICAgIHsKKyAgICAgICAgaWYgKGVycm9yQ29kZSA9PT0gRmlsZUVycm9yLk5PVF9GT1VORF9FUlIp
IHsKKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudCAhPT0gdGhpcy50cmVlT3V0bGluZSkKKyAg
ICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZyZXNoKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXJyb3JDb2RlICE9PSAwKSB7CisgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVhZCBkaXJlY3Rvcnk6ICIgKyBlcnJvckNvZGUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZW50cmllcy5zb3J0
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk7CisgICAgICAgIHZh
ciBvbGRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoMCk7CisKKyAgICAgICAgdmFyIG5l
d0VudHJ5SW5kZXggPSAwOworICAgICAgICB2YXIgb2xkQ2hpbGRJbmRleCA9IDA7CisgICAgICAg
IHZhciBjdXJyZW50VHJlZUl0ZW0gPSAwOworICAgICAgICB3aGlsZSAobmV3RW50cnlJbmRleCA8
IGVudHJpZXMubGVuZ3RoICYmIG9sZENoaWxkSW5kZXggPCBvbGRDaGlsZHJlbi5sZW5ndGgpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyaWVzW25ld0VudHJ5SW5kZXhdLm5hbWUgPT09IG9sZENoaWxk
cmVuW29sZENoaWxkSW5kZXhdLl9lbnRyeS5uYW1lKSB7CisgICAgICAgICAgICAgICAgb2xkQ2hp
bGRyZW5bb2xkQ2hpbGRJbmRleF0ucmVmcmVzaCgpOworICAgICAgICAgICAgICAgICsrbmV3RW50
cnlJbmRleDsKKyAgICAgICAgICAgICAgICArK29sZENoaWxkSW5kZXg7CisgICAgICAgICAgICAg
ICAgKytjdXJyZW50VHJlZUl0ZW07CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbnRyaWVzW25ld0VudHJ5SW5kZXhdLm5hbWUgPCBv
bGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5fZW50cnkubmFtZSkgeworICAgICAgICAgICAgICAg
IHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeSh0
aGlzLl9maWxlU3lzdGVtVmlldywgZW50cmllc1swXSksIGN1cnJlbnRUcmVlSXRlbSk7CisgICAg
ICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVudFRy
ZWVJdGVtOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkQXRJbmRleChjdXJyZW50VHJlZUl0ZW0pOworICAgICAg
ICAgICAgKytvbGRDaGlsZEluZGV4OworICAgICAgICB9CisgICAgICAgIGZvciAoOyBuZXdFbnRy
eUluZGV4IDwgZW50cmllcy5sZW5ndGg7ICsrbmV3RW50cnlJbmRleCkKKyAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeSh0aGlz
Ll9maWxlU3lzdGVtVmlldywgZW50cmllc1tuZXdFbnRyeUluZGV4XSkpOworCisgICAgICAgIGZv
ciAoOyBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoOyArK29sZENoaWxkSW5kZXgp
CisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhd
KTsKKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5fZW50cnkucmVhZERpcmVjdG9yeSh0aGlzLl9kaWRSZWFkRGlyZWN0b3J5LmJpbmQodGhp
cykpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCBjOTdj
MWYyNWI3M2I0N2NiODQxMWViODMzZGU5NDE3MGNmNzY5YzcxLi5jNDcxYjZhYzdmZjMwODdkYjg5
MDBhMjgwOGIyNmM3MDNkMDdkMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTQ2Miw2ICs0NjIsMTQgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faW5u
ZXJTaG93Vmlldyh0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlld3NbZnJhbWVJZF0pOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiAgQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmlld30gdmlldworICAg
ICAqLworICAgIHNob3dGaWxlU3lzdGVtOiBmdW5jdGlvbih2aWV3KQorICAgIHsKKyAgICAgICAg
dGhpcy5faW5uZXJTaG93Vmlldyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hvd0NhdGVnb3J5Vmll
dzogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRl
Z29yeVZpZXcpCkBAIC0xOTc3LDYgKzE5ODUsNDQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9
LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwor
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVu
dSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
fSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlZnJlc2ggRmlsZVN5c3RlbSBWaWV3IiksIHRoaXMuX3JlZnJlc2hGaWxlU3lzdGVtLmJpbmQo
dGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAg
X3JlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5y
ZWZyZXNoKCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxl
Y3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtVmlldykgeworICAg
ICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLndhcm4oIkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBhdmFpbGFibGUuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRoaXMuX2Zp
bGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93Rmls
ZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9z
dG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVtVmlldykKKyAgICAgICAg
ICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggOGY4
MjIxYTYzZTExYmRlYzczZDU1ZTkwMmRiYjJjZTUzMGZkM2ZjYy4uZDQxZDM5ODY1ZWVmZTQyOTk0
YWVlOWNjNWQ2MTI0NWQxZTU3ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTksNiArNTksNyBAQAogICAgIDxmaWxlPkV4dGVuc2lv
blNlcnZlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5qczwvZmlsZT4KICAgICA8
ZmlsZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzPC9maWxl
PgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9n
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggZGJkN2M1YTVkNWJjNTBhZWVkYzQ3ZWNiZjdkMjFlY2I0YzE4YWU4
Zi4uNDcwNThjYTVjZjE0MDBhOWQ2MGViMzljMjEwNzFkZTE0MjU1NGJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjIs
NiArMTYyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJTb3VyY2VIVE1MVG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVt
TW9kZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJGb250Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148715</attachid>
            <date>2012-06-20 19:52:34 -0700</date>
            <delta_ts>2012-06-21 00:27:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120621115233.patch</filename>
            <type>text/plain</type>
            <size>19996</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM4ZDJlNmI5NmZkOTVj
ZDA0ODBkMWFlYmE2ZWE4ZGMzODExYmRlZi4uMzkzNjJkOTg5ZjU4MTdhY2EzY2M4OTA3NWQ4NDJi
ZTM3NzE0NGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEyLTA2LTIwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX2ZpbGVTeXN0ZW1Sb290UmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUu
cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5wcm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IGZpbGVTeXN0ZW1Nb2RlbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgZmlsZVN5
c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3Rv
dHlwZS5nZXQgdXJsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50
cnkucHJvdG90eXBlLmdldCBuYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnkucHJvdG90eXBlLmdldCBpc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUucmVxdWVzdERpcmVjdG9yeUNvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUuZ2V0IG1pbWVU
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5
cGUuZ2V0IHJlc291cmNlVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5zaG93
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5vbmF0dGFj
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBl
Lm9uZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5w
cm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUu
cmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0Zp
bGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jl
ZnJlc2hGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVs
ZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbDoKKworMjAxMi0wNi0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSByZXF1ZXN0SWQgYWxsb2NhdGlvbiBmcm9t
IEZpbGVTeXN0ZW0gZnJvbnRlbmQgdG8gYmFja2VuZAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI0ZjE0
MWExY2IyNjU2N2JmZTg0OTExZTg0ZTJjY2M4M2JhYmVkZWEuLmExMjExZjg0MmVkOWYzMzZjZWFh
ZjNmZDFhNmU3MjY3YjY2MDRlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY0MzksNiArNjQzOSw3
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA1NmY4OTRiNmUyMzM5
MDJiZjQzMjE1MDMxODJlNjczNTJmNGVmMWEuLmYyYmZlNzMxZTk3ZGE4YmIwMTMzNTI0YjJkNGQw
YmViODBlZmVhZDQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC03NDg2Miw2ICs3NDg2MiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lz
dGVtVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9n
LmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weQppbmRleCBjMzI4MTViZTdiYTVhMDA4ZTM1NzNiMmEyZjE2MGQx
ZThiN2Y1MTcxLi4wMjE3ODQ4Zjg0NTY0MmViOTNiMWZhNTdkZjMyYTliYjhjMzE3MWM0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC0yMTEs
NiArMjExLDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEYXRhYmFzZVF1ZXJ5Vmlldy5q
cyIsCiAgICAgICAgICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMiLAogICAgICAgICAgICAgIkRP
TVN0b3JhZ2VJdGVtc1ZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwK
ICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2Vz
UGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDUxOGRiNzcwZTBlMmFhNGRlMzll
NGUxYTRkMzZkMjAwNmU2MGM5N2MuLjc1NDhiMTMyYjZjNGQwMWRiNjdhYzNiZTE4MmQ4MDA1Y2U5
MjNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMDIsNiArMjAyLDM5IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgc3RvcmVbdHlwZV0gPSBmaWxl
U3lzdGVtOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOwog
ICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49
KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0RGlyZWN0b3J5Q29udGVudDogZnVuY3Rp
b24oZGlyZWN0b3J5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBl
ci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudChkaXJlY3RvcnkudXJsLCB0aGlzLl9kaXJlY3RvcnlD
b250ZW50UmVjZWl2ZWQuYmluZCh0aGlzLCBkaXJlY3RvcnksIGNhbGxiYWNrKSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5E
aXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVy
LCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49KX0gY2FsbGJhY2sK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtBcnJheS48
RmlsZVN5c3RlbUFnZW50LkVudHJ5Pj19IGJhY2tlbmRFbnRyaWVzCisgICAgICovCisgICAgX2Rp
cmVjdG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocGFyZW50RGlyZWN0b3J5LCBjYWxsYmFj
aywgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgIT09IDApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbnVsbCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgZW50cmllcyA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tlbmRFbnRyaWVzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBpZiAoYmFja2VuZEVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAgICAg
ICAgICAgICAgZW50cmllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRp
cmVjdG9yeSh0aGlzLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgYmFja2VuZEVudHJpZXNb
aV0pKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZSh0aGlzLCBwYXJlbnREaXJlY3Rvcnku
ZmlsZVN5c3RlbSwgYmFja2VuZEVudHJpZXNbaV0pKTsKKyAgICAgICAgfQorCisgICAgICAgIGNh
bGxiYWNrKGVycm9yQ29kZSwgZW50cmllcyk7CiAgICAgfQogfQogCkBAIC0yMjMsNiArMjU2LDgg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtID0gZnVuY3Rpb24oZmls
ZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUKIHsKICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbjsK
ICAgICB0aGlzLnR5cGUgPSB0eXBlOworCisgICAgdGhpcy5yb290ID0gbmV3IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5KGZpbGVTeXN0ZW1Nb2RlbCwgdGhpcywgYmFja2Vu
ZFJvb3RFbnRyeSk7CiB9CiAKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3Rl
bS5wcm90b3R5cGUgPSB7CkBAIC0yMzQsNiArMjY5LDk5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9y
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2Rl
bAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZp
bGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kRW50cnkK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVT
eXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KQoreworICAgIHRoaXMuX2ZpbGVT
eXN0ZW1Nb2RlbCA9IGZpbGVTeXN0ZW1Nb2RlbDsKKyAgICB0aGlzLl9maWxlU3lzdGVtID0gZmls
ZVN5c3RlbTsKKworICAgIHRoaXMuX3VybCA9IGJhY2tlbmRFbnRyeS51cmw7CisgICAgdGhpcy5f
bmFtZSA9IGJhY2tlbmRFbnRyeS5uYW1lOworICAgIHRoaXMuX2lzRGlyZWN0b3J5ID0gYmFja2Vu
ZEVudHJ5LmlzRGlyZWN0b3J5OworfQorCisvKioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5FbnRyeX0geAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5fSB5CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSA9IGZ1bmN0aW9uKHgsIHkpCit7CisgICAgaWYg
KHguaXNEaXJlY3RvcnkpIHsKKyAgICAgICAgaWYgKCF5LmlzRGlyZWN0b3J5KQorICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh5LmlzRGlyZWN0b3J5KQor
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHgubmFtZSA8IHkubmFtZSkK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh4Lm5hbWUgPiB5Lm5hbWUpCisgICAgICAgIHJl
dHVybiAxOworICAgIHJldHVybiAwOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZmlsZVN5c3RlbU1vZGVsKCkgeyByZXR1cm4g
dGhpcy5fZmlsZVN5c3RlbU1vZGVsOyB9LAorICAgIGdldCBmaWxlU3lzdGVtKCkgeyByZXR1cm4g
dGhpcy5fZmlsZVN5c3RlbTsgfSwKKworICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7
IH0sCisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9LAorICAgIGdldCBpc0Rp
cmVjdG9yeSgpIHsgcmV0dXJuIHRoaXMuX2lzRGlyZWN0b3J5OyB9Cit9CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRy
eX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1v
ZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0g
ZmlsZVN5c3RlbQorICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnl9IGJhY2tlbmRFbnRy
eQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSA9IGZ1bmN0aW9u
KGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KQoreworICAgIFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY2FsbCh0aGlzLCBmaWxlU3lzdGVtTW9kZWws
IGZpbGVTeXN0ZW0sIGJhY2tlbmRFbnRyeSk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0
b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQ6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTW9kZWwucmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQodGhpcywgY2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlOworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50
cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1N
b2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19
IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kRW50
cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlID0gZnVuY3Rpb24oZmls
ZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZW5kRW50cnkpCit7CisgICAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxsKHRoaXMsIGZpbGVTeXN0ZW1Nb2RlbCwgZmls
ZVN5c3RlbSwgYmFja2VuZEVudHJ5KTsKKworICAgIHRoaXMuX21pbWVUeXBlID0gYmFja2VuZEVu
dHJ5Lm1pbWVUeXBlOworICAgIHRoaXMuX3Jlc291cmNlVHlwZSA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzW2JhY2tlbmRFbnRyeS5yZXNvdXJjZVR5cGVdOworfQorCitXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlID0geworICAgIGdldCBtaW1lVHlwZSgpIHsg
cmV0dXJuIHRoaXMuX21pbWVUeXBlOyB9LAorICAgIGdldCByZXNvdXJjZVR5cGUoKSB7IHJldHVy
biB0aGlzLl9yZXNvdXJjZVR5cGU7IH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqLwogV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhMzlkMzVjNWNjZDdiNjg0ZGU4YWM4Y2VkZWQxYzVkNjY2ODY3YTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24u
TGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAgdGhpcy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImZpbGUtc3lzdGVtLXZpZXciKTsKKworICAgIHZhciBkaXJlY3RvcnlUcmVl
RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgib2wiLCAiZmlsZXN5c3RlbS1kaXJl
Y3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5VHJlZSA9IG5ldyBUcmVlT3V0bGluZShk
aXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRoaXMuZGlyZWN0b3J5VHJlZS5hcHBlbmRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMsIGZpbGVTeXN0
ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOworfQorCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVmlld30gdmlldworICAgICAqLworICAgIHNob3dWaWV3OiBmdW5jdGlv
bih2aWV3KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgPT09IHZpZXcpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3KQorICAgICAg
ICAgICAgdGhpcy52aXNpYmxlVmlldy5kZXRhY2goKTsKKyAgICAgICAgdGhpcy52aXNpYmxlVmll
dyA9IHZpZXc7CisgICAgICAgIHZpZXcuc2hvdyh0aGlzLm1haW5FbGVtZW50KTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLlNwbGl0Vmlldy5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7VHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlld30gZmlsZVN5c3RlbVZpZXcKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FbnRyeX0gZW50cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVu
dHJ5ID0gZnVuY3Rpb24oZmlsZVN5c3RlbVZpZXcsIGVudHJ5KQoreworICAgIFRyZWVFbGVtZW50
LmNhbGwodGhpcywgZW50cnkubmFtZSwgbnVsbCwgZW50cnkuaXNEaXJlY3RvcnkpOworCisgICAg
dGhpcy5fZW50cnkgPSBlbnRyeTsKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IGZpbGVTeXN0
ZW1WaWV3OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBl
ID0geworICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0
aW9uID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJzZWxlY3Rpb24i
KTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHNlbGVjdGlvbiwg
dGhpcy5saXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7CisKKyAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250
ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAgICBvbmV4cGFuZDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgfSwKKworICAg
IF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2gi
KSwgdGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2
ZW50KTsKKyAgICB9LAorCisgICAgX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24o
ZXJyb3JDb2RlLCBlbnRyaWVzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yQ29kZSA9PT0gRmls
ZUVycm9yLk5PVF9GT1VORF9FUlIpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudCAhPT0g
dGhpcy50cmVlT3V0bGluZSkKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZyZXNoKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXJyb3JDb2Rl
ICE9PSAwKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcmVhZCBkaXJl
Y3Rvcnk6ICIgKyBlcnJvckNvZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZW50cmllcy5zb3J0KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnku
Y29tcGFyZSk7CisgICAgICAgIHZhciBvbGRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2Uo
MCk7CisKKyAgICAgICAgdmFyIG5ld0VudHJ5SW5kZXggPSAwOworICAgICAgICB2YXIgb2xkQ2hp
bGRJbmRleCA9IDA7CisgICAgICAgIHZhciBjdXJyZW50VHJlZUl0ZW0gPSAwOworICAgICAgICB3
aGlsZSAobmV3RW50cnlJbmRleCA8IGVudHJpZXMubGVuZ3RoICYmIG9sZENoaWxkSW5kZXggPCBv
bGRDaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzW25ld0VudHJ5SW5k
ZXhdLm5hbWUgPT09IG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdLl9lbnRyeS5uYW1lKSB7Cisg
ICAgICAgICAgICAgICAgb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0ucmVmcmVzaCgpOworICAg
ICAgICAgICAgICAgICsrbmV3RW50cnlJbmRleDsKKyAgICAgICAgICAgICAgICArK29sZENoaWxk
SW5kZXg7CisgICAgICAgICAgICAgICAgKytjdXJyZW50VHJlZUl0ZW07CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbnRyaWVzW25l
d0VudHJ5SW5kZXhdLm5hbWUgPCBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5fZW50cnkubmFt
ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVmlldy5FbnRyeSh0aGlzLl9maWxlU3lzdGVtVmlldywgZW50cmllc1swXSksIGN1
cnJlbnRUcmVlSXRlbSk7CisgICAgICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OworICAgICAg
ICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkQXRJbmRleChjdXJy
ZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgKytvbGRDaGlsZEluZGV4OworICAgICAgICB9Cisg
ICAgICAgIGZvciAoOyBuZXdFbnRyeUluZGV4IDwgZW50cmllcy5sZW5ndGg7ICsrbmV3RW50cnlJ
bmRleCkKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldy5FbnRyeSh0aGlzLl9maWxlU3lzdGVtVmlldywgZW50cmllc1tuZXdFbnRyeUlu
ZGV4XSkpOworCisgICAgICAgIGZvciAoOyBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVu
Z3RoOyArK29sZENoaWxkSW5kZXgpCisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKG9sZENo
aWxkcmVuW29sZENoaWxkSW5kZXhdKTsKKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fZW50cnkucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQo
dGhpcy5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkLmJpbmQodGhpcykpOworICAgIH0KK30KKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBU
cmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCBjOTdjMWYyNWI3M2I0N2NiODQxMWVi
ODMzZGU5NDE3MGNmNzY5YzcxLi5jNDcxYjZhYzdmZjMwODdkYjg5MDBhMjgwOGIyNmM3MDNkMDdk
MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKQEAgLTQ2Miw2ICs0NjIsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlVmlld3NbZnJhbWVJZF0pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiAgQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmlld30gdmlldworICAgICAqLworICAgIHNob3dGaWxl
U3lzdGVtOiBmdW5jdGlvbih2aWV3KQorICAgIHsKKyAgICAgICAgdGhpcy5faW5uZXJTaG93Vmll
dyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hvd0NhdGVnb3J5VmlldzogZnVuY3Rpb24oY2F0ZWdv
cnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRlZ29yeVZpZXcpCkBAIC0xOTc3
LDYgKzE5ODUsNDQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKICAgICAgICAgcmV0dXJuICJmaWxlc3lz
dGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgb25hdHRhY2g6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJ
dGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNv
bnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVD
b250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjb250
ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3Rl
bSBWaWV3IiksIHRoaXMuX3JlZnJlc2hGaWxlU3lzdGVtLmJpbmQodGhpcykpOworICAgICAgICBj
b250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAgX3JlZnJlc2hGaWxlU3lzdGVt
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbVZp
ZXcpCisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5yZWZyZXNoKCk7CisgICAgfSwK
KworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
QmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QuY2FsbCh0aGlzKTsKKyAg
ICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtVmlldykgeworICAgICAgICAgICAgaWYgKCFXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4o
IkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBhdmFpbGFibGUuIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRoaXMuX2ZpbGVTeXN0ZW0pOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLl9maWxl
U3lzdGVtVmlldyk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJs
ZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVtVmlldykKKyAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VQ
YW5lbC5jbG9zZVZpc2libGVWaWV3KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggOGY4MjIxYTYzZTExYmRlYzczZDU1
ZTkwMmRiYjJjZTUzMGZkM2ZjYy4uZDQxZDM5ODY1ZWVmZTQyOTk0YWVlOWNjNWQ2MTI0NWQxZTU3
ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtNTksNiArNTksNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4K
ICAgICA8ZmlsZT5GaWxlTWFuYWdlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtTW9k
ZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZp
bGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRW
aWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXgg
ZGJkN2M1YTVkNWJjNTBhZWVkYzQ3ZWNiZjdkMjFlY2I0YzE4YWU4Zi4uNDcwNThjYTVjZjE0MDBh
OWQ2MGViMzljMjEwNzFkZTE0MjU1NGJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjIsNiArMTYyLDcgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VIVE1MVG9r
ZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1WaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJG
b250Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148740</attachid>
            <date>2012-06-21 00:28:00 -0700</date>
            <delta_ts>2012-06-21 23:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120621162759.patch</filename>
            <type>text/plain</type>
            <size>20006</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM4ZDJlNmI5NmZkOTVj
ZDA0ODBkMWFlYmE2ZWE4ZGMzODExYmRlZi4uMzkzNjJkOTg5ZjU4MTdhY2EzY2M4OTA3NWQ4NDJi
ZTM3NzE0NGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEyLTA2LTIwICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX2ZpbGVTeXN0ZW1Sb290UmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUu
cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5wcm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IGZpbGVTeXN0ZW1Nb2RlbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgZmlsZVN5
c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3Rv
dHlwZS5nZXQgdXJsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50
cnkucHJvdG90eXBlLmdldCBuYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnkucHJvdG90eXBlLmdldCBpc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUucmVxdWVzdERpcmVjdG9yeUNvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUuZ2V0IG1pbWVU
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5
cGUuZ2V0IHJlc291cmNlVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5zaG93
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5vbmF0dGFj
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBl
Lm9uZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5w
cm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUu
cmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0Zp
bGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jl
ZnJlc2hGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVs
ZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbDoKKworMjAxMi0wNi0yMCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSByZXF1ZXN0SWQgYWxsb2NhdGlvbiBmcm9t
IEZpbGVTeXN0ZW0gZnJvbnRlbmQgdG8gYmFja2VuZAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI0ZjE0
MWExY2IyNjU2N2JmZTg0OTExZTg0ZTJjY2M4M2JhYmVkZWEuLmExMjExZjg0MmVkOWYzMzZjZWFh
ZjNmZDFhNmU3MjY3YjY2MDRlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY0MzksNiArNjQzOSw3
IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA1NmY4OTRiNmUyMzM5
MDJiZjQzMjE1MDMxODJlNjczNTJmNGVmMWEuLmYyYmZlNzMxZTk3ZGE4YmIwMTMzNTI0YjJkNGQw
YmViODBlZmVhZDQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC03NDg2Miw2ICs3NDg2MiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lz
dGVtVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9n
LmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weQppbmRleCBjMzI4MTViZTdiYTVhMDA4ZTM1NzNiMmEyZjE2MGQx
ZThiN2Y1MTcxLi4wMjE3ODQ4Zjg0NTY0MmViOTNiMWZhNTdkZjMyYTliYjhjMzE3MWM0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC0yMTEs
NiArMjExLDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEYXRhYmFzZVF1ZXJ5Vmlldy5q
cyIsCiAgICAgICAgICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMiLAogICAgICAgICAgICAgIkRP
TVN0b3JhZ2VJdGVtc1ZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwK
ICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2Vz
UGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDUxOGRiNzcwZTBlMmFhNGRlMzll
NGUxYTRkMzZkMjAwNmU2MGM5N2MuLjc1NDhiMTMyYjZjNGQwMWRiNjdhYzNiZTE4MmQ4MDA1Y2U5
MjNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMDIsNiArMjAyLDM5IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgc3RvcmVbdHlwZV0gPSBmaWxl
U3lzdGVtOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOwog
ICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49
KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0RGlyZWN0b3J5Q29udGVudDogZnVuY3Rp
b24oZGlyZWN0b3J5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBl
ci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudChkaXJlY3RvcnkudXJsLCB0aGlzLl9kaXJlY3RvcnlD
b250ZW50UmVjZWl2ZWQuYmluZCh0aGlzLCBkaXJlY3RvcnksIGNhbGxiYWNrKSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5E
aXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVy
LCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49KX0gY2FsbGJhY2sK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBhcmFtIHtBcnJheS48
RmlsZVN5c3RlbUFnZW50LkVudHJ5Pj19IGJhY2tlbmRFbnRyaWVzCisgICAgICovCisgICAgX2Rp
cmVjdG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocGFyZW50RGlyZWN0b3J5LCBjYWxsYmFj
aywgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgIT09IDApIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbnVsbCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgZW50cmllcyA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tlbmRFbnRyaWVzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBpZiAoYmFja2VuZEVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAgICAg
ICAgICAgICAgZW50cmllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRp
cmVjdG9yeSh0aGlzLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgYmFja2VuZEVudHJpZXNb
aV0pKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2gobmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZSh0aGlzLCBwYXJlbnREaXJlY3Rvcnku
ZmlsZVN5c3RlbSwgYmFja2VuZEVudHJpZXNbaV0pKTsKKyAgICAgICAgfQorCisgICAgICAgIGNh
bGxiYWNrKGVycm9yQ29kZSwgZW50cmllcyk7CiAgICAgfQogfQogCkBAIC0yMjMsNiArMjU2LDgg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtID0gZnVuY3Rpb24oZmls
ZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUKIHsKICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbjsK
ICAgICB0aGlzLnR5cGUgPSB0eXBlOworCisgICAgdGhpcy5yb290ID0gbmV3IFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5KGZpbGVTeXN0ZW1Nb2RlbCwgdGhpcywgYmFja2Vu
ZFJvb3RFbnRyeSk7CiB9CiAKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3Rl
bS5wcm90b3R5cGUgPSB7CkBAIC0yMzQsNiArMjY5LDk5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9y
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2Rl
bAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZp
bGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kRW50cnkK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVT
eXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KQoreworICAgIHRoaXMuX2ZpbGVT
eXN0ZW1Nb2RlbCA9IGZpbGVTeXN0ZW1Nb2RlbDsKKyAgICB0aGlzLl9maWxlU3lzdGVtID0gZmls
ZVN5c3RlbTsKKworICAgIHRoaXMuX3VybCA9IGJhY2tlbmRFbnRyeS51cmw7CisgICAgdGhpcy5f
bmFtZSA9IGJhY2tlbmRFbnRyeS5uYW1lOworICAgIHRoaXMuX2lzRGlyZWN0b3J5ID0gYmFja2Vu
ZEVudHJ5LmlzRGlyZWN0b3J5OworfQorCisvKioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5FbnRyeX0geAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkVudHJ5fSB5CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSA9IGZ1bmN0aW9uKHgsIHkpCit7CisgICAgaWYg
KHguaXNEaXJlY3RvcnkpIHsKKyAgICAgICAgaWYgKCF5LmlzRGlyZWN0b3J5KQorICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh5LmlzRGlyZWN0b3J5KQor
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHgubmFtZSA8IHkubmFtZSkK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh4Lm5hbWUgPiB5Lm5hbWUpCisgICAgICAgIHJl
dHVybiAxOworICAgIHJldHVybiAwOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZmlsZVN5c3RlbU1vZGVsKCkgeyByZXR1cm4g
dGhpcy5fZmlsZVN5c3RlbU1vZGVsOyB9LAorICAgIGdldCBmaWxlU3lzdGVtKCkgeyByZXR1cm4g
dGhpcy5fZmlsZVN5c3RlbTsgfSwKKworICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7
IH0sCisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9LAorICAgIGdldCBpc0Rp
cmVjdG9yeSgpIHsgcmV0dXJuIHRoaXMuX2lzRGlyZWN0b3J5OyB9Cit9CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRy
eX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1v
ZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0g
ZmlsZVN5c3RlbQorICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnl9IGJhY2tlbmRFbnRy
eQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSA9IGZ1bmN0aW9u
KGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KQoreworICAgIFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY2FsbCh0aGlzLCBmaWxlU3lzdGVtTW9kZWws
IGZpbGVTeXN0ZW0sIGJhY2tlbmRFbnRyeSk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0
b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQ6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTW9kZWwucmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQodGhpcywgY2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlOworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50
cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1N
b2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19
IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kRW50
cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlID0gZnVuY3Rpb24oZmls
ZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZW5kRW50cnkpCit7CisgICAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxsKHRoaXMsIGZpbGVTeXN0ZW1Nb2RlbCwgZmls
ZVN5c3RlbSwgYmFja2VuZEVudHJ5KTsKKworICAgIHRoaXMuX21pbWVUeXBlID0gYmFja2VuZEVu
dHJ5Lm1pbWVUeXBlOworICAgIHRoaXMuX3Jlc291cmNlVHlwZSA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzW2JhY2tlbmRFbnRyeS5yZXNvdXJjZVR5cGVdOworfQorCitXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlID0geworICAgIGdldCBtaW1lVHlwZSgpIHsg
cmV0dXJuIHRoaXMuX21pbWVUeXBlOyB9LAorICAgIGdldCByZXNvdXJjZVR5cGUoKSB7IHJldHVy
biB0aGlzLl9yZXNvdXJjZVR5cGU7IH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5GaWxlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqLwogV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjMWMwNTRiMmMzZTI0MWY5ZWZmNDQ4MTU2NDQ5YTEyNjQyMTg3OWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU3Bs
aXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24u
TGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAgdGhpcy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImZpbGUtc3lzdGVtLXZpZXciKTsKKworICAgIHZhciBkaXJlY3RvcnlUcmVl
RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgib2wiLCAiZmlsZXN5c3RlbS1kaXJl
Y3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5VHJlZSA9IG5ldyBUcmVlT3V0bGluZShk
aXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRoaXMuZGlyZWN0b3J5VHJlZS5hcHBlbmRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMsIGZpbGVTeXN0
ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOworfQorCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAgICBzaG93VmlldzogZnVuY3Rpb24o
dmlldykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSB2aWV3KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldykKKyAgICAgICAg
ICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMudmlzaWJsZVZpZXcg
PSB2aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5tYWluRWxlbWVudCk7CisgICAgfQorfQor
CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge1RyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVZpZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnl9IGVudHJ5CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRy
eSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRyeSkKK3sKKyAgICBUcmVlRWxlbWVudC5j
YWxsKHRoaXMsIGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5KTsKKworICAgIHRo
aXMuX2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVt
VmlldzsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZSA9
IHsKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGlv
biA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2VsZWN0aW9uIik7
CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZShzZWxlY3Rpb24sIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4
dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB9LAorCisgICAgb25leHBhbmQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgIH0sCisKKyAgICBf
aGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiks
IHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVu
dCk7CisgICAgfSwKKworICAgIF9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKGVy
cm9yQ29kZSwgZW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZpbGVF
cnJvci5OT1RfRk9VTkRfRVJSKSB7CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgIT09IHRo
aXMudHJlZU91dGxpbmUpCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmcmVzaCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVycm9yQ29kZSAh
PT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHJlYWQgZGlyZWN0
b3J5OiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGVudHJpZXMuc29ydChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNv
bXBhcmUpOworICAgICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDAp
OworCisgICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0gMDsKKyAgICAgICAgdmFyIG9sZENoaWxk
SW5kZXggPSAwOworICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsKKyAgICAgICAgd2hp
bGUgKG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xk
Q2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tuZXdFbnRyeUluZGV4
XS5uYW1lID09PSBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5fZW50cnkubmFtZSkgeworICAg
ICAgICAgICAgICAgIG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdLnJlZnJlc2goKTsKKyAgICAg
ICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7CisgICAgICAgICAgICAgICAgKytvbGRDaGlsZElu
ZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZW50cmllc1tuZXdF
bnRyeUluZGV4XS5uYW1lIDwgb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0uX2VudHJ5Lm5hbWUp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNbbmV3RW50cnlJ
bmRleF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAgICsrbmV3RW50cnlJbmRl
eDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEF0
SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICsrb2xkQ2hpbGRJbmRleDsKKyAg
ICAgICAgfQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVudHJpZXMubGVuZ3RoOyAr
K25ld0VudHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNb
bmV3RW50cnlJbmRleF0pKTsKKworICAgICAgICBmb3IgKDsgb2xkQ2hpbGRJbmRleCA8IG9sZENo
aWxkcmVuLmxlbmd0aDsgKytvbGRDaGlsZEluZGV4KQorICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZChvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XSk7CisgICAgfSwKKworICAgIHJlZnJlc2g6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW50cnkuaXNEaXJlY3Rvcnkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2VudHJ5LnJlcXVlc3REaXJlY3Rv
cnlDb250ZW50KHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMpKTsKKyAg
ICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUuX19w
cm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYzk3YzFmMjViNzNi
NDdjYjg0MTFlYjgzM2RlOTQxNzBjZjc2OWM3MS4uYzQ3MWI2YWM3ZmYzMDg3ZGI4OTAwYTI4MDhi
MjZjNzAzZDA3ZDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00NjIsNiArNDYyLDE0IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lubmVyU2hvd1Zp
ZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAg
ICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIHRoaXMuX2lu
bmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRlZ29yeVZpZXc6IGZ1bmN0
aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2F0ZWdvcnlWaWV3
KQpAQCAtMTk3Nyw2ICsxOTg1LDQ0IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7CiAgICAgICAgIHJldHVy
biAiZmlsZXN5c3RlbTovLyIgKyB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfSwKKworICAg
IG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0
b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAgICAg
dGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlz
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAg
ICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNo
IEZpbGVTeXN0ZW0gVmlldyIpLCB0aGlzLl9yZWZyZXNoRmlsZVN5c3RlbS5iaW5kKHRoaXMpKTsK
KyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9yZWZyZXNo
RmlsZVN5c3RlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Zp
bGVTeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcucmVmcmVzaCgp
OworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNhbGwo
dGhpcyk7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAgICAg
IGlmICghV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KSB7CisgICAgICAgICAgICAgICAgY29u
c29sZS53YXJuKCJGaWxlU3lzdGVtVmlldyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0aGlzLl9maWxlU3lzdGVt
KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0o
dGhpcy5fZmlsZVN5c3RlbVZpZXcpOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZmlsZVN5c3RlbVZpZXcgJiYgdGhpcy5fc3RvcmFnZVBh
bmVsLnZpc2libGVWaWV3ID09IHRoaXMuZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlz
Ll9zdG9yYWdlUGFuZWwuY2xvc2VWaXNpYmxlVmlldygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDhmODIyMWE2M2Ux
MWJkZWM3M2Q1NWU5MDJkYmIyY2U1MzBmZDNmY2MuLmQ0MWQzOTg2NWVlZmU0Mjk5NGFlZTljYzVk
NjEyNDVkMWU1N2U0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKQEAgLTU5LDYgKzU5LDcgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rmls
ZVN5c3RlbU1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxl
PgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qczwvZmlsZT4KICAgICA8
ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwvZmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCmluZGV4IGRiZDdjNWE1ZDViYzUwYWVlZGM0N2VjYmY3ZDIxZWNiNGMxOGFlOGYuLjQ3MDU4
Y2E1Y2YxNDAwYTlkNjBlYjM5YzIxMDcxZGUxNDI1NTRiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTYyLDYgKzE2Miw3
IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291
cmNlSFRNTFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbU1vZGVsLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxl
U3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148966</attachid>
            <date>2012-06-21 23:23:33 -0700</date>
            <delta_ts>2012-06-25 22:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120622152333.patch</filename>
            <type>text/plain</type>
            <size>20201</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFmNGYyMmE5MGQxNDlk
ZDhjZDY2YjYwYmExODcwNzI4M2IzMWY3My4uODQ5NDM1ZGVmYjAxY2FiODFhNjc3Y2YwNzAzMTdl
MzRmYzFiZDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTIxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jb21wYXJlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcucHJvdG90eXBlLnNob3dWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldy5FbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcu
RW50cnkucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5FbnRyeS5wcm90b3R5cGUub25leHBhbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlLl9k
aXJlY3RvcnlDb250ZW50UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5zaG93RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFu
ZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5fcmVmcmVzaEZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuY2xlYXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCisyMDEyLTA2LTIxICBUYWlqdSBUc3Vp
a2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgZnJv
bnRlbmQtc2lkZSBFbnRyeSBvYmplY3QgdG8gRmlsZVN5c3RlbU1vZGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTczOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZGlyZWN0b3J5
Q29udGVudFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBl
LmdldCBmaWxlU3lzdGVtTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IGZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUuZ2V0IHVybCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQgbmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZS5nZXQg
aXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnku
cHJvdG90eXBlLnJlcXVlc3REaXJlY3RvcnlDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkZpbGUucHJvdG90eXBlLmdldCBtaW1lVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlLmdldCByZXNvdXJjZVR5cGUpOgorCiAy
MDEyLTA2LTIxICBPbGkgTGFuICA8b2xpbGFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQg
bWV0aG9kcyB0byBzZWxlY3QgYmV0d2VlbiBvZmZzZXRzIGluIGFuIGVkaXRhYmxlIGZpZWxkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDQzYjZlYTY4ZWJkYmM0ODFlZDAxZjJkOTAwMWFiNGIzZjgxMDgz
NTYuLjkyYTRkZGY0ZTJlY2E2ZGI0NTA5MGVhZGZkMjU4NTNhMmMxYTc5ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTY0NDQsNiArNjQ0NCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZU1hbmFnZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVk
SXRlbVNlbGVjdGlvbkRpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGlu
ZURpYWxvZy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IGVlZDg1NDE5NzJmYWFjODE5MTQ5MTBmNDZmNTAxNTFkMzgxY2VhN2MuLmNiNzg0
ZjkwZjgzMjBhNDkxYzhhY2M3ZjQzNGYxM2Y0MWIxNDVlMTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDkwMiw2ICs3NDkwMiwxMCBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmls
dGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCBjMzI4MTVi
ZTdiYTVhMDA4ZTM1NzNiMmEyZjE2MGQxZThiN2Y1MTcxLi4wMjE3ODQ4Zjg0NTY0MmViOTNiMWZh
NTdkZjMyYTliYjhjMzE3MWM0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CkBAIC0yMTEsNiArMjExLDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAg
ICAgICJEYXRhYmFzZVF1ZXJ5Vmlldy5qcyIsCiAgICAgICAgICAgICAiRGF0YWJhc2VUYWJsZVZp
ZXcuanMiLAogICAgICAgICAgICAgIkRPTVN0b3JhZ2VJdGVtc1ZpZXcuanMiLAorICAgICAgICAg
ICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIs
CiAgICAgICAgICAgICAiUmVzb3VyY2VzUGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmlu
ZGV4IDUxOGRiNzcwZTBlMmFhNGRlMzllNGUxYTRkMzZkMjAwNmU2MGM5N2MuLjc1NDhiMTMyYjZj
NGQwMWRiNjdhYzNiZTE4MmQ4MDA1Y2U5MjNkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yMDIsNiArMjAy
LDM5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgc3RvcmVbdHlwZV0gPSBmaWxlU3lzdGVtOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5
c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOwogICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVj
dG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeT49KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0
RGlyZWN0b3J5Q29udGVudDogZnVuY3Rpb24oZGlyZWN0b3J5LCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudChkaXJlY3Rv
cnkudXJsLCB0aGlzLl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQuYmluZCh0aGlzLCBkaXJlY3Rv
cnksIGNhbGxiYWNrKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5FbnRyeT49KX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2Rl
CisgICAgICogQHBhcmFtIHtBcnJheS48RmlsZVN5c3RlbUFnZW50LkVudHJ5Pj19IGJhY2tlbmRF
bnRyaWVzCisgICAgICovCisgICAgX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24o
cGFyZW50RGlyZWN0b3J5LCBjYWxsYmFjaywgZXJyb3JDb2RlLCBiYWNrZW5kRW50cmllcykKKyAg
ICB7CisgICAgICAgIGlmIChlcnJvckNvZGUgIT09IDApIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KGVycm9yQ29kZSwgbnVsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgZW50cmllcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhY2tl
bmRFbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoYmFja2VuZEVudHJpZXNb
aV0uaXNEaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeSh0aGlzLCBwYXJlbnREaXJlY3RvcnkuZmls
ZVN5c3RlbSwgYmFja2VuZEVudHJpZXNbaV0pKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBlbnRyaWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZSh0aGlzLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgYmFja2VuZEVudHJpZXNbaV0pKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgZW50cmllcyk7CiAgICAg
fQogfQogCkBAIC0yMjMsNiArMjU2LDggQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5G
aWxlU3lzdGVtID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUKIHsKICAg
ICB0aGlzLm9yaWdpbiA9IG9yaWdpbjsKICAgICB0aGlzLnR5cGUgPSB0eXBlOworCisgICAgdGhp
cy5yb290ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5KGZpbGVT
eXN0ZW1Nb2RlbCwgdGhpcywgYmFja2VuZFJvb3RFbnRyeSk7CiB9CiAKIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CkBAIC0yMzQsNiArMjY5LDk5
IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7
CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3RlbUFn
ZW50LkVudHJ5fSBiYWNrZW5kRW50cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVu
dHJ5KQoreworICAgIHRoaXMuX2ZpbGVTeXN0ZW1Nb2RlbCA9IGZpbGVTeXN0ZW1Nb2RlbDsKKyAg
ICB0aGlzLl9maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKKworICAgIHRoaXMuX3VybCA9IGJhY2tl
bmRFbnRyeS51cmw7CisgICAgdGhpcy5fbmFtZSA9IGJhY2tlbmRFbnRyeS5uYW1lOworICAgIHRo
aXMuX2lzRGlyZWN0b3J5ID0gYmFja2VuZEVudHJ5LmlzRGlyZWN0b3J5OworfQorCisvKioKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0geAorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSB5CisgKiBAcmV0dXJuIHtudW1i
ZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSA9IGZ1
bmN0aW9uKHgsIHkpCit7CisgICAgaWYgKHguaXNEaXJlY3RvcnkpIHsKKyAgICAgICAgaWYgKCF5
LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmICh5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisg
ICAgaWYgKHgubmFtZSA8IHkubmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh4Lm5h
bWUgPiB5Lm5hbWUpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworfQorCitXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZmls
ZVN5c3RlbU1vZGVsKCkgeyByZXR1cm4gdGhpcy5fZmlsZVN5c3RlbU1vZGVsOyB9LAorICAgIGdl
dCBmaWxlU3lzdGVtKCkgeyByZXR1cm4gdGhpcy5fZmlsZVN5c3RlbTsgfSwKKworICAgIGdldCB1
cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH0sCisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlz
Ll9uYW1lOyB9LAorICAgIGdldCBpc0RpcmVjdG9yeSgpIHsgcmV0dXJuIHRoaXMuX2lzRGlyZWN0
b3J5OyB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICogQHBhcmFtIHtGaWxlU3lzdGVt
QWdlbnQuRW50cnl9IGJhY2tlbmRFbnRyeQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkRpcmVjdG9yeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFj
a2VuZEVudHJ5KQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY2Fs
bCh0aGlzLCBmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIGJhY2tlbmRFbnRyeSk7Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVx
dWVzdERpcmVjdG9yeUNvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
dGhpcy5maWxlU3lzdGVtTW9kZWwucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQodGhpcywgY2FsbGJh
Y2spOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnku
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnku
cHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7RmlsZVN5c3Rl
bUFnZW50LkVudHJ5fSBiYWNrZW5kRW50cnkKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GaWxlID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZW5k
RW50cnkpCit7CisgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jYWxsKHRo
aXMsIGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgYmFja2VuZEVudHJ5KTsKKworICAgIHRo
aXMuX21pbWVUeXBlID0gYmFja2VuZEVudHJ5Lm1pbWVUeXBlOworICAgIHRoaXMuX3Jlc291cmNl
VHlwZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzW2JhY2tlbmRFbnRyeS5yZXNvdXJjZVR5
cGVdOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlID0g
eworICAgIGdldCBtaW1lVHlwZSgpIHsgcmV0dXJuIHRoaXMuX21pbWVUeXBlOyB9LAorICAgIGdl
dCByZXNvdXJjZVR5cGUoKSB7IHJldHVybiB0aGlzLl9yZXNvdXJjZVR5cGU7IH0KK30KKworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29u
c3RydWN0b3IKICAqLwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IGZ1
bmN0aW9uKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMWMwNTRiMmMzZTI0MWY5ZWZmNDQ4MTU2
NDQ5YTEyNjQyMTg3OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0K
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkK
K3sKKyAgICBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNw
bGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uTGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRo
Iik7CisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZpbGUtc3lzdGVtLXZpZXciKTsK
KworICAgIHZhciBkaXJlY3RvcnlUcmVlRWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGls
ZCgib2wiLCAiZmlsZXN5c3RlbS1kaXJlY3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5
VHJlZSA9IG5ldyBUcmVlT3V0bGluZShkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5z
aWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhp
cy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAg
ICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRo
aXMuZGlyZWN0b3J5VHJlZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1W
aWV3LkVudHJ5KHRoaXMsIGZpbGVTeXN0ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcg
PSBudWxsOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0gewor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8K
KyAgICBzaG93VmlldzogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZp
c2libGVWaWV3ID09PSB2aWV3KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhp
cy52aXNpYmxlVmlldykKKyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7Cisg
ICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSB2aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5t
YWluRWxlbWVudCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlOworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1RyZWVFbGVtZW50fQorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5CisgKi8KK1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRy
eSkKK3sKKyAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5
LmlzRGlyZWN0b3J5KTsKKworICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fZmls
ZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtVmlldzsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1WaWV3LkVudHJ5LnByb3RvdHlwZSA9IHsKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNo
aWxkKCJkaXYiLCAic2VsZWN0aW9uIik7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmlu
c2VydEJlZm9yZShzZWxlY3Rpb24sIHRoaXMubGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOwor
CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRt
ZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAg
ICB9LAorCisgICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVm
cmVzaCgpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksIHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9kaXJlY3RvcnlDb250
ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7CisgICAgICAg
IGlmIChlcnJvckNvZGUgPT09IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5wYXJlbnQgIT09IHRoaXMudHJlZU91dGxpbmUpCisgICAgICAgICAgICAgICAg
dGhpcy5wYXJlbnQucmVmcmVzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiRmFpbGVkIHRvIHJlYWQgZGlyZWN0b3J5OiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJpZXMuc29ydChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOworICAgICAgICB2YXIgb2xkQ2hpbGRyZW4g
PSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOworCisgICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0g
MDsKKyAgICAgICAgdmFyIG9sZENoaWxkSW5kZXggPSAwOworICAgICAgICB2YXIgY3VycmVudFRy
ZWVJdGVtID0gMDsKKyAgICAgICAgd2hpbGUgKG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0
aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICBp
ZiAoZW50cmllc1tuZXdFbnRyeUluZGV4XS5uYW1lID09PSBvbGRDaGlsZHJlbltvbGRDaGlsZElu
ZGV4XS5fZW50cnkubmFtZSkgeworICAgICAgICAgICAgICAgIG9sZENoaWxkcmVuW29sZENoaWxk
SW5kZXhdLnJlZnJlc2goKTsKKyAgICAgICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7CisgICAg
ICAgICAgICAgICAgKytvbGRDaGlsZEluZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVudFRy
ZWVJdGVtOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoZW50cmllc1tuZXdFbnRyeUluZGV4XS5uYW1lIDwgb2xkQ2hpbGRyZW5bb2xk
Q2hpbGRJbmRleF0uX2VudHJ5Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3Rl
bVZpZXcsIGVudHJpZXNbbmV3RW50cnlJbmRleF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAg
ICAgICAgICAgICsrbmV3RW50cnlJbmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVl
SXRlbTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAg
ICAgICsrb2xkQ2hpbGRJbmRleDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJ
bmRleCA8IGVudHJpZXMubGVuZ3RoOyArK25ld0VudHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5f
ZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNbbmV3RW50cnlJbmRleF0pKTsKKworICAgICAgICBmb3Ig
KDsgb2xkQ2hpbGRJbmRleCA8IG9sZENoaWxkcmVuLmxlbmd0aDsgKytvbGRDaGlsZEluZGV4KQor
ICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XSk7
CisgICAgfSwKKworICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZW50cnkuaXNEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRo
aXMuX2VudHJ5LnJlcXVlc3REaXJlY3RvcnlDb250ZW50KHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRS
ZWNlaXZlZC5iaW5kKHRoaXMpKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
Vmlldy5FbnRyeS5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKaW5kZXggYzk3YzFmMjViNzNiNDdjYjg0MTFlYjgzM2RlOTQxNzBjZjc2OWM3MS4uYzQ3
MWI2YWM3ZmYzMDg3ZGI4OTAwYTI4MDhiMjZjNzAzZDA3ZDJmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00NjIs
NiArNDYyLDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2Zy
YW1lSWRdKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlZpZXd9IHZpZXcKKyAgICAgKi8KKyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykK
KyAgICB7CisgICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAg
IHNob3dDYXRlZ29yeVZpZXc6IGZ1bmN0aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fY2F0ZWdvcnlWaWV3KQpAQCAtMTk3Nyw2ICsxOTg1LDQ0IEBAIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJM
KCkKICAgICB7CiAgICAgICAgIHJldHVybiAiZmlsZXN5c3RlbTovLyIgKyB0aGlzLl9maWxlU3lz
dGVtLm5hbWU7CisgICAgfSwKKworICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRh
Y2guY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhp
cyksIHRydWUpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gVmlldyIpLCB0aGlzLl9yZWZyZXNo
RmlsZVN5c3RlbS5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7
CisgICAgfSwKKworICAgIF9yZWZyZXNoRmlsZVN5c3RlbTogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbVZpZXcucmVmcmVzaCgpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9uc2VsZWN0LmNhbGwodGhpcyk7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5
c3RlbVZpZXcpIHsKKyAgICAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3
KSB7CisgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCJGaWxlU3lzdGVtVmlldyBpcyBub3Qg
YXZhaWxhYmxlLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldyh0aGlzLl9maWxlU3lzdGVtKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zdG9y
YWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhpcy5fZmlsZVN5c3RlbVZpZXcpOworICAgIH0sCisK
KyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZmlsZVN5c3Rl
bVZpZXcgJiYgdGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3ID09IHRoaXMuZmlsZVN5c3Rl
bVZpZXcpCisgICAgICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuY2xvc2VWaXNpYmxlVmlldygp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCmluZGV4IDhmODIyMWE2M2UxMWJkZWM3M2Q1NWU5MDJkYmIyY2U1MzBmZDNmY2MuLmQ0
MWQzOTg2NWVlZmU0Mjk5NGFlZTljYzVkNjEyNDVkMWU1N2U0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTU5LDYgKzU5LDcgQEAKICAg
ICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxl
PkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlv
bkRpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5Hb1RvTGluZURpYWxvZy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGRiZDdjNWE1ZDViYzUwYWVlZGM0N2Vj
YmY3ZDIxZWNiNGMxOGFlOGYuLjQ3MDU4Y2E1Y2YxNDAwYTlkNjBlYjM5YzIxMDcxZGUxNDI1NTRi
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbApAQCAtMTYyLDYgKzE2Miw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSFRNTFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSmF2YVNjcmlwdFRv
a2VuaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRmlsZVN5c3RlbU1vZGVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VU
YWJsZVZpZXcuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149451</attachid>
            <date>2012-06-25 22:14:56 -0700</date>
            <delta_ts>2012-06-27 00:19:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120626141455.patch</filename>
            <type>text/plain</type>
            <size>14309</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FiZWVmZDlmY2E4NGVm
MWY5NDMzNTcwZDU0MzkzNWU2YTU0ZjlmYi4uYjQ4ZDFhYjA2MjJjNDY4YmE4NzJkYTZjNDIyNGE2
MWI4MDNjODMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTI1ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2UgYSBzcGxpdCB2
aWV3IGFzIEZpbGVTeXN0ZW1WaWV3LiBJbmNsdWRpbmcgZGlyZWN0b3J5IHRyZWUgYXMgc2lkZWJh
ciB0cmVlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0ZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUu
X2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX3JlZnJlc2hGaWxlU3lzdGVtKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLmNsZWFy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMi0wNi0yNSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMTIwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlOWViZDZjMWY0ZTM4
ZGQ4MjUwNDRlZTE0MTA5YzQxYzM5YWU5YjQyLi45ZTNiM2Y3ZmFhNGY0NWQ1Zjc0M2UzY2NkNGEw
ZTZhNGUzOGQ1ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02NDQ4LDYgKzY0NDgsNyBAQAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkMTJkYjU2NmM4YzM5NTk2ZmQwZjEy
NTQ4ZTA3MTE1Njg2YzEyN2U5Li4zNGY4OWEzNzQ0MWYxZDY5MzNkNTE0MDM0ZGQxYjFhYjE5MmU0
NWExIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNzQ5MTQsNiArNzQ5MTQsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcu
anMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXGZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5jc3MiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQucHkKaW5kZXggYzMyODE1YmU3YmE1YTAwOGUzNTczYjJhMmYxNjBkMWU4YjdmNTE3
MS4uMDIxNzg0OGY4NDU2NDJlYjkzYjFmYTU3ZGYzMmE5YmI4YzMxNzFjNCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMjExLDYgKzIxMSw3
IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiRGF0YWJhc2VRdWVyeVZpZXcuanMiLAogICAg
ICAgICAgICAgIkRhdGFiYXNlVGFibGVWaWV3LmpzIiwKICAgICAgICAgICAgICJET01TdG9yYWdl
SXRlbXNWaWV3LmpzIiwKKyAgICAgICAgICAgICJGaWxlU3lzdGVtVmlldy5qcyIsCiAgICAgICAg
ICAgICAiSW5kZXhlZERCVmlld3MuanMiLAogICAgICAgICAgICAgIlJlc291cmNlc1BhbmVsLmpz
IiwKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwppbmRleCA2NjFlOTE1ZmY3MTVjMjFhMmM1YmU1MDg4ZjQ1
NzhhM2I3N2NhYzQ5Li45ZGJiOWI2Y2Y0M2YyYzYyNDM3M2RjNmQ2ZTk1OTc4M2JlMWRmYWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1Nb2RlbC5qcwpAQCAtMjg2LDYgKzI4NiwyOCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkVudHJ5ID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZQog
ICAgIHRoaXMuX2lzRGlyZWN0b3J5ID0gYmFja2VuZEVudHJ5LmlzRGlyZWN0b3J5OwogfQogCisv
KioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0geAorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSB5CisgKiBAcmV0dXJu
IHtudW1iZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFy
ZSA9IGZ1bmN0aW9uKHgsIHkpCit7CisgICAgaWYgKHguaXNEaXJlY3RvcnkpIHsKKyAgICAgICAg
aWYgKCF5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICh5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorCisgICAgaWYgKHgubmFtZSA8IHkubmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlm
ICh4Lm5hbWUgPiB5Lm5hbWUpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworfQor
CiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAv
KioKICAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjMWMwNTRiMmMzZTI0MWY5ZWZmNDQ4MTU2NDQ5YTEyNjQyMTg3OWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1WaWV3LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
U3BsaXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRp
b24uTGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoImZpbGUtc3lzdGVtLXZpZXciKTsKKworICAgIHZhciBkaXJlY3RvcnlU
cmVlRWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgib2wiLCAiZmlsZXN5c3RlbS1k
aXJlY3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5VHJlZSA9IG5ldyBUcmVlT3V0bGlu
ZShkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRD
aGlsZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRoaXMuZGlyZWN0b3J5VHJlZS5hcHBl
bmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRoaXMsIGZpbGVT
eXN0ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOworfQorCitXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAgICBzaG93VmlldzogZnVuY3Rp
b24odmlldykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSB2aWV3KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldykKKyAgICAg
ICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMudmlzaWJsZVZp
ZXcgPSB2aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5tYWluRWxlbWVudCk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1RyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRW50cnl9IGVudHJ5CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5F
bnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRyeSkKK3sKKyAgICBUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5KTsKKworICAg
IHRoaXMuX2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lz
dGVtVmlldzsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlw
ZSA9IHsKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVj
dGlvbiA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAic2VsZWN0aW9u
Iik7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZShzZWxlY3Rpb24s
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29u
dGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB9LAorCisgICAgb25leHBhbmQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgIH0sCisKKyAg
ICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNo
IiksIHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhl
dmVudCk7CisgICAgfSwKKworICAgIF9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9u
KGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgIT09
IHRoaXMudHJlZU91dGxpbmUpCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmcmVzaCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVycm9yQ29k
ZSAhPT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHJlYWQgZGly
ZWN0b3J5OiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGVudHJpZXMuc29ydChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5
LmNvbXBhcmUpOworICAgICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNl
KDApOworCisgICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0gMDsKKyAgICAgICAgdmFyIG9sZENo
aWxkSW5kZXggPSAwOworICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsKKyAgICAgICAg
d2hpbGUgKG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGlsZEluZGV4IDwg
b2xkQ2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tuZXdFbnRyeUlu
ZGV4XS5uYW1lID09PSBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5fZW50cnkubmFtZSkgewor
ICAgICAgICAgICAgICAgIG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdLnJlZnJlc2goKTsKKyAg
ICAgICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7CisgICAgICAgICAgICAgICAgKytvbGRDaGls
ZEluZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZW50cmllc1tu
ZXdFbnRyeUluZGV4XS5uYW1lIDwgb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0uX2VudHJ5Lm5h
bWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJpZXNbbmV3RW50
cnlJbmRleF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAgICsrbmV3RW50cnlJ
bmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGls
ZEF0SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICsrb2xkQ2hpbGRJbmRleDsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVudHJpZXMubGVuZ3Ro
OyArK25ld0VudHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJp
ZXNbbmV3RW50cnlJbmRleF0pKTsKKworICAgICAgICBmb3IgKDsgb2xkQ2hpbGRJbmRleCA8IG9s
ZENoaWxkcmVuLmxlbmd0aDsgKytvbGRDaGlsZEluZGV4KQorICAgICAgICAgICAgdGhpcy5yZW1v
dmVDaGlsZChvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XSk7CisgICAgfSwKKworICAgIHJlZnJl
c2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW50cnkuaXNEaXJlY3Rv
cnkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2VudHJ5LnJlcXVlc3REaXJl
Y3RvcnlDb250ZW50KHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMpKTsK
KyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUu
X19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYzk3YzFmMjVi
NzNiNDdjYjg0MTFlYjgzM2RlOTQxNzBjZjc2OWM3MS4uYzQ3MWI2YWM3ZmYzMDg3ZGI4OTAwYTI4
MDhiMjZjNzAzZDA3ZDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00NjIsNiArNDYyLDE0IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lubmVyU2hv
d1ZpZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8K
KyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIHRoaXMu
X2lubmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRlZ29yeVZpZXc6IGZ1
bmN0aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2F0ZWdvcnlW
aWV3KQpAQCAtMTk3Nyw2ICsxOTg1LDQ0IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAiZmlsZXN5c3RlbTovLyIgKyB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfSwKKwor
ICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFz
ZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAg
ICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOworICAgIH0sCisK
KyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZy
ZXNoIEZpbGVTeXN0ZW0gVmlldyIpLCB0aGlzLl9yZWZyZXNoRmlsZVN5c3RlbS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9yZWZy
ZXNoRmlsZVN5c3RlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
X2ZpbGVTeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcucmVmcmVz
aCgpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0LmNh
bGwodGhpcyk7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZS53YXJuKCJGaWxlU3lzdGVtVmlldyBpcyBub3QgYXZhaWxhYmxlLiIpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0aGlzLl9maWxlU3lz
dGVtKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0
ZW0odGhpcy5fZmlsZVN5c3RlbVZpZXcpOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZmlsZVN5c3RlbVZpZXcgJiYgdGhpcy5fc3RvcmFn
ZVBhbmVsLnZpc2libGVWaWV3ID09IHRoaXMuZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0
aGlzLl9zdG9yYWdlUGFuZWwuY2xvc2VWaXNpYmxlVmlldygpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDhmODIyMWE2
M2UxMWJkZWM3M2Q1NWU5MDJkYmIyY2U1MzBmZDNmY2MuLmQ0MWQzOTg2NWVlZmU0Mjk5NGFlZTlj
YzVkNjEyNDVkMWU1N2U0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKQEAgLTU5LDYgKzU5LDcgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2
ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9m
aWxlPgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qczwvZmlsZT4KICAg
ICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwv
ZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCmluZGV4IGRiZDdjNWE1ZDViYzUwYWVlZGM0N2VjYmY3ZDIxZWNiNGMxOGFlOGYuLjQ3
MDU4Y2E1Y2YxNDAwYTlkNjBlYjM5YzIxMDcxZGUxNDI1NTRiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTYyLDYgKzE2
Miw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
U291cmNlSFRNTFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbU1vZGVs
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJG
aWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149452</attachid>
            <date>2012-06-25 22:15:54 -0700</date>
            <delta_ts>2012-06-25 22:15:54 -0700</delta_ts>
            <desc>Screenshot</desc>
            <filename>Screenshot.png</filename>
            <type>image/png</type>
            <size>44723</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">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
7PKtspt7enLlP/9jJk6clLe/812ZNXvfkTuutma3WVPS0bUxjWY99UYj1WpLujevSV/PslRr69Lb
25exbZV0r25JqVTOnruX8tCDdyYZDO66b/1CfnXoZfnhiKHdhvzqio/kczd3p5paMv2sXPS3p2dW
dQft23506TU595xrcuQ//HP+dHZ3bjzvXVtX3HXn55d8JF9emFRr3cmhF+Qz5x2Tzto9+dI55+fG
Wmc6U0vbcRfns+fMTdX3BwAAAIDnyNN+xt3atWvy+cs/nRkz9srb3/mu7Lb7HsPe37ihJ7+74/9l
0/otaTQbaTbqaWlryaKHliW1/qzrPSSV/rXpWtyVmbttSMeo9qxfPpCe9Y8/5643y25bksmvnjNi
QFa79aJcdsfp+bf5J6czvbnvU3+SC+e/Il858LMjtn/rpK3zWvDtXPzh63LCP/xz3jy7PUn3UJ/d
N12UL1QvzFeumptqNuTGs8/Mvy/4Qd7R9dl8b+wncvVVRwjrAAAAAHhePOPNKdauXZ0H7r93u+Au
jZZ0dkxJqdaTeqORSkslCx5ckN06NubE/354+ra0prWjnP1fvjG3ff87mbJ6ZVb2tKd/0n47Ne6y
m+/J2LdcnM4kSXtmnXpENn76njzQNXJ790lJ39Kv5WMfnpP3XPGvOWXGE3usZdltv8mimy/Nh+7b
2tKVHNDdm+rs03PIwvNz7iVn5c3zTs6xB00V4AEAAADwnHrawV1ra1uOP/F1efXxJ2bUqFHbvd/e
Xsm06WNSaUkqLcmatZsyZeyGHDW7MxnYnNZKI+se60mzVMm0mS/LXdf/Inc3Dsqbjj/q8R4y/ag9
s/rah1Ob9+wEZW2de2Z6dWnuXLohp8wY94R3q6mmmn3OvjxXznvirbkn59JrX5GFt/4s3/vHt+YL
0y/PNz9u9R0AAAAAz53yLn+gXM6xx70mH/+bS/OGN75pxNAuGXwW3l13/Db33/u73H/vPfn1Lbek
s/xYejevyeZ1y7J25dKMGbUl4zq6c8Dctmx+6ZHp2Gvf7Lb7bkN9dB79gRx5x/n5u5tWbdf/9OPm
ZvXVt2y90bU3C6+9PWOPm5v9d9DemSSdr8lHr/hoap9+dz732w0j9zn/uiwb8YzGZdbRp+Wjl3ww
bbfdsoNjAAAAAODZsUsr7o48+pi8/pQ/ycSJk57y2Eq5JWNHT01zYEtaWitpb92U9lJXRreXs25d
X9paS1m+eGUWr6knSTpaZ2fyhNHDO+k8JhfNvzCfO++teePfVlOtJplyej5z1Xsz6+iLc9HN78/7
5n051Wotmf7eXPrhPVOtjtyersEu26Ycn09ckVx49rvzpU99Pe896PfDVY++LJce9f58aN73M7kz
qeU1Of+KD+bArm/nwo9fk9WppdZdy6xz/nn4ZhcAAAAA8CwrXT3/iuajixZl0eJlOee8Tz5rHf/i
lq/niCNnZE1XT1pbS3nkkTWprvlJXrlf0mwZlfXrunPDvWPT13Fgqi3JrNmTs7Jrc4479t2uCoVz
+y9/kiOOea1CwA5+H2eeeaZCAAAAPAs+fM5ZOfSlByR5GrfK7qz+/i1pa2+mrb2e1moj+8yZmDXZ
Kw8vWZ9Sz8qs2tBIZcK+OfiACZnU2ZIpu09Kf3+vqwMAAAAAeRZ2lR1JT09Pals6csOP7shAfyPN
ZjPlSrJmbWtue2hsDpu2IuW2cu5a/WC6HlmYP3/L+Pz814uybt0+2bJlSzo6OlwZAAAAAF7UnpPg
rr29Pa9//ci3TfX09GT5siVZ3dWVs//kgPRs2pjrfvLFdEw6Im9965+m0Wi4KgAAAAC86D0nwV2l
Utnhe6NHj86++x2QffcbvFd38uQpmbn375+tVy6XXRUAAAAAXvSkZAAAAABQQII7AAAAACiglueq
44W/uib9Xb9LvZE0Go00m0mpVErvli0plUppq1bTbDZSSimlcikt5aQ8YU72O/YMVwUAAACAF73n
LLjbuOT/5c9OOTQbu7ekXGqm2Wimpa01Dz1wX0pJ9pm9d2q9vUmSRqOZ8Z0d+ff/vCUR3AEAAADA
cxfctVZHp69WT60/aTbrqTcaaWuWs6VvcPXd5lo9vbV6SqWk2SyntdZIa/toVwQAAAAAsovPuPv1
bbdkYGBgp47dvLknD9x3dx568N48+MB9efiB+/Lgffdk+dIleWz5kjz4wH1Z8PCDWfDwQ1m04KE8
+MB92dyzaeTOuq/LOw+clXdeu+EZnOqqfHfecfm7e3uf8Peuqd17ft549k9T22Hfz1xt6TX5xBnH
5cSTTspbTj0pbznn21m2q50s/Wr+bN5X0+U7DgAAAPAHaZdW3M3/2lX53tXfzpnvfHf2P+CglMs7
zv0qlda0jp+UMW19aTbqaTYbKbdV075hU0qlUsZO3C31vlpKpXJKpVJaO9pSWb54xL66bv5aavPe
lL7v/Cxdp56WKc/4tKfmhE/9a46d0f4slfFZ7K/7l7n4jM+m7ZL/yP999VTfUAAAAIAXqV2+VXZz
T0+u/Od/zMSJk/L2d74rs2bvO3LHLeXMnDI23ZtqqdcH0qg30lZtzbqVrSmllCnjO1LrLQ+Gf6VS
xo3pyF0tI6EFsgYAACAASURBVE1nVf7rO9055f+7OLUPn5//6jotb56SZMGlecuHV+XgQ9uT2qos
X71nzvrUxXlV9w7apwzv88bz3pX7L7k+FxzUnZ9f8v5cflstYzuT6qGX5fNnL8nFH/5CFtaS1DYk
h16cK//2+OSmi/KxT1+XRQtuz/vO/nLGHviBXHreMekc1l8tv7riI/nczd2pppZMPysX/e3pmbX0
0rzlvFqOnf5w7l+9Kstqx+Siqy7OkZ3Dz7b71i/kV4delh+OFNp1XZcLR5hXZ1Ztfw5nJKn9Jl/+
nz/O/cuWZFnt8Fxw1d/nhCmr8vNLPpIvL0yqte7k0AvymfOOSaffAgAAAEChPO1n3K1duyafv/zT
mTFjr7z9ne/KbrvvMez9TZt6ctcdd2Tj5noa9f40ms20VCpZsXLF4O6yvVvSP1BPuVRKqVzO6I62
bNxY236grp/le91vyqWz56R23IZceMOqvPmMwVCr1t2eN3/8shxSTbpv/cv8+aduz5Hn7KD903uO
eB7dt16UixeelW9eu+1Kvrm5dP7JW/9eki+d+pH8V9fxOeXVF+fzU2p5y6dfnyuvOj7VEfqr3XpR
Lrvj9Pzb/JPTmd7c96k/yYXzX5FvHZd0L7gn+/zDf+SjMwbbL7t5VY48dduArjfLbluSya+eM2Lf
mXLyiPM6dsEI57D09vQt+E0mf+r6fOWg9iy76qSce8OSvHz6pflC9cJ85aq5qWZDbjz7zPz7gh/k
vbP9GAAAAACK5BlvTrF27eo8cP+92wV3lUpLRk2amEpHX+r1epqNelrbqtm4qTelSjmTpu6Z/v7+
VMqVpFRKW0dbKiuXbNf/shu+lo0nXZ7pSTLv+Gw877osO+MdmZ6kOuM12WdrwtV50PEZ+7e3ZPUO
20cO7lbffE8mz7v4Cbff9mbhtX+XL3zn4dSqyfKlG/LfajtXj2U335Oxb7l46wq29sw69Yhs/PQ9
6T4u6TzorJwwY7B9+kHjsnFpd5JduR125HmNfA5J20HvySkHDd6+O3nWnum7eXUeWfqbLLr50nzo
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
eqM5Yj2TpFwuZe/pE9LR3ppNPbUsfmx9Jo7bvp5JhvUHAAAA8Ids+Iq7F/JW2Uol0yaNSrWlkTQb
KZdL6VrZlRWPLEpLS0s2PLY80/aYkj33npGBgXrGjx+btofXZcs2cy6nPxM6q0mSCWNb06g302zU
Uy4l8143N/39A9nUsyXHHD4z1/703mzctCWvPHzv1PoGsr67J0cdsleazWbWrtuYVxy2V776vdvT
2pKhY+55YHEOPWBm9p4+ITf9amFOO3FuOqqVdK3tzisPn5n/uv2RLF6+Jq88fO8cdtD0NBqNPPzI
ijzW1Zp5r3tJVnStT6PRzKtetne+e8M96dm8ZbtjFy/blNe+6uA8umxt+gcaOWDWpOy1+7jcfvfi
VCotu1TTRmkwvHrrG47I0sfWZuqkzuw+ZUweWLB85DrtoH5tbZURa/DT2xZk2qT2HHXoXrnrgeVD
47ZXW3Lg7N1y1TevS3vHhKHv1UjtgzNsJs3miPW8d8HKvPnEl2RUe0tWrdmQyRN3y7U/2zJiPR/r
6h7qr9FopDSYAQ95qtcAAAAARVKYzSk2b+nNo4uXZcPGzUlzMHR5+N4FOXju7EyaMjHr16zKr267
I6tWdCWlpKNazZquUkozfz/n+x9elkWLFuSv3n96vv7t67N5S1+m7zUnL9l/etpaSvnmf9yYcqUl
xx39kszZc0JuvWNDkuQfrvhW1m/ckkv/+r258ivX5O4HHs3ll3wwEzqrWbtu8Pls//Sl/5MVazZn
QmdbLvjLs/JYV3fGja3mgr+9IklLXnbwrLz1tBPy8COPJUnuuufB/Nv8/8zYzonZfcbe+Z8XfC4T
xk/IpInjcvppr87UCdXcv27DdseOnzAxJx57YPbafVweenRNDpw1NT/48S+SdAy7PpVyKXvuMWHo
9ZbevqxcPfxZcuWtMdbV1/4sP/3FXXn5ofvmtFNenWt+/OsR6/TYyp4R28eNbR+xBr/87SN54KFH
s2HtqmFzO3DWlHStWZ+V6wbSOf4p2pvNNJvNzJw+fsR6bu6tZXxney74m3/JQKOcWu/mzN7v4BHr
uXRFY6i/er2RD511bG6989H8+q4lmTNzck559QH5ynf/XzZs7M3Jxx2QieM6Mv8Hv925L6jdKQAA
AIDnWWE2pyg1kpbqmLTUSmmrtmbJgkcyc//ZmXvsy9LfsynT9tot02bNSffGLSk1y2ltaaT31tuz
vG9tBlrGJ0lGjx2fcaMGE5bdZsxOf32w7/bWZqptrfnTN5+UJBkY6M+ixSt+vxKsc1qmjKkMzqNt
bPbe95D09fVnoL936JjWUZOzx+hqtmzelFKSCWNbsuyxVZmx90tSaWnJup6etFdb0942WNJbf/NQ
9nvJkVufydfMX37gnZm15+Ss29CTMaPasuDRVUN9b3tso9HIbbffmzl7TU9vXz0tlXIeXrohneOr
wy9cpZJXHrbX0Osly9dutyFDpTwY3C1dtSmz9j80pdZS2ttadlinHbXvqAaj2st5eOHG3P/wkuw+
Y9bWMUs5eP/d870f/TyjOycMfad21N7M4Kq30dWMWM/xY1ry2IrV2W2vA9PS2rb1zEauZ33rCr5m
c/C73Gw2s3HDutQbjWzaOHhrb++Wzak3kp6N6zOqrbnz33nBHQAAAPA8K8zmFC2VcqaNK6W12Uh7
e7KhfSATJo7L6KlT01zfmlKSMeM6kmZ/Uq8npVqW3zmQVWmmb5t5P57DNBqNNLYGTz09PVmzbkM+
8cl/Gzpu1JjO7L///lvHbht6Jlql0prm1g826o2h0KqtrZqe3kbGje1MknRv6M60ydNTKpXTqDcy
dtxg++bNg89aax81Lj29g8/q23fvyZm5x4Scd9E/ZmNPX/7Xh84YnN/jweE2xybJHfcszquPOSwd
7W25+ZY7Mmr0hO2uzcZaLRf8zb8MvR49pjMz9t5/2DGNwX080tHRme7NjZRLrUmptPW8tq/TjurX
2NrRE2uwaWNPRo8Zn9Fjxg/N78BZ09JsNvLgorUZN3HaUL87ah+8S7aZnp6edHRM2a6e3Ru6M2vP
ySmXW4bG2GE9642h/hr1Rs7+4CWZtsfMTNt9Zu6+f0l++MMfZ/+XHJlqe0eu+tb1qfVuyX4HHfE0
fikAAAAAz73CrLjb0lfLgkdXZMPGzam2tmRlV3fG7daf5ubu1HvWpVLvTWOgN2kMJP29KacvA/2N
1FuTevP38+7Z0p8kmTZ5bAbqybKVG/LAwsfyhte+LG9765vy0CNdmTZ5bDZv6Uv3xk1D5/14cNdo
NIZWbjWazTS2PgTtlS+bnVvvXJzDD5qedeu7c+tvH8xxrzg4B8yemuUrN+QVh++TBYuWprdvcEOI
ZkpD9ezdsimNeiMzZ780M2dMzex9pmfxY2uH+t722CTZuKWU5Su6MmOPqbnqW4+mbfSU7a5NqVzJ
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
AACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAA
AAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAK
SHAHup5V9AAADdJJREFUAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAA
ACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQ
QII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAE
dwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4A
AAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAA
AEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACA
AhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUk
uAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAH
AAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAAFJDgDgAA
AAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACggwR0AAAAA
FJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7AAAAACgg
wR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAAAABQQII7
AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAAoIAEdwAA
AABQQII7AAAAACggwR0AAAAAFJDgDgAAAAAKSHAHAAAAAAUkuAMAAACAAhLcAQAAAEABCe4AAAAA
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149695</attachid>
            <date>2012-06-27 00:18:37 -0700</date>
            <delta_ts>2012-06-28 02:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120627161837.patch</filename>
            <type>text/plain</type>
            <size>19902</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBt
b2RlIDEwMDY0NAppbmRleCA0Yjc4NmNlZTE4YzU1ZjdjOTcyN2U5ZjQ3NjFkMWQ3OWIwZTUyMWM4
Li5hN2NhMmQ3ZDcyY2U0NjYwMjc1ZTEyYWU3NTNhZjQ5YjM0NjQ1ZjQwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxMi0wNi0yNyAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIEZpbGVTeXN0ZW1WaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMwMQorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlIGEgc3BsaXQgdmlldyBhcyBGaWxlU3lzdGVtVmlldy4gSW5jbHVkaW5n
IGRpcmVjdG9yeSB0cmVlIGFzIHNpZGViYXIgdHJlZS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LmNvbXBhcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuc2hvd1ZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUub25hdHRhY2gpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5vbmV4
cGFuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90
eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlLnJlZnJl
c2gpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dGaWxlU3lz
dGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90
eXBlLmdldCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVs
ZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLl9yZWZyZXNo
RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbnNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5jbGVhcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWw6CisKIDIwMTItMDYtMjYgIERvdWdsYXMgU3RvY2t3ZWxsICA8ZHN0b2Nrd2VsbEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTA3ODM2KTogYm94IHNoYWRvdyBub3QgZHJh
d24gZm9yIG9wYXF1ZSBpbWFnZXMgd2l0aCBhbiBvcGFxdWUgYmFja2dyb3VuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDEwNTRlMDcyNTVjYTc2YWI4YmRlNWU0YzAyOWE5NjVlOWQzMDI4MDUuLjQ3M2Rh
NWI4ZTYzZWE5NzAwMDViYTZmZjMwMTI1ZWIzZjlhMjRlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTY0NDksNiArNjQ0OSw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1h
bmFnZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVj
dGlvbkRpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmll
dy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5q
cycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4
IGQxMmRiNTY2YzhjMzk1OTZmZDBmMTI1NDhlMDcxMTU2ODZjMTI3ZTkuLjM0Zjg5YTM3NDQxZjFk
NjkzM2Q1MTQwMzRkZDFiMWFiMTkyZTQ1YTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDkxNCw2ICs3NDkxNCwxMCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxGaWxlU3lzdGVtVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVt
U2VsZWN0aW9uRGlhbG9nLmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCBjMzI4MTViZTdiYTVhMDA4
ZTM1NzNiMmEyZjE2MGQxZThiN2Y1MTcxLi4wMjE3ODQ4Zjg0NTY0MmViOTNiMWZhNTdkZjMyYTli
YjhjMzE3MWM0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQt
ZW5kLnB5CkBAIC0yMTEsNiArMjExLDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEYXRh
YmFzZVF1ZXJ5Vmlldy5qcyIsCiAgICAgICAgICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMiLAog
ICAgICAgICAgICAgIkRPTVN0b3JhZ2VJdGVtc1ZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVT
eXN0ZW1WaWV3LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAg
ICAgICAiUmVzb3VyY2VzUGFuZWwuanMiLAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IGVkYjY0
N2ZhNzU4MWI0ZWQ4ZGQ5YWU5MjMwNjIyNDZlNDk2YWY2ODIuLjRkOTEzZmY0OTBhYTkxNTFiZGRm
NDkzOThjOTZmMWI4NjZkYmFlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0yOTEsNiArMjkxLDIzIEBAIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9k
ZWwsIGZpbGVTeXN0ZW0sIGJhY2tlCiAgICAgdGhpcy5faXNEaXJlY3RvcnkgPSBiYWNrZW5kRW50
cnkuaXNEaXJlY3Rvcnk7CiB9CiAKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkVudHJ5fSB4CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRW50cnl9IHkKKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5FbnRyeS5jb21wYXJlID0gZnVuY3Rpb24oeCwgeSkKK3sKKyAgICBpZiAoeC5p
c0RpcmVjdG9yeSAhPSB5LmlzRGlyZWN0b3J5KQorICAgICAgICByZXR1cm4geS5pc0RpcmVjdG9y
eSA/IDE6IC0xOworCisgICAgaWYgKHgubmFtZSA8IHkubmFtZSkKKyAgICAgICAgcmV0dXJuIC0x
OworICAgIGlmICh4Lm5hbWUgPiB5Lm5hbWUpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVy
biAwOworfQorCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZSA9
IHsKICAgICAvKioKICAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjMWMwNTRiMmMzZTI0MWY5ZWZmNDQ4MTU2NDQ5YTEyNjQyMTg3
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3BsaXRWaWV3fQorICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuU3BsaXRWaWV3LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRl
YmFyUG9zaXRpb24uTGVmdCwgIkZpbGVTeXN0ZW1WaWV3U2lkZWJhcldpZHRoIik7CisgICAgdGhp
cy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZpbGUtc3lzdGVtLXZpZXciKTsKKworICAgIHZhciBk
aXJlY3RvcnlUcmVlRWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgib2wiLCAiZmls
ZXN5c3RlbS1kaXJlY3RvcnktdHJlZSIpOworICAgIHRoaXMuZGlyZWN0b3J5VHJlZSA9IG5ldyBU
cmVlT3V0bGluZShkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVu
dC5hcHBlbmRDaGlsZChkaXJlY3RvcnlUcmVlRWxlbWVudCk7CisgICAgdGhpcy5zaWRlYmFyRWxl
bWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICB0aGlzLnNpZGVi
YXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNpZGViYXIiKTsKKworICAgIHRoaXMuZGlyZWN0b3J5
VHJlZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KHRo
aXMsIGZpbGVTeXN0ZW0ucm9vdCkpOworICAgIHRoaXMudmlzaWJsZVZpZXcgPSBudWxsOworfQor
CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAgICBzaG93Vmll
dzogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09
PSB2aWV3KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmll
dykKKyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CisgICAgICAgIHRoaXMu
dmlzaWJsZVZpZXcgPSB2aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5tYWluRWxlbWVudCk7
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge1RyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IGVudHJ5CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5FbnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1WaWV3LCBlbnRyeSkKK3sKKyAgICBU
cmVlRWxlbWVudC5jYWxsKHRoaXMsIGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5
KTsKKworICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7CisgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcg
PSBmaWxlU3lzdGVtVmlldzsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5
LnByb3RvdHlwZSA9IHsKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAi
c2VsZWN0aW9uIik7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZShz
ZWxlY3Rpb24sIHRoaXMubGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHRo
aXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB9LAorCisgICAg
b25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAg
IH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWZyZXNoIiksIHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1l
bnUuc2hvdyhldmVudCk7CisgICAgfSwKKworICAgIF9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQ6
IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgPT09IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7CisgICAgICAgICAgICBpZiAodGhpcy5w
YXJlbnQgIT09IHRoaXMudHJlZU91dGxpbmUpCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQu
cmVmcmVzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGVycm9yQ29kZSAhPT0gMCkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRv
IHJlYWQgZGlyZWN0b3J5OiAiICsgZXJyb3JDb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGVudHJpZXMuc29ydChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkVudHJ5LmNvbXBhcmUpOworICAgICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxk
cmVuLnNsaWNlKDApOworCisgICAgICAgIHZhciBuZXdFbnRyeUluZGV4ID0gMDsKKyAgICAgICAg
dmFyIG9sZENoaWxkSW5kZXggPSAwOworICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsK
KyAgICAgICAgd2hpbGUgKG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGls
ZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tu
ZXdFbnRyeUluZGV4XS5uYW1lID09PSBvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XS5fZW50cnku
bmFtZSkgeworICAgICAgICAgICAgICAgIG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdLnJlZnJl
c2goKTsKKyAgICAgICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7CisgICAgICAgICAgICAgICAg
KytvbGRDaGlsZEluZGV4OworICAgICAgICAgICAgICAgICsrY3VycmVudFRyZWVJdGVtOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZW50cmllc1tuZXdFbnRyeUluZGV4XS5uYW1lIDwgb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF0u
X2VudHJ5Lm5hbWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIGVudHJp
ZXNbbmV3RW50cnlJbmRleF0pLCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAgICsr
bmV3RW50cnlJbmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5y
ZW1vdmVDaGlsZEF0SW5kZXgoY3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICsrb2xkQ2hp
bGRJbmRleDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVudHJp
ZXMubGVuZ3RoOyArK25ld0VudHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxk
KG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZp
ZXcsIGVudHJpZXNbbmV3RW50cnlJbmRleF0pKTsKKworICAgICAgICBmb3IgKDsgb2xkQ2hpbGRJ
bmRleCA8IG9sZENoaWxkcmVuLmxlbmd0aDsgKytvbGRDaGlsZEluZGV4KQorICAgICAgICAgICAg
dGhpcy5yZW1vdmVDaGlsZChvbGRDaGlsZHJlbltvbGRDaGlsZEluZGV4XSk7CisgICAgfSwKKwor
ICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW50cnku
aXNEaXJlY3RvcnkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX2VudHJ5LnJl
cXVlc3REaXJlY3RvcnlDb250ZW50KHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZC5iaW5k
KHRoaXMpKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5w
cm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
Yzk3YzFmMjViNzNiNDdjYjg0MTFlYjgzM2RlOTQxNzBjZjc2OWM3MS4uZmM0ZWY0NDljNmJiMjFj
MjM4MjU3MWRjOTYyZjNmNDczMzFjNjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC00NjIsNiArNDYyLDE0IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X2lubmVyU2hvd1ZpZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcK
KyAgICAgKi8KKyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAg
ICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRlZ29y
eVZpZXc6IGZ1bmN0aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
Y2F0ZWdvcnlWaWV3KQpAQCAtMTk3Nyw2ICsxOTg1LDM4IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAiZmlsZXN5c3RlbTovLyIgKyB0aGlzLl9maWxlU3lzdGVtLm5hbWU7Cisg
ICAgfSwKKworICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlz
KTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4
dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIHRydWUpOwor
ICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gVmlldyIpLCB0aGlzLl9yZWZyZXNoRmlsZVN5c3RlbS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgfSwKKwor
ICAgIF9yZWZyZXNoRmlsZVN5c3RlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX2ZpbGVTeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZp
ZXcucmVmcmVzaCgpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
c2VsZWN0LmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyh0aGlzLl9maWxlU3lzdGVtKTsKKyAgICAgICAgdGhp
cy5fc3RvcmFnZVBhbmVsLnNob3dGaWxlU3lzdGVtKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3KTsKKyAg
ICB9LAorCisgICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmZp
bGVTeXN0ZW1WaWV3ICYmIHRoaXMuX3N0b3JhZ2VQYW5lbC52aXNpYmxlVmlldyA9PSB0aGlzLmZp
bGVTeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLmNsb3NlVmlzaWJs
ZVZpZXcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYwppbmRleCA4ZjgyMjFhNjNlMTFiZGVjNzNkNTVlOTAyZGJiMmNlNTMwZmQz
ZmNjLi5kNDFkMzk4NjVlZWZlNDI5OTRhZWU5Y2M1ZDYxMjQ1ZDFlNTdlNDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01OSw2ICs1OSw3
IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVN
YW5hZ2VyLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KKyAg
ICA8ZmlsZT5GaWxlU3lzdGVtVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1T
ZWxlY3Rpb25EaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+R29Ub0xpbmVEaWFsb2cuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBkYmQ3YzVhNWQ1YmM1MGFl
ZWRjNDdlY2JmN2QyMWVjYjRjMThhZThmLi40NzA1OGNhNWNmMTQwMGE5ZDYwZWIzOWMyMTA3MWRl
MTQyNTU0YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKQEAgLTE2Miw2ICsxNjIsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUhUTUxUb2tlbml6ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUphdmFT
Y3JpcHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Nb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRh
dGFiYXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMDIxODUzYmJmM2M5MGFkN2I1
Nzk5Mjc3ZDIyYjQxNjA4MzY2ZDY5Li5hZTAxMDkxZmU3MmI0NmFlOGQyNjE2NGIzNWI5N2MyYWI2
YjllN2NmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjcgIFRhaWp1IFRzdWlraSAg
PHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBGaWxlU3lz
dGVtVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMzMDEKKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZSBhIHNwbGl0IHZpZXcgYXMgRmls
ZVN5c3RlbVZpZXcuIEluY2x1ZGluZyBkaXJlY3RvcnkgdHJlZSBhcyBzaWRlYmFyIHRyZWUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3Rvcnkt
dHJlZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yNiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlYmFzZWxpbmUgNCB0ZXN0cyBpbiBl
ZGl0aW5nL2RlbGV0aW5nLiBDYXVzZWQgYnkgcjEyMTMwMy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJl
Y3RvcnktdHJlZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVhYmViYjE2MmExZGQ0OThhYmUy
NzI3MTBkMDU2YWY1OWU3ODlhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjQgQEAKK1Rlc3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1WaWV3Lgor
CitbZGlyZWN0b3J5IHRyZWUgbm9kZV0KK2V4cGFuZGVkOiB0cnVlCitlbnRyeTogKG51bGwpCisj
Y2hpbGRyZW46IDEKKyAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCisgIGV4cGFuZGVkOiBmYWxzZQor
ICBlbnRyeTpmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCisgICNj
aGlsZHJlbjogMAorCitbZGlyZWN0b3J5IHRyZWUgbm9kZV0KK2V4cGFuZGVkOiB0cnVlCitlbnRy
eTogKG51bGwpCisjY2hpbGRyZW46IDEKKyAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCisgIGV4cGFu
ZGVkOiB0cnVlCisgIGVudHJ5OmZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS8KKyAgI2NoaWxkcmVuOiAxCisgICAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCisgICAgZXhw
YW5kZWQ6IGZhbHNlCisgICAgZW50cnk6ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UKKyAgICAjY2hpbGRyZW46IDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJl
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkZjMzNmViOTVmYTQ1YjVlNzQxMTUxZWE2YjFkNmZiYjlhNzE3
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBF
IGh0bWw+PG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2Fk
ZWQiLCBydW5UZXN0KTsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciByZXNvdXJjZXNQYW5l
bCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzOworICAgIHZhciBmaWxlU3lzdGVtTGlz
dFRyZWVFbGVtZW50ID0gcmVzb3VyY2VzUGFuZWwuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsK
KyAgICBpZiAoIWZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgZmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudChyZXNvdXJjZXNQYW5lbCk7CisgICAgICAgIHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQgPSBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50OworICAgICAgICByZXNv
dXJjZXNQYW5lbC5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZChmaWxlU3lzdGVtTGlzdFRyZWVFbGVt
ZW50KTsKKyAgICB9CisKKyAgICB2YXIgZmlsZVN5c3RlbUl0ZW0gPSBudWxsOworICAgIHZhciBm
aWxlU3lzdGVtVmlldyA9IG51bGw7CisgICAgdmFyIGRpcmVjdG9yeVRyZWUgPSBudWxsOworCisK
KyAgICB2YXIgdGVzdFN0ZXAgPSBbCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgp
KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdhIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlL2Z1Z2EvcGl5byIsIHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSwgIl9maWxlU3lzdGVtQWRkZWQiLCB0
ZXN0U3RlcC5zaGlmdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTGlzdFRyZWVF
bGVtZW50Ll9yZWZyZXNoRmlsZVN5c3RlbSgpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0
aW9uKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9
PSAiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5IikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1JdGVtID0gZmlsZVN5c3Rl
bUxpc3RUcmVlRWxlbWVudC5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lKCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkiKTsKKyAgICAgICAgICAgIGZpbGVTeXN0
ZW1JdGVtLnNlbGVjdCgpOworICAgICAgICAgICAgZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVt
SXRlbS5fZmlsZVN5c3RlbVZpZXc7CisgICAgICAgICAgICBkaXJlY3RvcnlUcmVlID0gZmlsZVN5
c3RlbVZpZXcuZGlyZWN0b3J5VHJlZTsKKworICAgICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUo
ZGlyZWN0b3J5VHJlZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZSwgIl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQiLCB0
ZXN0U3RlcC5zaGlmdCgpLCBmYWxzZSk7CisgICAgICAgICAgICBkaXJlY3RvcnlUcmVlLmNoaWxk
cmVuWzBdLmV4cGFuZCgpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUoZGlyZWN0b3J5VHJlZSk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIF07CisKKyAgICBJbnNwZWN0
b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKKworICAgIGZ1bmN0aW9u
IGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2RlLCBpbmRlbnQpCisgICAgeworICAgICAgICBpbmRl
bnQgPSBpbmRlbnQgfHwgIiI7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVu
dCArICJbZGlyZWN0b3J5IHRyZWUgbm9kZV0iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoaW5kZW50ICsgImV4cGFuZGVkOiAiICsgdHJlZU5vZGUuZXhwYW5kZWQpOworICAgICAg
ICBpZiAodHJlZU5vZGUuX2VudHJ5KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoaW5kZW50ICsgImVudHJ5OiIgKyB0cmVlTm9kZS5fZW50cnkudXJsKQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiZW50cnk6IChu
dWxsKSIpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICIjY2hpbGRy
ZW46ICIgKyB0cmVlTm9kZS5jaGlsZHJlbi5sZW5ndGgpOworCisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdHJlZU5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkdW1w
RGlyZWN0b3J5VHJlZSh0cmVlTm9kZS5jaGlsZHJlbltpXSwgaW5kZW50ICsgIiAgIik7CisgICAg
fQorfQorCis8L3NjcmlwdD4KKzxwPlRlc3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1W
aWV3LjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149905</attachid>
            <date>2012-06-28 02:12:12 -0700</date>
            <delta_ts>2012-06-28 21:00:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120628181211.patch</filename>
            <type>text/plain</type>
            <size>22450</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKb2xkIG1vZGUgMTAwNzU1Cm5ldyBt
b2RlIDEwMDY0NAppbmRleCAyMGRhZWZlNjQ2Y2QyZDVhMDE0ZjBlYjhmNGNiYzc1NDJjNDZhOWVh
Li5mNmM5NzMzMjM2ODdkNjllYmNlZDVmM2QwYTI1YWEzNmIyY2I2NTM4Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxMi0wNi0yOCAgVGFpanUgVHN1aWtpICA8dHppa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIEZpbGVTeXN0ZW1WaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMwMQorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlIGEgc3BsaXQgdmlldyBhcyBGaWxlU3lzdGVtVmlldy4gSW5jbHVkaW5n
IGRpcmVjdG9yeSB0cmVlIGFzIHNpZGViYXIgdHJlZS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LmNvbXBhcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuc2hvd1ZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUub25hdHRhY2gpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5vbnBv
cHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90
b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1WaWV3LkVudHJ5LnByb3RvdHlwZS5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeS5wcm90b3R5cGUucmVm
cmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0ZpbGVT
eXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90
b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVl
RWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX3JlZnJl
c2hGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1l
bnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VHJlZUVsZW1lbnQucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbDoKKwogMjAxMi0wNi0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIFNrQ29sb3IgaW4gY29tcG9zaXRvciBpbnRlcm5h
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxMDU0ZTA3MjU1Y2E3NmFiOGJkZTVlNGMwMjlhOTY1ZTlk
MzAyODA1Li40NzNkYTViOGU2M2VhOTcwMDA1YmE2ZmYzMDEyNWViM2Y5YTI0ZThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC02NDQ5LDYgKzY0NDksNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVNYW5hZ2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0
ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29U
b0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCBkMTJkYjU2NmM4YzM5NTk2ZmQwZjEyNTQ4ZTA3MTE1Njg2YzEyN2U5Li4z
NGY4OWEzNzQ0MWYxZDY5MzNkNTE0MDM0ZGQxYjFhYjE5MmU0NWExIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzQ5MTQsNiArNzQ5MTQsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XGZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggYzMy
ODE1YmU3YmE1YTAwOGUzNTczYjJhMmYxNjBkMWU4YjdmNTE3MS4uMDIxNzg0OGY4NDU2NDJlYjkz
YjFmYTU3ZGYzMmE5YmI4YzMxNzFjNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weQpAQCAtMjExLDYgKzIxMSw3IEBAIG1vZHVsZXMgPSBbCiAgICAg
ICAgICAgICAiRGF0YWJhc2VRdWVyeVZpZXcuanMiLAogICAgICAgICAgICAgIkRhdGFiYXNlVGFi
bGVWaWV3LmpzIiwKICAgICAgICAgICAgICJET01TdG9yYWdlSXRlbXNWaWV3LmpzIiwKKyAgICAg
ICAgICAgICJGaWxlU3lzdGVtVmlldy5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERCVmlld3Mu
anMiLAogICAgICAgICAgICAgIlJlc291cmNlc1BhbmVsLmpzIiwKICAgICAgICAgXQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5q
cwppbmRleCBlZGI2NDdmYTc1ODFiNGVkOGRkOWFlOTIzMDYyMjQ2ZTQ5NmFmNjgyLi44YmE1OTFm
YzRlZjA2YjFkZmRhZDU0ZmI5YjQ3NzhjZTFjODk1MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMjkxLDYg
KzI5MSwxOCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5ID0gZnVuY3Rpb24o
ZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBiYWNrZQogICAgIHRoaXMuX2lzRGlyZWN0b3J5
ID0gYmFja2VuZEVudHJ5LmlzRGlyZWN0b3J5OwogfQogCisvKioKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0geAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkVudHJ5fSB5CisgKiBAcmV0dXJuIHtudW1iZXJ9CisgKi8KK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSA9IGZ1bmN0aW9uKHgsIHkpCit7
CisgICAgaWYgKHguaXNEaXJlY3RvcnkgIT0geS5pc0RpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJu
IHkuaXNEaXJlY3RvcnkgPyAxIDogLTE7CisgICAgcmV0dXJuIHgubmFtZS5sb2NhbGVDb21wYXJl
KHkubmFtZSk7Cit9CisKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90
eXBlID0gewogICAgIC8qKgogICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbVZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAwNGE5NzZlNGEyMjBjZjkwNjU3MDQ5ZGU3ZjI4ZjM4
NWY2ZjZhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TcGxpdFZpZXd9CisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICovCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbihmaWxlU3lzdGVtKQoreworICAg
IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3
LlNpZGViYXJQb3NpdGlvbi5MZWZ0LCAiRmlsZVN5c3RlbVZpZXdTaWRlYmFyV2lkdGgiKTsKKyAg
ICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsZS1zeXN0ZW0tdmlldyIpOworCisgICAg
dmFyIGRpcmVjdG9yeVRyZWVFbGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIs
ICJmaWxlc3lzdGVtLWRpcmVjdG9yeS10cmVlIik7CisgICAgdGhpcy5kaXJlY3RvcnlUcmVlID0g
bmV3IFRyZWVPdXRsaW5lKGRpcmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGViYXJF
bGVtZW50LmFwcGVuZENoaWxkKGRpcmVjdG9yeVRyZWVFbGVtZW50KTsKKyAgICB0aGlzLnNpZGVi
YXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xvc3VyZSIpOworICAgIHRoaXMu
c2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2lkZWJhciIpOworCisgICAgdmFyIHJvb3RJ
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeSh0aGlzLCBmaWxlU3lz
dGVtLnJvb3QpOworICAgIHJvb3RJdGVtLmV4cGFuZCgpOworICAgIHRoaXMuZGlyZWN0b3J5VHJl
ZS5hcHBlbmRDaGlsZChyb290SXRlbSk7CisgICAgdGhpcy5fdmlzaWJsZVZpZXcgPSBudWxsOwor
fQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZpZXcKKyAgICAgKi8KKyAgICBzaG93
VmlldzogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl92aXNpYmxlVmll
dyA9PT0gdmlldykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuX3Zpc2li
bGVWaWV3KQorICAgICAgICAgICAgdGhpcy5fdmlzaWJsZVZpZXcuZGV0YWNoKCk7CisgICAgICAg
IHRoaXMuX3Zpc2libGVWaWV3ID0gdmlldzsKKyAgICAgICAgdmlldy5zaG93KHRoaXMubWFpbkVs
ZW1lbnQpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LnByb3RvdHlwZTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3fSBmaWxlU3lzdGVtVmlldworICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSBlbnRyeQorICovCitXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVZpZXcuRW50cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtVmlldywgZW50cnkpCit7
CisgICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBlbnRyeS5uYW1lLCBudWxsLCBlbnRyeS5pc0Rp
cmVjdG9yeSk7CisKKyAgICB0aGlzLl9lbnRyeSA9IGVudHJ5OworICAgIHRoaXMuX2ZpbGVTeXN0
ZW1WaWV3ID0gZmlsZVN5c3RlbVZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmll
dy5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5jcmVhdGVDaGlsZCgi
ZGl2IiwgInNlbGVjdGlvbiIpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5pbnNlcnRC
ZWZvcmUoc2VsZWN0aW9uLCB0aGlzLmxpc3RJdGVtRWxlbWVudC5maXJzdENoaWxkKTsKKworICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIs
IHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwK
KworICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVmcmVz
aCgpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0b3J5KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgdGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOworICAg
ICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnk+PX0gZW50cmllcworICAgICAqLworICAgIF9kaXJl
Y3RvcnlDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7
CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7Cisg
ICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgIT09IHRoaXMudHJlZU91dGxpbmUpCisgICAgICAg
ICAgICAgICAgdGhpcy5wYXJlbnQucmVmcmVzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCB8fCAhZW50cmllcykgeworICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHJlYWQgZGlyZWN0b3J5OiAiICsgZXJy
b3JDb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJp
ZXMuc29ydChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOworICAg
ICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOworCisgICAgICAg
IHZhciBuZXdFbnRyeUluZGV4ID0gMDsKKyAgICAgICAgdmFyIG9sZENoaWxkSW5kZXggPSAwOwor
ICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsKKyAgICAgICAgd2hpbGUgKG5ld0VudHJ5
SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVu
Z3RoKSB7CisgICAgICAgICAgICB2YXIgbmV3RW50cnkgPSBlbnRyaWVzW25ld0VudHJ5SW5kZXhd
OworICAgICAgICAgICAgdmFyIG9sZENoaWxkID0gb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF07
CisgICAgICAgICAgICB2YXIgb3JkZXIgPSBuZXdFbnRyeS5uYW1lLmxvY2FsZUNvbXBhcmUob2xk
Q2hpbGQuX2VudHJ5Lm5hbWUpOworCisgICAgICAgICAgICBpZiAob3JkZXIgPT09IDApIHsKKyAg
ICAgICAgICAgICAgICBpZiAob2xkQ2hpbGQuX2VudHJ5LmlzRGlyZWN0b3J5ICYmIG9sZENoaWxk
LmV4cGFuZGVkKQorICAgICAgICAgICAgICAgICAgICBvbGRDaGlsZC5yZWZyZXNoKCk7CisgICAg
ICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OworICAgICAgICAgICAgICAgICsrb2xkQ2hpbGRJ
bmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcmRlciA8IDApIHsK
KyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcuRW50cnkodGhpcy5fZmlsZVN5c3RlbVZpZXcsIG5ld0VudHJ5KSwgY3VycmVudFRy
ZWVJdGVtKTsKKyAgICAgICAgICAgICAgICArK25ld0VudHJ5SW5kZXg7CisgICAgICAgICAgICAg
ICAgKytjdXJyZW50VHJlZUl0ZW07CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGN1cnJlbnRUcmVl
SXRlbSk7CisgICAgICAgICAgICArK29sZENoaWxkSW5kZXg7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yICg7IG5ld0VudHJ5SW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgKytuZXdFbnRyeUluZGV4KQor
ICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1W
aWV3LkVudHJ5KHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LCBlbnRyaWVzW25ld0VudHJ5SW5kZXhdKSk7
CisKKyAgICAgICAgZm9yICg7IG9sZENoaWxkSW5kZXggPCBvbGRDaGlsZHJlbi5sZW5ndGg7ICsr
b2xkQ2hpbGRJbmRleCkKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQob2xkQ2hpbGRyZW5b
b2xkQ2hpbGRJbmRleF0pOworICAgIH0sCisKKyAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0aGlzLl9lbnRyeS5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCh0aGlzLl9k
aXJlY3RvcnlDb250ZW50UmVjZWl2ZWQuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVt
ZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IGM5N2MxZjI1YjczYjQ3Y2I4NDExZWI4MzNkZTk0
MTcwY2Y3NjljNzEuLjQ1ZmNjZTBhNzc1OTM5ODMyNjg2MTQwMzQxNDdjODZlMzU4NmFmMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcwpAQCAtNDYyLDYgKzQ2MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2FwcGxpY2F0
aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqICBAcGFy
YW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd0ZpbGVTeXN0ZW06
IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHZpZXcp
OworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29yeU5hbWUp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTE1MjUsNiArMTUz
Myw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IHRoaXMuX2ZpbGVTeXN0ZW1U
cmVlRWxlbWVudEJ5TmFtZShmaWxlU3lzdGVtLm5hbWUpOwogICAgICAgICBpZiAoIWZpbGVTeXN0
ZW1UcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZmlsZVN5c3RlbVRy
ZWVFbGVtZW50LmNsZWFyKCk7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoZmlsZVN5c3RlbVRy
ZWVFbGVtZW50KTsKICAgICB9LAogCkBAIC0xOTc3LDYgKzE5ODYsMTkgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0u
bmFtZTsKKyAgICB9LAorCisgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNlbGVjdC5j
YWxsKHRoaXMpOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IG5ldyBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcodGhpcy5fZmlsZVN5c3RlbSk7CisgICAgICAgIHRoaXMuX3N0b3Jh
Z2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKwor
ICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVt
VmlldyAmJiB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVt
VmlldykKKyAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKaW5kZXggOGY4MjIxYTYzZTExYmRlYzczZDU1ZTkwMmRiYjJjZTUzMGZkM2ZjYy4uZDQx
ZDM5ODY1ZWVmZTQyOTk0YWVlOWNjNWQ2MTI0NWQxZTU3ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTksNiArNTksNyBAQAogICAg
IDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5q
czwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+
RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9u
RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkdvVG9MaW5lRGlhbG9nLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZGJkN2M1YTVkNWJjNTBhZWVkYzQ3ZWNi
ZjdkMjFlY2I0YzE4YWU4Zi4uNDcwNThjYTVjZjE0MDBhOWQ2MGViMzljMjEwNzFkZTE0MjU1NGJm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCkBAIC0xNjIsNiArMTYyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VIVE1MVG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9r
ZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJGaWxlU3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGb250Vmlldy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRh
YmxlVmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFhMTI2YThlMWRiMzZmODFkNTgwZThjMjYw
NDNkMDc0NjNiNTRlYy4uZWQ4NzYzZTRjYjQ1YWE5ODFiMzlkNWRhOTJhNjBjMmNmYjFlYjE1MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTI4ICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgRmlsZVN5c3RlbVZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzAxCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2UgYSBzcGxpdCB2aWV3IGFzIEZpbGVTeXN0ZW1W
aWV3LiBJbmNsdWRpbmcgZGlyZWN0b3J5IHRyZWUgYXMgc2lkZWJhciB0cmVlLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0LmluY3Jl
bWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0LmRl
Y3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0
Lkluc3BlY3RvclRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCk6CisKIDIwMTItMDYtMjcgIEFs
ZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgSW1w
bGVtZW50IHNlbGVjdGVkT3B0aW9ucyBhdHRyaWJ1dGUgb2YgSFRNTFNlbGVjdEVsZW1lbnQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2Rp
cmVjdG9yeS10cmVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
N2YxM2VjNDQ1ZDJjNDVjOWUyY2YyZTc2YWU5MTllYzY1YjYyZmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10
cmVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0cyBkaXJlY3RvcnkgdHJlZSBv
biBGaWxlU3lzdGVtVmlldy4KKworW2RpcmVjdG9yeSB0cmVlIG5vZGVdCitleHBhbmRlZDogdHJ1
ZQorZW50cnk6IChudWxsKQorI2NoaWxkcmVuOiAxCisgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQor
ICBleHBhbmRlZDogdHJ1ZQorICBlbnRyeTogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5LworICAjY2hpbGRyZW46IDEKKyAgICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0K
KyAgICBleHBhbmRlZDogZmFsc2UKKyAgICBlbnRyeTogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAu
MC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UKKyAgICAjY2hpbGRyZW46IDAKKworW2RpcmVjdG9yeSB0
cmVlIG5vZGVdCitleHBhbmRlZDogdHJ1ZQorZW50cnk6IChudWxsKQorI2NoaWxkcmVuOiAxCisg
IFtkaXJlY3RvcnkgdHJlZSBub2RlXQorICBleHBhbmRlZDogdHJ1ZQorICBlbnRyeTogZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5LworICAjY2hpbGRyZW46IDEKKyAg
ICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KKyAgICBleHBhbmRlZDogdHJ1ZQorICAgIGVudHJ5OiBm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQorICAgICNjaGls
ZHJlbjogMQorICAgICAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCisgICAgICBleHBhbmRlZDogZmFs
c2UKKyAgICAgIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jh
cnkvaG9nZS9mdWdhCisgICAgICAjY2hpbGRyZW46IDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJl
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU0N2IzMGY2OTc3NDcwZTgwZmFjMGFiYTYwYWUyZTNjMDFlMTM0
MjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKQEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZmlsZXN5
c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICB2YXIgcmVzb3VyY2VzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlczsKKyAg
ICB2YXIgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IHJlc291cmNlc1BhbmVsLmZpbGVTeXN0
ZW1MaXN0VHJlZUVsZW1lbnQ7CisgICAgaWYgKCFmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KSB7
CisgICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQocmVzb3VyY2VzUGFuZWwpOworICAgICAgICByZXNvdXJj
ZXNQYW5lbC5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudDsKKyAgICAgICAgcmVzb3VyY2VzUGFuZWwuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQoZmls
ZVN5c3RlbUxpc3RUcmVlRWxlbWVudCk7CisgICAgfQorCitzZXRUaW1lb3V0KEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0LmJpbmQoSW5zcGVjdG9yVGVzdCksIDEwMDApOworCisgICAgdmFyIGZp
bGVTeXN0ZW1JdGVtID0gbnVsbDsKKyAgICB2YXIgZmlsZVN5c3RlbVZpZXcgPSBudWxsOworICAg
IHZhciBkaXJlY3RvcnlUcmVlID0gbnVsbDsKKworICAgIHZhciB0ZXN0U3RlcCA9IFsKKyAgICAg
ICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJyZXNvdXJjZXMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0
b3J5KCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJl
Y3RvcnkoIi9ob2dlL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3Jl
YXRlRmlsZSgiL2hvZ2UvZnVnYS9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJv
dG90eXBlLCAiX2ZpbGVTeXN0ZW1BZGRlZCIsIHRlc3RTdGVwLnNoaWZ0KCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuX3JlZnJlc2hGaWxlU3lzdGVtKCk7
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC90ZW1wb3JhcnkiKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgZmlsZVN5c3RlbUl0ZW0gPSBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50Ll9maWxlU3lzdGVt
VHJlZUVsZW1lbnRCeU5hbWUoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeSIpOworCisgICAgICAgICAgICBmaWxlU3lzdGVtSXRlbS5zZWxlY3QoKTsKKyAgICAgICAg
ICAgIGZpbGVTeXN0ZW1WaWV3ID0gZmlsZVN5c3RlbUl0ZW0uX2ZpbGVTeXN0ZW1WaWV3OworICAg
ICAgICAgICAgZGlyZWN0b3J5VHJlZSA9IGZpbGVTeXN0ZW1WaWV3LmRpcmVjdG9yeVRyZWU7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCh0ZXN0U3Rl
cC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGR1bXBEaXJlY3RvcnlUcmVlKGRpcmVjdG9yeVRyZWUpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiIpOworCisgICAgICAgICAgICBkaXJlY3RvcnlUcmVlLmNoaWxk
cmVuWzBdLmV4cGFuZFJlY3Vyc2l2ZWx5KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNh
bGxPblJlcXVlc3RDb21wbGV0ZWQodGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkdW1wRGlyZWN0b3J5VHJlZShkaXJlY3Rv
cnlUcmVlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVz
dFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9
CisgICAgXTsKKworICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNo
aWZ0KCkpOworCisgICAgZnVuY3Rpb24gZHVtcERpcmVjdG9yeVRyZWUodHJlZU5vZGUsIGluZGVu
dCkKKyAgICB7CisgICAgICAgIGluZGVudCA9IGluZGVudCB8fCAiIjsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgIltkaXJlY3RvcnkgdHJlZSBub2RlXSIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiZXhwYW5kZWQ6ICIgKyB0cmVl
Tm9kZS5leHBhbmRlZCk7CisgICAgICAgIGlmICh0cmVlTm9kZS5fZW50cnkpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiZW50cnk6ICIgKyB0cmVlTm9kZS5f
ZW50cnkudXJsKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChpbmRlbnQgKyAiZW50cnk6IChudWxsKSIpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KGluZGVudCArICIjY2hpbGRyZW46ICIgKyB0cmVlTm9kZS5jaGlsZHJlbi5sZW5ndGgp
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZU5vZGUuY2hpbGRyZW4ubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBkdW1wRGlyZWN0b3J5VHJlZSh0cmVlTm9kZS5jaGlsZHJlbltp
XSwgaW5kZW50ICsgIiAgIik7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRlc3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1WaWV3LjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKaW5kZXggNmRiMmRlZGYzYzlkYzFm
MDAzMDBmMjliZGM3NjE1OTU4OTc2YmY2Ni4uNGVkNmNlNThmZDcyNDUxYmI4NWNjNTM4MWIyNGY1
MDBhZjQ2ZWIxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKQEAgLTMsNiArMywzNyBA
QCB2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgbmV4
dENhbGxiYWNrSWQgPSAwOwogICAgIHZhciBjYWxsYmFja3MgPSB7fTsKIAorICAgIEluc3BlY3Rv
clRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnBy
b3RvdHlwZSwgInJlcXVlc3RGaWxlU3lzdGVtUm9vdCIsIGluY3JlbWVudFJlcXVlc3RDb3VudCwg
dHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLCAicmVxdWVzdERpcmVjdG9yeUNvbnRlbnQiLCBp
bmNyZW1lbnRSZXF1ZXN0Q291bnQsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSwgInJlcXVl
c3RNZXRhZGF0YSIsIGluY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7CisKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5w
cm90b3R5cGUsICJfZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCIsIGRlY3JlbWVudFJlcXVlc3RDb3Vu
dCwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLCAiX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZl
ZCIsIGRlY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLCAi
X21ldGFkYXRhUmVjZWl2ZWQiLCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQsIHRydWUpOworCisgICAg
dmFyIGlkbGVDYWxsYmFja3MgPSBbXTsKKyAgICB2YXIgcmVxdWVzdENvdW50ID0gMDsKKyAgICBm
dW5jdGlvbiBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKQorICAgIHsKKyAgICAgICAgKytyZXF1ZXN0
Q291bnQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gZGVjcmVtZW50UmVxdWVzdENvdW50KCkKKyAg
ICB7CisgICAgICAgIGlmICgtLXJlcXVlc3RDb3VudCAhPT0gMCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgY2FsbGJhY2tzID0gaWRsZUNhbGxiYWNrczsKKyAgICAgICAgaWRs
ZUNhbGxiYWNrcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGNhbGxiYWNrc1tpXSgpOworICAgIH0KKworICAgIElu
c3BlY3RvclRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgaWRsZUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICB9OworCiAg
ICAgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrID0gZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewogICAgICAgICB2YXIgY2FsbGJhY2tJZCA9ICsrbmV4dENhbGxiYWNrSWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150078</attachid>
            <date>2012-06-28 20:57:43 -0700</date>
            <delta_ts>2012-06-29 02:54:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73301-20120629125743.patch</filename>
            <type>text/plain</type>
            <size>21942</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk3ZDAxMWM3NzBlOTgz
OTg5NmRjZTRmMDIyMGFjNjI0NjhkYWI0Ny4uNDdlM2I1MmU4NTllYmI5ZDYyNmI2ZmQzZDFjN2Iw
NTM2MjhiODg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTI4ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2UgYSBzcGxpdCB2
aWV3IGFzIEZpbGVTeXN0ZW1WaWV3LiBJbmNsdWRpbmcgZGlyZWN0b3J5IHRyZWUgYXMgc2lkZWJh
ciB0cmVlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuY29tcGFyZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvd0ZpbGVTeXN0ZW0pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1V
UkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5
cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX3JlZnJlc2hGaWxlU3lzdGVtKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
c2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJv
dG90eXBlLmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMi0w
Ni0yOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQ29tcGlsZSBjaHJvbWl1bSBjb21wb3NpdG9yIGltcGxlbWVudGF0aW9uIGZpbGVz
IGludG8gc2VwYXJhdGUgLmxpYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdmNmUyMmRkNTQwMGRmYWEw
YmNjYTE5OWE4OGY4OTc5ZWEzM2FhMjMuLjc3MmUwZjA4YmM2ZDlhOGU3YjY4Y2IyM2Y5MzIxMzdj
NzkwYzNhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYyNzIsNiArNjI3Miw3IEBACiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQxMmRiNTY2YzhjMzk1OTZmZDBmMTI1NDhl
MDcxMTU2ODZjMTI3ZTkuLjM0Zjg5YTM3NDQxZjFkNjkzM2Q1MTQwMzRkZDFiMWFiMTkyZTQ1YTEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03
NDkxNCw2ICs3NDkxNCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtVmlldy5qcyIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmNzcyIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21w
aWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250
LWVuZC5weQppbmRleCBjMzI4MTViZTdiYTVhMDA4ZTM1NzNiMmEyZjE2MGQxZThiN2Y1MTcxLi4w
MjE3ODQ4Zjg0NTY0MmViOTNiMWZhNTdkZjMyYTliYjhjMzE3MWM0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC0yMTEsNiArMjExLDcgQEAg
bW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEYXRhYmFzZVF1ZXJ5Vmlldy5qcyIsCiAgICAgICAg
ICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMiLAogICAgICAgICAgICAgIkRPTVN0b3JhZ2VJdGVt
c1ZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwKICAgICAgICAgICAg
ICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2VzUGFuZWwuanMiLAog
ICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IGVkYjY0N2ZhNzU4MWI0ZWQ4ZGQ5YWU5MjMwNjIyNDZl
NDk2YWY2ODIuLjhiYTU5MWZjNGVmMDZiMWRmZGFkNTRmYjliNDc3OGNlMWM4OTUxNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzCkBAIC0yOTEsNiArMjkxLDE4IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RW50cnkgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIGJhY2tlCiAgICAg
dGhpcy5faXNEaXJlY3RvcnkgPSBiYWNrZW5kRW50cnkuaXNEaXJlY3Rvcnk7CiB9CiAKKy8qKgor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSB4CisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9IHkKKyAqIEByZXR1cm4ge251
bWJlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5jb21wYXJlID0g
ZnVuY3Rpb24oeCwgeSkKK3sKKyAgICBpZiAoeC5pc0RpcmVjdG9yeSAhPSB5LmlzRGlyZWN0b3J5
KQorICAgICAgICByZXR1cm4geS5pc0RpcmVjdG9yeSA/IDEgOiAtMTsKKyAgICByZXR1cm4geC5u
YW1lLmxvY2FsZUNvbXBhcmUoeS5uYW1lKTsKK30KKwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5FbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHR5cGUge1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWx9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmY0YzdhNzFhNDhlNTg3
YmM0ODUyY2YyMTEwNzk1ZGE4YTcyNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpAQCAtMCwwICsxLDE2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNwbGl0Vmll
d30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBm
aWxlU3lzdGVtCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1bmN0aW9uKGZp
bGVTeXN0ZW0pCit7CisgICAgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5jYWxsKHRoaXMsIFdlYklu
c3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQsICJGaWxlU3lzdGVtVmlld1Np
ZGViYXJXaWR0aCIpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJmaWxlLXN5c3Rl
bS12aWV3Iik7CisKKyAgICB2YXIgZGlyZWN0b3J5VHJlZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQu
Y3JlYXRlQ2hpbGQoIm9sIiwgImZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUiKTsKKyAgICB0aGlz
LmRpcmVjdG9yeVRyZWUgPSBuZXcgVHJlZU91dGxpbmUoZGlyZWN0b3J5VHJlZUVsZW1lbnQpOwor
ICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQoZGlyZWN0b3J5VHJlZUVsZW1lbnQp
OworICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9z
dXJlIik7CisgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaWRlYmFyIik7
CisKKyAgICB2YXIgcm9vdEl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVu
dHJ5VHJlZUVsZW1lbnQodGhpcywgZmlsZVN5c3RlbS5yb290KTsKKyAgICByb290SXRlbS5leHBh
bmRlZCA9IHRydWU7CisgICAgdGhpcy5kaXJlY3RvcnlUcmVlLmFwcGVuZENoaWxkKHJvb3RJdGVt
KTsKKyAgICB0aGlzLl92aXNpYmxlVmlldyA9IG51bGw7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVmlld30gdmlldworICAgICAqLworICAgIHNob3dWaWV3OiBmdW5jdGlvbih2aWV3KQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Zpc2libGVWaWV3ID09PSB2aWV3KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAodGhpcy5fdmlzaWJsZVZpZXcpCisgICAgICAgICAgICB0
aGlzLl92aXNpYmxlVmlldy5kZXRhY2goKTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZVZpZXcgPSB2
aWV3OworICAgICAgICB2aWV3LnNob3codGhpcy5tYWluRWxlbWVudCk7CisgICAgfQorfQorCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5TcGxpdFZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge1RyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZp
ZXd9IGZpbGVTeXN0ZW1WaWV3CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRW50cnl9IGVudHJ5CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oZmlsZVN5c3RlbVZpZXcsIGVudHJ5KQoreworICAgIFRyZWVF
bGVtZW50LmNhbGwodGhpcywgZW50cnkubmFtZSwgbnVsbCwgZW50cnkuaXNEaXJlY3RvcnkpOwor
CisgICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlldyA9IGZp
bGVTeXN0ZW1WaWV3OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5jcmVhdGVDaGlsZCgi
ZGl2IiwgInNlbGVjdGlvbiIpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5pbnNlcnRC
ZWZvcmUoc2VsZWN0aW9uLCB0aGlzLmxpc3RJdGVtRWxlbWVudC5maXJzdENoaWxkKTsKKworICAg
ICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIs
IHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwK
KworICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVmcmVz
aCgpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0b3J5KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgdGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOworICAg
ICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnk+PX0gZW50cmllcworICAgICAqLworICAgIF9kaXJl
Y3RvcnlDb250ZW50UmVjZWl2ZWQ6IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKKyAgICB7
CisgICAgICAgIGlmIChlcnJvckNvZGUgPT09IEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKSB7Cisg
ICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgIT09IHRoaXMudHJlZU91dGxpbmUpCisgICAgICAg
ICAgICAgICAgdGhpcy5wYXJlbnQucmVmcmVzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPT0gMCB8fCAhZW50cmllcykgeworICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHJlYWQgZGlyZWN0b3J5OiAiICsgZXJy
b3JDb2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJp
ZXMuc29ydChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNvbXBhcmUpOworICAg
ICAgICB2YXIgb2xkQ2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApOworCisgICAgICAg
IHZhciBuZXdFbnRyeUluZGV4ID0gMDsKKyAgICAgICAgdmFyIG9sZENoaWxkSW5kZXggPSAwOwor
ICAgICAgICB2YXIgY3VycmVudFRyZWVJdGVtID0gMDsKKyAgICAgICAgd2hpbGUgKG5ld0VudHJ5
SW5kZXggPCBlbnRyaWVzLmxlbmd0aCAmJiBvbGRDaGlsZEluZGV4IDwgb2xkQ2hpbGRyZW4ubGVu
Z3RoKSB7CisgICAgICAgICAgICB2YXIgbmV3RW50cnkgPSBlbnRyaWVzW25ld0VudHJ5SW5kZXhd
OworICAgICAgICAgICAgdmFyIG9sZENoaWxkID0gb2xkQ2hpbGRyZW5bb2xkQ2hpbGRJbmRleF07
CisgICAgICAgICAgICB2YXIgb3JkZXIgPSBuZXdFbnRyeS5uYW1lLmxvY2FsZUNvbXBhcmUob2xk
Q2hpbGQuX2VudHJ5Lm5hbWUpOworCisgICAgICAgICAgICBpZiAob3JkZXIgPT09IDApIHsKKyAg
ICAgICAgICAgICAgICBpZiAob2xkQ2hpbGQuX2VudHJ5LmlzRGlyZWN0b3J5ICYmIG9sZENoaWxk
LmV4cGFuZGVkKQorICAgICAgICAgICAgICAgICAgICBvbGRDaGlsZC5yZWZyZXNoKCk7CisgICAg
ICAgICAgICAgICAgKytuZXdFbnRyeUluZGV4OworICAgICAgICAgICAgICAgICsrb2xkQ2hpbGRJ
bmRleDsKKyAgICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcmRlciA8IDApIHsK
KyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudCh0aGlzLl9maWxlU3lzdGVtVmlldywgbmV3RW50cnkp
LCBjdXJyZW50VHJlZUl0ZW0pOworICAgICAgICAgICAgICAgICsrbmV3RW50cnlJbmRleDsKKyAg
ICAgICAgICAgICAgICArK2N1cnJlbnRUcmVlSXRlbTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgo
Y3VycmVudFRyZWVJdGVtKTsKKyAgICAgICAgICAgICsrb2xkQ2hpbGRJbmRleDsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKDsgbmV3RW50cnlJbmRleCA8IGVudHJpZXMubGVuZ3RoOyArK25ld0Vu
dHJ5SW5kZXgpCisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVudCh0aGlzLl9maWxlU3lzdGVtVmlldywgZW50
cmllc1tuZXdFbnRyeUluZGV4XSkpOworCisgICAgICAgIGZvciAoOyBvbGRDaGlsZEluZGV4IDwg
b2xkQ2hpbGRyZW4ubGVuZ3RoOyArK29sZENoaWxkSW5kZXgpCisgICAgICAgICAgICB0aGlzLnJl
bW92ZUNoaWxkKG9sZENoaWxkcmVuW29sZENoaWxkSW5kZXhdKTsKKyAgICB9LAorCisgICAgcmVm
cmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbnRyeS5pc0RpcmVj
dG9yeSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fZW50cnkucmVxdWVzdERp
cmVjdG9yeUNvbnRlbnQodGhpcy5fZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkLmJpbmQodGhpcykp
OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmlu
ZGV4IGM5N2MxZjI1YjczYjQ3Y2I4NDExZWI4MzNkZTk0MTcwY2Y3NjljNzEuLjQ1ZmNjZTBhNzc1
OTM5ODMyNjg2MTQwMzQxNDdjODZlMzU4NmFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtNDYyLDYgKzQ2Miwx
NCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqICBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2
aWV3CisgICAgICovCisgICAgc2hvd0ZpbGVTeXN0ZW06IGZ1bmN0aW9uKHZpZXcpCisgICAgewor
ICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHZpZXcpOworICAgIH0sCisKICAgICBzaG93Q2F0
ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29yeU5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2NhdGVnb3J5VmlldykKQEAgLTE1MjUsNiArMTUzMyw3IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZpbGVTeXN0
ZW1UcmVlRWxlbWVudCA9IHRoaXMuX2ZpbGVTeXN0ZW1UcmVlRWxlbWVudEJ5TmFtZShmaWxlU3lz
dGVtLm5hbWUpOwogICAgICAgICBpZiAoIWZpbGVTeXN0ZW1UcmVlRWxlbWVudCkKICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgZmlsZVN5c3RlbVRyZWVFbGVtZW50LmNsZWFyKCk7CiAgICAg
ICAgIHRoaXMucmVtb3ZlQ2hpbGQoZmlsZVN5c3RlbVRyZWVFbGVtZW50KTsKICAgICB9LAogCkBA
IC0xOTc3LDYgKzE5ODYsMTkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKICAgICAgICAgcmV0dXJuICJm
aWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgb25z
ZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFn
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNlbGVjdC5jYWxsKHRoaXMpOworICAgICAgICB0aGlz
Ll9maWxlU3lzdGVtVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcodGhpcy5f
ZmlsZVN5c3RlbSk7CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0
aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9zdG9yYWdlUGFu
ZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVtVmlldykKKyAgICAgICAgICAgIHRoaXMu
X3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggOGY4MjIxYTYzZTEx
YmRlYzczZDU1ZTkwMmRiYjJjZTUzMGZkM2ZjYy4uZDQxZDM5ODY1ZWVmZTQyOTk0YWVlOWNjNWQ2
MTI0NWQxZTU3ZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwpAQCAtNTksNiArNTksNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5q
czwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxl
U3lzdGVtTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzPC9maWxlPgogICAgIDxm
aWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKaW5kZXggZGJkN2M1YTVkNWJjNTBhZWVkYzQ3ZWNiZjdkMjFlY2I0YzE4YWU4Zi4uNDcwNThj
YTVjZjE0MDBhOWQ2MGViMzljMjEwNzFkZTE0MjU1NGJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjIsNiArMTYyLDcg
QEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3Vy
Y2VIVE1MVG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTW9kZWwuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVT
eXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJGb250Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzA3NjJhYjMyNzFiNjIwMDJkYjNhYjU0OTdjOWRlODY3ZmFjZTBlMC4uOGE1ZDMzZjlj
YjRjMWI3MjMxZGQ4YjM1ZTZmNWUxYjk2NDkwYmU3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTA2LTI4ICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBZGQgRmlsZVN5c3RlbVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzAxCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRy
b2R1Y2UgYSBzcGxpdCB2aWV3IGFzIEZpbGVTeXN0ZW1WaWV3LiBJbmNsdWRpbmcgZGlyZWN0b3J5
IHRyZWUgYXMgc2lkZWJhciB0cmVlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3Rv
cnktdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanM6CisgICAgICAg
IChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0LmluY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAg
ICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0LmRlY3JlbWVudFJlcXVlc3RDb3VudCk6Cisg
ICAgICAgIChpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0Lkluc3BlY3RvclRlc3QuY2FsbE9uUmVx
dWVzdENvbXBsZXRlZCk6CisKIDIwMTItMDYtMjggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbVjhdIE5vZGVMaXN0IHdyYXBwZXJzIGFyZSBub3Qga2VwdCBh
bGl2ZSBhcyBuZWVkZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjI3ZjEzZWM0NDVkMmM0NWM5ZTJjZjJlNzZhZTkxOWVjNjViNjJmYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vZGlyZWN0b3J5LXRyZWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3Rz
IGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1WaWV3LgorCitbZGlyZWN0b3J5IHRyZWUgbm9k
ZV0KK2V4cGFuZGVkOiB0cnVlCitlbnRyeTogKG51bGwpCisjY2hpbGRyZW46IDEKKyAgW2RpcmVj
dG9yeSB0cmVlIG5vZGVdCisgIGV4cGFuZGVkOiB0cnVlCisgIGVudHJ5OiBmaWxlc3lzdGVtOmh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCisgICNjaGlsZHJlbjogMQorICAgIFtkaXJl
Y3RvcnkgdHJlZSBub2RlXQorICAgIGV4cGFuZGVkOiBmYWxzZQorICAgIGVudHJ5OiBmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQorICAgICNjaGlsZHJlbjog
MAorCitbZGlyZWN0b3J5IHRyZWUgbm9kZV0KK2V4cGFuZGVkOiB0cnVlCitlbnRyeTogKG51bGwp
CisjY2hpbGRyZW46IDEKKyAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCisgIGV4cGFuZGVkOiB0cnVl
CisgIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCisg
ICNjaGlsZHJlbjogMQorICAgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQorICAgIGV4cGFuZGVkOiB0
cnVlCisgICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9ob2dlCisgICAgI2NoaWxkcmVuOiAxCisgICAgICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KKyAg
ICAgIGV4cGFuZGVkOiBmYWxzZQorICAgICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EKKyAgICAgICNjaGlsZHJlbjogMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVj
dG9yeS10cmVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2RpcmVjdG9yeS10cmVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxOGVmMzEyNTg1OTk1M2FjZmI4
MjA1YTk5MzYxNzI5ZGMyYTY5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbApAQCAtMCwwICsx
LDEwMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2RvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHZhciByZXNvdXJjZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5l
bHMucmVzb3VyY2VzOworICAgIHZhciBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gcmVzb3Vy
Y2VzUGFuZWwuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsKKyAgICBpZiAoIWZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudChyZXNvdXJjZXNQYW5lbCk7
CisgICAgICAgIHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBmaWxl
U3lzdGVtTGlzdFRyZWVFbGVtZW50OworICAgICAgICByZXNvdXJjZXNQYW5lbC5zaWRlYmFyVHJl
ZS5hcHBlbmRDaGlsZChmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKKyAgICB9CisKKyAgICB2
YXIgZmlsZVN5c3RlbUl0ZW0gPSBudWxsOworICAgIHZhciBmaWxlU3lzdGVtVmlldyA9IG51bGw7
CisgICAgdmFyIGRpcmVjdG9yeVRyZWUgPSBudWxsOworCisgICAgdmFyIHRlc3RTdGVwID0gWwor
ICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoInJlc291cmNlcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVE
aXJlY3RvcnkoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0
ZURpcmVjdG9yeSgiL2hvZ2UvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVGaWxlKCIvaG9nZS9mdWdhL3BpeW8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVu
dC5wcm90b3R5cGUsICJfZmlsZVN5c3RlbUFkZGVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgZmFsc2Up
OworICAgICAgICAgICAgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5fcmVmcmVzaEZpbGVTeXN0
ZW0oKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbihldmVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gImZpbGVzeXN0ZW06aHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3RlbXBvcmFyeSIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBmaWxlU3lzdGVtSXRlbSA9IGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuX2ZpbGVT
eXN0ZW1UcmVlRWxlbWVudEJ5TmFtZSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5Iik7CisKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1JdGVtLnNlbGVjdCgpOworICAg
ICAgICAgICAgZmlsZVN5c3RlbVZpZXcgPSBmaWxlU3lzdGVtSXRlbS5fZmlsZVN5c3RlbVZpZXc7
CisgICAgICAgICAgICBkaXJlY3RvcnlUcmVlID0gZmlsZVN5c3RlbVZpZXcuZGlyZWN0b3J5VHJl
ZTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYWxsT25SZXF1ZXN0Q29tcGxldGVkKHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUoZGlyZWN0b3J5VHJlZSk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgICAgIGRpcmVjdG9yeVRyZWUu
Y2hpbGRyZW5bMF0uZXhwYW5kUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKGRp
cmVjdG9yeVRyZWUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3Rl
bSh0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
ICAgIH0KKyAgICBdOworCisgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0
ZXAuc2hpZnQoKSk7CisKKyAgICBmdW5jdGlvbiBkdW1wRGlyZWN0b3J5VHJlZSh0cmVlTm9kZSwg
aW5kZW50KQorICAgIHsKKyAgICAgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQgKyAiW2RpcmVjdG9yeSB0cmVlIG5vZGVdIik7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJleHBhbmRlZDogIiAr
IHRyZWVOb2RlLmV4cGFuZGVkKTsKKyAgICAgICAgaWYgKHRyZWVOb2RlLl9lbnRyeSkKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogIiArIHRyZWVO
b2RlLl9lbnRyeS51cmwpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogKG51bGwpIikKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoaW5kZW50ICsgIiNjaGlsZHJlbjogIiArIHRyZWVOb2RlLmNoaWxkcmVuLmxl
bmd0aCk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlTm9kZS5jaGlsZHJlbi5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2RlLmNoaWxk
cmVuW2ldLCBpbmRlbnQgKyAiICAiKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGVzdHMgZGlyZWN0b3J5IHRyZWUgb24gRmlsZVN5c3RlbVZpZXcuPC9wPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwppbmRleCA2ZGIyZGVkZjNj
OWRjMWYwMDMwMGYyOWJkYzc2MTU5NTg5NzZiZjY2Li40ZWQ2Y2U1OGZkNzI0NTFiYjg1Y2M1Mzgx
YjI0ZjUwMGFmNDZlYjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpAQCAtMyw2ICsz
LDM3IEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgIHZh
ciBuZXh0Q2FsbGJhY2tJZCA9IDA7CiAgICAgdmFyIGNhbGxiYWNrcyA9IHt9OwogCisgICAgSW5z
cGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIucHJvdG90eXBlLCAicmVxdWVzdEZpbGVTeXN0ZW1Sb290IiwgaW5jcmVtZW50UmVxdWVzdENv
dW50LCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUsICJyZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dCIsIGluY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLCAi
cmVxdWVzdE1ldGFkYXRhIiwgaW5jcmVtZW50UmVxdWVzdENvdW50LCB0cnVlKTsKKworICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnByb3RvdHlwZSwgIl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkIiwgZGVjcmVtZW50UmVxdWVz
dENvdW50LCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUsICJfZGlyZWN0b3J5Q29udGVudFJl
Y2VpdmVkIiwgZGVjcmVtZW50UmVxdWVzdENvdW50LCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5
cGUsICJfbWV0YWRhdGFSZWNlaXZlZCIsIGRlY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7CisK
KyAgICB2YXIgaWRsZUNhbGxiYWNrcyA9IFtdOworICAgIHZhciByZXF1ZXN0Q291bnQgPSAwOwor
ICAgIGZ1bmN0aW9uIGluY3JlbWVudFJlcXVlc3RDb3VudCgpCisgICAgeworICAgICAgICArK3Jl
cXVlc3RDb3VudDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQorICAgIHsKKyAgICAgICAgaWYgKC0tcmVxdWVzdENvdW50ICE9PSAwKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBjYWxsYmFja3MgPSBpZGxlQ2FsbGJhY2tzOworICAgICAg
ICBpZGxlQ2FsbGJhY2tzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJh
Y2tzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgY2FsbGJhY2tzW2ldKCk7CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5jYWxsT25SZXF1ZXN0Q29tcGxldGVkID0gZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBpZGxlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgIH07
CisKICAgICBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2sgPSBmdW5jdGlvbihjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFja0lkID0gKytuZXh0Q2FsbGJhY2tJZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>