<?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>96706</bug_id>
          
          <creation_ts>2012-09-13 16:33:55 -0700</creation_ts>
          <short_desc>suspend/resumeWidgetHierarchyUpdates should be a RAII object</short_desc>
          <delta_ts>2012-09-24 13:35:50 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96719</dependson>
    
    <dependson>96729</dependson>
          <blocked>96702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720096</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 16:33:55 -0700</bug_when>
    <thetext>suspendWidgetHierarchyUpdates and resumeWidgetHierarchyUpdates pair should be turned into a RAII object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720100</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-13 16:40:30 -0700</bug_when>
    <thetext>This could coudl be duped with bug 96702, one way or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720102</commentid>
    <comment_count>2</comment_count>
      <attachid>164000</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 16:42:00 -0700</bug_when>
    <thetext>Created attachment 164000
Refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720104</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 16:45:19 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This could coudl be duped with bug 96702, one way or the other.

I think the bug 96702 is a more generic bug. Once we&apos;ve turned all these paired methods, we can consider creating a object that encompasses multiple RAII objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720105</commentid>
    <comment_count>4</comment_count>
      <attachid>164001</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 16:45:24 -0700</bug_when>
    <thetext>Created attachment 164001
Reverted irrelevant xcodeproj change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720111</commentid>
    <comment_count>5</comment_count>
      <attachid>164001</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-09-13 16:52:41 -0700</bug_when>
    <thetext>Comment on attachment 164001
Reverted irrelevant xcodeproj change

Attachment 164001 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13849359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720115</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 16:56:01 -0700</bug_when>
    <thetext>Will land after merging http://trac.webkit.org/changeset/128524.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720126</commentid>
    <comment_count>7</comment_count>
      <attachid>164001</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-13 17:05:45 -0700</bug_when>
    <thetext>Comment on attachment 164001
Reverted irrelevant xcodeproj change

Attachment 164001 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13851308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720127</commentid>
    <comment_count>8</comment_count>
      <attachid>164001</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-13 17:07:28 -0700</bug_when>
    <thetext>Comment on attachment 164001
Reverted irrelevant xcodeproj change

Attachment 164001 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13841546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720137</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 17:19:31 -0700</bug_when>
    <thetext>Committed r128531: &lt;http://trac.webkit.org/changeset/128531&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720230</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-13 19:21:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r128531: &lt;http://trac.webkit.org/changeset/128531&gt;

The patch made plugins/document-open.html crash on Chromium-Linux debug. I&apos;ll roll it out.

crash log for DumpRenderTree (pid 4685):
STDOUT: &lt;empty&gt;
STDERR: [4685:4685:15051224664231:ERROR:process_util_posix.cc(143)] Received signal 11
STDERR: 	base::debug::StackTrace::StackTrace() [0x7f1dfb72213a]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x7f1dfb78970d]
STDERR: 	0x7f1df4a5baf0
STDERR: 	WebCore::Document::frame() [0x7f1dfdb4cf38]
STDERR: 	WebKit::WebPluginContainerImpl::clearScriptObjects() [0x7f1dfdc14c27]
STDERR: 	webkit::npapi::WebPluginImpl::TearDownPluginInstance() [0x7f1df95057be]
STDERR: 	webkit::npapi::WebPluginImpl::SetContainer() [0x7f1df95047fe]
STDERR: 	webkit::npapi::WebPluginImpl::destroy() [0x7f1df94ffb19]
STDERR: 	WebKit::WebPluginContainerImpl::~WebPluginContainerImpl() [0x7f1dfdc160d7]
STDERR: 	WTF::RefCounted&lt;&gt;::deref() [0x7f1dfdb31cf8]
STDERR: 	WTF::derefIfNotNull&lt;&gt;() [0x7f1dfe703e68]
STDERR: 	WTF::RefPtr&lt;&gt;::~RefPtr() [0x7f1dfe770e2b]
STDERR: 	WTF::KeyValuePair&lt;&gt;::~KeyValuePair() [0x7f1dff3d8ed8]
STDERR: 	WTF::HashTable&lt;&gt;::deallocateTable() [0x7f1dff3d8f23]
STDERR: 	WTF::HashTable&lt;&gt;::~HashTable() [0x7f1dff3d84b8]
STDERR: 	WTF::HashMap&lt;&gt;::~HashMap() [0x7f1dff3d816e]
STDERR: 	WebCore::WidgetHierarchyUpdatesSuspensionScope::moveWidgets() [0x7f1dff3d61fd]
STDERR: 	WebCore::WidgetHierarchyUpdatesSuspensionScope::~WidgetHierarchyUpdatesSuspensionScope() [0x7f1dfe44b61a]
STDERR: 	WebCore::ContainerNode::removeChildren() [0x7f1dfe448f56]
STDERR: 	WebCore::Document::implicitOpen() [0x7f1dfe46ec0c]
STDERR: 	WebCore::Document::open() [0x7f1dfe46eac4]
STDERR: 	WebCore::V8HTMLDocument::openCallback() [0x7f1dfec5638b]
STDERR: 	v8::internal::HandleApiCallHelper&lt;&gt;() [0x7f1dfbb9e54e]
STDERR: 	v8::internal::Builtin_Impl_HandleApiCall() [0x7f1dfbb991ad]
STDERR: 	v8::internal::Builtin_HandleApiCall() [0x7f1dfbb9917e]
STDERR: 	0x31cc0730618e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720232</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-13 19:23:15 -0700</bug_when>
    <thetext>http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;showLargeExpectations=true&amp;tests=document-open.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720234</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 19:24:06 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720239</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 19:29:39 -0700</bug_when>
    <thetext>Strange. I ran all the tests in plugins prior to landing this patch and it didn&apos;t crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720287</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 21:26:44 -0700</bug_when>
    <thetext>I can&apos;t reproduce the failure on my machine. I&apos;ll do a speculative fix and see what EWS has to say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720288</commentid>
    <comment_count>15</comment_count>
      <attachid>164043</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 21:26:58 -0700</bug_when>
    <thetext>Created attachment 164043
Speculative fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720294</commentid>
    <comment_count>16</comment_count>
      <attachid>164043</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-13 21:53:09 -0700</bug_when>
    <thetext>Comment on attachment 164043
Speculative fix

What&apos;s the difference between this and the previous patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720297</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 21:56:10 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 164043 [details])
&gt; What&apos;s the difference between this and the previous patch?

In Element::attach, resumePostAttachCallbacks is called before suspendWidgetHierarchyUpdates is destructed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720299</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 21:59:18 -0700</bug_when>
    <thetext>I&apos;m landing this speculative fix for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720300</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 21:59:42 -0700</bug_when>
    <thetext>Committed r128552: &lt;http://trac.webkit.org/changeset/128552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720342</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 23:11:47 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720344</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 23:14:29 -0700</bug_when>
    <thetext>At this point, I don&apos;t know what to do with this bug. I can&apos;t fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720806</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-14 08:43:01 -0700</bug_when>
    <thetext>I don&apos;t intend to work on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726960</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-24 13:34:07 -0700</bug_when>
    <thetext>Committed r129406: &lt;http://trac.webkit.org/changeset/129406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726961</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-24 13:35:50 -0700</bug_when>
    <thetext>pdr ran the tests on cr-linux with a fix (keep removedChildren outside of the scope in ContainerNode::removeChildren) for me. Thanks pdr!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164000</attachid>
            <date>2012-09-13 16:42:00 -0700</date>
            <delta_ts>2012-09-13 16:45:22 -0700</delta_ts>
            <desc>Refactoring</desc>
            <filename>bug-96706-20120913164132.patch</filename>
            <type>text/plain</type>
            <size>20481</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHN1c3BlbmQvcmVzdW1lV2lkZ2V0
SGllcmFyY2h5VXBkYXRlcyBzaG91bGQgYmUgYSBSQUlJIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBzdXNwZW5kV2lkZ2V0SGll
cmFyY2h5VXBkYXRlcyBhbmQgcmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcyBieSBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93
bkV2ZW50VG9XaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6bW92ZVdpZGdldFRvUGFyZW50U29vbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oOgorICAgICAgICAoV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6
On5XaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OmlzU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6
OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVu
ZGVyV2lkZ2V0KToKKwogMjAxMi0wOS0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSkgZmlyZXMgd2hl
biByZW1vdmVkIHBsdWdpbiByZS1pbnNlcnRlZCBhcyBwYXJ0IG9mIHJlYWR5U3RhdGVDaGFuZ2Uu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTI4NDk4KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE4Niw4ICsxODYsNiBAQCBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dEQxRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE2cmVwYWludFJlY3Rh
bmdsZUVSS05TXzIwRnJhY3Rpb25hbExheW91dFJlY3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJP
YmplY3QxOXNjcm9sbFJlY3RUb1Zpc2libGVFUktOU18yMEZyYWN0aW9uYWxMYXlvdXRSZWN0RVJL
TlNfMTVTY3JvbGxBbGlnbm1lbnRFUzZfCi1fX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI4cmVz
dW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2Ci1fX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDI5
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZm
ZXIxMHdyYXBDRkRhdGFFUEs4X19DRkRhdGEKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTB3
cmFwTlNEYXRhRVA2TlNEYXRhCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEyY3JlYXRlTlNE
YXRhRXYKQEAgLTYzNCw2ICs2MzIsOCBAQCBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2
c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMycGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRCdWZmZXJF
UEtOU181UmFuZ2VFUmpiTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckUKIF9fWk43V2ViQ29yZTMz
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQorX19aTjdX
ZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMTFtb3ZlV2lkZ2V0
c0V2CitfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUz
NXNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50RQogX19aTjdXZWJDb3JlM21hY0VS
S05TXzEwQ3JlZGVudGlhbEUKIF9fWk43V2ViQ29yZTNtYWNFUktOU18yM0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRQogX19aTjdXZWJDb3JlNDByZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmll
d3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VOU183SW50U2l6ZUUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEyODQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjU1MSw3ICs2NTUxLDYgQEAKIAkJRkU2RkQ0
OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyog
SlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsK
IAkJRkU3MDBERDEwRjkyRDgxQTAwOEUyQkZFIC8qIEpTQ29vcmRpbmF0ZXNDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3MDBERDAwRjky
RDgxQTAwOEUyQkZFIC8qIEpTQ29vcmRpbmF0ZXNDdXN0b20uY3BwICovOyB9OwotCQlGRkQ4NkU3
ODE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMz
IC8qIEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLzsgfTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9j
YXRpb25DdXN0b20uY3BwICovOyB9OwogCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi87IH07
CiAJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MDBFOUM0NzAzMDAw
RDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovOyB9OwpAQCAtNjU2MSw2ICs2NTYwLDcgQEAKIAkJ
RkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5
MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAgKi87IH07CiAJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdl
VmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGRDg2
RTc4MTVGOTU4MzYwMDA0NzIzMyAvKiBKU0RlcGVuZGVudFJldGFpbmVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcy
MzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC0xMzk5NSw3ICsxMzk5NSw2IEBACiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nv
b3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29v
cmRpbmF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QzBGNjc2
RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
NzAwREQwMEY5MkQ4MUEwMDhFMkJGRSAvKiBKU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29vcmRpbmF0ZXNDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcyMzMgLyog
SlNEZXBlbmRlbnRSZXRhaW5lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RlcGVuZGVudFJldGFpbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBE
N0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvbG9jYXRpb25DdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dl
b2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNjAwRTlD
NDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQwMDUsNiArMTQwMDQsNyBAQAogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3Np
dGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25F
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcy
MzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RlcGVuZGVudFJldGFpbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMTI4NDk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyNSw2NSArMTgyNSw2NiBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHls
ZShTdHlsZUNoYW5nZSBjCiAKICAgICBtX2luU3R5bGVSZWNhbGMgPSB0cnVlOwogICAgIHN1c3Bl
bmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7Ci0gICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0
SGllcmFyY2h5VXBkYXRlcygpOwotICAgIAotICAgIFJlZlB0cjxGcmFtZVZpZXc+IGZyYW1lVmll
dyA9IHZpZXcoKTsKLSAgICBpZiAoZnJhbWVWaWV3KSB7Ci0gICAgICAgIGZyYW1lVmlldy0+cGF1
c2VTY2hlZHVsZWRFdmVudHMoKTsKLSAgICAgICAgZnJhbWVWaWV3LT5iZWdpbkRlZmVycmVkUmVw
YWludHMoKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwgcmVuZGVyQXJlbmEo
KSk7Ci0gICAgaWYgKCFyZW5kZXJlcigpIHx8ICFyZW5kZXJBcmVuYSgpKQotICAgICAgICBnb3Rv
IGJhaWxfb3V0OwotCi0gICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UpCi0g
ICAgICAgIGNoYW5nZSA9IEZvcmNlOworICAgIHsKKyAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKIAotICAg
IC8vIFJlY2FsY3VsYXRpbmcgdGhlIHJvb3Qgc3R5bGUgKG9uIHRoZSBkb2N1bWVudCkgaXMgbm90
IG5lZWRlZCBpbiB0aGUgY29tbW9uIGNhc2UuCi0gICAgaWYgKChjaGFuZ2UgPT0gRm9yY2UpIHx8
IChzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJlbnQoKSAmJiAoY2hhbmdlID49IEluaGVy
aXQpKSkgewotICAgICAgICAvLyBzdHlsZSBzZWxlY3RvciBtYXkgc2V0IHRoaXMgYWdhaW4gZHVy
aW5nIHJlY2FsYwotICAgICAgICBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZSA9
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9jdW1lbnQodGhpcywgbV9zdHlsZVJlc29sdmVyID8g
bV9zdHlsZVJlc29sdmVyLT5mb250U2VsZWN0b3IoKSA6IDApOwotICAgICAgICBTdHlsZUNoYW5n
ZSBjaCA9IE5vZGU6OmRpZmYoZG9jdW1lbnRTdHlsZS5nZXQoKSwgcmVuZGVyZXIoKS0+c3R5bGUo
KSwgdGhpcyk7Ci0gICAgICAgIGlmIChjaCAhPSBOb0NoYW5nZSkKLSAgICAgICAgICAgIHJlbmRl
cmVyKCktPnNldFN0eWxlKGRvY3VtZW50U3R5bGUucmVsZWFzZSgpKTsKLSAgICB9CisgICAgICAg
IFJlZlB0cjxGcmFtZVZpZXc+IGZyYW1lVmlldyA9IHZpZXcoKTsKKyAgICAgICAgaWYgKGZyYW1l
VmlldykgeworICAgICAgICAgICAgZnJhbWVWaWV3LT5wYXVzZVNjaGVkdWxlZEV2ZW50cygpOwor
ICAgICAgICAgICAgZnJhbWVWaWV3LT5iZWdpbkRlZmVycmVkUmVwYWludHMoKTsKKyAgICAgICAg
fQogCi0gICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxp
bmcoKSkgewotICAgICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pOwotICAgICAgICBpZiAoY2hhbmdlID49IEluaGVyaXQgfHwgZWxlbWVudC0+Y2hpbGROZWVk
c1N0eWxlUmVjYWxjKCkgfHwgZWxlbWVudC0+bmVlZHNTdHlsZVJlY2FsYygpKQotICAgICAgICAg
ICAgZWxlbWVudC0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKLSAgICB9CisgICAgICAgIEFTU0VSVCgh
cmVuZGVyZXIoKSB8fCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8
ICFyZW5kZXJBcmVuYSgpKQorICAgICAgICAgICAgZ290byBiYWlsT3V0OwogCi0jaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICh2aWV3KCkpIHsKLSAgICAgICAgYm9vbCBs
YXlvdXRQZW5kaW5nID0gdmlldygpLT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyZXIoKS0+bmVl
ZHNMYXlvdXQoKTsKLSAgICAgICAgLy8gSWYgd2UgZGlkbid0IHVwZGF0ZSBjb21wb3NpdGluZyBs
YXllcnMgYmVjYXVzZSBvZiBsYXlvdXQoKSwgd2UgbmVlZCB0byBkbyBzbyBoZXJlLgotICAgICAg
ICBpZiAoIWxheW91dFBlbmRpbmcpCi0gICAgICAgICAgICB2aWV3KCktPnVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzQWZ0ZXJTdHlsZUNoYW5nZSgpOwotICAgIH0KLSNlbmRpZgorICAgICAgICBpZiAo
bV9wZW5kaW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZSkKKyAgICAgICAgICAgIGNoYW5nZSA9IEZv
cmNlOwogCi1iYWlsX291dDoKLSAgICBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBjbGVh
ckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwotICAgIHVuc2NoZWR1bGVTdHlsZVJlY2FsYygpOwor
ICAgICAgICAvLyBSZWNhbGN1bGF0aW5nIHRoZSByb290IHN0eWxlIChvbiB0aGUgZG9jdW1lbnQp
IGlzIG5vdCBuZWVkZWQgaW4gdGhlIGNvbW1vbiBjYXNlLgorICAgICAgICBpZiAoKGNoYW5nZSA9
PSBGb3JjZSkgfHwgKHNob3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCgpICYmIChjaGFu
Z2UgPj0gSW5oZXJpdCkpKSB7CisgICAgICAgICAgICAvLyBzdHlsZSBzZWxlY3RvciBtYXkgc2V0
IHRoaXMgYWdhaW4gZHVyaW5nIHJlY2FsYworICAgICAgICAgICAgbV9oYXNOb2Rlc1dpdGhQbGFj
ZWhvbGRlclN0eWxlID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZSA9IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRG9jdW1l
bnQodGhpcywgbV9zdHlsZVJlc29sdmVyID8gbV9zdHlsZVJlc29sdmVyLT5mb250U2VsZWN0b3Io
KSA6IDApOworICAgICAgICAgICAgU3R5bGVDaGFuZ2UgY2ggPSBOb2RlOjpkaWZmKGRvY3VtZW50
U3R5bGUuZ2V0KCksIHJlbmRlcmVyKCktPnN0eWxlKCksIHRoaXMpOworICAgICAgICAgICAgaWYg
KGNoICE9IE5vQ2hhbmdlKQorICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldFN0eWxlKGRv
Y3VtZW50U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgfQogCi0gICAgbV9pblN0eWxlUmVjYWxj
ID0gZmFsc2U7Ci0gICAgCi0gICAgLy8gUHNldWRvIGVsZW1lbnQgcmVtb3ZhbCBhbmQgc2ltaWxh
ciBtYXkgb25seSB3b3JrIHdpdGggdGhlc2UgZmxhZ3Mgc3RpbGwgc2V0LiBSZXNldCB0aGVtIGFm
dGVyIHRoZSBzdHlsZSByZWNhbGMuCi0gICAgaWYgKG1fc3R5bGVSZXNvbHZlcikKLSAgICAgICAg
cmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGls
ZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKCFuLT5pc0Vs
ZW1lbnROb2RlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAgICAgICAgaWYg
KGNoYW5nZSA+PSBJbmhlcml0IHx8IGVsZW1lbnQtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8
IGVsZW1lbnQtPm5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5y
ZWNhbGNTdHlsZShjaGFuZ2UpOworICAgICAgICB9CiAKLSAgICBpZiAoZnJhbWVWaWV3KSB7Ci0g
ICAgICAgIGZyYW1lVmlldy0+cmVzdW1lU2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAgIGZyYW1l
Vmlldy0+ZW5kRGVmZXJyZWRSZXBhaW50cygpOworICAgICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisgICAgICAgIGlmICh2aWV3KCkpIHsKKyAgICAgICAgICAgIGJvb2wgbGF5b3V0
UGVuZGluZyA9IHZpZXcoKS0+bGF5b3V0UGVuZGluZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5
b3V0KCk7CisgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgdXBkYXRlIGNvbXBvc2l0aW5nIGxh
eWVycyBiZWNhdXNlIG9mIGxheW91dCgpLCB3ZSBuZWVkIHRvIGRvIHNvIGhlcmUuCisgICAgICAg
ICAgICBpZiAoIWxheW91dFBlbmRpbmcpCisgICAgICAgICAgICAgICAgdmlldygpLT51cGRhdGVD
b21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFuZ2UoKTsKKyAgICAgICAgfQorICAgICNlbmRp
ZgorCisgICAgYmFpbE91dDoKKyAgICAgICAgY2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
ICAgIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAgIHVuc2NoZWR1bGVTdHls
ZVJlY2FsYygpOworCisgICAgICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOworCisgICAgICAg
IC8vIFBzZXVkbyBlbGVtZW50IHJlbW92YWwgYW5kIHNpbWlsYXIgbWF5IG9ubHkgd29yayB3aXRo
IHRoZXNlIGZsYWdzIHN0aWxsIHNldC4gUmVzZXQgdGhlbSBhZnRlciB0aGUgc3R5bGUgcmVjYWxj
LgorICAgICAgICBpZiAobV9zdHlsZVJlc29sdmVyKQorICAgICAgICAgICAgcmVzZXRDU1NGZWF0
dXJlRmxhZ3MoKTsKKworICAgICAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgICAgICBmcmFt
ZVZpZXctPnJlc3VtZVNjaGVkdWxlZEV2ZW50cygpOworICAgICAgICAgICAgZnJhbWVWaWV3LT5l
bmREZWZlcnJlZFJlcGFpbnRzKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgUmVuZGVyV2lkZ2V0
OjpyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CiAgICAgcmVzdW1lUG9zdEF0dGFjaENh
bGxiYWNrcygpOwogCiAgICAgLy8gSWYgd2Ugd2FudGVkIHRvIGNhbGwgaW1wbGljaXRDbG9zZSgp
IGR1cmluZyByZWNhbGNTdHlsZSwgZG8gc28gbm93IHRoYXQgd2UncmUgZmluaXNoZWQuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMjg0OTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZv
aWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSoKIHZvaWQgRWxlbWVudDo6YXR0
YWNoKCkKIHsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwotICAgIFJlbmRlcldp
ZGdldDo6c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKKyAgICBXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwog
CiAgICAgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwogICAgIFN0eWxlUmVzb2x2ZXJQYXJlbnRQ
dXNoZXIgcGFyZW50UHVzaGVyKHRoaXMpOwpAQCAtMTAzMSw3ICsxMDMxLDYgQEAgdm9pZCBFbGVt
ZW50OjphdHRhY2goKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVuZGVyV2lkZ2V0OjpyZXN1
bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CiAgICAgcmVzdW1lUG9zdEF0dGFjaENhbGxiYWNr
cygpOwogfQogCkBAIC0xMDQ1LDcgKzEwNDQsNyBAQCB2b2lkIEVsZW1lbnQ6OnVucmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50CiAKIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKIHsKLSAgICBSZW5kZXJX
aWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CisgICAgV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsK
ICAgICB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoKTsKICAgICBjYW5jZWxGb2N1c0Fw
cGVhcmFuY2VVcGRhdGUoKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewpAQCAtMTA1OCw4ICsx
MDU3LDYgQEAgdm9pZCBFbGVtZW50OjpkZXRhY2goKQogICAgICAgICBzaGFkb3ctPmRldGFjaCgp
OwogICAgIH0KICAgICBDb250YWluZXJOb2RlOjpkZXRhY2goKTsKLQotICAgIFJlbmRlcldpZGdl
dDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogfQogCiBib29sIEVsZW1lbnQ6OnBz
ZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQkocmV2aXNpb24gMTI4NDk4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsOSArMjI1LDEw
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1cKICAgICBBU1NFUlQo
IW1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3KTsKICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9
IHRydWU7CiAKLSAgICBSZW5kZXJXaWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
KCk7Ci0gICAgW3ZpZXcgbW91c2VEb3duOmN1cnJlbnROU0V2ZW50KCldOwotICAgIFJlbmRlcldp
ZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOworICAgIHsKKyAgICAgICAgV2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5
VXBkYXRlczsKKyAgICAgICAgW3ZpZXcgbW91c2VEb3duOmN1cnJlbnROU0V2ZW50KCldOworICAg
IH0KIAogICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiAgICAgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gMTI4NDk4
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDUzICs0Nyw0MiBAQCBzdGF0aWMgSGFzaE1hcDxjb25zdCBXaWRnZXQqLCBS
ZW5kZXJXaWRnCiAgICAgcmV0dXJuICpzdGF0aWNXaWRnZXRSZW5kZXJlck1hcDsKIH0KIAotc3Rh
dGljIHVuc2lnbmVkIHdpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudDsKK3Vuc2lnbmVk
IFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNfd2lkZ2V0SGllcmFyY2h5
VXBkYXRlU3VzcGVuZENvdW50ID0gMDsKIAotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXaWRnZXQ+
LCBGcmFtZVZpZXcqPiBXaWRnZXRUb1BhcmVudE1hcDsKLQotc3RhdGljIFdpZGdldFRvUGFyZW50
TWFwJiB3aWRnZXROZXdQYXJlbnRNYXAoKQorV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNp
b25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5z
aW9uU2NvcGU6OndpZGdldE5ld1BhcmVudE1hcCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChXaWRnZXRUb1BhcmVudE1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9p
ZCBSZW5kZXJXaWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCkKK3ZvaWQgV2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMoKQogewotICAg
IHdpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudCsrOwotfQotCi12b2lkIFJlbmRlcldp
ZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpCi17Ci0gICAgQVNTRVJUKHdpZGdl
dEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudCk7Ci0gICAgaWYgKHdpZGdldEhpZXJhcmNoeVVw
ZGF0ZVN1c3BlbmRDb3VudCA9PSAxKSB7Ci0gICAgICAgIFdpZGdldFRvUGFyZW50TWFwIG1hcCA9
IHdpZGdldE5ld1BhcmVudE1hcCgpOwotICAgICAgICB3aWRnZXROZXdQYXJlbnRNYXAoKS5jbGVh
cigpOwotICAgICAgICBXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgp
OwotICAgICAgICBmb3IgKFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFdpZGdldCogY2hpbGQgPSBpdC0+
Zmlyc3QuZ2V0KCk7Ci0gICAgICAgICAgICBTY3JvbGxWaWV3KiBjdXJyZW50UGFyZW50ID0gY2hp
bGQtPnBhcmVudCgpOwotICAgICAgICAgICAgRnJhbWVWaWV3KiBuZXdQYXJlbnQgPSBpdC0+c2Vj
b25kOwotICAgICAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxkKTsKLSAgICAgICAgICAgICAgICBpZiAobmV3UGFy
ZW50KQotICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKLSAg
ICAgICAgICAgIH0KKyAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXAgPSB3aWRnZXROZXdQYXJlbnRN
YXAoKTsKKyAgICB3aWRnZXROZXdQYXJlbnRNYXAoKS5jbGVhcigpOworICAgIFdpZGdldFRvUGFy
ZW50TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CisgICAgZm9yIChXaWRnZXRUb1BhcmVu
dE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIFdpZGdldCogY2hpbGQgPSBpdC0+Zmlyc3QuZ2V0KCk7CisgICAgICAgIFNjcm9sbFZpZXcq
IGN1cnJlbnRQYXJlbnQgPSBjaGlsZC0+cGFyZW50KCk7CisgICAgICAgIEZyYW1lVmlldyogbmV3
UGFyZW50ID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFy
ZW50KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudFBhcmVudCkKKyAgICAgICAgICAgICAgICBj
dXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgICAgICBpZiAobmV3UGFy
ZW50KQorICAgICAgICAgICAgICAgIG5ld1BhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHdpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudC0tOwogfQog
CiBzdGF0aWMgdm9pZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCogY2hpbGQsIEZyYW1l
VmlldyogcGFyZW50KQogewotICAgIGlmICghd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENv
dW50KSB7CisgICAgaWYgKCFXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpp
c1N1c3BlbmRlZCgpKSB7CiAgICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBwYXJlbnQt
PmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2hpbGQtPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB3aWRnZXROZXdQYXJl
bnRNYXAoKS5zZXQoY2hpbGQsIHBhcmVudCk7CisgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZTo6c2NoZWR1bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7CiB9CiAK
IFJlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShyZXZpc2lvbiAxMjg0OTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc1N1c3BlbnNpb25TY29wZSB7CitwdWJsaWM6CisgICAgV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc1N1c3BlbnNpb25TY29wZSgpCisgICAgeworICAgICAgICBzX3dpZGdldEhpZXJhcmNoeVVw
ZGF0ZVN1c3BlbmRDb3VudCsrOworICAgIH0KKyAgICB+V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQoc193aWRnZXRIaWVyYXJjaHlV
cGRhdGVTdXNwZW5kQ291bnQpOworICAgICAgICBpZiAoc193aWRnZXRIaWVyYXJjaHlVcGRhdGVT
dXNwZW5kQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1vdmVXaWRnZXRzKCk7CisgICAgICAgIHNf
d2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50LS07CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgaXNTdXNwZW5kZWQoKSB7IHJldHVybiBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3Bl
bmRDb3VudDsgfQorICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdpZGdldCog
d2lkZ2V0LCBGcmFtZVZpZXcqIGZyYW1lKSB7IHdpZGdldE5ld1BhcmVudE1hcCgpLnNldCh3aWRn
ZXQsIGZyYW1lKTsgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2lk
Z2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7CisgICAgc3RhdGljIFdpZGdldFRv
UGFyZW50TWFwJiB3aWRnZXROZXdQYXJlbnRNYXAoKTsKKworICAgIHZvaWQgbW92ZVdpZGdldHMo
KTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRD
b3VudDsKK307CisgICAgCiBjbGFzcyBSZW5kZXJXaWRnZXQgOiBwdWJsaWMgUmVuZGVyUmVwbGFj
ZWQsIHByaXZhdGUgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW5kZXJXaWRnZXQoKTsKQEAgLTQyLDkgKzY4LDYgQEAgcHVibGljOgogICAgIEludFJl
Y3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdDsKIAogICAgIHZvaWQgbm90aWZ5V2lkZ2V0KFdpZGdl
dE5vdGlmaWNhdGlvbik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgc3VzcGVuZFdpZGdldEhpZXJh
cmNoeVVwZGF0ZXMoKTsKLSAgICBzdGF0aWMgdm9pZCByZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzKCk7CiAKICAgICBSZW5kZXJBcmVuYSogcmVmKCkgeyArK21fcmVmQ291bnQ7IHJldHVybiBy
ZW5kZXJBcmVuYSgpOyB9CiAgICAgdm9pZCBkZXJlZihSZW5kZXJBcmVuYSopOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NTI2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMTMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgc3VzcGVuZC9yZXN1bWVXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzIHNob3VsZCBiZSBhIFJBSUkgb2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjcwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2Yg
dGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1
bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ludmFsaWRhdGVHU3RhdGVz
Rm9yVHJlZV0pOgorCiAyMDEyLTA5LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3ODc2LgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAx
Mjg0OTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzc2LDkgKzMzNzYsOCBAQCAtICh2b2lkKV9pbnZhbGlkYXRlR1N0YXRl
c0ZvclRyZWUKICAgICAvLyBkZXNjZW5kYW50cywgaW5jbHVkaW5nIHBsdWctaW4gdmlld3MuIFRo
aXMgY2FuIHJlc3VsdCBpbiBjYWxscyBvdXQgdG8gcGx1Zy1pbiBjb2RlIGFuZCBiYWNrIGludG8K
ICAgICAvLyBXZWJDb3JlIHZpYSBKYXZhU2NyaXB0LCB3aGljaCBjb3VsZCBub3JtYWxseSBtdXRh
dGUgdGhlIE5TVmlldyB0cmVlIHdoaWxlIGl0IGlzIGJlaW5nIHRyYXZlcnNlZC4KICAgICAvLyBE
ZWZlciB0aG9zZSBtdXRhdGlvbnMgd2hpbGUgZGVzY2VuZGFudHMgYXJlIGJlaW5nIHRyYXZlcmVz
ZWQuCi0gICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwor
ICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXM7CiAgICAgW3N1cGVyIF9pbnZhbGlkYXRlR1N0YXRlc0ZvclRyZWVdOwot
ICAgIFJlbmRlcldpZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogfQogCiAt
IChCT09MKWlzRmxpcHBlZCAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164001</attachid>
            <date>2012-09-13 16:45:24 -0700</date>
            <delta_ts>2012-09-13 21:26:54 -0700</delta_ts>
            <desc>Reverted irrelevant xcodeproj change</desc>
            <filename>bug-96706-20120913164456.patch</filename>
            <type>text/plain</type>
            <size>15928</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHN1c3BlbmQvcmVzdW1lV2lkZ2V0
SGllcmFyY2h5VXBkYXRlcyBzaG91bGQgYmUgYSBSQUlJIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBzdXNwZW5kV2lkZ2V0SGll
cmFyY2h5VXBkYXRlcyBhbmQgcmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcyBieSBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZURvd25F
dmVudFRvV2lkZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0SGllcmFyY2h5VXBkYXRl
c1N1c3BlbnNpb25TY29wZTo6d2lkZ2V0TmV3UGFyZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1vdmVXaWRnZXRUb1BhcmVudFNvb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaDoKKyAgICAgICAgKFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZTo6V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp+
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjppc1N1c3BlbmRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpz
Y2hlZHVsZVdpZGdldFRvTW92ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJlbmRl
cldpZGdldCk6CisKIDIwMTItMDktMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpIGZpcmVzIHdoZW4g
cmVtb3ZlZCBwbHVnaW4gcmUtaW5zZXJ0ZWQgYXMgcGFydCBvZiByZWFkeVN0YXRlQ2hhbmdlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyODQ5OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2LDYgQEAgX19a
TjdXZWJDb3JlMTJQcmludENvbnRleHRDMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTJQcmlu
dENvbnRleHREMUV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5n
bGVFUktOU18yMEZyYWN0aW9uYWxMYXlvdXRSZWN0RWIKIF9fWk43V2ViQ29yZTEyUmVuZGVyT2Jq
ZWN0MTlzY3JvbGxSZWN0VG9WaXNpYmxlRVJLTlNfMjBGcmFjdGlvbmFsTGF5b3V0UmVjdEVSS05T
XzE1U2Nyb2xsQWxpZ25tZW50RVM2XwotX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOHJlc3Vt
ZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXNFdgotX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQyOXN1
c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVy
MTB3cmFwQ0ZEYXRhRVBLOF9fQ0ZEYXRhCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEwd3Jh
cE5TRGF0YUVQNk5TRGF0YQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMmNyZWF0ZU5TRGF0
YUV2CkBAIC02MzQsNiArNjMyLDggQEAgX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdAogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlNnNo
YXJlZEV2CiBfX1pON1dlYkNvcmUzMnBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyRVBL
TlNfNVJhbmdlRVJqYk5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCiBfX1pON1dlYkNvcmUzM3N0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNF
dgorX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVz
X3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudEUKIF9fWk43V2ViQ29yZTNtYWNFUktO
U18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUUKIF9fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdw
b3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEyODQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjUsNjUgKzE4MjUsNjYgQEAgdm9p
ZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgYwogCiAgICAgbV9pblN0eWxlUmVj
YWxjID0gdHJ1ZTsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwotICAgIFJlbmRl
cldpZGdldDo6c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKLSAgICAKLSAgICBSZWZQ
dHI8RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2aWV3KCk7Ci0gICAgaWYgKGZyYW1lVmlldykgewot
ICAgICAgICBmcmFtZVZpZXctPnBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAgIGZyYW1l
Vmlldy0+YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFyZW5k
ZXJlcigpIHx8IHJlbmRlckFyZW5hKCkpOwotICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVy
QXJlbmEoKSkKLSAgICAgICAgZ290byBiYWlsX291dDsKLQotICAgIGlmIChtX3BlbmRpbmdTdHls
ZVJlY2FsY1Nob3VsZEZvcmNlKQotICAgICAgICBjaGFuZ2UgPSBGb3JjZTsKKyAgICB7CisgICAg
ICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXM7CiAKLSAgICAvLyBSZWNhbGN1bGF0aW5nIHRoZSByb290IHN0eWxlIChv
biB0aGUgZG9jdW1lbnQpIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGNvbW1vbiBjYXNlLgotICAgIGlm
ICgoY2hhbmdlID09IEZvcmNlKSB8fCAoc2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50
KCkgJiYgKGNoYW5nZSA+PSBJbmhlcml0KSkpIHsKLSAgICAgICAgLy8gc3R5bGUgc2VsZWN0b3Ig
bWF5IHNldCB0aGlzIGFnYWluIGR1cmluZyByZWNhbGMKLSAgICAgICAgbV9oYXNOb2Rlc1dpdGhQ
bGFjZWhvbGRlclN0eWxlID0gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGRvY3VtZW50U3R5bGUgPSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckRvY3VtZW50KHRo
aXMsIG1fc3R5bGVSZXNvbHZlciA/IG1fc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkgOiAw
KTsKLSAgICAgICAgU3R5bGVDaGFuZ2UgY2ggPSBOb2RlOjpkaWZmKGRvY3VtZW50U3R5bGUuZ2V0
KCksIHJlbmRlcmVyKCktPnN0eWxlKCksIHRoaXMpOwotICAgICAgICBpZiAoY2ggIT0gTm9DaGFu
Z2UpCi0gICAgICAgICAgICByZW5kZXJlcigpLT5zZXRTdHlsZShkb2N1bWVudFN0eWxlLnJlbGVh
c2UoKSk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2aWV3
KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+cGF1
c2VTY2hlZHVsZWRFdmVudHMoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+YmVnaW5EZWZlcnJl
ZFJlcGFpbnRzKCk7CisgICAgICAgIH0KIAotICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQo
KTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgaWYgKGNoYW5nZSA+PSBJbmhlcml0
IHx8IGVsZW1lbnQtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IGVsZW1lbnQtPm5lZWRzU3R5
bGVSZWNhbGMoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnJlY2FsY1N0eWxlKGNoYW5nZSk7Ci0g
ICAgfQorICAgICAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwgcmVuZGVyQXJlbmEoKSk7CisgICAg
ICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyQXJlbmEoKSkKKyAgICAgICAgICAgIGdvdG8g
YmFpbE91dDsKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAodmll
dygpKSB7Ci0gICAgICAgIGJvb2wgbGF5b3V0UGVuZGluZyA9IHZpZXcoKS0+bGF5b3V0UGVuZGlu
ZygpIHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgICAgIC8vIElmIHdlIGRpZG4n
dCB1cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGJlY2F1c2Ugb2YgbGF5b3V0KCksIHdlIG5lZWQg
dG8gZG8gc28gaGVyZS4KLSAgICAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKQotICAgICAgICAgICAg
dmlldygpLT51cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFuZ2UoKTsKLSAgICB9
Ci0jZW5kaWYKKyAgICAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UpCisg
ICAgICAgICAgICBjaGFuZ2UgPSBGb3JjZTsKIAotYmFpbF9vdXQ6Ci0gICAgY2xlYXJOZWVkc1N0
eWxlUmVjYWxjKCk7Ci0gICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB1bnNj
aGVkdWxlU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgLy8gUmVjYWxjdWxhdGluZyB0aGUgcm9vdCBz
dHlsZSAob24gdGhlIGRvY3VtZW50KSBpcyBub3QgbmVlZGVkIGluIHRoZSBjb21tb24gY2FzZS4K
KyAgICAgICAgaWYgKChjaGFuZ2UgPT0gRm9yY2UpIHx8IChzaG91bGREaXNwbGF5U2VhbWxlc3Ns
eVdpdGhQYXJlbnQoKSAmJiAoY2hhbmdlID49IEluaGVyaXQpKSkgeworICAgICAgICAgICAgLy8g
c3R5bGUgc2VsZWN0b3IgbWF5IHNldCB0aGlzIGFnYWluIGR1cmluZyByZWNhbGMKKyAgICAgICAg
ICAgIG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IGZhbHNlOworICAgICAgICAgICAg
CisgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGUgPSBTdHlsZVJl
c29sdmVyOjpzdHlsZUZvckRvY3VtZW50KHRoaXMsIG1fc3R5bGVSZXNvbHZlciA/IG1fc3R5bGVS
ZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkgOiAwKTsKKyAgICAgICAgICAgIFN0eWxlQ2hhbmdlIGNo
ID0gTm9kZTo6ZGlmZihkb2N1bWVudFN0eWxlLmdldCgpLCByZW5kZXJlcigpLT5zdHlsZSgpLCB0
aGlzKTsKKyAgICAgICAgICAgIGlmIChjaCAhPSBOb0NoYW5nZSkKKyAgICAgICAgICAgICAgICBy
ZW5kZXJlcigpLT5zZXRTdHlsZShkb2N1bWVudFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIH0K
IAotICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOwotICAgIAotICAgIC8vIFBzZXVkbyBlbGVt
ZW50IHJlbW92YWwgYW5kIHNpbWlsYXIgbWF5IG9ubHkgd29yayB3aXRoIHRoZXNlIGZsYWdzIHN0
aWxsIHNldC4gUmVzZXQgdGhlbSBhZnRlciB0aGUgc3R5bGUgcmVjYWxjLgotICAgIGlmIChtX3N0
eWxlUmVzb2x2ZXIpCi0gICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisgICAgICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuKTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UgPj0gSW5oZXJpdCB8fCBlbGVtZW50LT5jaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKSB8fCBlbGVtZW50LT5uZWVkc1N0eWxlUmVjYWxjKCkpCisgICAg
ICAgICAgICAgICAgZWxlbWVudC0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKKyAgICAgICAgfQogCi0g
ICAgaWYgKGZyYW1lVmlldykgewotICAgICAgICBmcmFtZVZpZXctPnJlc3VtZVNjaGVkdWxlZEV2
ZW50cygpOwotICAgICAgICBmcmFtZVZpZXctPmVuZERlZmVycmVkUmVwYWludHMoKTsKKyAgICAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBpZiAodmlldygpKSB7Cisg
ICAgICAgICAgICBib29sIGxheW91dFBlbmRpbmcgPSB2aWV3KCktPmxheW91dFBlbmRpbmcoKSB8
fCByZW5kZXJlcigpLT5uZWVkc0xheW91dCgpOworICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0
IHVwZGF0ZSBjb21wb3NpdGluZyBsYXllcnMgYmVjYXVzZSBvZiBsYXlvdXQoKSwgd2UgbmVlZCB0
byBkbyBzbyBoZXJlLgorICAgICAgICAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKQorICAgICAgICAg
ICAgICAgIHZpZXcoKS0+dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclN0eWxlQ2hhbmdlKCk7
CisgICAgICAgIH0KKyAgICAjZW5kaWYKKworICAgIGJhaWxPdXQ6CisgICAgICAgIGNsZWFyTmVl
ZHNTdHlsZVJlY2FsYygpOworICAgICAgICBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwor
ICAgICAgICB1bnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKKworICAgICAgICBtX2luU3R5bGVSZWNh
bGMgPSBmYWxzZTsKKworICAgICAgICAvLyBQc2V1ZG8gZWxlbWVudCByZW1vdmFsIGFuZCBzaW1p
bGFyIG1heSBvbmx5IHdvcmsgd2l0aCB0aGVzZSBmbGFncyBzdGlsbCBzZXQuIFJlc2V0IHRoZW0g
YWZ0ZXIgdGhlIHN0eWxlIHJlY2FsYy4KKyAgICAgICAgaWYgKG1fc3R5bGVSZXNvbHZlcikKKyAg
ICAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisKKyAgICAgICAgaWYgKGZyYW1lVmll
dykgeworICAgICAgICAgICAgZnJhbWVWaWV3LT5yZXN1bWVTY2hlZHVsZWRFdmVudHMoKTsKKyAg
ICAgICAgICAgIGZyYW1lVmlldy0+ZW5kRGVmZXJyZWRSZXBhaW50cygpOworICAgICAgICB9CiAg
ICAgfQotICAgIFJlbmRlcldpZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwog
ICAgIHJlc3VtZVBvc3RBdHRhY2hDYWxsYmFja3MoKTsKIAogICAgIC8vIElmIHdlIHdhbnRlZCB0
byBjYWxsIGltcGxpY2l0Q2xvc2UoKSBkdXJpbmcgcmVjYWxjU3R5bGUsIGRvIHNvIG5vdyB0aGF0
IHdlJ3JlIGZpbmlzaGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTI4
NDk4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUqCiB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgc3VzcGVuZFBvc3RBdHRhY2hDYWxs
YmFja3MoKTsKLSAgICBSZW5kZXJXaWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
KCk7CisgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lk
Z2V0SGllcmFyY2h5VXBkYXRlczsKIAogICAgIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKICAg
ICBTdHlsZVJlc29sdmVyUGFyZW50UHVzaGVyIHBhcmVudFB1c2hlcih0aGlzKTsKQEAgLTEwMzEs
NyArMTAzMSw2IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIFJlbmRlcldpZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogICAgIHJl
c3VtZVBvc3RBdHRhY2hDYWxsYmFja3MoKTsKIH0KIApAQCAtMTA0NSw3ICsxMDQ0LDcgQEAgdm9p
ZCBFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudAogCiB2b2lkIEVsZW1lbnQ6OmRl
dGFjaCgpCiB7Ci0gICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRl
cygpOworICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2Rl
KCk7CiAgICAgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7CiAgICAgaWYgKGhhc1JhcmVE
YXRhKCkpIHsKQEAgLTEwNTgsOCArMTA1Nyw2IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAg
ICAgICAgc2hhZG93LT5kZXRhY2goKTsKICAgICB9CiAgICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNo
KCk7Ci0KLSAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsK
IH0KIAogYm9vbCBFbGVtZW50Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGNvbnN0IFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDEyODQ5OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjI1LDkgKzIyNSwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93
bkV2ZW50VG9XCiAgICAgQVNTRVJUKCFtX3NlbmRpbmdFdmVudFRvU3Vidmlldyk7CiAgICAgbV9z
ZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSB0cnVlOwogCi0gICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5k
V2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwotICAgIFt2aWV3IG1vdXNlRG93bjpjdXJyZW50TlNF
dmVudCgpXTsKLSAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMo
KTsKKyAgICB7CisgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUg
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CisgICAgICAgIFt2aWV3IG1vdXNlRG93bjpj
dXJyZW50TlNFdmVudCgpXTsKKyAgICB9CiAKICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9
IGZhbHNlOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAJKHJldmlzaW9uIDEyODQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw1MyArNDcsNDIgQEAgc3RhdGljIEhh
c2hNYXA8Y29uc3QgV2lkZ2V0KiwgUmVuZGVyV2lkZwogICAgIHJldHVybiAqc3RhdGljV2lkZ2V0
UmVuZGVyZXJNYXA7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCB3aWRnZXRIaWVyYXJjaHlVcGRhdGVT
dXNwZW5kQ291bnQ7Cit1bnNpZ25lZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlOjpzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudCA9IDA7CiAKLXR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7Ci0K
LXN0YXRpYyBXaWRnZXRUb1BhcmVudE1hcCYgd2lkZ2V0TmV3UGFyZW50TWFwKCkKK1dpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXAoKQogewog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2lkZ2V0VG9QYXJlbnRNYXAsIG1hcCwgKCkpOwogICAg
IHJldHVybiBtYXA7CiB9CiAKLXZvaWQgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlcygpCit2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6
Om1vdmVXaWRnZXRzKCkKIHsKLSAgICB3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQr
KzsKLX0KLQotdm9pZCBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMo
KQotewotICAgIEFTU0VSVCh3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQpOwotICAg
IGlmICh3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQgPT0gMSkgewotICAgICAgICBX
aWRnZXRUb1BhcmVudE1hcCBtYXAgPSB3aWRnZXROZXdQYXJlbnRNYXAoKTsKLSAgICAgICAgd2lk
Z2V0TmV3UGFyZW50TWFwKCkuY2xlYXIoKTsKLSAgICAgICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0
ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yIChXaWRnZXRUb1BhcmVudE1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBXaWRnZXQqIGNoaWxkID0gaXQtPmZpcnN0LmdldCgpOwotICAgICAgICAgICAgU2Nyb2xsVmll
dyogY3VycmVudFBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgIEZyYW1lVmll
dyogbmV3UGFyZW50ID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGlmIChuZXdQYXJlbnQgIT0g
Y3VycmVudFBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50KQotICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50
LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgICB9CisgICAgV2lkZ2V0VG9QYXJlbnRNYXAg
bWFwID0gd2lkZ2V0TmV3UGFyZW50TWFwKCk7CisgICAgd2lkZ2V0TmV3UGFyZW50TWFwKCkuY2xl
YXIoKTsKKyAgICBXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwor
ICAgIGZvciAoV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmZpcnN0LmdldCgp
OworICAgICAgICBTY3JvbGxWaWV3KiBjdXJyZW50UGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOwor
ICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChu
ZXdQYXJlbnQgIT0gY3VycmVudFBhcmVudCkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJl
bnQpCisgICAgICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwor
ICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKKyAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFk
ZENoaWxkKGNoaWxkKTsKICAgICAgICAgfQogICAgIH0KLSAgICB3aWRnZXRIaWVyYXJjaHlVcGRh
dGVTdXNwZW5kQ291bnQtLTsKIH0KIAogc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29v
bihXaWRnZXQqIGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKIHsKLSAgICBpZiAoIXdpZGdldEhp
ZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudCkgeworICAgIGlmICghV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc1N1c3BlbnNpb25TY29wZTo6aXNTdXNwZW5kZWQoKSkgewogICAgICAgICBpZiAocGFyZW50
KQogICAgICAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNoaWxkLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0KGNoaWxkLCBwYXJlbnQpOworICAgIFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3Zl
KGNoaWxkLCBwYXJlbnQpOwogfQogCiBSZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldChOb2RlKiBu
b2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNp
b24gMTI4NDk4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgeworcHVibGljOgor
ICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUoKQorICAgIHsKKyAgICAg
ICAgc193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQrKzsKKyAgICB9CisgICAgfldp
ZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50KTsKKyAgICAgICAgaWYgKHNf
d2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50ID09IDEpCisgICAgICAgICAgICBtb3Zl
V2lkZ2V0cygpOworICAgICAgICBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudC0t
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGlzU3VzcGVuZGVkKCkgeyByZXR1cm4gc193aWRn
ZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7IH0KKyAgICBzdGF0aWMgdm9pZCBzY2hlZHVs
ZVdpZGdldFRvTW92ZShXaWRnZXQqIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFtZSkgeyB3aWRnZXRO
ZXdQYXJlbnRNYXAoKS5zZXQod2lkZ2V0LCBmcmFtZSk7IH0KKworcHJpdmF0ZToKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+IFdpZGdldFRvUGFyZW50TWFw
OworICAgIHN0YXRpYyBXaWRnZXRUb1BhcmVudE1hcCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CisK
KyAgICB2b2lkIG1vdmVXaWRnZXRzKCk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgc193aWRnZXRI
aWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7Cit9OworICAgIAogY2xhc3MgUmVuZGVyV2lkZ2V0
IDogcHVibGljIFJlbmRlclJlcGxhY2VkLCBwcml2YXRlIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyV2lkZ2V0KCk7CkBAIC00Miw5ICs2OCw2
IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Q7CiAKICAgICB2
b2lkIG5vdGlmeVdpZGdldChXaWRnZXROb3RpZmljYXRpb24pOwotICAgIAotICAgIHN0YXRpYyB2
b2lkIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVz
dW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogCiAgICAgUmVuZGVyQXJlbmEqIHJlZigpIHsg
KyttX3JlZkNvdW50OyByZXR1cm4gcmVuZGVyQXJlbmEoKTsgfQogICAgIHZvaWQgZGVyZWYoUmVu
ZGVyQXJlbmEqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODUyNikKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA5LTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IHN1c3BlbmQvcmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcyBzaG91bGQgYmUgYSBSQUlJIG9i
amVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbnZhbGlkYXRl
R1N0YXRlc0ZvclRyZWVdKToKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
Nzg3Ni4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2
aXNpb24gMTI4NDk4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzM3Niw5ICszMzc2LDggQEAgLSAodm9pZClfaW52YWxpZGF0
ZUdTdGF0ZXNGb3JUcmVlCiAgICAgLy8gZGVzY2VuZGFudHMsIGluY2x1ZGluZyBwbHVnLWluIHZp
ZXdzLiBUaGlzIGNhbiByZXN1bHQgaW4gY2FsbHMgb3V0IHRvIHBsdWctaW4gY29kZSBhbmQgYmFj
ayBpbnRvCiAgICAgLy8gV2ViQ29yZSB2aWEgSmF2YVNjcmlwdCwgd2hpY2ggY291bGQgbm9ybWFs
bHkgbXV0YXRlIHRoZSBOU1ZpZXcgdHJlZSB3aGlsZSBpdCBpcyBiZWluZyB0cmF2ZXJzZWQuCiAg
ICAgLy8gRGVmZXIgdGhvc2UgbXV0YXRpb25zIHdoaWxlIGRlc2NlbmRhbnRzIGFyZSBiZWluZyB0
cmF2ZXJlc2VkLgotICAgIFJlbmRlcldpZGdldDo6c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0
ZXMoKTsKKyAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgIFtzdXBlciBfaW52YWxpZGF0ZUdTdGF0ZXNGb3JU
cmVlXTsKLSAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsK
IH0KIAogLSAoQk9PTClpc0ZsaXBwZWQgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164043</attachid>
            <date>2012-09-13 21:26:58 -0700</date>
            <delta_ts>2012-09-13 21:53:38 -0700</delta_ts>
            <desc>Speculative fix</desc>
            <filename>bug-96706-20120913212632.patch</filename>
            <type>text/plain</type>
            <size>22925</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHN1c3BlbmQvcmVzdW1lV2lkZ2V0
SGllcmFyY2h5VXBkYXRlcyBzaG91bGQgYmUgYSBSQUlJIG9iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgUmVwbGFjZWQgc3VzcGVuZFdpZGdldEhpZXJh
cmNoeVVwZGF0ZXMgYW5kIHJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMgYnkgV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBFeHBvcnQgbmV3IHN5bWJvbHMuCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIHBh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6
bW92ZVdpZGdldHMpOgorICAgICAgICAoV2ViQ29yZTo6bW92ZVdpZGdldFRvUGFyZW50U29vbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgorICAgICAgICAoV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3Vz
cGVuc2lvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6On5XaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6
OmlzU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUmVuZGVyV2lkZ2V0KToKKwogMjAxMi0wOS0xMyAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEyODUzMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjg1NDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTg2
LDggKzE4Niw2IEBAIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0QzFFUE5TXzVGcmFtZUUKIF9f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfMjBGcmFjdGlvbmFsTGF5b3V0UmVjdEViCiBfX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05TXzIwRnJhY3Rpb25h
bExheW91dFJlY3RFUktOU18xNVNjcm9sbEFsaWdubWVudEVTNl8KLV9fWk43V2ViQ29yZTEyUmVu
ZGVyV2lkZ2V0MjhyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzRXYKLV9fWk43V2ViQ29yZTEy
UmVuZGVyV2lkZ2V0MjlzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlc0V2CiBfX1pON1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjEwd3JhcENGRGF0YUVQSzhfX0NGRGF0YQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXIxMHdyYXBOU0RhdGFFUDZOU0RhdGEKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVm
ZmVyMTJjcmVhdGVOU0RhdGFFdgpAQCAtNjM0LDYgKzYzMiw4IEBAIF9fWk43V2ViQ29yZTMxQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHQKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZTZzaGFyZWRFdgogX19aTjdXZWJDb3JlMzJwbGFpblRleHRUb01hbGxvY0Fs
bG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamJOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQog
X19aTjdXZWJDb3JlMzNzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXNFUktOM1dURjZT
dHJpbmdFCitfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2Nv
cGUxMW1vdmVXaWRnZXRzRXYKK19fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1
c3BlbnNpb25TY29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnRFCiBfX1pO
N1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50aWFsRQogX19aTjdXZWJDb3JlM21hY0VSS05TXzIz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCiBfX1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNj
YWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRT
aXplRQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMTI4
NTQ2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTksMTUgKzQxOSwxNSBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxk
KE5vZGUqIG9sCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZW5kZXJXaWRn
ZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CisgICAgeworICAgICAgICBXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzOwogCi0gICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAg
ICBOb2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgcmVtb3ZlQmV0d2Vlbihw
cmV2LCBuZXh0LCBjaGlsZC5nZXQoKSk7Ci0gICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2
LCBuZXh0LCAtMSk7Ci0gICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShj
aGlsZC5nZXQoKSk7Ci0KLSAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXMoKTsKKyAgICAgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsK
KyAgICAgICAgTm9kZSogbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOworICAgICAgICByZW1v
dmVCZXR3ZWVuKHByZXYsIG5leHQsIGNoaWxkLmdldCgpKTsKKyAgICAgICAgY2hpbGRyZW5DaGFu
Z2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7CisgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCkpOworICAgIH0KICAgICBkaXNwYXRjaFN1YnRy
ZWVNb2RpZmllZEV2ZW50KCk7CiAKICAgICByZXR1cm4gY2hpbGQ7CkBAIC00OTcsNDkgKzQ5Nyw1
MCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAvLyBhbmQgcmVt
b3ZlLi4uIGUuZy4gc3RvcCBsb2FkaW5nIGZyYW1lcywgZmlyZSB1bmxvYWQgZXZlbnRzLgogICAg
IHdpbGxSZW1vdmVDaGlsZHJlbihwcm90ZWN0LmdldCgpKTsKIAotICAgIFJlbmRlcldpZGdldDo6
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKLSAgICBmb3JiaWRFdmVudERpc3BhdGNo
KCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiwgMTA+IHJlbW92ZWRDaGlsZHJlbjsKLSAgICBy
ZW1vdmVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5vZGVDb3VudCgpKTsK
LSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG4gPSBtX2ZpcnN0Q2hpbGQpIHsKLSAgICAgICAgTm9k
ZSogbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7Ci0KLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBub2Rl
IGZyb20gdGhlIHRyZWUgYmVmb3JlIGNhbGxpbmcgZGV0YWNoIG9yIHJlbW92ZWRGcm9tRG9jdW1l
bnQgKDQ0MjcwMjQsIDQxMjk3NDQpLgotICAgICAgICAvLyByZW1vdmVDaGlsZCgpIGRvZXMgdGhp
cyBhZnRlciBjYWxsaW5nIGRldGFjaCgpLiBUaGVyZSBpcyBubyBleHBsYW5hdGlvbiBmb3IKLSAg
ICAgICAgLy8gdGhpcyBkaXNjcmVwYW5jeSBiZXR3ZWVuIHJlbW92ZUNoaWxkKCkgYW5kIGl0cyBv
cHRpbWl6ZWQgdmVyc2lvbiByZW1vdmVDaGlsZHJlbigpLgotICAgICAgICBuLT5zZXRQcmV2aW91
c1NpYmxpbmcoMCk7Ci0gICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwotICAgICAgICBuLT5z
ZXRQYXJlbnRPckhvc3ROb2RlKDApOwotICAgICAgICBkb2N1bWVudCgpLT5hZG9wdElmTmVlZGVk
KG4uZ2V0KCkpOwotCi0gICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7Ci0gICAgICAgIGlmIChu
ID09IG1fbGFzdENoaWxkKQotICAgICAgICAgICAgbV9sYXN0Q2hpbGQgPSAwOwotICAgICAgICBy
ZW1vdmVkQ2hpbGRyZW4uYXBwZW5kKG4ucmVsZWFzZSgpKTsKLSAgICB9Ci0KLSAgICBzaXplX3Qg
cmVtb3ZlZENoaWxkcmVuQ291bnQgPSByZW1vdmVkQ2hpbGRyZW4uc2l6ZSgpOwotICAgIHNpemVf
dCBpOwotCi0gICAgLy8gRGV0YWNoIHRoZSBub2RlcyBvbmx5IGFmdGVyIHByb3Blcmx5IHJlbW92
ZWQgZnJvbSB0aGUgdHJlZSBiZWNhdXNlCi0gICAgLy8gYS4gZGV0YWNoaW5nIHJlcXVpcmVzIGEg
cHJvcGVyIERPTSB0cmVlIChmb3IgY291bnRlcnMgYW5kIHF1b3RlcyBmb3IKLSAgICAvLyBleGFt
cGxlKSBhbmQgZHVyaW5nIHRoZSBwcmV2aW91cyBsb29wIHRoZSBuZXh0IHNpYmxpbmcgc3RpbGwg
cG9pbnRzIHRvCi0gICAgLy8gdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCB3aGlsZSB0aGUgbm9kZSBi
ZWluZyByZW1vdmVkIGRvZXMgbm90IHBvaW50IGJhY2sKLSAgICAvLyBhbmQgZG9lcyBub3QgcG9p
bnQgdG8gdGhlIHNhbWUgcGFyZW50IGFzIGl0cyBuZXh0IHNpYmxpbmcuCi0gICAgLy8gYi4gZGVz
dHJveWluZyBSZW5kZXJlcnMgb2Ygc3RhbmRhbG9uZSBub2RlcyBpcyBzb21ldGltZXMgZmFzdGVy
LgotICAgIGZvciAoaSA9IDA7IGkgPCByZW1vdmVkQ2hpbGRyZW5Db3VudDsgKytpKSB7Ci0gICAg
ICAgIE5vZGUqIHJlbW92ZWRDaGlsZCA9IHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKTsKLSAgICAg
ICAgaWYgKHJlbW92ZWRDaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgIHJlbW92ZWRDaGls
ZC0+ZGV0YWNoKCk7Ci0gICAgfQorICAgIHsKKyAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRl
c1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKKyAgICAgICAg
Zm9yYmlkRXZlbnREaXNwYXRjaCgpOworICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+LCAxMD4g
cmVtb3ZlZENoaWxkcmVuOworICAgICAgICByZW1vdmVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjaGlsZE5vZGVDb3VudCgpKTsKKyAgICAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBu
ID0gbV9maXJzdENoaWxkKSB7CisgICAgICAgICAgICBOb2RlKiBuZXh0ID0gbi0+bmV4dFNpYmxp
bmcoKTsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBub2RlIGZyb20gdGhlIHRyZWUgYmVm
b3JlIGNhbGxpbmcgZGV0YWNoIG9yIHJlbW92ZWRGcm9tRG9jdW1lbnQgKDQ0MjcwMjQsIDQxMjk3
NDQpLgorICAgICAgICAgICAgLy8gcmVtb3ZlQ2hpbGQoKSBkb2VzIHRoaXMgYWZ0ZXIgY2FsbGlu
ZyBkZXRhY2goKS4gVGhlcmUgaXMgbm8gZXhwbGFuYXRpb24gZm9yCisgICAgICAgICAgICAvLyB0
aGlzIGRpc2NyZXBhbmN5IGJldHdlZW4gcmVtb3ZlQ2hpbGQoKSBhbmQgaXRzIG9wdGltaXplZCB2
ZXJzaW9uIHJlbW92ZUNoaWxkcmVuKCkuCisgICAgICAgICAgICBuLT5zZXRQcmV2aW91c1NpYmxp
bmcoMCk7CisgICAgICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgICAgIG4t
PnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5hZG9wdElm
TmVlZGVkKG4uZ2V0KCkpOworCisgICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OworICAg
ICAgICAgICAgaWYgKG4gPT0gbV9sYXN0Q2hpbGQpCisgICAgICAgICAgICAgICAgbV9sYXN0Q2hp
bGQgPSAwOworICAgICAgICAgICAgcmVtb3ZlZENoaWxkcmVuLmFwcGVuZChuLnJlbGVhc2UoKSk7
CisgICAgICAgIH0KIAotICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgMCwgMCwgLXN0YXRpY19j
YXN0PGludD4ocmVtb3ZlZENoaWxkcmVuQ291bnQpKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZWRD
aGlsZHJlbkNvdW50ID0gcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgc2l6ZV90IGk7
CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKLSAgICAg
ICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5b
aV0uZ2V0KCkpOworICAgICAgICAvLyBEZXRhY2ggdGhlIG5vZGVzIG9ubHkgYWZ0ZXIgcHJvcGVy
bHkgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlIGJlY2F1c2UKKyAgICAgICAgLy8gYS4gZGV0YWNoaW5n
IHJlcXVpcmVzIGEgcHJvcGVyIERPTSB0cmVlIChmb3IgY291bnRlcnMgYW5kIHF1b3RlcyBmb3IK
KyAgICAgICAgLy8gZXhhbXBsZSkgYW5kIGR1cmluZyB0aGUgcHJldmlvdXMgbG9vcCB0aGUgbmV4
dCBzaWJsaW5nIHN0aWxsIHBvaW50cyB0bworICAgICAgICAvLyB0aGUgbm9kZSBiZWluZyByZW1v
dmVkIHdoaWxlIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgZG9lcyBub3QgcG9pbnQgYmFjaworICAg
ICAgICAvLyBhbmQgZG9lcyBub3QgcG9pbnQgdG8gdGhlIHNhbWUgcGFyZW50IGFzIGl0cyBuZXh0
IHNpYmxpbmcuCisgICAgICAgIC8vIGIuIGRlc3Ryb3lpbmcgUmVuZGVyZXJzIG9mIHN0YW5kYWxv
bmUgbm9kZXMgaXMgc29tZXRpbWVzIGZhc3Rlci4KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJl
bW92ZWRDaGlsZHJlbkNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUqIHJlbW92ZWRDaGls
ZCA9IHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkQ2hp
bGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgcmVtb3ZlZENoaWxkLT5kZXRhY2goKTsK
KyAgICAgICAgfQogCi0gICAgYWxsb3dFdmVudERpc3BhdGNoKCk7Ci0gICAgUmVuZGVyV2lkZ2V0
OjpyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdl
ZChmYWxzZSwgMCwgMCwgLXN0YXRpY19jYXN0PGludD4ocmVtb3ZlZENoaWxkcmVuQ291bnQpKTsK
KworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKKyAg
ICAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENo
aWxkcmVuW2ldLmdldCgpKTsKKworICAgICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKKyAgICB9
CiAKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEyODU0NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjUsNjUgKzE4MjUsNjYgQEAgdm9pZCBE
b2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgYwogCiAgICAgbV9pblN0eWxlUmVjYWxj
ID0gdHJ1ZTsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwotICAgIFJlbmRlcldp
ZGdldDo6c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKLSAgICAKLSAgICBSZWZQdHI8
RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2aWV3KCk7Ci0gICAgaWYgKGZyYW1lVmlldykgewotICAg
ICAgICBmcmFtZVZpZXctPnBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAgIGZyYW1lVmll
dy0+YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFyZW5kZXJl
cigpIHx8IHJlbmRlckFyZW5hKCkpOwotICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyQXJl
bmEoKSkKLSAgICAgICAgZ290byBiYWlsX291dDsKLQotICAgIGlmIChtX3BlbmRpbmdTdHlsZVJl
Y2FsY1Nob3VsZEZvcmNlKQotICAgICAgICBjaGFuZ2UgPSBGb3JjZTsKKyAgICB7CisgICAgICAg
IFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJh
cmNoeVVwZGF0ZXM7CiAKLSAgICAvLyBSZWNhbGN1bGF0aW5nIHRoZSByb290IHN0eWxlIChvbiB0
aGUgZG9jdW1lbnQpIGlzIG5vdCBuZWVkZWQgaW4gdGhlIGNvbW1vbiBjYXNlLgotICAgIGlmICgo
Y2hhbmdlID09IEZvcmNlKSB8fCAoc2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50KCkg
JiYgKGNoYW5nZSA+PSBJbmhlcml0KSkpIHsKLSAgICAgICAgLy8gc3R5bGUgc2VsZWN0b3IgbWF5
IHNldCB0aGlzIGFnYWluIGR1cmluZyByZWNhbGMKLSAgICAgICAgbV9oYXNOb2Rlc1dpdGhQbGFj
ZWhvbGRlclN0eWxlID0gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IGRvY3VtZW50U3R5bGUgPSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckRvY3VtZW50KHRoaXMs
IG1fc3R5bGVSZXNvbHZlciA/IG1fc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkgOiAwKTsK
LSAgICAgICAgU3R5bGVDaGFuZ2UgY2ggPSBOb2RlOjpkaWZmKGRvY3VtZW50U3R5bGUuZ2V0KCks
IHJlbmRlcmVyKCktPnN0eWxlKCksIHRoaXMpOwotICAgICAgICBpZiAoY2ggIT0gTm9DaGFuZ2Up
Ci0gICAgICAgICAgICByZW5kZXJlcigpLT5zZXRTdHlsZShkb2N1bWVudFN0eWxlLnJlbGVhc2Uo
KSk7Ci0gICAgfQorICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2aWV3KCk7
CisgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+cGF1c2VT
Y2hlZHVsZWRFdmVudHMoKTsKKyAgICAgICAgICAgIGZyYW1lVmlldy0+YmVnaW5EZWZlcnJlZFJl
cGFpbnRzKCk7CisgICAgICAgIH0KIAotICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsg
bjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2Rl
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgaWYgKGNoYW5nZSA+PSBJbmhlcml0IHx8
IGVsZW1lbnQtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IGVsZW1lbnQtPm5lZWRzU3R5bGVS
ZWNhbGMoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnJlY2FsY1N0eWxlKGNoYW5nZSk7Ci0gICAg
fQorICAgICAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwgcmVuZGVyQXJlbmEoKSk7CisgICAgICAg
IGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyQXJlbmEoKSkKKyAgICAgICAgICAgIGdvdG8gYmFp
bE91dDsKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAodmlldygp
KSB7Ci0gICAgICAgIGJvb2wgbGF5b3V0UGVuZGluZyA9IHZpZXcoKS0+bGF5b3V0UGVuZGluZygp
IHx8IHJlbmRlcmVyKCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgICAgIC8vIElmIHdlIGRpZG4ndCB1
cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGJlY2F1c2Ugb2YgbGF5b3V0KCksIHdlIG5lZWQgdG8g
ZG8gc28gaGVyZS4KLSAgICAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKQotICAgICAgICAgICAgdmll
dygpLT51cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFuZ2UoKTsKLSAgICB9Ci0j
ZW5kaWYKKyAgICAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UpCisgICAg
ICAgICAgICBjaGFuZ2UgPSBGb3JjZTsKIAotYmFpbF9vdXQ6Ci0gICAgY2xlYXJOZWVkc1N0eWxl
UmVjYWxjKCk7Ci0gICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB1bnNjaGVk
dWxlU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgLy8gUmVjYWxjdWxhdGluZyB0aGUgcm9vdCBzdHls
ZSAob24gdGhlIGRvY3VtZW50KSBpcyBub3QgbmVlZGVkIGluIHRoZSBjb21tb24gY2FzZS4KKyAg
ICAgICAgaWYgKChjaGFuZ2UgPT0gRm9yY2UpIHx8IChzaG91bGREaXNwbGF5U2VhbWxlc3NseVdp
dGhQYXJlbnQoKSAmJiAoY2hhbmdlID49IEluaGVyaXQpKSkgeworICAgICAgICAgICAgLy8gc3R5
bGUgc2VsZWN0b3IgbWF5IHNldCB0aGlzIGFnYWluIGR1cmluZyByZWNhbGMKKyAgICAgICAgICAg
IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IGZhbHNlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGUgPSBTdHlsZVJlc29s
dmVyOjpzdHlsZUZvckRvY3VtZW50KHRoaXMsIG1fc3R5bGVSZXNvbHZlciA/IG1fc3R5bGVSZXNv
bHZlci0+Zm9udFNlbGVjdG9yKCkgOiAwKTsKKyAgICAgICAgICAgIFN0eWxlQ2hhbmdlIGNoID0g
Tm9kZTo6ZGlmZihkb2N1bWVudFN0eWxlLmdldCgpLCByZW5kZXJlcigpLT5zdHlsZSgpLCB0aGlz
KTsKKyAgICAgICAgICAgIGlmIChjaCAhPSBOb0NoYW5nZSkKKyAgICAgICAgICAgICAgICByZW5k
ZXJlcigpLT5zZXRTdHlsZShkb2N1bWVudFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIH0KIAot
ICAgIG1faW5TdHlsZVJlY2FsYyA9IGZhbHNlOwotICAgIAotICAgIC8vIFBzZXVkbyBlbGVtZW50
IHJlbW92YWwgYW5kIHNpbWlsYXIgbWF5IG9ubHkgd29yayB3aXRoIHRoZXNlIGZsYWdzIHN0aWxs
IHNldC4gUmVzZXQgdGhlbSBhZnRlciB0aGUgc3R5bGUgcmVjYWxjLgotICAgIGlmIChtX3N0eWxl
UmVzb2x2ZXIpCi0gICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisgICAgICAgIGZvciAo
Tm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2UgPj0gSW5oZXJpdCB8fCBlbGVtZW50LT5jaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSB8fCBlbGVtZW50LT5uZWVkc1N0eWxlUmVjYWxjKCkpCisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKKyAgICAgICAgfQogCi0gICAg
aWYgKGZyYW1lVmlldykgewotICAgICAgICBmcmFtZVZpZXctPnJlc3VtZVNjaGVkdWxlZEV2ZW50
cygpOwotICAgICAgICBmcmFtZVZpZXctPmVuZERlZmVycmVkUmVwYWludHMoKTsKKyAgICAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBpZiAodmlldygpKSB7CisgICAg
ICAgICAgICBib29sIGxheW91dFBlbmRpbmcgPSB2aWV3KCktPmxheW91dFBlbmRpbmcoKSB8fCBy
ZW5kZXJlcigpLT5uZWVkc0xheW91dCgpOworICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0IHVw
ZGF0ZSBjb21wb3NpdGluZyBsYXllcnMgYmVjYXVzZSBvZiBsYXlvdXQoKSwgd2UgbmVlZCB0byBk
byBzbyBoZXJlLgorICAgICAgICAgICAgaWYgKCFsYXlvdXRQZW5kaW5nKQorICAgICAgICAgICAg
ICAgIHZpZXcoKS0+dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclN0eWxlQ2hhbmdlKCk7Cisg
ICAgICAgIH0KKyAgICAjZW5kaWYKKworICAgIGJhaWxPdXQ6CisgICAgICAgIGNsZWFyTmVlZHNT
dHlsZVJlY2FsYygpOworICAgICAgICBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOworICAg
ICAgICB1bnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKKworICAgICAgICBtX2luU3R5bGVSZWNhbGMg
PSBmYWxzZTsKKworICAgICAgICAvLyBQc2V1ZG8gZWxlbWVudCByZW1vdmFsIGFuZCBzaW1pbGFy
IG1heSBvbmx5IHdvcmsgd2l0aCB0aGVzZSBmbGFncyBzdGlsbCBzZXQuIFJlc2V0IHRoZW0gYWZ0
ZXIgdGhlIHN0eWxlIHJlY2FsYy4KKyAgICAgICAgaWYgKG1fc3R5bGVSZXNvbHZlcikKKyAgICAg
ICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisKKyAgICAgICAgaWYgKGZyYW1lVmlldykg
eworICAgICAgICAgICAgZnJhbWVWaWV3LT5yZXN1bWVTY2hlZHVsZWRFdmVudHMoKTsKKyAgICAg
ICAgICAgIGZyYW1lVmlldy0+ZW5kRGVmZXJyZWRSZXBhaW50cygpOworICAgICAgICB9CiAgICAg
fQotICAgIFJlbmRlcldpZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogICAg
IHJlc3VtZVBvc3RBdHRhY2hDYWxsYmFja3MoKTsKIAogICAgIC8vIElmIHdlIHdhbnRlZCB0byBj
YWxsIGltcGxpY2l0Q2xvc2UoKSBkdXJpbmcgcmVjYWxjU3R5bGUsIGRvIHNvIG5vdyB0aGF0IHdl
J3JlIGZpbmlzaGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTI4NTQ2
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAyLDM2ICsxMDAyLDM2IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSoKIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIHsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxi
YWNrcygpOwotICAgIFJlbmRlcldpZGdldDo6c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMo
KTsKKyAgICB7CisgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUg
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAKLSAgICBjcmVhdGVSZW5kZXJlcklmTmVl
ZGVkKCk7Ci0gICAgU3R5bGVSZXNvbHZlclBhcmVudFB1c2hlciBwYXJlbnRQdXNoZXIodGhpcyk7
CisgICAgICAgIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKTsKKyAgICAgICAgU3R5bGVSZXNvbHZl
clBhcmVudFB1c2hlciBwYXJlbnRQdXNoZXIodGhpcyk7CiAKLSAgICBpZiAocGFyZW50RWxlbWVu
dCgpICYmIHBhcmVudEVsZW1lbnQoKS0+aXNJbkNhbnZhc1N1YnRyZWUoKSkKLSAgICAgICAgc2V0
SXNJbkNhbnZhc1N1YnRyZWUodHJ1ZSk7CisgICAgICAgIGlmIChwYXJlbnRFbGVtZW50KCkgJiYg
cGFyZW50RWxlbWVudCgpLT5pc0luQ2FudmFzU3VidHJlZSgpKQorICAgICAgICAgICAgc2V0SXNJ
bkNhbnZhc1N1YnRyZWUodHJ1ZSk7CiAKLSAgICAvLyBXaGVuIGEgc2hhZG93IHJvb3QgZXhpc3Rz
LCBpdCBkb2VzIHRoZSB3b3JrIG9mIGF0dGFjaGluZyB0aGUgY2hpbGRyZW4uCi0gICAgaWYgKEVs
ZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRoaXMtPnNoYWRvdygpKSB7Ci0gICAgICAgIHBhcmVudFB1
c2hlci5wdXNoKCk7Ci0gICAgICAgIHNoYWRvdy0+YXR0YWNoKCk7Ci0gICAgICAgIGF0dGFjaENo
aWxkcmVuSWZOZWVkZWQoKTsKLSAgICAgICAgYXR0YWNoQXNOb2RlKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKGZpcnN0Q2hpbGQoKSkKKyAgICAgICAgLy8gV2hlbiBhIHNoYWRvdyByb290
IGV4aXN0cywgaXQgZG9lcyB0aGUgd29yayBvZiBhdHRhY2hpbmcgdGhlIGNoaWxkcmVuLgorICAg
ICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdGhpcy0+c2hhZG93KCkpIHsKICAgICAg
ICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OmF0dGFj
aCgpOwotICAgIH0KKyAgICAgICAgICAgIHNoYWRvdy0+YXR0YWNoKCk7CisgICAgICAgICAgICBh
dHRhY2hDaGlsZHJlbklmTmVlZGVkKCk7CisgICAgICAgICAgICBhdHRhY2hBc05vZGUoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmaXJzdENoaWxkKCkpCisgICAgICAgICAg
ICAgICAgcGFyZW50UHVzaGVyLnB1c2goKTsKKyAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OmF0
dGFjaCgpOworICAgICAgICB9CiAKLSAgICBpZiAoaGFzUmFyZURhdGEoKSkgeyAgIAotICAgICAg
ICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKLSAgICAgICAgaWYg
KGRhdGEtPm5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKCkpIHsKLSAg
ICAgICAgICAgIGlmIChpc0ZvY3VzYWJsZSgpICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkg
PT0gdGhpcykKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVGb2N1c0FwcGVhcmFu
Y2VTb29uKGZhbHNlIC8qIGRvbid0IHJlc3RvcmUgc2VsZWN0aW9uICovKTsKLSAgICAgICAgICAg
IGRhdGEtPnNldE5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNl
KTsKKyAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsgICAKKyAgICAgICAgICAgIEVsZW1lbnRS
YXJlRGF0YSogZGF0YSA9IGVsZW1lbnRSYXJlRGF0YSgpOworICAgICAgICAgICAgaWYgKGRhdGEt
Pm5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNGb2N1c2FibGUoKSAmJiBkb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpID09
IHRoaXMpCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUZvY3VzQXBwZWFy
YW5jZVNvb24oZmFsc2UgLyogZG9uJ3QgcmVzdG9yZSBzZWxlY3Rpb24gKi8pOworICAgICAgICAg
ICAgICAgIGRhdGEtPnNldE5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNo
KGZhbHNlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQotICAgIFJlbmRlcldp
ZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOwogICAgIHJlc3VtZVBvc3RBdHRh
Y2hDYWxsYmFja3MoKTsKIH0KIApAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBFbGVtZW50Ojp1
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudAogCiB2b2lkIEVsZW1lbnQ6OmRldGFjaCgpCiB7Ci0g
ICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpOworICAgIFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXM7CiAgICAgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKCk7CiAgICAgY2Fu
Y2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7CiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKQEAg
LTEwNTgsOCArMTA1OCw2IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgc2hhZG93
LT5kZXRhY2goKTsKICAgICB9CiAgICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKCk7Ci0KLSAgICBS
ZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKIH0KIAogYm9vbCBF
bGVtZW50Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDEyODU0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1
LDkgKzIyNSwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93bkV2ZW50VG9XCiAg
ICAgQVNTRVJUKCFtX3NlbmRpbmdFdmVudFRvU3Vidmlldyk7CiAgICAgbV9zZW5kaW5nRXZlbnRU
b1N1YnZpZXcgPSB0cnVlOwogCi0gICAgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlcygpOwotICAgIFt2aWV3IG1vdXNlRG93bjpjdXJyZW50TlNFdmVudCgpXTsKLSAg
ICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKKyAgICB7Cisg
ICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdl
dEhpZXJhcmNoeVVwZGF0ZXM7CisgICAgICAgIFt2aWV3IG1vdXNlRG93bjpjdXJyZW50TlNFdmVu
dCgpXTsKKyAgICB9CiAKICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlz
aW9uIDEyODU0NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw1MyArNDcsNDIgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3Qg
V2lkZ2V0KiwgUmVuZGVyV2lkZwogICAgIHJldHVybiAqc3RhdGljV2lkZ2V0UmVuZGVyZXJNYXA7
CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCB3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQ7
Cit1bnNpZ25lZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpzX3dpZGdl
dEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudCA9IDA7CiAKLXR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj4gV2lkZ2V0VG9QYXJlbnRNYXA7Ci0KLXN0YXRpYyBXaWRn
ZXRUb1BhcmVudE1hcCYgd2lkZ2V0TmV3UGFyZW50TWFwKCkKK1dpZGdldEhpZXJhcmNoeVVwZGF0
ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFyZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQYXJlbnRNYXAoKQogewogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoV2lkZ2V0VG9QYXJlbnRNYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7
CiB9CiAKLXZvaWQgUmVuZGVyV2lkZ2V0OjpzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygp
Cit2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRz
KCkKIHsKLSAgICB3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQrKzsKLX0KLQotdm9p
ZCBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKQotewotICAgIEFT
U0VSVCh3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQpOwotICAgIGlmICh3aWRnZXRI
aWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQgPT0gMSkgewotICAgICAgICBXaWRnZXRUb1BhcmVu
dE1hcCBtYXAgPSB3aWRnZXROZXdQYXJlbnRNYXAoKTsKLSAgICAgICAgd2lkZ2V0TmV3UGFyZW50
TWFwKCkuY2xlYXIoKTsKLSAgICAgICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yIChXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgaXQg
PSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBXaWRnZXQqIGNo
aWxkID0gaXQtPmZpcnN0LmdldCgpOwotICAgICAgICAgICAgU2Nyb2xsVmlldyogY3VycmVudFBh
cmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50
ID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGlmIChuZXdQYXJlbnQgIT0gY3VycmVudFBhcmVu
dCkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyZW50KQotICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5ld1BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50LT5hZGRDaGlsZChj
aGlsZCk7Ci0gICAgICAgICAgICB9CisgICAgV2lkZ2V0VG9QYXJlbnRNYXAgbWFwID0gd2lkZ2V0
TmV3UGFyZW50TWFwKCk7CisgICAgd2lkZ2V0TmV3UGFyZW50TWFwKCkuY2xlYXIoKTsKKyAgICBX
aWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAoV2lk
Z2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmZpcnN0LmdldCgpOworICAgICAgICBT
Y3JvbGxWaWV3KiBjdXJyZW50UGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOworICAgICAgICBGcmFt
ZVZpZXcqIG5ld1BhcmVudCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChuZXdQYXJlbnQgIT0g
Y3VycmVudFBhcmVudCkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpCisgICAgICAg
ICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgICAgICAgICAg
aWYgKG5ld1BhcmVudCkKKyAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNoaWxk
KTsKICAgICAgICAgfQogICAgIH0KLSAgICB3aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291
bnQtLTsKIH0KIAogc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZXQqIGNo
aWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKIHsKLSAgICBpZiAoIXdpZGdldEhpZXJhcmNoeVVwZGF0
ZVN1c3BlbmRDb3VudCkgeworICAgIGlmICghV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNp
b25TY29wZTo6aXNTdXNwZW5kZWQoKSkgewogICAgICAgICBpZiAocGFyZW50KQogICAgICAgICAg
ICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNo
aWxkLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgd2lk
Z2V0TmV3UGFyZW50TWFwKCkuc2V0KGNoaWxkLCBwYXJlbnQpOworICAgIFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKGNoaWxkLCBwYXJl
bnQpOwogfQogCiBSZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldChOb2RlKiBub2RlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24gMTI4NTQ2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdpZGdl
dEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgeworcHVibGljOgorICAgIFdpZGdldEhp
ZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUoKQorICAgIHsKKyAgICAgICAgc193aWRnZXRI
aWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQrKzsKKyAgICB9CisgICAgfldpZGdldEhpZXJhcmNo
eVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNfd2lkZ2V0
SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50KTsKKyAgICAgICAgaWYgKHNfd2lkZ2V0SGllcmFy
Y2h5VXBkYXRlU3VzcGVuZENvdW50ID09IDEpCisgICAgICAgICAgICBtb3ZlV2lkZ2V0cygpOwor
ICAgICAgICBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudC0tOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGlzU3VzcGVuZGVkKCkgeyByZXR1cm4gc193aWRnZXRIaWVyYXJjaHlV
cGRhdGVTdXNwZW5kQ291bnQ7IH0KKyAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZVdpZGdldFRvTW92
ZShXaWRnZXQqIHdpZGdldCwgRnJhbWVWaWV3KiBmcmFtZSkgeyB3aWRnZXROZXdQYXJlbnRNYXAo
KS5zZXQod2lkZ2V0LCBmcmFtZSk7IH0KKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFdpZGdldD4sIEZyYW1lVmlldyo+IFdpZGdldFRvUGFyZW50TWFwOworICAgIHN0YXRp
YyBXaWRnZXRUb1BhcmVudE1hcCYgd2lkZ2V0TmV3UGFyZW50TWFwKCk7CisKKyAgICB2b2lkIG1v
dmVXaWRnZXRzKCk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgc193aWRnZXRIaWVyYXJjaHlVcGRh
dGVTdXNwZW5kQ291bnQ7Cit9OworICAgIAogY2xhc3MgUmVuZGVyV2lkZ2V0IDogcHVibGljIFJl
bmRlclJlcGxhY2VkLCBwcml2YXRlIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UmVuZGVyV2lkZ2V0KCk7CkBAIC00Miw5ICs2OCw2IEBAIHB1YmxpYzoK
ICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Q7CiAKICAgICB2b2lkIG5vdGlmeVdp
ZGdldChXaWRnZXROb3RpZmljYXRpb24pOwotICAgIAotICAgIHN0YXRpYyB2b2lkIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzdW1lV2lkZ2V0SGll
cmFyY2h5VXBkYXRlcygpOwogCiAgICAgUmVuZGVyQXJlbmEqIHJlZigpIHsgKyttX3JlZkNvdW50
OyByZXR1cm4gcmVuZGVyQXJlbmEoKTsgfQogICAgIHZvaWQgZGVyZWYoUmVuZGVyQXJlbmEqKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODU0NikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5LTEz
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHN1c3BlbmQvcmVz
dW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcyBzaG91bGQgYmUgYSBSQUlJIG9iamVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW52YWxpZGF0ZUdTdGF0ZXNGb3JUcmVl
XSk6CisKIDIwMTItMDktMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjg1MzEuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDEyODU0NikK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzNzYsOSArMzM3Niw4IEBAIC0gKHZvaWQpX2ludmFsaWRhdGVHU3RhdGVzRm9yVHJl
ZQogICAgIC8vIGRlc2NlbmRhbnRzLCBpbmNsdWRpbmcgcGx1Zy1pbiB2aWV3cy4gVGhpcyBjYW4g
cmVzdWx0IGluIGNhbGxzIG91dCB0byBwbHVnLWluIGNvZGUgYW5kIGJhY2sgaW50bwogICAgIC8v
IFdlYkNvcmUgdmlhIEphdmFTY3JpcHQsIHdoaWNoIGNvdWxkIG5vcm1hbGx5IG11dGF0ZSB0aGUg
TlNWaWV3IHRyZWUgd2hpbGUgaXQgaXMgYmVpbmcgdHJhdmVyc2VkLgogICAgIC8vIERlZmVyIHRo
b3NlIG11dGF0aW9ucyB3aGlsZSBkZXNjZW5kYW50cyBhcmUgYmVpbmcgdHJhdmVyZXNlZC4KLSAg
ICBSZW5kZXJXaWRnZXQ6OnN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CisgICAgV2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5
VXBkYXRlczsKICAgICBbc3VwZXIgX2ludmFsaWRhdGVHU3RhdGVzRm9yVHJlZV07Ci0gICAgUmVu
ZGVyV2lkZ2V0OjpyZXN1bWVXaWRnZXRIaWVyYXJjaHlVcGRhdGVzKCk7CiB9CiAKIC0gKEJPT0wp
aXNGbGlwcGVkIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>