<?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>153193</bug_id>
          
          <creation_ts>2016-01-17 00:26:40 -0800</creation_ts>
          <short_desc>Reproducible &quot;Unhandled web process message &apos;WebUserContentController:AddUserScripts&apos;&quot; and friends</short_desc>
          <delta_ts>2016-09-05 13:33:02 -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>WebKit2</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>adachan</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mario</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156274</commentid>
    <comment_count>0</comment_count>
      <attachid>269188</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-17 00:26:40 -0800</bug_when>
    <thetext>Created attachment 269188
API test that reproduces the problem (and asserts/crashes later too)

Steps to Reproduce:

1. Apply the attached test patch and run the API test.

Notes:

The WebPageProxy constructor assumes that if the process is already running, it can add itself to the existing WebUserContentController(Proxy) and all will be well.

However, if the API client constructs a different WKUserContentController for two views, and forces them both into the same process (by setting the process cap to 1), when WebPageProxy&apos;s constructor goes to use the existing WebUserContentController, it sends a message with a WebUserContentController ID that doesn&apos;t exist yet on the WebProcess side (because createWebPage, which usually brings it up, hasn&apos;t happened yet), and we lose the message.

This also means that we&apos;ll crash and burn horribly if we later try to remove e.g. a UserScriptHandler that was lost in the lost Add messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156275</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-17 00:27:35 -0800</bug_when>
    <thetext>I imagine one could do something similar with the visited link store, since the same assumption is made about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156276</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-17 00:31:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/24222034&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156277</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-17 01:02:03 -0800</bug_when>
    <thetext>The fix is not super obvious.

I considered moving the offending block:

if (m_process-&gt;state() == WebProcessProxy::State::Running) {
    if (m_userContentController)
        m_process-&gt;addWebUserContentControllerProxy(*m_userContentController);
    m_process-&gt;addVisitedLinkStore(m_visitedLinkStore);
}

to the end of initializeWebPage, after CreateWebPage is sent, but then in the reattachToWebProcess case, we&apos;ll end up doing the work twice (because reattachToWebProcess calls processDidFinishLaunching if the process is up, which ALSO includes the above block).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156279</commentid>
    <comment_count>4</comment_count>
      <attachid>269189</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-17 01:26:37 -0800</bug_when>
    <thetext>Created attachment 269189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156280</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-17 01:27:50 -0800</bug_when>
    <thetext>Attachment 269189 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:211:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:212:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:213:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:214:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156468</commentid>
    <comment_count>6</comment_count>
      <attachid>269189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-18 15:32:00 -0800</bug_when>
    <thetext>Comment on attachment 269189
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:367
&gt; +    , m_needsInitializationAfterProcessLaunch(false)

Should initialize this in the header instead of here.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:802
&gt; +void WebPageProxy::initializeWebPageAfterProcessLaunch()

I think you should call this finishInitializingWebPageAfterProcessLaunch to make the relationship with initializeWebPage clearer. The current name makes it sound like this function will call initializeWebPage.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:808
&gt; +    m_needsInitializationAfterProcessLaunch = false;

I think it’s worth refactoring so the logic is more contained in a single function. Here’s one idea (less important than my other review feedback, I think). In WebPageProxy::initializeWebPage:

    m_needsToFinishInitializingWebPageAfterProcessLaunch = true;
    finishInitializingWebPageAfterProcessLaunch();

Then, in finishInitializingWebPageAfterProcessLaunch:

    if (!m_needsToFinishInitializingWebPageAfterProcessLaunch)
        return;
    if (m_process-&gt;state() != WebProcessProxy::State::Running)
        return;
    m_needsToFinishInitializingWebPageAfterProcessLaunch = false;

    if (m_userContentController)
        m_process-&gt;addWebUserContentControllerProxy(*m_userContentController);
    m_process-&gt;addVisitedLinkStore(m_visitedLinkStore);

Then in processDidFinishLaunching another unconditional call:

    finishInitializingWebPageAfterProcessLaunch();

This seems to cut down the surface area a bit and make it slightly more foolproof.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:357
&gt; +    void initializeWebPageAfterProcessLaunch();

Should be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157833</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-22 14:26:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/195479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226507</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-05 13:33:02 -0700</bug_when>
    <thetext>*** Bug 152386 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269188</attachid>
            <date>2016-01-17 00:26:40 -0800</date>
            <delta_ts>2016-01-17 01:26:31 -0800</delta_ts>
            <desc>API test that reproduces the problem (and asserts/crashes later too)</desc>
            <filename>test.diff</filename>
            <type>text/plain</type>
            <size>3515</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJD
b250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA3YzgzYzU5Li5mODc0ODY0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0yOCw3ICsyOCw5IEBACiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNl
clN0eWxlU2hlZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTc0LDYgKzE3
Niw1MCBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxl
ckNhbGxSZW1vdmVkSGFuZGxlcikKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3Ry
aW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJl
bW92YWxUZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAg
UmV0YWluUHRyPFNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1Njcmlw
dE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Db3B5ID0gYWRvcHROUyhbY29uZmlndXJhdGlvbiBj
b3B5XSk7CisgICAgW2NvbmZpZ3VyYXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjpb
W1tXS1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb25Db3B5IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CisgICAg
W1tjb25maWd1cmF0aW9uQ29weSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAImhhbmRsZXJUb1Bvc3QiXTsKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25Db3B5LmdldCgpXSk7CisgICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxl
Z2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2
aWdhdGlvbiA9IGZhbHNlOworCisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVt
b3ZhbCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0TWF4aW11bVByb2Nlc3ND
b3VudDoxXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSB3ZWJWaWV3Rm9yU2NyaXB0TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFs
VGVzdChjb25maWd1cmF0aW9uLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3MiA9IHdlYlZpZXdGb3JTY3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92
YWxUZXN0KGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworCisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0
aW9uXSB1c2VyQ29udGVudENvbnRyb2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTpAImhhbmRsZXJUb1JlbW92ZSJdOworICAgIFtbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25d
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1l
OkAiaGFuZGxlclRvUmVtb3ZlIl07CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
CisgICAgIEAidHJ5IHsiCisgICAgICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdG
QUlMJyk7IgorICAgICAifSBjYXRjaCAoZSkgeyIKKyAgICAgIiAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy5oYW5kbGVyVG9Qb3N0LnBvc3RNZXNzYWdlKCdQQVNTJyk7IgorICAgICAi
fSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBm
YWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbbGFzdFNj
cmlwdE1lc3NhZ2UgYm9keV0pOworfQorCiAjaWYgIVBMQVRGT1JNKElPUykgLy8gRklYTUU6IGhh
bmdzIGluIHRoZSBpT1Mgc2ltdWxhdG9yCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBT
Y3JpcHRNZXNzYWdlSGFuZGxlcldpdGhOYXZpZ2F0aW9uKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269189</attachid>
            <date>2016-01-17 01:26:37 -0800</date>
            <delta_ts>2016-01-18 15:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153193-20160117012607.patch</filename>
            <type>text/plain</type>
            <size>10448</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGM1ODhhYWJlZTdmMTc0
ZTQzNTg3MDEyOGRlMzU5Yzk0ZGQ1ZDdhZC4uOTBkNDVmMjM0NTMwNjNlM2EwZjc5NmNlZjM2NmEy
N2M0MTRhZTM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTAxLTE3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlcHJvZHVjaWJs
ZSAiVW5oYW5kZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OkFkZFVzZXJTY3JpcHRzJyIgYW5kIGZyaWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQy
MjIwMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIFdlYlBhZ2VQcm94eSBjb25zdHJ1Y3RvciBhc3N1bWVzIHRoYXQgaWYgaXRzIFdlYlByb2Nl
c3MgaXMgYWxyZWFkeSBydW5uaW5nLAorICAgICAgICBpdCBjYW4gYWRkIGl0c2VsZiB0byB0aGUg
ZXhpc3RpbmcgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFByb3h5KSBhbmQgYWxsIHdpbGwgYmUg
d2VsbC4KKworICAgICAgICBIb3dldmVyLCBpZiB0aGUgQVBJIGNsaWVudCBjb25zdHJ1Y3RzIGEg
ZGlmZmVyZW50IFdLVXNlckNvbnRlbnRDb250cm9sbGVyIGZvciB0d28gdmlld3MsCisgICAgICAg
IGFuZCBmb3JjZXMgdGhlbSBib3RoIGludG8gdGhlIHNhbWUgcHJvY2VzcywgV2ViUGFnZVByb3h5
J3MgY29uc3RydWN0b3Igc2VuZHMgYSBtZXNzYWdlCisgICAgICAgIHdpdGggYSBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIgSUQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldCBvbiB0aGUgV2ViUHJvY2Vz
cyBzaWRlCisgICAgICAgIChiZWNhdXNlIGNyZWF0ZVdlYlBhZ2UsIHdoaWNoIHVzdWFsbHkgYnJp
bmdzIGl0IHVwLCBoYXNuJ3QgaGFwcGVuZWQgeWV0KSwgYW5kIHdlIAorICAgICAgICBkcm9wIHRo
ZSBtZXNzYWdlIG9uIHRoZSBmbG9vciAoYW5kIGdldCB0aGUgYWZvcmVtZW50aW9uZWQgbG9nZ2lu
ZykuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoKToKKyAgICAgICAg
SW5zdGVhZCBvZiBjb25uZWN0aW5nIG91ciBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBh
bmQgV2ViVmlzaXRlZExpbmtTdG9yZVByb3h5CisgICAgICAgIHRvIG91ciBXZWJQcm9jZXNzUHJv
eHkgaW4gdGhlIGNvbnN0cnVjdG9yLCB3aGVuIGRvaW5nIHNvIG1pZ2h0IHNlbmQgbWVzc2FnZXMK
KyAgICAgICAgdG8gdGhlIFdlYlByb2Nlc3MgdGhhdCBhcnJpdmUgYmVmb3JlIHRoZWlyIGNvcnJl
c3BvbmRpbmcgV2ViUHJvY2VzcyBvYmplY3RzIGhhdmUKKyAgICAgICAgYmVlbiBjcmVhdGVkLCBk
byB0aGlzIGluIGluaXRpYWxpemVXZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoLCB3aGljaCBhbHdh
eXMgcnVucworICAgICAgICBkdXJpbmctb3ItYWZ0ZXIgaW5pdGl0YWxpemVXZWJQYWdlIChhbmQg
YWx3YXlzIGFmdGVyIHRoZSBDcmVhdGVXZWJQYWdlIG1lc3NhZ2UgZ29lcyBvdXQpLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICBN
YXJrIHVzIGFzIG5lZWRpbmcgaW5pdGlhbGl6ZVdlYlBhZ2VBZnRlclByb2Nlc3NMYXVuY2ggcnVu
LCBhbmQgcnVuIGl0IHJpZ2h0IG5vdworICAgICAgICBpZiB0aGUgV2ViUHJvY2VzcyBpcyBhbHJl
YWR5IHVwLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRGaW5pc2hM
YXVuY2hpbmcpOgorICAgICAgICBJZiB0aGUgV2ViUHJvY2VzcyB3YXNuJ3QgdXAgYXQgdGhlIGVu
ZCBvZiBpbml0aWFsaXplV2ViUGFnZSwgd2UnbGwgZXZlbnR1YWxseSBlbmQgdXAgaGVyZQorICAg
ICAgICBhZnRlciBpdCBpcyBsYXVuY2hlZCwgYW5kIHdpbGwgaW5pdGlhbGl6ZVdlYlBhZ2VBZnRl
clByb2Nlc3NMYXVuY2guCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0
YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgSWYgdGhlIFdlYlByb2Nlc3MgZGllcywg
d2UgZG9uJ3Qgd2FudCB0byBpbml0aWFsaXplV2ViUGFnZUFmdGVyUHJvY2Vzc0xhdW5jaAorICAg
ICAgICB1bnRpbCBhZnRlciBpbml0aWFsaXplV2ViUGFnZSBydW5zIGFnYWluLCBzbyBtYWtlIHN1
cmUgdGhlIGZsYWcgaXNuJ3Qgc2V0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCiAyMDE2LTAxLTE2ICBKZXJlbXkgSHVkZGxlc3RvbiBTZXF1b2lhICA8amVyZW15aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIG5vdy1pcnJlbGV2YW50IGRhcndpbiBidWls
ZCBoYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGFm
YjNiZjgxMWE3YzcwMzIyNzYwNmNhYzc2M2IzZGQ3Yjc3ZjVmZTguLmE0NjhhNmNmYTI2M2E0YjI1
YWY0M2U0Y2UwYzMzM2FiMmFmMmE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zNjQsNiArMzY0LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4K
ICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKICAgICAsIG1f
Y2FuUnVuTW9kYWwoZmFsc2UpCisgICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb25BZnRlclByb2Nl
c3NMYXVuY2goZmFsc2UpCiAgICAgLCBtX2lzSW5QcmludGluZ01vZGUoZmFsc2UpCiAgICAgLCBt
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKGZhbHNlKQogICAgICwgbV9pbkRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU3luYyhmYWxzZSkKQEAgLTQ0MywxMiArNDQ0LDYgQEAgV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCB1aW4KICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2
ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
YWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAotICAgIGlmIChtX3Byb2Nlc3MtPnN0
YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykgewotICAgICAgICBpZiAo
bV91c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgICAgICBtX3Byb2Nlc3MtPmFkZFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KCptX3VzZXJDb250ZW50Q29udHJvbGxlcik7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZShtX3Zpc2l0ZWRMaW5rU3RvcmUpOwot
ICAgIH0KLQogICAgIHVwZGF0ZVZpZXdTdGF0ZSgpOwogICAgIHVwZGF0ZUFjdGl2aXR5VG9rZW4o
KTsKICAgICB1cGRhdGVQcm9jY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsKQEAgLTc5OCw2ICs3OTMs
MTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQobV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpOwogI2VuZGlmCisKKyAgICBt
X25lZWRzSW5pdGlhbGl6YXRpb25BZnRlclByb2Nlc3NMYXVuY2ggPSB0cnVlOworICAgIGlmICht
X3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykKKyAg
ICAgICAgaW5pdGlhbGl6ZVdlYlBhZ2VBZnRlclByb2Nlc3NMYXVuY2goKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoKCkKK3sKKyAg
ICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCisgICAgICAgIG1fcHJvY2Vzcy0+YWRkV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKm1fdXNlckNvbnRlbnRDb250cm9sbGVyKTsKKyAg
ICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmUobV92aXNpdGVkTGlua1N0b3JlKTsKKwor
ICAgIG1fbmVlZHNJbml0aWFsaXphdGlvbkFmdGVyUHJvY2Vzc0xhdW5jaCA9IGZhbHNlOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQpAQCAtMzYxMyw5ICszNjIxLDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKQogewogICAgIEFTU0VSVCht
X3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZyk7CiAK
LSAgICBpZiAobV91c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgIG1fcHJvY2Vzcy0+YWRk
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKm1fdXNlckNvbnRlbnRDb250cm9sbGVyKTsK
LSAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmUobV92aXNpdGVkTGlua1N0b3JlKTsK
KyAgICBpZiAobV9uZWVkc0luaXRpYWxpemF0aW9uQWZ0ZXJQcm9jZXNzTGF1bmNoKQorICAgICAg
ICBpbml0aWFsaXplV2ViUGFnZUFmdGVyUHJvY2Vzc0xhdW5jaCgpOwogfQogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC01MDU2LDYgKzUwNjMsOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpCiAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAorICAgIG1fbmVlZHNJbml0aWFs
aXphdGlvbkFmdGVyUHJvY2Vzc0xhdW5jaCA9IGZhbHNlOworCiAgICAgbV9lZGl0b3JTdGF0ZSA9
IEVkaXRvclN0YXRlKCk7CiAKICAgICBtX3BhZ2VDbGllbnQucHJvY2Vzc0RpZEV4aXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlNzMxN2UxZDZjZDc1NDgx
NTVjOWIwMzI2ODExYjZmY2M0YjNjYmM3Li5lZGQ1ZTEzMWI1NmZhODc3YjJkZGUwNjM0N2RiMmYx
OGQ1ZjEyZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0z
NTQsNiArMzU0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGluaXRpYWxpemVXZWJQ
YWdlKCk7CisgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZUFmdGVyUHJvY2Vzc0xhdW5jaCgpOwog
CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIGJvb2wgdHJ5Q2xvc2UoKTsKQEAgLTE2MTMsNiArMTYx
NCw4IEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciBpdCBjYW4gcnVuIG1vZGFsIGNoaWxkIHdl
YiBwYWdlcy4KICAgICBib29sIG1fY2FuUnVuTW9kYWw7CiAKKyAgICBib29sIG1fbmVlZHNJbml0
aWFsaXphdGlvbkFmdGVyUHJvY2Vzc0xhdW5jaDsKKwogICAgIGJvb2wgbV9pc0luUHJpbnRpbmdN
b2RlOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbjsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwODhiNTdjODQw
MmE5ZWUyOWYxOTkzN2UwNDE2NjcwYzlhNGQ0MjUuLjU1ODlmZmE5YTU4YTEyOGU2ZmVkM2VmZTc3
NzYzMThkMjdjZTZkZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMS0xNyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXByb2R1Y2libGUgIlVuaGFuZGVkIHdl
YiBwcm9jZXNzIG1lc3NhZ2UgJ1dlYlVzZXJDb250ZW50Q29udHJvbGxlcjpBZGRVc2VyU2NyaXB0
cyciIGFuZCBmcmllbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTMxOTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MjIyMDM0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAo
d2ViVmlld0ZvclNjcmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbFRlc3Qp
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBleGhpYml0cyB0aGUg
cHJvYmxlbXMgd2UncmUgZml4aW5nIGhlcmUuCisgICAgICAgIEJlZm9yZSwgaXQgd291bGQgYm90
aCBsb2cgYW5kIGFzc2VydCBpbiBkZWJ1ZywgYW5kIGNyYXNoIGluIHJlbGVhc2UuCisgICAgICAg
IE5vdyBpdCBydW5zIGhhcHBpbHkgdG8gY29tcGxldGlvbi4KKwogMjAxNi0wMS0xNiAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBUZXh0
UnVuOjphbGxvd3NSb3VuZGluZ0hhY2tzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpp
bmRleCA3YzgzYzU5MGE0YmE4MGRiMDY0Zjg5N2U0MGQxNjE2Y2FmMmNlNjM4Li5mODc0ODY0YjQ2
YTU5M2U4NDk3ZTAyMWJjZGY2ODA3YjIzZDkzNmIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCkBAIC0yOCw3ICsyOCw5IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTc0LDYgKzE3Niw1MCBAQCBURVNUKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlckNhbGxSZW1vdmVkSGFuZGxlcikK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJQQVNTIiwgKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNz
YWdlIGJvZHldKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdGb3JT
Y3JpcHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAgUmV0YWluUHRyPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb25Db3B5ID0gYWRvcHROUyhbY29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb25Db3B5IHNldFVzZXJDb250ZW50Q29udHJvbGxlcjpbW1tXS1VzZXJDb250ZW50Q29udHJv
bGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbW2NvbmZpZ3VyYXRpb25Db3B5
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07CisgICAgW1tjb25maWd1cmF0aW9uQ29weSB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0
KCkgbmFtZTpAImhhbmRsZXJUb1Bvc3QiXTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25Db3B5LmdldCgpXSk7
CisgICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisg
ICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNj
cmlwdE1lc3NhZ2VIYW5kbGVyTXVsdGlwbGVIYW5kbGVyUmVtb3ZhbCkKK3sKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gc2V0TWF4aW11bVByb2Nlc3NDb3VudDoxXTsKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0gYXV0b3JlbGVhc2Vd
XTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yU2NyaXB0
TWVzc2FnZUhhbmRsZXJNdWx0aXBsZUhhbmRsZXJSZW1vdmFsVGVzdChjb25maWd1cmF0aW9uLmdl
dCgpKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3MiA9IHdlYlZpZXdGb3JTY3Jp
cHRNZXNzYWdlSGFuZGxlck11bHRpcGxlSGFuZGxlclJlbW92YWxUZXN0KGNvbmZpZ3VyYXRpb24u
Z2V0KCkpOworCisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVudENvbnRy
b2xsZXJdIHJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpAImhhbmRsZXJUb1JlbW92
ZSJdOworICAgIFtbW3dlYlZpZXcyIGNvbmZpZ3VyYXRpb25dIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOkAiaGFuZGxlclRvUmVtb3ZlIl07
CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6CisgICAgIEAidHJ5IHsiCisgICAg
ICIgICAgaGFuZGxlclRvUmVtb3ZlLnBvc3RNZXNzYWdlKCdGQUlMJyk7IgorICAgICAifSBjYXRj
aCAoZSkgeyIKKyAgICAgIiAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5oYW5kbGVy
VG9Qb3N0LnBvc3RNZXNzYWdlKCdQQVNTJyk7IgorICAgICAifSIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShAIlBBU1MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
fQorCiAjaWYgIVBMQVRGT1JNKElPUykgLy8gRklYTUU6IGhhbmdzIGluIHRoZSBpT1Mgc2ltdWxh
dG9yCiBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFuZGxlcldp
dGhOYXZpZ2F0aW9uKQogewo=
</data>
<flag name="review"
          id="294118"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>