<?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>106532</bug_id>
          
          <creation_ts>2013-01-09 23:35:11 -0800</creation_ts>
          <short_desc>Converting to unittest2</short_desc>
          <delta_ts>2013-01-10 01:07:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim &apos;mithro&apos; Ansell">mithro</reporter>
          <assigned_to name="Tim &apos;mithro&apos; Ansell">mithro</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804107</commentid>
    <comment_count>0</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 23:35:11 -0800</bug_when>
    <thetext>Converting to unittest2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804108</commentid>
    <comment_count>1</comment_count>
      <attachid>182075</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 23:38:22 -0800</bug_when>
    <thetext>Created attachment 182075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804110</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 23:40:09 -0800</bug_when>
    <thetext>Attachment 182075 did not pass style-queue:

Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:251:  [SCMClassTests.test_run_command_with_pipe] Instance of &apos;SCMClassTests&apos; has no &apos;assertNotEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:302:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:302:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:304:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:304:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:308:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:308:  [SCMTest._shared_test_changed_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:313:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:313:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:330:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:334:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:334:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:345:  [SCMTest._shared_test_changed_files_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:346:  [SCMTest._shared_test_changed_files_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:346:  [SCMTest._shared_test_changed_files_for_revision] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:347:  [SCMTest._shared_test_changed_files_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:347:  [SCMTest._shared_test_changed_files_for_revision] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:365:  [SCMTest._shared_test_revisions_changing_file] Instance of &apos;SCMTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:365:  [SCMTest._shared_test_revisions_changing_file] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:380:  [SCMTest._shared_test_diff_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:381:  [SCMTest._shared_test_diff_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:382:  [SCMTest._shared_test_diff_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:383:  [SCMTest._shared_test_diff_for_revision] Instance of &apos;SCMTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:383:  [SCMTest._shared_test_diff_for_revision] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:412:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:412:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:439:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:439:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:457:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:457:  [SCMTest._shared_test_svn_apply_git_patch] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:466:  [SCMTest._shared_test_add_recursively] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:466:  [SCMTest._shared_test_add_recursively] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:472:  [SCMTest._shared_test_delete_recursively] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:472:  [SCMTest._shared_test_delete_recursively] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:474:  [SCMTest._shared_test_delete_recursively] Instance of &apos;SCMTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:474:  [SCMTest._shared_test_delete_recursively] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:482:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:482:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:483:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:483:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:485:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:485:  [SCMTest._shared_test_delete_recursively_or_not] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:697:  [SVNTest.test_commit_logs] Instance of &apos;SVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:698:  [SVNTest.test_commit_logs] Instance of &apos;SVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:827:  [SVNTest.test_delete] Instance of &apos;SVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:832:  [SVNTest.test_delete_list] Instance of &apos;SVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:833:  [SVNTest.test_delete_list] Instance of &apos;SVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:870:  [SVNTest.do_test_diff_for_file] Instance of &apos;SVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:871:  [SVNTest.do_test_diff_for_file] Instance of &apos;SVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:949:  [GitTest.test_create_patch] Instance of &apos;GitTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1022:  [GitTest.test_rename_files] Instance of &apos;GitTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1023:  [GitTest.test_rename_files] Instance of &apos;GitTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1088:  [GitSVNTest.test_delete_branch] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1099:  [GitSVNTest.test_remote_merge_base] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1100:  [GitSVNTest.test_remote_merge_base] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1167:  [GitSVNTest.test_commit_with_message_working_copy_only] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1195:  [GitSVNTest.test_revisions_changing_files_with_local_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertItemsEqual&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1205:  [GitSVNTest.test_commit_with_message] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1206:  [GitSVNTest.test_commit_with_message] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1216:  [GitSVNTest.test_commit_with_message_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1217:  [GitSVNTest.test_commit_with_message_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1227:  [GitSVNTest.test_commit_with_message_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1228:  [GitSVNTest.test_commit_with_message_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1229:  [GitSVNTest.test_commit_with_message_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1236:  [GitSVNTest.test_commit_with_message_only_local_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1248:  [GitSVNTest.test_commit_with_message_multiple_local_commits_and_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1249:  [GitSVNTest.test_commit_with_message_multiple_local_commits_and_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1265:  [GitSVNTest.test_commit_with_message_multiple_local_commits_always_squash] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1266:  [GitSVNTest.test_commit_with_message_multiple_local_commits_always_squash] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1277:  [GitSVNTest.test_commit_with_message_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1278:  [GitSVNTest.test_commit_with_message_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1290:  [GitSVNTest.test_commit_with_message_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1291:  [GitSVNTest.test_commit_with_message_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1292:  [GitSVNTest.test_commit_with_message_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1323:  [GitSVNTest.test_create_patch_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1324:  [GitSVNTest.test_create_patch_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1330:  [GitSVNTest.test_create_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1331:  [GitSVNTest.test_create_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1332:  [GitSVNTest.test_create_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1341:  [GitSVNTest.test_create_patch_after_merge] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1342:  [GitSVNTest.test_create_patch_after_merge] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1348:  [GitSVNTest.test_create_patch_with_changed_files] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1362:  [GitSVNTest.test_create_patch_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1363:  [GitSVNTest.test_create_patch_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1369:  [GitSVNTest.test_create_patch_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1370:  [GitSVNTest.test_create_patch_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1371:  [GitSVNTest.test_create_patch_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1377:  [GitSVNTest.test_create_patch_working_copy_only] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1378:  [GitSVNTest.test_create_patch_working_copy_only] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1384:  [GitSVNTest.test_create_patch_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1385:  [GitSVNTest.test_create_patch_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1392:  [GitSVNTest.test_create_patch_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1393:  [GitSVNTest.test_create_patch_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1394:  [GitSVNTest.test_create_patch_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1405:  [GitSVNTest.test_create_binary_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1406:  [GitSVNTest.test_create_binary_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1419:  [GitSVNTest.test_create_binary_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1420:  [GitSVNTest.test_create_binary_patch] Instance of &apos;GitSVNTest&apos; has no &apos;assertRegexpMatches&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1426:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1427:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1431:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1432:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1436:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1437:  [GitSVNTest.test_changed_files_local_plus_working_copy] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1443:  [GitSVNTest.test_changed_files_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1444:  [GitSVNTest.test_changed_files_git_commit] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1450:  [GitSVNTest.test_changed_files_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1451:  [GitSVNTest.test_changed_files_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1452:  [GitSVNTest.test_changed_files_git_commit_range] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1458:  [GitSVNTest.test_changed_files_working_copy_only] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1459:  [GitSVNTest.test_changed_files_working_copy_only] Instance of &apos;GitSVNTestFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1465:  [GitSVNTest.test_changed_files_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1466:  [GitSVNTest.test_changed_files_multiple_local_commits] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1473:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1474:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1475:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1482:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1483:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1484:  [GitSVNTest.test_changed_files_not_synced] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1502:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1503:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1504:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1508:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertNotIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1509:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1510:  [GitSVNTest.test_changed_files_upstream] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1530:  [GitSVNTest.test_delete] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1535:  [GitSVNTest.test_delete_list] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1536:  [GitSVNTest.test_delete_list] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1571:  [GitSVNTest.test_diff_for_file] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1572:  [GitSVNTest.test_diff_for_file] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1577:  [GitSVNTest.test_diff_for_file] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:1578:  [GitSVNTest.test_diff_for_file] Instance of &apos;GitSVNTest&apos; has no &apos;assertIn&apos; member  [pylint/E1101] [5]
Total errors found: 132 in 3 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>804111</commentid>
    <comment_count>3</comment_count>
      <attachid>182075</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-09 23:40:18 -0800</bug_when>
    <thetext>Comment on attachment 182075
Patch

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

This is fantastic, btw.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:43
&gt; +import unittest2 as unittest

Does this need more specific paths?  I thought you had to use thirdparty.autoinstalled.unittest2 here?  I think you may have unittest2 installed on your system?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804112</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-09 23:41:07 -0800</bug_when>
    <thetext>Unfortunately the EWS bots don&apos;t currently run the python tests (I can explain why/show you teh bugs if you&apos;d like).  So I&apos;ll just have to believe you that this passes. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804127</commentid>
    <comment_count>5</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-10 00:38:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 182075 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182075&amp;action=review
&gt; 
&gt; This is fantastic, btw.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:43
&gt; &gt; +import unittest2 as unittest
&gt; 
&gt; Does this need more specific paths?  I thought you had to use thirdparty.autoinstalled.unittest2 here?  I think you may have unittest2 installed on your system?

I&apos;m pretty sure that webkitpy/thirdparty/autoinstalled is added to the sys.path

I check that otherwise it&apos;s not installed on my system.

In [1]: import unittest2
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/fast/chrome/src/third_party/WebKit/Tools/Scripts/&lt;ipython-input-1-1b6ed0389b61&gt; in &lt;module&gt;()
----&gt; 1 import unittest2

ImportError: No module named unittest2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804129</commentid>
    <comment_count>6</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-10 00:39:47 -0800</bug_when>
    <thetext>Before:
Ran 1733 tests in 38.385s
FAILED (failures=1, errors=22)

After:
Ran 1733 tests in 42.298s                    
FAILED (failures=0, errors=22)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804141</commentid>
    <comment_count>7</comment_count>
      <attachid>182075</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-10 00:59:58 -0800</bug_when>
    <thetext>Comment on attachment 182075
Patch

Who knew!  LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804152</commentid>
    <comment_count>8</comment_count>
      <attachid>182075</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 01:07:50 -0800</bug_when>
    <thetext>Comment on attachment 182075
Patch

Clearing flags on attachment: 182075

Committed r139294: &lt;http://trac.webkit.org/changeset/139294&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804153</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 01:07:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182075</attachid>
            <date>2013-01-09 23:38:22 -0800</date>
            <delta_ts>2013-01-10 01:07:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106532-20130110183524.patch</filename>
            <type>text/plain</type>
            <size>33377</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzZlM2FkOTkyNTVjYWE5OGI5ZmJmYzZkYTM2ZmEwY2Mz
NWY3OTM1YS4uNGJiNjk4NTMwZjcxZGQwNWExNzViZTZkYTA2YWFiYTg5NWI4MDc1MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEzLTAxLTA5ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQ29udmVydGluZyB0byB1bml0dGVzdDIgc28gd2UgY2FuIHVzZSBhc3NlcnRJ
dGVtc0VxdWFsLCBtYWtpbmcgdGVzdHMKKyAgICAgICAgbm90IGRlcGVuZGVudCBvbiBvcmRlciBv
ZiBpdGVtcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNjUzMgorCisgICAgICAgIEJlZm9yZToKKyAgICAgICAgUmFuIDE3MzMgdGVzdHMgaW4gMzgu
Mzg1cworICAgICAgICBGQUlMRUQgKGZhaWx1cmVzPTEsIGVycm9ycz0yMikKKworICAgICAgICBB
ZnRlcjoKKyAgICAgICAgUmFuIDE3MzMgdGVzdHMgaW4gMzIuMjk4cworICAgICAgICBGQUlMRUQg
KGZhaWx1cmVzPTAsIGVycm9ycz0yMikKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9z
Y21fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19f
aW5pdF9fLnB5OgorICAgICAgICAoQXV0b2luc3RhbGxJbXBvcnRIb29rLl9pbnN0YWxsX3VuaXR0
ZXN0Mik6CisKIDIwMTMtMDEtMDIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQWRkIGNocm9taXVtLm9yZyBlbWFpbCBhZGRyZXNzIGZvciBTdGV2ZSBC
bG9jay4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zY21fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CmluZGV4IDE0ZTlmZDM4NDI3ODcxMjhkNGNiZDBmM2Fm
YjJlMWNjMTI2ZTJjZjAuLmFkNjY0YTdhZDI4ZmFkMDg2NDIwNWZmZmY2YzEyNzZjNTg0N2RhYzgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9z
Y21fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL3NjbV91bml0dGVzdC5weQpAQCAtNDAsNyArNDAsNyBAQCBpbXBvcnQgc3lzCiBpbXBv
cnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1wb3J0IHVuaXR0
ZXN0CitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliCiBpbXBvcnQg
c2h1dGlsCiAKQEAgLTUxLDEyICs1MSwxMiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVn
emlsbGEgaW1wb3J0IEF0dGFjaG1lbnQgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlw
dEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2Nr
IGltcG9ydCBNb2NrRXhlY3V0aXZlCi0KIGZyb20gLmdpdCBpbXBvcnQgR2l0LCBBbWJpZ3VvdXND
b21taXRFcnJvcgogZnJvbSAuZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogZnJv
bSAuc2NtIGltcG9ydCBTQ00sIENoZWNrb3V0TmVlZHNVcGRhdGUsIGNvbW1pdF9lcnJvcl9oYW5k
bGVyLCBBdXRoZW50aWNhdGlvbkVycm9yCiBmcm9tIC5zdm4gaW1wb3J0IFNWTgogCisKICMgV2Ug
Y2FjaGUgdGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4g
Zm9yIGVhY2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBX
ZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhp
cyBjYWNoZWQgcmVwbyBvbiBleGl0KDMpLgogIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBt
aWdyYXRlIHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9k
dWxlLXNwZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCkBAIC0yNDgsNyArMjQ4
LDcgQEAgY2xhc3MgU0NNQ2xhc3NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGNv
bW1hbmRfcmV0dXJuc19ub25femVybyA9IFsnL2Jpbi9zaCcsICctLWludmFsaWQtb3B0aW9uJ10K
ICAgICAgICAgIyBUZXN0IHdoZW4gdGhlIGlucHV0IHBpcGUgcHJvY2VzcyBmYWlscy4KICAgICAg
ICAgaW5wdXRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZF9yZXR1cm5zX25vbl96
ZXJvLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c2VsZi5kZXZfbnVsbCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGlucHV0X3Byb2Nlc3MucG9sbCgpICE9IDApCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoaW5wdXRfcHJvY2Vzcy5wb2xsKCksIDApCiAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBydW5fY29tbWFuZCwgWydncmVwJywgJ2JhciddLCBp
bnB1dD1pbnB1dF9wcm9jZXNzLnN0ZG91dCkKIAogICAgICAgICAjIFRlc3Qgd2hlbiB0aGUgcnVu
X2NvbW1hbmQgcHJvY2VzcyBmYWlscy4KQEAgLTI5OSwxOCArMjk5LDE4IEBAIGNsYXNzIFNDTVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIF9zaGFyZWRfdGVzdF9jaGFuZ2VkX2Zp
bGVzKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgidGVzdF9maWxlIiwg
ImNoYW5nZWQgY29udGVudCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uY2hh
bmdlZF9maWxlcygpLCBbInRlc3RfZmlsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1
YWwoc2VsZi5zY20uY2hhbmdlZF9maWxlcygpLCBbInRlc3RfZmlsZSJdKQogICAgICAgICB3cml0
ZV9pbnRvX2ZpbGVfYXRfcGF0aCgidGVzdF9kaXIvdGVzdF9maWxlMyIsICJuZXcgc3R1ZmYiKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKSwgWyJ0ZXN0
X2Rpci90ZXN0X2ZpbGUzIiwgInRlc3RfZmlsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1z
RXF1YWwoc2VsZi5zY20uY2hhbmdlZF9maWxlcygpLCBbInRlc3RfZGlyL3Rlc3RfZmlsZTMiLCAi
dGVzdF9maWxlIl0pCiAgICAgICAgIG9sZF9jd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5j
aGRpcigidGVzdF9kaXIiKQogICAgICAgICAjIFZhbGlkYXRlIHRoYXQgY2hhbmdlZF9maWxlcyBk
b2VzIG5vdCBjaGFuZ2Ugd2l0aCBvdXIgY3dkLCBzZWUgYnVnIDM3MDE1LgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKSwgWyJ0ZXN0X2Rpci90ZXN0X2Zp
bGUzIiwgInRlc3RfZmlsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoc2VsZi5z
Y20uY2hhbmdlZF9maWxlcygpLCBbInRlc3RfZGlyL3Rlc3RfZmlsZTMiLCAidGVzdF9maWxlIl0p
CiAgICAgICAgIG9zLmNoZGlyKG9sZF9jd2QpCiAKICAgICBkZWYgX3NoYXJlZF90ZXN0X2FkZGVk
X2ZpbGVzKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgidGVzdF9maWxl
IiwgImNoYW5nZWQgY29udGVudCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20u
YWRkZWRfZmlsZXMoKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChzZWxmLnNj
bS5hZGRlZF9maWxlcygpLCBbXSkKIAogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgi
YWRkZWRfZmlsZSIsICJuZXcgc3R1ZmYiKQogICAgICAgICBzZWxmLnNjbS5hZGQoImFkZGVkX2Zp
bGUiKQpAQCAtMzI3LDExICszMjcsMTEgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIGFkZGVkX2ZpbGVzID0gc2VsZi5zY20uYWRkZWRfZmlsZXMoKQogICAgICAg
ICBpZiAiYWRkZWRfZGlyIiBpbiBhZGRlZF9maWxlczoKICAgICAgICAgICAgIGFkZGVkX2ZpbGVz
LnJlbW92ZSgiYWRkZWRfZGlyIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRlZF9maWxl
cywgWyJhZGRlZF9kaXIvYWRkZWRfZmlsZTIiLCAiYWRkZWRfZmlsZSIsICJhZGRlZF9maWxlMyIs
ICJhZGRlZF9maWxlNCJdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoYWRkZWRfZmls
ZXMsIFsiYWRkZWRfZGlyL2FkZGVkX2ZpbGUyIiwgImFkZGVkX2ZpbGUiLCAiYWRkZWRfZmlsZTMi
LCAiYWRkZWRfZmlsZTQiXSkKIAogICAgICAgICAjIFRlc3QgYWxzbyB0byBtYWtlIHN1cmUgY2xl
YW5fd29ya2luZ19kaXJlY3RvcnkgcmVtb3ZlcyBhZGRlZCBmaWxlcwogICAgICAgICBzZWxmLnNj
bS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5zY20uYWRkZWRfZmlsZXMoKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChz
ZWxmLnNjbS5hZGRlZF9maWxlcygpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5w
YXRoLmV4aXN0cygiYWRkZWRfZmlsZSIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBh
dGguZXhpc3RzKCJhZGRlZF9maWxlMyIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBh
dGguZXhpc3RzKCJhZGRlZF9maWxlNCIpKQpAQCAtMzQyLDkgKzM0Miw5IEBAIGNsYXNzIFNDTVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5zY20u
Y2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oMykKICAgICAgICAgaWYgInRlc3RfZGlyIiBpbiBj
aGFuZ2VkX2ZpbGVzOgogICAgICAgICAgICAgY2hhbmdlZF9maWxlcy5yZW1vdmUoInRlc3RfZGly
IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2VkX2ZpbGVzLCBbInRlc3RfZGlyL3Rl
c3RfZmlsZTMiLCAidGVzdF9maWxlIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVk
KHNlbGYuc2NtLmNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9uKDQpKSwgc29ydGVkKFsidGVzdF9m
aWxlIiwgInRlc3RfZmlsZTIiXSkpICAjIEdpdCBhbmQgU1ZOIHJldHVybiBkaWZmZXJlbnQgb3Jk
ZXJzLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLmNoYW5nZWRfZmlsZXNfZm9y
X3JldmlzaW9uKDIpLCBbInRlc3RfZmlsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1
YWwoY2hhbmdlZF9maWxlcywgWyJ0ZXN0X2Rpci90ZXN0X2ZpbGUzIiwgInRlc3RfZmlsZSJdKQor
ICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoc2VsZi5zY20uY2hhbmdlZF9maWxlc19mb3Jf
cmV2aXNpb24oNCksIFsidGVzdF9maWxlIiwgInRlc3RfZmlsZTIiXSkgICMgR2l0IGFuZCBTVk4g
cmV0dXJuIGRpZmZlcmVudCBvcmRlcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChz
ZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbigyKSwgWyJ0ZXN0X2ZpbGUiXSkKIAog
ICAgIGRlZiBfc2hhcmVkX3Rlc3RfY29udGVudHNfYXRfcmV2aXNpb24oc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uY29udGVudHNfYXRfcmV2aXNpb24oInRlc3RfZmls
ZSIsIDMpLCAidGVzdDF0ZXN0MiIpCkBAIC0zNjIsNyArMzYyLDcgQEAgY2xhc3MgU0NNVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9y
LCBzZWxmLnNjbS5jb250ZW50c19hdF9yZXZpc2lvbiwgImRvZXNfbm90X2V4aXN0IiwgMikKIAog
ICAgIGRlZiBfc2hhcmVkX3Rlc3RfcmV2aXNpb25zX2NoYW5naW5nX2ZpbGUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20ucmV2aXNpb25zX2NoYW5naW5nX2ZpbGUoInRl
c3RfZmlsZSIpLCBbNSwgNCwgMywgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChz
ZWxmLnNjbS5yZXZpc2lvbnNfY2hhbmdpbmdfZmlsZSgidGVzdF9maWxlIiksIFs1LCA0LCAzLCAy
XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNlbGYuc2NtLnJldmlz
aW9uc19jaGFuZ2luZ19maWxlLCAibm9uX2V4aXN0ZW50X2ZpbGUiKQogCiAgICAgZGVmIF9zaGFy
ZWRfdGVzdF9jb21taXR0ZXJfZW1haWxfZm9yX3JldmlzaW9uKHNlbGYpOgpAQCAtMzc3LDEwICsz
NzcsMTAgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9zaGFy
ZWRfdGVzdF9kaWZmX2Zvcl9yZXZpc2lvbihzZWxmKToKICAgICAgICAgIyBQYXRjaCBmb3JtYXRz
IGFyZSBzbGlnaHRseSBkaWZmZXJlbnQgYmV0d2VlbiBzdm4gYW5kIGdpdCwgc28ganVzdCByZWdl
eHAgZm9yIHRoaW5ncyB3ZSBrbm93IHNob3VsZCBiZSB0aGVyZS4KICAgICAgICAgcjNfcGF0Y2gg
PSBzZWxmLnNjbS5kaWZmX2Zvcl9yZXZpc2lvbig0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKCd0ZXN0MycsIHIzX3BhdGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
ZS5zZWFyY2goJ3Rlc3Q0JywgcjNfcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKCd0ZXN0MicsIHIzX3BhdGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaCgndGVzdDInLCBzZWxmLnNjbS5kaWZmX2Zvcl9yZXZpc2lvbigzKSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhyM19wYXRjaCwgJ3Rlc3QzJykKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RSZWdleHBNYXRjaGVzKHIzX3BhdGNoLCAndGVzdDQnKQorICAgICAgICBzZWxmLmFz
c2VydFJlZ2V4cE1hdGNoZXMocjNfcGF0Y2gsICd0ZXN0MicpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmVnZXhwTWF0Y2hlcyhzZWxmLnNjbS5kaWZmX2Zvcl9yZXZpc2lvbigzKSwgJ3Rlc3QyJykKIAog
ICAgIGRlZiBfc2hhcmVkX3Rlc3Rfc3ZuX2FwcGx5X2dpdF9wYXRjaChzZWxmKToKICAgICAgICAg
c2VsZi5fc2V0dXBfd2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNlbGYuc2NtKQpAQCAtNDA5
LDcgKzQwOSw3IEBAIEhjbVY/ZDAwMDAxCiAgICAgICAgIGFkZGVkID0gcmVhZF9mcm9tX3BhdGgo
J2ZpenpidXp6Ny5naWYnLCBlbmNvZGluZz1Ob25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUxMiwgbGVuKGFkZGVkKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFkZGVkLnN0YXJ0c3dp
dGgoJ0dJRjg5YScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZpenpidXp6Ny5naWYnIGlu
IHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZml6emJ1
eno3LmdpZicsIHNlbGYuc2NtLmNoYW5nZWRfZmlsZXMoKSkKIAogICAgICAgICAjIFRoZSBmaWxl
IGFscmVhZHkgZXhpc3RzLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwg
c2VsZi5jaGVja291dC5hcHBseV9wYXRjaCwgc2VsZi5fY3JlYXRlX3BhdGNoKGdpdF9iaW5hcnlf
YWRkaXRpb24pKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHB0VWwtWkc8JWF+I0x3a0lXdiZxIUtTQ0g3
dFE4Y0pEaXcrfEdWP01OKVJqWTUwUlRiLXh2VCZICiAgICAgICAgIHNlbGYuY2hlY2tvdXQuYXBw
bHlfcGF0Y2goc2VsZi5fY3JlYXRlX3BhdGNoKGdpdF9iaW5hcnlfbW9kaWZpY2F0aW9uKSkKICAg
ICAgICAgbW9kaWZpZWQgPSByZWFkX2Zyb21fcGF0aCgnZml6emJ1eno3LmdpZicsIGVuY29kaW5n
PU5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvb2JhclxuJywgbW9kaWZpZWQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZml6emJ1eno3LmdpZicgaW4gc2VsZi5zY20uY2hhbmdl
ZF9maWxlcygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdmaXp6YnV6ejcuZ2lmJywgc2VsZi5z
Y20uY2hhbmdlZF9maWxlcygpKQogCiAgICAgICAgICMgQXBwbHlpbmcgdGhlIHNhbWUgbW9kaWZp
Y2F0aW9uIHNob3VsZCBmYWlsLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJv
ciwgc2VsZi5jaGVja291dC5hcHBseV9wYXRjaCwgc2VsZi5fY3JlYXRlX3BhdGNoKGdpdF9iaW5h
cnlfbW9kaWZpY2F0aW9uKSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPY21ZZXgmcmVEJDtzTzgqRjlM
KUIKICIiIgogICAgICAgICBzZWxmLmNoZWNrb3V0LmFwcGx5X3BhdGNoKHNlbGYuX2NyZWF0ZV9w
YXRjaChnaXRfYmluYXJ5X2RlbGV0aW9uKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5w
YXRoLmV4aXN0cygnZml6emJ1eno3LmdpZicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdm
aXp6YnV6ejcuZ2lmJyBpbiBzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0Tm90SW4oJ2ZpenpidXp6Ny5naWYnLCBzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKCkpCiAK
ICAgICAgICAgIyBDYW5ub3QgZGVsZXRlIGFnYWluLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTY3JpcHRFcnJvciwgc2VsZi5jaGVja291dC5hcHBseV9wYXRjaCwgc2VsZi5fY3JlYXRlX3Bh
dGNoKGdpdF9iaW5hcnlfZGVsZXRpb24pKQpAQCAtNDYzLDE1ICs0NjMsMTUgQEAgT2NtWWV4JnJl
RCQ7c084KkY5TClCCiAgICAgICAgIG9zLm1rZGlyKCJhZGRlZF9kaXIiKQogICAgICAgICB3cml0
ZV9pbnRvX2ZpbGVfYXRfcGF0aCgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiLCAibmV3IHN0dWZmIikK
ICAgICAgICAgc2VsZi5zY20uYWRkKCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiIGluIHNlbGYuc2NtLmFkZGVkX2Zp
bGVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImFkZGVkX2Rpci9hZGRlZF9maWxlIiwgc2Vs
Zi5zY20uYWRkZWRfZmlsZXMoKSkKIAogICAgIGRlZiBfc2hhcmVkX3Rlc3RfZGVsZXRlX3JlY3Vy
c2l2ZWx5KHNlbGYpOgogICAgICAgICBvcy5ta2RpcigiYWRkZWRfZGlyIikKICAgICAgICAgd3Jp
dGVfaW50b19maWxlX2F0X3BhdGgoImFkZGVkX2Rpci9hZGRlZF9maWxlIiwgIm5ldyBzdHVmZiIp
CiAgICAgICAgIHNlbGYuc2NtLmFkZCgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoImFkZGVkX2Rpci9hZGRlZF9maWxlIiBpbiBzZWxmLnNjbS5hZGRlZF9m
aWxlcygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIsIHNl
bGYuc2NtLmFkZGVkX2ZpbGVzKCkpCiAgICAgICAgIHNlbGYuc2NtLmRlbGV0ZSgiYWRkZWRfZGly
L2FkZGVkX2ZpbGUiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCJhZGRlZF9kaXIiIGluIHNl
bGYuc2NtLmFkZGVkX2ZpbGVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImFkZGVkX2Rp
ciIsIHNlbGYuc2NtLmFkZGVkX2ZpbGVzKCkpCiAKICAgICBkZWYgX3NoYXJlZF90ZXN0X2RlbGV0
ZV9yZWN1cnNpdmVseV9vcl9ub3Qoc2VsZik6CiAgICAgICAgIG9zLm1rZGlyKCJhZGRlZF9kaXIi
KQpAQCAtNDc5LDEwICs0NzksMTAgQEAgT2NtWWV4JnJlRCQ7c084KkY5TClCCiAgICAgICAgIHdy
aXRlX2ludG9fZmlsZV9hdF9wYXRoKCJhZGRlZF9kaXIvYW5vdGhlcl9hZGRlZF9maWxlIiwgIm1v
cmUgbmV3IHN0dWZmIikKICAgICAgICAgc2VsZi5zY20uYWRkKCJhZGRlZF9kaXIvYWRkZWRfZmls
ZSIpCiAgICAgICAgIHNlbGYuc2NtLmFkZCgiYWRkZWRfZGlyL2Fub3RoZXJfYWRkZWRfZmlsZSIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiIGluIHNlbGYu
c2NtLmFkZGVkX2ZpbGVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiYWRkZWRfZGlyL2Fu
b3RoZXJfYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJbigiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiLCBzZWxmLnNjbS5hZGRlZF9maWxlcygp
KQorICAgICAgICBzZWxmLmFzc2VydEluKCJhZGRlZF9kaXIvYW5vdGhlcl9hZGRlZF9maWxlIiwg
c2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKICAgICAgICAgc2VsZi5zY20uZGVsZXRlKCJhZGRlZF9k
aXIvYWRkZWRfZmlsZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiYWRkZWRfZGlyL2Fub3Ro
ZXJfYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRJbigiYWRkZWRfZGlyL2Fub3RoZXJfYWRkZWRfZmlsZSIsIHNlbGYuc2NtLmFkZGVkX2Zp
bGVzKCkpCiAKICAgICBkZWYgX3NoYXJlZF90ZXN0X2V4aXN0cyhzZWxmLCBzY20sIGNvbW1pdF9m
dW5jdGlvbik6CiAgICAgICAgIG9zLmNoZGlyKHNjbS5jaGVja291dF9yb290KQpAQCAtNjk0LDgg
KzY5NCw4IEBAIFExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBR
REpBPT0KIAogICAgIGRlZiB0ZXN0X2NvbW1pdF9sb2dzKHNlbGYpOgogICAgICAgICAjIENvbW1p
dHMgaGF2ZSBkYXRlcyBhbmQgdXNlcm5hbWVzIGluIHRoZW0sIHNvIHdlIGNhbid0IGp1c3QgZGly
ZWN0IGNvbXBhcmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ2ZvdXJ0aCBj
b21taXQnLCBzZWxmLnNjbS5sYXN0X3N2bl9jb21taXRfbG9nKCkpKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKCdzZWNvbmQgY29tbWl0Jywgc2VsZi5zY20uc3ZuX2NvbW1pdF9s
b2coMykpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMoc2VsZi5zY20ubGFzdF9z
dm5fY29tbWl0X2xvZygpLCAnZm91cnRoIGNvbW1pdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVn
ZXhwTWF0Y2hlcyhzZWxmLnNjbS5zdm5fY29tbWl0X2xvZygzKSwgJ3NlY29uZCBjb21taXQnKQog
CiAgICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1l
PU5vbmUpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21v
cmUgdGVzdCBjb250ZW50JykKQEAgLTgyNCwxMyArODI0LDEzIEBAIEVORAogICAgIGRlZiB0ZXN0
X2RlbGV0ZShzZWxmKToKICAgICAgICAgb3MuY2hkaXIoc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkK
ICAgICAgICAgc2VsZi5zY20uZGVsZXRlKCJ0ZXN0X2ZpbGUiKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoInRlc3RfZmlsZSIgaW4gc2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQorICAgICAgICBz
ZWxmLmFzc2VydEluKCJ0ZXN0X2ZpbGUiLCBzZWxmLnNjbS5kZWxldGVkX2ZpbGVzKCkpCiAKICAg
ICBkZWYgdGVzdF9kZWxldGVfbGlzdChzZWxmKToKICAgICAgICAgb3MuY2hkaXIoc2VsZi5zdm5f
Y2hlY2tvdXRfcGF0aCkKICAgICAgICAgc2VsZi5zY20uZGVsZXRlX2xpc3QoWyJ0ZXN0X2ZpbGUi
LCAidGVzdF9maWxlMiJdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoInRlc3RfZmlsZSIgaW4g
c2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoInRlc3Rf
ZmlsZTIiIGluIHNlbGYuc2NtLmRlbGV0ZWRfZmlsZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJ
bigidGVzdF9maWxlIiwgc2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQorICAgICAgICBzZWxmLmFz
c2VydEluKCJ0ZXN0X2ZpbGUyIiwgc2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQogCiAgICAgZGVm
IHRlc3RfZGVsZXRlX3JlY3Vyc2l2ZWx5KHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVz
dF9kZWxldGVfcmVjdXJzaXZlbHkoKQpAQCAtODY3LDggKzg2Nyw4IEBAIEVORAogCiAgICAgICAg
IHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCJ0ZXN0X2ZpbGUiLCAiY2hhbmdlZCBjb250ZW50IikK
ICAgICAgICAgZGlmZiA9IHNlbGYuc2NtLmRpZmZfZm9yX2ZpbGUoJ3Rlc3RfZmlsZScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiLXNvbWUgY29udGVudCIgaW4gZGlmZikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCIrY2hhbmdlZCBjb250ZW50IiBpbiBkaWZmKQorICAgICAgICBzZWxmLmFz
c2VydEluKCItc29tZSBjb250ZW50IiwgZGlmZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiK2No
YW5nZWQgY29udGVudCIsIGRpZmYpCiAKICAgICBkZWYgY2xlYW5fYm9ndXNfZGlyKHNlbGYpOgog
ICAgICAgICBzZWxmLmJvZ3VzX2RpciA9IHNlbGYuc2NtLl9ib2d1c19kaXJfbmFtZSgpCkBAIC05
NDYsNyArOTQ2LDcgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2NtLmNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgnbWVzc2FnZScpCiAKICAgICAgICAgcGF0Y2ggPSBzY20u
Y3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocidTdWJ2
ZXJzaW9uIFJldmlzaW9uOicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RSZWdleHBN
YXRjaGVzKHBhdGNoLCByJ1N1YnZlcnNpb24gUmV2aXNpb246JykKIAogICAgIGRlZiB0ZXN0X29y
ZGVyZmlsZShzZWxmKToKICAgICAgICAgb3MubWtkaXIoIlRvb2xzIikKQEAgLTEwMTksOCArMTAx
OSw4IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNjbS5jb21taXRfbG9jYWxs
eV93aXRoX21lc3NhZ2UoJ21lc3NhZ2UnKQogCiAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9w
YXRjaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIncmVuYW1lIGZyb20g
JywgcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3JlbmFtZSB0
byAnLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyhwYXRjaCwg
cidyZW5hbWUgZnJvbSAnKQorICAgICAgICBzZWxmLmFzc2VydE5vdFJlZ2V4cE1hdGNoZXMocGF0
Y2gsIHIncmVuYW1lIHRvICcpCiAKIAogY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKQEAgLTEw
ODUsNyArMTA4NSw3IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHJ1bl9j
b21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ2JhciddKQogICAgICAgICBzZWxmLnNj
bS5kZWxldGVfYnJhbmNoKG5ld19icmFuY2gpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
ZS5zZWFyY2gocidmb28nLCBydW5fY29tbWFuZChbJ2dpdCcsICdicmFuY2gnXSkpKQorICAgICAg
ICBzZWxmLmFzc2VydE5vdFJlZ2V4cE1hdGNoZXMocnVuX2NvbW1hbmQoWydnaXQnLCAnYnJhbmNo
J10pLCByJ2ZvbycpCiAKICAgICBkZWYgdGVzdF9yZW1vdGVfbWVyZ2VfYmFzZShzZWxmKToKICAg
ICAgICAgIyBEaWZmIHRvIG1lcmdlLWJhc2Ugc2hvdWxkIGluY2x1ZGUgd29ya2luZy1jb3B5IGNo
YW5nZXMsCkBAIC0xMDk2LDggKzEwOTYsOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgog
ICAgICAgICBkaWZmX3RvX2NvbW1vbl9iYXNlID0gX2dpdF9kaWZmKHNlbGYuc2NtLnJlbW90ZV9i
cmFuY2hfcmVmKCkgKyAnLi4nKQogICAgICAgICBkaWZmX3RvX21lcmdlX2Jhc2UgPSBfZ2l0X2Rp
ZmYoc2VsZi5zY20ucmVtb3RlX21lcmdlX2Jhc2UoKSkKIAotICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHJlLnNlYXJjaChyJ2ZvbycsIGRpZmZfdG9fY29tbW9uX2Jhc2UpKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHInZm9vJywgZGlmZl90b19tZXJnZV9iYXNlKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RSZWdleHBNYXRjaGVzKGRpZmZfdG9fY29tbW9uX2Jhc2UsIHInZm9v
JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKGRpZmZfdG9fbWVyZ2VfYmFzZSwg
cidmb28nKQogCiAgICAgZGVmIHRlc3RfcmViYXNlX2luX3Byb2dyZXNzKHNlbGYpOgogICAgICAg
ICBzdm5fdGVzdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgsICd0
ZXN0X2ZpbGUnKQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0
KToKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCksICc2JykKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5k
KFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9n
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHN2bl9sb2csIHIndGVzdF9maWxl
X2NvbW1pdDEnKQogCiAgICAgZGVmIF9sb2NhbF9jb21taXQoc2VsZiwgZmlsZW5hbWUsIGNvbnRl
bnRzLCBtZXNzYWdlKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoZmlsZW5hbWUs
IGNvbnRlbnRzKQpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0
KToKIAogICAgIGRlZiB0ZXN0X3JldmlzaW9uc19jaGFuZ2luZ19maWxlc193aXRoX2xvY2FsX2Nv
bW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20ucmV2aXNpb25zX2NoYW5naW5nX2ZpbGUoJ3Rlc3RfZmls
ZV9jb21taXQxJyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoc2VsZi5zY20u
cmV2aXNpb25zX2NoYW5naW5nX2ZpbGUoJ3Rlc3RfZmlsZV9jb21taXQxJyksIFtdKQogCiAgICAg
ZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKQEAgLTEyMDIsOCArMTIwMiw4
IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAg
ICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGlt
aXQ9MScsICctLXZlcmJvc2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFz
c2VydFJlZ2V4cE1hdGNoZXMoc3ZuX2xvZywgcid0ZXN0X2ZpbGVfY29tbWl0MicpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rlc3RfZmlsZV9jb21taXQxJykK
IAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdChzZWxmKToKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQpAQCAtMTIxMyw4ICsxMjEzLDggQEAgY2xh
c3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAKICAgICAgICAg
c3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywg
Jy0tdmVyYm9zZSddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2VydFJl
Z2V4cE1hdGNoZXMoc3ZuX2xvZywgcid0ZXN0X2ZpbGVfY29tbWl0MScpCisgICAgICAgIHNlbGYu
YXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rlc3RfZmlsZV9jb21taXQyJykKIAog
ICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdF9yYW5nZShzZWxmKToK
ICAgICAgICAgc2VsZi5fdGhyZWVfbG9jYWxfY29tbWl0cygpCkBAIC0xMjI0LDE2ICsxMjI0LDE2
IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQogCiAg
ICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGlt
aXQ9MScsICctLXZlcmJvc2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MCcsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rlc3RfZmlsZV9jb21t
aXQwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHN2bl9sb2csIHIndGVzdF9m
aWxlX2NvbW1pdDEnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMoc3ZuX2xvZywg
cid0ZXN0X2ZpbGVfY29tbWl0MicpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
X29ubHlfbG9jYWxfY29tbWl0KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0
KCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKICAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhl
ciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdz
dm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rlc3RfZmlsZV9jb21taXQxJykK
IAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0
c19hbmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0
cygpCkBAIC0xMjQ1LDggKzEyNDUsOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0
KGNvbW1pdF90ZXh0KSwgJzYnKQogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5f
bG9nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHN2bl9sb2csIHIndGVzdF9m
aWxlX2NvbW1pdDInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMoc3ZuX2xvZywg
cid0ZXN0X2ZpbGVfY29tbWl0MScpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
X2dpdF9jb21taXRfYW5kX3dvcmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQpAQCAtMTI2Miw4ICsxMjYyLDggQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01U
ZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29t
bWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21t
YW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5f
bG9nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhzdm5fbG9n
LCByJ3Rlc3RfZmlsZV9jb21taXQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVz
KHN2bl9sb2csIHIndGVzdF9maWxlX2NvbW1pdDEnKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90
d29fbG9jYWxfY29tbWl0cygpCkBAIC0xMjc0LDggKzEyNzQsOCBAQCBjbGFzcyBHaXRTVk5UZXN0
KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0Mics
IHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDEnLCBzdm5fbG9nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHN2
bl9sb2csIHIndGVzdF9maWxlX2NvbW1pdDInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1h
dGNoZXMoc3ZuX2xvZywgcid0ZXN0X2ZpbGVfY29tbWl0MScpCiAKICAgICBkZWYgdGVzdF9jb21t
aXRfd2l0aF9tZXNzYWdlX25vdF9zeW5jZWQoc2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsn
Z2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCkBAIC0xMjg3
LDkgKzEyODcsOSBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cmUuc2VhcmNoKHIndGVzdF9maWxlMicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rlc3RfZmlsZTIn
KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMoc3ZuX2xvZywgcid0ZXN0X2ZpbGVf
Y29tbWl0MicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhzdm5fbG9nLCByJ3Rl
c3RfZmlsZV9jb21taXQxJykKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90
X3N5bmNlZF93aXRoX2NvbmZsaWN0KHNlbGYpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcs
ICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQpAQCAtMTMyMCwxNiAr
MTMyMCwxNiBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLl9vbmVf
bG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQogICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogICAgICAgICBwYXRjaCA9
IHNjbS5jcmVhdGVfcGF0Y2goKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
dGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
ZWdleHBNYXRjaGVzKHBhdGNoLCByJ3Rlc3RfZmlsZV9jb21taXQxJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSZWdleHBNYXRjaGVzKHBhdGNoLCByJ3Rlc3RfZmlsZV9jb21taXQyJykKIAogICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1p
dF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRl
X3BhdGNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9j
b21taXQyJywgcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocidTdWJ2ZXJzaW9uIFJldmlzaW9uOiA1JywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2Vy
dFJlZ2V4cE1hdGNoZXMocGF0Y2gsIHIndGVzdF9maWxlX2NvbW1pdDInKQorICAgICAgICBzZWxm
LmFzc2VydFJlZ2V4cE1hdGNoZXMocGF0Y2gsIHIndGVzdF9maWxlX2NvbW1pdDEnKQorICAgICAg
ICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMocGF0Y2gsIHInU3VidmVyc2lvbiBSZXZpc2lvbjog
NScpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfYWZ0ZXJfbWVyZ2Uoc2VsZik6CiAgICAg
ICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ2R1bW15LWJyYW5jaCcs
ICd0cnVua34zJ10pCkBAIC0xMzM4LDE0ICsxMzM4LDE0IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NN
VGVzdCk6CiAKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tv
dXRfcGF0aCkKICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHInU3VidmVyc2lvbiBSZXZpc2lvbjogNScs
IHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHBhdGNoLCByJ3Rlc3Rf
ZmlsZV9jb21taXQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHBhdGNoLCBy
J1N1YnZlcnNpb24gUmV2aXNpb246IDUnKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX3dp
dGhfY2hhbmdlZF9maWxlcyhzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9w
bHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3Bh
dGNoKGNoYW5nZWRfZmlsZXM9Wyd0ZXN0X2ZpbGVfY29tbWl0MiddKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MicpCiAK
ICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfd2l0aF9ybV9hbmRfY2hhbmdlZF9maWxlcyhzZWxm
KToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFu
Z2VzKCkKQEAgLTEzNTksMzkgKzEzNTksMzkgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToK
ICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogICAgICAgICBwYXRjaCA9IHNjbS5j
cmVhdGVfcGF0Y2goZ2l0X2NvbW1pdD0iSEVBRF4iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29t
bWl0MicpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfZ2l0X2NvbW1pdF9yYW5nZShzZWxm
KToKICAgICAgICAgc2VsZi5fdGhyZWVfbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCiAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0PSJIRUFEfjIuLkhFQUQiKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQwJywgcGF0Y2gpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRj
aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RSZWdleHBNYXRjaGVzKHBhdGNoLCBy
J3Rlc3RfZmlsZV9jb21taXQwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHBh
dGNoLCByJ3Rlc3RfZmlsZV9jb21taXQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRj
aGVzKHBhdGNoLCByJ3Rlc3RfZmlsZV9jb21taXQxJykKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9w
YXRjaF93b3JraW5nX2NvcHlfb25seShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2Nv
bW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3Nj
bV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgcGF0Y2ggPSBzY20uY3Jl
YXRlX3BhdGNoKGdpdF9jb21taXQ9IkhFQUQuLi4uIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQorICAgICAg
ICBzZWxmLmFzc2VydE5vdFJlZ2V4cE1hdGNoZXMocGF0Y2gsIHIndGVzdF9maWxlX2NvbW1pdDEn
KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMocGF0Y2gsIHIndGVzdF9maWxlX2Nv
bW1pdDInKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1p
dHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgcGF0
Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MicpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MScpCiAKICAg
ICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3N5bmNlZChzZWxmKToKICAgICAgICAgcnVuX2Nv
bW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkK
ICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogICAgICAgICBwYXRjaCA9IHNjbS5j
cmVhdGVfcGF0Y2goKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZTInLCBwYXRjaCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydE5vdFJl
Z2V4cE1hdGNoZXMocGF0Y2gsIHIndGVzdF9maWxlMicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVn
ZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcid0ZXN0X2ZpbGVfY29tbWl0MScpCiAKICAgICBkZWYg
dGVzdF9jcmVhdGVfYmluYXJ5X3BhdGNoKHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGdpdCBi
aW5hcnkgcGF0Y2ggYW5kIGNoZWNrIHRoZSBjb250ZW50cy4KQEAgLTE0MDIsOCArMTQwMiw4IEBA
IGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9w
YXRoKHRlc3RfZmlsZV9wYXRoLCBmaWxlX2NvbnRlbnRzLCBlbmNvZGluZz1Ob25lKQogICAgICAg
ICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCB0ZXN0X2ZpbGVfbmFtZV0pCiAgICAgICAgIHBh
dGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocidcbmxpdGVyYWwgMFxuJywgcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHInXG5saXRlcmFsIDI1NlxuJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydFJl
Z2V4cE1hdGNoZXMocGF0Y2gsIHInXG5saXRlcmFsIDBcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmVnZXhwTWF0Y2hlcyhwYXRjaCwgcidcbmxpdGVyYWwgMjU2XG4nKQogCiAgICAgICAgICMgQ2hl
Y2sgaWYgd2UgY2FuIGFwcGx5IHRoZSBjcmVhdGVkIHBhdGNoLgogICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdybScsICctZicsIHRlc3RfZmlsZV9uYW1lXSkKQEAgLTE0MTYsNzIgKzE0MTYs
NzIgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgcnVuX2NvbW1hbmQoWydn
aXQnLCAnYWRkJywgdGVzdF9maWxlX25hbWVdKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcs
ICdjb21taXQnLCAnLW0nLCAnYmluYXJ5IGRpZmYnXSkKICAgICAgICAgcGF0Y2hfZnJvbV9sb2Nh
bF9jb21taXQgPSBzY20uY3JlYXRlX3BhdGNoKCdIRUFEJykKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ1xubGl0ZXJhbCAwXG4nLCBwYXRjaF9mcm9tX2xvY2FsX2NvbW1pdCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocidcbmxpdGVyYWwgMjU2XG4nLCBw
YXRjaF9mcm9tX2xvY2FsX2NvbW1pdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hl
cyhwYXRjaF9mcm9tX2xvY2FsX2NvbW1pdCwgcidcbmxpdGVyYWwgMFxuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSZWdleHBNYXRjaGVzKHBhdGNoX2Zyb21fbG9jYWxfY29tbWl0LCByJ1xubGl0ZXJh
bCAyNTZcbicpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2xvY2FsX3BsdXNfd29ya2lu
Z19jb3B5KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2lu
Z19jb3B5X2NoYW5nZXMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQogICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAg
ICBzZWxmLmFzc2VydEluKCd0ZXN0X2ZpbGVfY29tbWl0MScsIGZpbGVzKQorICAgICAgICBzZWxm
LmFzc2VydEluKCd0ZXN0X2ZpbGVfY29tbWl0MicsIGZpbGVzKQogCiAgICAgICAgICMgd29ya2lu
ZyBjb3B5IHNob3VsZCAqbm90KiBiZSBpbiB0aGUgbGlzdC4KICAgICAgICAgZmlsZXMgPSBzY20u
Y2hhbmdlZF9maWxlcygndHJ1bmsuLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9m
aWxlX2NvbW1pdDEnIGluIGZpbGVzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2Zp
bGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RfZmlsZV9j
b21taXQxJywgZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3Rlc3RfZmlsZV9jb21t
aXQyJywgZmlsZXMpCiAKICAgICAgICAgIyB3b3JraW5nIGNvcHkgKnNob3VsZCogYmUgaW4gdGhl
IGxpc3QuCiAgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoJ3RydW5rLi4uLicpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDEnLCBmaWxlcykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDInLCBmaWxlcykKIAogICAgIGRlZiB0ZXN0X2No
YW5nZWRfZmlsZXNfZ2l0X2NvbW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2Nv
bW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQogICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQ9IkhF
QUReIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmls
ZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxl
cykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDEnLCBmaWxlcykKKyAg
ICAgICAgc2VsZi5hc3NlcnROb3RJbigndGVzdF9maWxlX2NvbW1pdDInLCBmaWxlcykKIAogICAg
IGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfZ2l0X2NvbW1pdF9yYW5nZShzZWxmKToKICAgICAgICAg
c2VsZi5fdGhyZWVfbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCiAgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRf
ZmlsZXMoZ2l0X2NvbW1pdD0iSEVBRH4yLi5IRUFEIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0X2ZpbGVfY29tbWl0MCcgbm90IGluIGZpbGVzKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4o
J3Rlc3RfZmlsZV9jb21taXQwJywgZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3Rf
ZmlsZV9jb21taXQxJywgZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RfZmlsZV9j
b21taXQyJywgZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX3dvcmtpbmdfY29w
eV9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2lu
Z19jb3B5X2NoYW5nZXMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQogICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9j
b21taXQ9IkhFQUQuLi4uIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2Nv
bW1pdDEnIGluIGZpbGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21t
aXQyJyBpbiBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigndGVzdF9maWxlX2NvbW1p
dDEnLCBmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDInLCBm
aWxlcykKIAogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0
cyhzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogICAgICAgICBmaWxl
cyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2Zp
bGVfY29tbWl0MicgaW4gZmlsZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxl
X2NvbW1pdDEnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0X2ZpbGVfY29t
bWl0MicsIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0X2ZpbGVfY29tbWl0MScs
IGZpbGVzKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3luY2VkKHNlbGYpOgog
ICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gn
LCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCiAgICAgICAg
IGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0
ZXN0X2ZpbGUyJyBpbiBmaWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVf
Y29tbWl0MicgaW4gZmlsZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2Nv
bW1pdDEnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0ZXN0X2ZpbGUyJywg
ZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RfZmlsZV9jb21taXQyJywgZmlsZXMp
CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RfZmlsZV9jb21taXQxJywgZmlsZXMpCiAKICAg
ICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zeW5jZWQoc2VsZik6CiAgICAgICAgIHJ1bl9j
b21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10p
CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgZmlsZXMgPSBzY20u
Y2hhbmdlZF9maWxlcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZTInIGlu
IGZpbGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBm
aWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmls
ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3Rlc3RfZmlsZTInLCBmaWxlcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDInLCBmaWxlcykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJbigndGVzdF9maWxlX2NvbW1pdDEnLCBmaWxlcykKIAogICAgIGRlZiB0ZXN0X2No
YW5nZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NoYW5nZWRfZmls
ZXMoKQpAQCAtMTQ5OSwxNSArMTQ5OSwxNSBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgog
CiAgICAgICAgICMgZXF1aXZhbGVudCB0byAnZ2l0IGRpZmYgbXktYnJhbmNoLi5IRUFELCBzaG91
bGQgbm90IGluY2x1ZGUgd29ya2luZyBjaGFuZ2VzCiAgICAgICAgIGZpbGVzID0gc2VsZi5zY20u
Y2hhbmdlZF9maWxlcyhnaXRfY29tbWl0PSdVUFNUUkVBTS4uJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgndGVzdF9maWxlX2NvbW1pdDAnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydE5v
dEluKCd0ZXN0X2ZpbGVfY29tbWl0MScsIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0
ZXN0X2ZpbGVfY29tbWl0MicsIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0ZXN0
X2ZpbGVfY29tbWl0MCcsIGZpbGVzKQogCiAgICAgICAgICMgZXF1aXZhbGVudCB0byAnZ2l0IGRp
ZmYgbXktYnJhbmNoJywgKnNob3VsZCogaW5jbHVkZSB3b3JraW5nIGNoYW5nZXMKICAgICAgICAg
ZmlsZXMgPSBzZWxmLnNjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQ9J1VQU1RSRUFNLi4uLicp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDAnIGluIGZpbGVzKQorICAg
ICAgICBzZWxmLmFzc2VydE5vdEluKCd0ZXN0X2ZpbGVfY29tbWl0MScsIGZpbGVzKQorICAgICAg
ICBzZWxmLmFzc2VydEluKCd0ZXN0X2ZpbGVfY29tbWl0MicsIGZpbGVzKQorICAgICAgICBzZWxm
LmFzc2VydEluKCd0ZXN0X2ZpbGVfY29tbWl0MCcsIGZpbGVzKQogCiAgICAgZGVmIHRlc3RfY29u
dGVudHNfYXRfcmV2aXNpb24oc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbnRl
bnRzX2F0X3JldmlzaW9uKCkKQEAgLTE1MjcsMTMgKzE1MjcsMTMgQEAgY2xhc3MgR2l0U1ZOVGVz
dChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2VsZi5zY20uZGVsZXRlKCd0ZXN0X2ZpbGVfY29t
bWl0MScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidGVzdF9maWxlX2NvbW1pdDEiIGluIHNl
bGYuc2NtLmRlbGV0ZWRfZmlsZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigidGVzdF9maWxl
X2NvbW1pdDEiLCBzZWxmLnNjbS5kZWxldGVkX2ZpbGVzKCkpCiAKICAgICBkZWYgdGVzdF9kZWxl
dGVfbGlzdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAg
ICBzZWxmLnNjbS5kZWxldGVfbGlzdChbInRlc3RfZmlsZV9jb21taXQxIiwgInRlc3RfZmlsZV9j
b21taXQyIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidGVzdF9maWxlX2NvbW1pdDEiIGlu
IHNlbGYuc2NtLmRlbGV0ZWRfZmlsZXMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJ0ZXN0
X2ZpbGVfY29tbWl0MiIgaW4gc2VsZi5zY20uZGVsZXRlZF9maWxlcygpKQorICAgICAgICBzZWxm
LmFzc2VydEluKCJ0ZXN0X2ZpbGVfY29tbWl0MSIsIHNlbGYuc2NtLmRlbGV0ZWRfZmlsZXMoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRJbigidGVzdF9maWxlX2NvbW1pdDIiLCBzZWxmLnNjbS5kZWxl
dGVkX2ZpbGVzKCkpCiAKICAgICBkZWYgdGVzdF9kZWxldGVfcmVjdXJzaXZlbHkoc2VsZik6CiAg
ICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2RlbGV0ZV9yZWN1cnNpdmVseSgpCkBAIC0xNTY4LDE0
ICsxNTY4LDE0IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAKICAgICAgICAgZGlmZiA9
IHNlbGYuc2NtLmRpZmZfZm9yX2ZpbGUoJ3Rlc3RfZmlsZV9jb21taXQxJykKICAgICAgICAgY2Fj
aGVkX2RpZmYgPSBzZWxmLnNjbS5kaWZmX2Zvcl9maWxlKCd0ZXN0X2ZpbGVfY29tbWl0MScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiK1VwZGF0ZWQiIGluIGRpZmYpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgiLW1vcmUgdGVzdCBjb250ZW50IiBpbiBkaWZmKQorICAgICAgICBzZWxmLmFz
c2VydEluKCIrVXBkYXRlZCIsIGRpZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi1tb3JlIHRl
c3QgY29udGVudCIsIGRpZmYpCiAKICAgICAgICAgc2VsZi5zY20uYWRkKCd0ZXN0X2ZpbGVfY29t
bWl0MScpCiAKICAgICAgICAgY2FjaGVkX2RpZmYgPSBzZWxmLnNjbS5kaWZmX2Zvcl9maWxlKCd0
ZXN0X2ZpbGVfY29tbWl0MScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiK1VwZGF0ZWQiIGlu
IGNhY2hlZF9kaWZmKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoIi1tb3JlIHRlc3QgY29udGVu
dCIgaW4gY2FjaGVkX2RpZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIitVcGRhdGVkIiwgY2Fj
aGVkX2RpZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi1tb3JlIHRlc3QgY29udGVudCIsIGNh
Y2hlZF9kaWZmKQogCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgogICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CmluZGV4IGI2MDEwNzdlYTAyNDVmOTk5
NjAzZWIyNDBiNTExOGI0Y2NmYjMwNWQuLjYwMWUyZmJiMzc0MDYwODczODdlOGVjMzZhNTM5ZWY1
ODE2YTBhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9f
X2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0
X18ucHkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgY2xhc3MgQXV0b2luc3RhbGxJbXBvcnRIb29rKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJpcmNib3QucHki
KQogICAgICAgICByZXR1cm4gZGlkX2luc3RhbGxfc29tZXRoaW5nCiAKKyAgICBkZWYgX2luc3Rh
bGxfdW5pdHRlc3QyKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnN1cmVfYXV0b2luc3RhbGxlZF9k
aXJfaXNfaW5fc3lzX3BhdGgoKQorICAgICAgICByZXR1cm4gc2VsZi5faW5zdGFsbCh1cmw9Imh0
dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3UvdW5pdHRlc3QyL3VuaXR0ZXN0
Mi0wLjUuMS50YXIuZ3ojbWQ1PWEwYWY1Y2FjOTJiYmJmYTBjM2IwZTk5NTcxMzkwZTBmIiwgdXJs
X3N1YnBhdGg9InVuaXR0ZXN0Mi0wLjUuMS91bml0dGVzdDIiKQorCiAgICAgZGVmIF9pbnN0YWxs
X3dlYnBhZ2VyZXBsYXkoc2VsZik6CiAgICAgICAgIGRpZF9pbnN0YWxsX3NvbWV0aGluZyA9IEZh
bHNlCiAgICAgICAgIGlmIG5vdCBzZWxmLl9mcy5leGlzdHMoc2VsZi5fZnMuam9pbihfQVVUT0lO
U1RBTExFRF9ESVIsICJ3ZWJwYWdlcmVwbGF5IikpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>